(function() {
  "use strict";
  var __vite_style__ = document.createElement("style");
  __vite_style__.textContent = `@charset "UTF-8";
.onboarding-wizard-fullscreen[data-v-ebaeb9fc] .el-dialog__header {
    display: none;
}
.onboarding-wizard-fullscreen[data-v-ebaeb9fc] .el-dialog__body {
    height: 100vh;
    padding: 40px;
    background-color: #f9fafb;
}

.animate-bounce-once[data-v-c96b5b0f] {
    animation: bounce-c96b5b0f 0.5s ease-in-out;
}
.icon-picker__preview[data-v-c96b5b0f] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px;
    background: #f8fafc;
    border-radius: 10px;
    margin-bottom: 16px;
}
.icon-picker__preview-icon[data-v-c96b5b0f] {
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: #ffffff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 22px;
    color: #2563eb;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.08);
}
.icon-picker__preview-label[data-v-c96b5b0f] {
    font-size: 14px;
    color: #475569;
}
.icon-picker__grid[data-v-c96b5b0f] {
    max-height: 320px;
    overflow-y: auto;
    padding-right: 6px;
}
.icon-picker__item[data-v-c96b5b0f] {
    height: 88px;
    border-radius: 12px;
    border: 1px solid #e2e8f0;
    background: #ffffff;
    display: flex;
    flex-direction: column;
    gap: 6px;
    align-items: center;
    justify-content: center;
    transition: all 0.2s ease;
}
.icon-picker__item[data-v-c96b5b0f]:hover {
    border-color: #93c5fd;
    box-shadow: 0 6px 16px rgba(37, 99, 235, 0.12);
    transform: translateY(-1px);
}
.icon-picker__item.is-active[data-v-c96b5b0f] {
    border-color: #2563eb;
    background: #eff6ff;
}
.icon-picker__item-icon[data-v-c96b5b0f] {
    font-size: 22px;
    color: #2563eb;
}
.icon-picker__item-label[data-v-c96b5b0f] {
    font-size: 11px;
    color: #64748b;
    text-align: center;
}
@keyframes bounce-c96b5b0f {
0%,
    100% {
        transform: translateY(0);
}
50% {
        transform: translateY(-10px);
}
}

.bulk-generator[data-v-7c87bce6] {
    padding-top: 10px;
}
.csv-upload-zone[data-v-7c87bce6] {
    transition: all 0.3s;
}
.csv-upload-zone[data-v-7c87bce6]:hover {
    background-color: var(--el-fill-color-light);
}

.add-source-modal[data-v-a357c512] .el-checkbox {
    display: flex;
    align-items: flex-start;
    height: auto;
    white-space: normal;
}
.add-source-modal[data-v-a357c512] .el-checkbox__label {
    width: 100%;
}

/* Main Layout */
.workflow-editor[data-v-38560554] {
    height: calc(100vh - 200px);
    margin: -24px;
    display: flex;
    flex-direction: column;
}
.workflow-header[data-v-38560554] {
    border-radius: 0;
    border-left: 0;
    border-right: 0;
    border-top: 0;
}
.workflow-header[data-v-38560554] .el-card__body {
    padding: 12px 20px;
}
.header-content[data-v-38560554] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
}
.workflow-name-input[data-v-38560554] {
    max-width: 360px;
}
.header-actions[data-v-38560554] {
    display: flex;
    gap: 8px;
}
.workflow-main[data-v-38560554] {
    flex: 1;
    display: flex;
    overflow: hidden;
}

/* Sidebar */
.workflow-sidebar[data-v-38560554] {
    width: 260px;
    border-radius: 0;
    border-top: 0;
    border-bottom: 0;
    border-left: 0;
    flex-shrink: 0;
    z-index: 20;
}
.sidebar-scrollbar[data-v-38560554] {
    flex: 1;
}
.sidebar-content[data-v-38560554] {
    padding: 16px;
}
.sidebar-section[data-v-38560554] {
    margin-bottom: 8px;
}
.section-title[data-v-38560554] {
    display: block;
    margin-bottom: 12px;
    font-weight: 600;
}
.sidebar-items[data-v-38560554] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.sidebar-block[data-v-38560554] {
    cursor: grab;
    border-left: 3px solid transparent;
}
.sidebar-block[data-v-38560554]:active {
    cursor: grabbing;
}
.sidebar-block--trigger[data-v-38560554] {
    border-left-color: var(--el-color-success);
}
.sidebar-block--action[data-v-38560554] {
    border-left-color: var(--el-color-primary);
}
.sidebar-block[data-v-38560554] .el-card__body {
    padding: 10px 12px;
}
.block-content[data-v-38560554] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
}
.block-text[data-v-38560554] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}
.block-desc[data-v-38560554] {
    display: block;
    font-size: 11px;
    line-height: 1.3;
    white-space: normal;
}

/* Canvas */
.workflow-canvas[data-v-38560554] {
    flex: 1;
    position: relative;
    overflow: hidden;
    background-color: var(--el-fill-color-light);
    cursor: grab;
}

/* Workflow Node Styles */
.workflow-node[data-v-38560554] {
    position: absolute;
    width: 256px;
    z-index: 10;
    cursor: move;
    transition: box-shadow 0.2s;
}
.workflow-node.is-selected[data-v-38560554] {
    box-shadow: 0 0 0 2px var(--el-color-primary);
}
.workflow-node[data-v-38560554]:hover {
    box-shadow: var(--el-box-shadow-dark);
}
.node-header[data-v-38560554] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 10px;
    border-bottom: 1px solid var(--el-border-color-light);
}
.node-actions[data-v-38560554] {
    display: flex;
    gap: 4px;
}
.node-header--trigger[data-v-38560554] {
    background-color: var(--el-color-success-light-9);
    border-radius: var(--el-border-radius-base) var(--el-border-radius-base) 0 0;
}
.node-header--action[data-v-38560554] {
    background-color: var(--el-color-primary-light-9);
    border-radius: var(--el-border-radius-base) var(--el-border-radius-base) 0 0;
}
.node-body[data-v-38560554] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 16px;
}

/* Port Styles */
.node-port[data-v-38560554] {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    width: 20px;
    height: 20px;
    background-color: var(--el-bg-color);
    border: 2px solid var(--el-border-color);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: crosshair;
    z-index: 20;
    transition: transform 0.15s, border-color 0.15s;
}
.node-port[data-v-38560554]:hover {
    transform: translateX(-50%) scale(1.2);
    border-color: var(--el-color-primary);
}
.node-port--input[data-v-38560554] {
    top: -10px;
    border-color: var(--el-color-primary);
}
.node-port--output[data-v-38560554] {
    bottom: -10px;
}
.node-port-dot[data-v-38560554] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background-color: var(--el-border-color);
    transition: background-color 0.15s;
}
.node-port:hover .node-port-dot[data-v-38560554] {
    background-color: var(--el-color-primary);
}
.node-port--input .node-port-dot[data-v-38560554] {
    background-color: var(--el-color-primary);
}

/* Canvas Controls */
.canvas-controls[data-v-38560554] {
    position: absolute;
    bottom: 16px;
    right: 16px;
    z-index: 10;
}
.canvas-controls[data-v-38560554] .el-card__body {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 8px;
}
.zoom-text[data-v-38560554] {
    font-family: var(--el-font-family);
    font-variant-numeric: tabular-nums;
}
.field-radio-group[data-v-38560554] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

/* Settings Sidebar */
.settings-sidebar[data-v-38560554] {
    width: 320px;
    border-radius: 0;
    border-top: 0;
    border-bottom: 0;
    border-right: 0;
    flex-shrink: 0;
    z-index: 30;
}
.settings-header[data-v-38560554] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px;
}
.settings-header>div[data-v-38560554] {
    flex-direction: column;
    gap: 2px;
}
.settings-scrollbar[data-v-38560554] {
    flex: 1;
    overflow-x: hidden;
}
.settings-scrollbar[data-v-38560554] .el-scrollbar__wrap {
    overflow-x: hidden;
}
.settings-content[data-v-38560554] {
    padding: 16px;
    overflow-x: hidden;
    word-break: break-word;
}

/* SVG Links */
.link-path[data-v-38560554] {
    stroke: var(--el-border-color);
    stroke-width: 2;
    fill: transparent;
    pointer-events: auto;
    cursor: pointer;
}
.link-path[data-v-38560554]:hover {
    stroke: var(--el-color-primary);
}
.link-path--temp[data-v-38560554] {
    stroke: var(--el-color-primary-light-5);
    stroke-dasharray: 5, 5;
}

/* Header left group */
.header-left[data-v-38560554] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex: 1;
    min-width: 0;
}
.back-btn[data-v-38560554] {
    flex-shrink: 0;
    color: var(--el-text-color-secondary);
}
.back-btn[data-v-38560554]:hover {
    color: var(--el-color-primary);
}
.unsaved-tag[data-v-38560554] {
    flex-shrink: 0;
}

/* Empty canvas hint */
.canvas-empty-hint[data-v-38560554] {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    text-align: center;
    pointer-events: none;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
}
.canvas-empty-hint p[data-v-38560554] {
    margin: 12px 0 4px;
    color: var(--el-text-color-placeholder);
    font-size: 15px;
}
.canvas-hint-sub[data-v-38560554] {
    font-size: 13px !important;
    color: var(--el-text-color-disabled) !important;
    margin-top: 4px !important;
}

/* Context variables */
.context-vars-hint[data-v-38560554] {
    display: block;
    margin-bottom: 10px;
}
.context-vars-grid[data-v-38560554] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
.context-var-tag[data-v-38560554] {
    cursor: pointer;
    font-family: var(--el-font-family-code, monospace);
    font-size: 11px;
    transition: opacity 0.15s;
}
.context-var-tag[data-v-38560554]:hover {
    opacity: 0.7;
}

.workflow-card[data-v-e6717ba0] {
    cursor: pointer;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.workflow-card[data-v-e6717ba0]:hover {
    transform: translateY(-2px);
}

.workflow-templates[data-v-a4541da0] {
    padding: 0;
}
.templates-intro[data-v-a4541da0] {
    margin-bottom: 24px;
}
.templates-intro h3[data-v-a4541da0] {
    margin: 0 0 8px 0;
    font-size: 18px;
    font-weight: 600;
}
.templates-intro .text-muted[data-v-a4541da0] {
    color: var(--el-text-color-secondary);
    margin: 0;
}
.template-card[data-v-a4541da0] {
    display: flex;
    flex-direction: column;
    text-align: center;
    padding: 20px;
}
.template-card[data-v-a4541da0] .el-card__body {
    display: flex;
    flex-direction: column;
    align-items: center;
    flex: 1;
}
.template-icon[data-v-a4541da0] {
    width: 64px;
    height: 64px;
    border-radius: 12px;
    background: var(--el-fill-color-light);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 16px;
}
.template-card h4[data-v-a4541da0] {
    margin: 0 0 8px 0;
    font-size: 16px;
    font-weight: 600;
}
.template-card .description[data-v-a4541da0] {
    color: var(--el-text-color-secondary);
    font-size: 14px;
    margin: 0 0 16px 0;
    flex: 1;
    line-height: 1.5;
}
.template-meta[data-v-a4541da0] {
    display: flex;
    gap: 8px;
    margin-bottom: 16px;
    flex-wrap: wrap;
    justify-content: center;
}
.use-btn[data-v-a4541da0] {
    width: 100%;
}

.scheduled-tasks[data-v-dd5756d7] {
    padding: 0;
}
.toolbar[data-v-dd5756d7] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
}
.task-name[data-v-dd5756d7] {
    font-weight: 500;
    color: var(--el-text-color-primary);
}
.text-muted[data-v-dd5756d7] {
    color: var(--el-text-color-secondary);
    font-size: 13px;
}
.task-actions[data-v-dd5756d7] {
    display: flex;
    gap: 6px;
    justify-content: center;
    align-items: center;
}

.workflow-logs[data-v-ba15e100] {
    padding: 0;
}
.filters-bar[data-v-ba15e100] {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 20px;
    align-items: center;
}
.log-message[data-v-ba15e100] {
    color: var(--el-text-color-regular);
}
.pagination-wrapper[data-v-ba15e100] {
    display: flex;
    justify-content: flex-end;
    margin-top: 20px;
}
.log-details .detail-row[data-v-ba15e100] {
    display: flex;
    margin-bottom: 12px;
    gap: 12px;
}
.log-details .detail-row label[data-v-ba15e100] {
    font-weight: 600;
    min-width: 100px;
    color: var(--el-text-color-secondary);
}
.log-details .detail-row.full-width[data-v-ba15e100] {
    flex-direction: column;
    gap: 8px;
}
.log-details .detail-row.full-width label[data-v-ba15e100] {
    min-width: auto;
}
.log-details pre[data-v-ba15e100] {
    background: var(--el-fill-color-light);
    padding: 12px;
    border-radius: 6px;
    overflow-x: auto;
    font-size: 13px;
    max-height: 300px;
}
.trace-id[data-v-ba15e100] {
    cursor: pointer;
    color: var(--el-color-primary);
}
.trace-id[data-v-ba15e100]:hover {
    text-decoration: underline;
}
.mb-2[data-v-ba15e100] {
    margin-bottom: 8px;
}

/* Global overrides */
[v-cloak] {
  display: none;
}
.ai-platform-admin-wrapper {
  margin: 0 !important;
  padding: 0 !important;
}
.ai-platform-admin-wrapper .wrap {
  margin: 0 !important;
}
.ai-platform-admin__main {
  width: 100%;
  max-width: 1440px;
  margin: 0 auto;
  padding: 0;
}
.animate-fade-in {
  animation: fadeIn 0.3s ease-in-out;
}
@keyframes fadeIn {
from {
    opacity: 0;
    transform: translateY(10px);
}
to {
    opacity: 1;
    transform: translateY(0);
}
}

/* Smooth height transitions */
.transition-all {
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
: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","微软雅黑",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:0.3s;--el-transition-duration-fast:0.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(0.645,0.045,0.355,1);--el-transition-function-fast-bezier:cubic-bezier(0.23,1,0.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,187,255);--el-color-primary-light-5:rgb(160,207,255);--el-color-primary-light-7:rgb(198,226,255);--el-color-primary-light-8:rgb(217,236,255);--el-color-primary-light-9:rgb(236,245,255);--el-color-primary-dark-2:rgb(51,126,204);--el-color-success:#67c23a;--el-color-success-light-3:rgb(149,212,117);--el-color-success-light-5:rgb(179,225,157);--el-color-success-light-7:rgb(209,237,196);--el-color-success-light-8:rgb(225,243,216);--el-color-success-light-9:rgb(240,249,235);--el-color-success-dark-2:rgb(82,155,46);--el-color-warning:#e6a23c;--el-color-warning-light-3:rgb(238,190,119);--el-color-warning-light-5:rgb(243,209,158);--el-color-warning-light-7:rgb(248,227,197);--el-color-warning-light-8:rgb(250,236,216);--el-color-warning-light-9:rgb(253,246,236);--el-color-warning-dark-2:rgb(184,130,48);--el-color-danger:#f56c6c;--el-color-danger-light-3:rgb(248,152,152);--el-color-danger-light-5:rgb(250,182,182);--el-color-danger-light-7:rgb(252,211,211);--el-color-danger-light-8:rgb(253,226,226);--el-color-danger-light-9:rgb(254,240,240);--el-color-danger-dark-2:rgb(196,86,86);--el-color-error:#f56c6c;--el-color-error-light-3:rgb(248,152,152);--el-color-error-light-5:rgb(250,182,182);--el-color-error-light-7:rgb(252,211,211);--el-color-error-light-8:rgb(253,226,226);--el-color-error-light-9:rgb(254,240,240);--el-color-error-dark-2:rgb(196,86,86);--el-color-info:#909399;--el-color-info-light-3:rgb(177,179,184);--el-color-info-light-5:rgb(200,201,204);--el-color-info-light-7:rgb(222,223,224);--el-color-info-light-8:rgb(233,233,235);--el-color-info-light-9:rgb(244,244,245);--el-color-info-dark-2:rgb(115,118,122);--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,0.04),0px 8px 20px rgba(0,0,0,0.08);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,0.12);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,0.12);--el-box-shadow-dark:0px 16px 48px 16px rgba(0,0,0,0.08),0px 12px 32px rgba(0,0,0,0.12),0px 8px 16px -8px rgba(0,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,0.8);--el-overlay-color-light:rgba(0,0,0,0.7);--el-overlay-color-lighter:rgba(0,0,0,0.5);--el-mask-color:rgba(255,255,255,0.9);--el-mask-color-extra-light:rgba(255,255,255,0.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)}.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-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.el-icon{--color:inherit;align-items:center;color:var(--color);display:inline-flex;fill:currentColor;font-size:inherit;height:1em;justify-content:center;line-height:1em;position:relative;width:1em}.el-icon.is-loading{animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.el-affix--fixed{position:fixed}.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:14px;--el-alert-title-with-description-font-size:16px;--el-alert-description-font-size:14px;--el-alert-close-font-size:16px;--el-alert-close-customed-font-size:14px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;align-items:center;background-color:var(--el-color-white);border-radius:var(--el-alert-border-radius-base);box-sizing:border-box;display:flex;margin:0;opacity:1;overflow:hidden;padding:var(--el-alert-padding);position:relative;transition:opacity var(--el-transition-duration-fast);width:100%}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--primary{--el-alert-bg-color:var(--el-color-primary-light-9)}.el-alert--primary.is-light{background-color:var(--el-alert-bg-color)}.el-alert--primary.is-light,.el-alert--primary.is-light .el-alert__description{color:var(--el-color-primary)}.el-alert--primary.is-dark{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color)}.el-alert--success.is-light,.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color)}.el-alert--info.is-light,.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color)}.el-alert--warning.is-light,.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color)}.el-alert--error.is-light,.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{display:flex;flex-direction:column;gap:4px}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);margin-right:8px;width:var(--el-alert-icon-size)}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);margin-right:12px;width:var(--el-alert-icon-large-size)}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:24px}.el-alert__title.with-description{font-size:var(--el-alert-title-with-description-font-size)}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:0}.el-alert .el-alert__close-btn{cursor:pointer;font-size:var(--el-alert-close-font-size);opacity:1;position:absolute;right:16px;top:12px}.el-alert .el-alert__close-btn.is-customed{font-size:var(--el-alert-close-customed-font-size);font-style:normal;line-height:24px;top:8px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}.el-aside{box-sizing:border-box;flex-shrink:0;overflow:auto;width:var(--el-aside-width,300px)}.el-autocomplete{--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;position:relative;width:var(--el-input-width)}.el-autocomplete__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-autocomplete__popper.el-popper,.el-autocomplete__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-autocomplete__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-autocomplete-suggestion{border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-autocomplete-suggestion__header{border-bottom:1px solid var(--el-border-color-lighter);padding:10px}.el-autocomplete-suggestion__footer{border-top:1px solid var(--el-border-color-lighter);padding:10px}.el-autocomplete-suggestion__wrap{box-sizing:border-box;max-height:280px;padding:10px 0}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-base);line-height:34px;list-style:none;margin:0;overflow:hidden;padding:0 20px;text-align:left;text-overflow:ellipsis;white-space:nowrap}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:var(--el-fill-color-light)}.el-autocomplete-suggestion li.divider{border-top:1px solid var(--el-color-black);margin-top:6px}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{align-items:center;color:var(--el-text-color-secondary);cursor:default;display:flex;font-size:20px;height:100px;justify-content:center}.el-autocomplete-suggestion.is-loading li:hover{background-color:var(--el-bg-color-overlay)}.el-avatar{--el-avatar-text-color:var(--el-color-white);--el-avatar-bg-color:var(--el-text-color-disabled);--el-avatar-text-size:14px;--el-avatar-icon-size:18px;--el-avatar-border-radius:var(--el-border-radius-base);--el-avatar-size-large:56px;--el-avatar-size-small:24px;--el-avatar-size:40px;align-items:center;background:var(--el-avatar-bg-color);box-sizing:border-box;color:var(--el-avatar-text-color);display:inline-flex;font-size:var(--el-avatar-text-size);height:var(--el-avatar-size);justify-content:center;outline:none;overflow:hidden;text-align:center;width:var(--el-avatar-size)}.el-avatar>img{display:block;height:100%;width:100%}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:var(--el-avatar-border-radius)}.el-avatar--icon{font-size:var(--el-avatar-icon-size)}.el-avatar--small{--el-avatar-size:24px}.el-avatar--large{--el-avatar-size:56px}.el-avatar-group{--el-avatar-group-item-gap:-8px;--el-avatar-group-collapse-item-gap:4px;display:inline-flex}.el-avatar-group .el-avatar{border:1px solid var(--el-border-color-extra-light)}.el-avatar-group .el-avatar:not(:first-child){margin-left:var(--el-avatar-group-item-gap)}.el-avatar-group__collapse-avatars{--el-avatar-group-item-gap:-8px;--el-avatar-group-collapse-item-gap:4px}.el-avatar-group__collapse-avatars .el-avatar:not(:first-child){margin-left:var(--el-avatar-group-collapse-item-gap)}.el-backtop{--el-backtop-bg-color:var(--el-bg-color-overlay);--el-backtop-text-color:var(--el-color-primary);--el-backtop-hover-bg-color:var(--el-border-color-extra-light);align-items:center;background-color:var(--el-backtop-bg-color);border-radius:50%;box-shadow:var(--el-box-shadow-lighter);color:var(--el-backtop-text-color);cursor:pointer;display:flex;font-size:20px;height:40px;justify-content:center;position:fixed;width:40px;z-index:5}.el-backtop:hover{background-color:var(--el-backtop-hover-bg-color)}.el-backtop__icon{font-size:20px}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;display:inline-block;position:relative;vertical-align:middle;width:fit-content}.el-badge__content{align-items:center;background-color:var(--el-badge-bg-color);border:1px solid var(--el-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-flex;font-size:var(--el-badge-font-size);height:var(--el-badge-size);justify-content:center;padding:0 var(--el-badge-padding);white-space:nowrap}.el-badge__content.is-fixed{position:absolute;right:calc(1px + var(--el-badge-size)/2);top:0;transform:translateY(-50%) translateX(100%);z-index:var(--el-index-normal)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{border-radius:50%;height:8px;padding:0;right:0;width:8px}.el-badge__content.is-hide-zero{display:none}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);font-weight:bold;margin:0 9px}.el-breadcrumb__separator.el-icon{font-weight:normal;margin:0 6px}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{align-items:center;display:inline-flex;float:left}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{color:var(--el-text-color-primary);font-weight:bold;text-decoration:none;transition:var(--el-transition-color)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{color:var(--el-text-color-regular);cursor:text;font-weight:normal}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{content:"";display:table}.el-breadcrumb:after{clear:both}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button:first-child:last-child{border-bottom-left-radius:var(--el-border-radius-base);border-bottom-right-radius:var(--el-border-radius-base);border-top-left-radius:var(--el-border-radius-base);border-top-right-radius:var(--el-border-radius-base)}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:var(--el-border-radius-round)}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button.is-active,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group--horizontal{display:inline-block;vertical-align:middle}.el-button-group--horizontal:after,.el-button-group--horizontal:before{content:"";display:table}.el-button-group--horizontal:after{clear:both}.el-button-group--horizontal>.el-button{float:left;position:relative}.el-button-group--horizontal>.el-button:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.el-button-group--horizontal>.el-button:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.el-button-group--horizontal>.el-button:not(:last-child){margin-right:-1px}.el-button-group--horizontal .el-button--primary:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--primary:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--primary:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal>.el-dropdown>.el-button{border-bottom-left-radius:0;border-left-color:var(--el-button-divide-border-color);border-top-left-radius:0}.el-button-group--vertical{align-items:stretch;display:inline-flex;flex-direction:column}.el-button-group--vertical>.el-button{margin-top:-1px}.el-button-group--vertical>.el-button:first-child{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-button-group--vertical>.el-button:last-child{border-top-left-radius:0;border-top-right-radius:0}.el-button-group--vertical>.el-dropdown{margin-top:-1px}.el-button-group--vertical>.el-dropdown>.el-button{border-left-color:var(--el-button-divide-border-color);border-top-left-radius:0;border-top-right-radius:0}.el-button-group--vertical .el-button--primary:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--primary:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--primary:not(:first-child):not(:last-child){border-bottom-color:var(--el-button-divide-border-color);border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:not(:first-child):not(:last-child){border-bottom-color:var(--el-button-divide-border-color);border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:not(:first-child):not(:last-child){border-bottom-color:var(--el-button-divide-border-color);border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:not(:first-child):not(:last-child){border-bottom-color:var(--el-button-divide-border-color);border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:not(:first-child):not(:last-child){border-bottom-color:var(--el-button-divide-border-color);border-top-color:var(--el-button-divide-border-color)}.el-button{--el-button-font-weight:var(--el-font-weight-primary);--el-button-border-color:var(--el-border-color);--el-button-bg-color:var(--el-fill-color-blank);--el-button-text-color:var(--el-text-color-regular);--el-button-disabled-text-color:var(--el-disabled-text-color);--el-button-disabled-bg-color:var(--el-fill-color-blank);--el-button-disabled-border-color:var(--el-border-color-light);--el-button-divide-border-color:rgba(255,255,255,0.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-text-color-secondary);--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;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)}.el-calendar{--el-calendar-border:var(--el-table-border,1px solid var(--el-border-color-lighter));--el-calendar-header-border-bottom:var(--el-calendar-border);--el-calendar-selected-bg-color:var(--el-color-primary-light-9);--el-calendar-cell-width:85px;background-color:var(--el-fill-color-blank)}.el-calendar__header{border-bottom:var(--el-calendar-header-border-bottom);display:flex;justify-content:space-between;padding:12px 20px}.el-calendar__title{align-self:center;color:var(--el-text-color)}.el-calendar__body{padding:12px 20px 35px}.el-calendar__select-controller .el-select{margin-right:8px}.el-calendar__select-controller .el-calendar-select__year{width:120px}.el-calendar__select-controller .el-calendar-select__month{width:60px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{color:var(--el-text-color-regular);font-weight:normal;padding:12px 0}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:var(--el-text-color-placeholder)}.el-calendar-table td{border-bottom:var(--el-calendar-border);border-right:var(--el-calendar-border);transition:background-color var(--el-transition-duration-fast) ease;vertical-align:top}.el-calendar-table td.is-selected{background-color:var(--el-calendar-selected-bg-color)}.el-calendar-table td.is-today{color:var(--el-color-primary)}.el-calendar-table tr:first-child td{border-top:var(--el-calendar-border)}.el-calendar-table tr td:first-child{border-left:var(--el-calendar-border)}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{box-sizing:border-box;height:var(--el-calendar-cell-width);padding:8px}.el-calendar-table .el-calendar-day:hover{background-color:var(--el-calendar-selected-bg-color);cursor:pointer}.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);display:flex;flex-direction:column;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{flex-grow:1;overflow:auto;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-carousel__item{display:inline-block;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%}.el-carousel__item,.el-carousel__item.is-active{z-index:calc(var(--el-index-normal) - 1)}.el-carousel__item--card,.el-carousel__item.is-animating{transition:transform .4s ease-in-out}.el-carousel__item--card{width:50%}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:var(--el-index-normal)}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:calc(var(--el-index-normal) + 1)}.el-carousel__item--card-vertical{height:50%;width:100%}.el-carousel__mask{background-color:var(--el-color-white);height:100%;left:0;opacity:.24;position:absolute;top:0;transition:var(--el-transition-duration-fast);width:100%}.el-carousel{--el-carousel-arrow-font-size:12px;--el-carousel-arrow-size:36px;--el-carousel-arrow-background:rgba(31,45,61,0.11);--el-carousel-arrow-hover-background:rgba(31,45,61,0.23);--el-carousel-indicator-width:30px;--el-carousel-indicator-height:2px;--el-carousel-indicator-padding-horizontal:4px;--el-carousel-indicator-padding-vertical:12px;--el-carousel-indicator-out-color:var(--el-border-color-hover);position:relative}.el-carousel--horizontal,.el-carousel--vertical{overflow:hidden}.el-carousel__container{height:300px;position:relative}.el-carousel__arrow{align-items:center;background-color:var(--el-carousel-arrow-background);border:none;border-radius:50%;color:#ffffff;cursor:pointer;display:inline-flex;font-size:var(--el-carousel-arrow-font-size);height:var(--el-carousel-arrow-size);justify-content:center;margin:0;outline:none;padding:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);transition:var(--el-transition-duration);width:var(--el-carousel-arrow-size);z-index:10}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:var(--el-carousel-arrow-hover-background)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{list-style:none;margin:0;padding:0;position:absolute;z-index:calc(var(--el-index-normal) + 1)}.el-carousel__indicators--horizontal{bottom:0;left:50%;transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:calc(var(--el-carousel-indicator-height) + var(--el-carousel-indicator-padding-vertical)*2);position:static;text-align:center;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:var(--el-carousel-indicator-out-color);opacity:.24}.el-carousel__indicators--right{right:0}.el-carousel__indicators--labels{left:0;right:0;text-align:center;transform:none}.el-carousel__indicators--labels .el-carousel__button{color:#000000;font-size:12px;height:auto;padding:2px 18px;width:auto}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:var(--el-carousel-indicator-padding-vertical) var(--el-carousel-indicator-padding-horizontal)}.el-carousel__indicator--vertical{padding:var(--el-carousel-indicator-padding-horizontal) var(--el-carousel-indicator-padding-vertical)}.el-carousel__indicator--vertical .el-carousel__button{height:calc(var(--el-carousel-indicator-width)/2);width:var(--el-carousel-indicator-height)}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{background-color:#ffffff;border:none;cursor:pointer;display:block;height:var(--el-carousel-indicator-height);margin:0;opacity:.48;outline:none;padding:0;transition:var(--el-transition-duration);width:var(--el-carousel-indicator-width)}.carousel-arrow-left-enter-from,.carousel-arrow-left-leave-active{opacity:0;transform:translateY(-50%) translateX(-10px)}.carousel-arrow-right-enter-from,.carousel-arrow-right-leave-active{opacity:0;transform:translateY(-50%) translateX(10px)}.el-transitioning{filter:url(#elCarouselHorizontal)}.el-transitioning-vertical{filter:url(#elCarouselVertical)}.el-cascader-panel{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);border-radius:var(--el-cascader-menu-radius);display:flex;font-size:var(--el-cascader-menu-font-size);width:fit-content}.el-cascader-panel.is-bordered{border:var(--el-cascader-menu-border);border-radius:var(--el-cascader-menu-radius)}.el-cascader-menu{border-right:var(--el-cascader-menu-border);box-sizing:border-box;color:var(--el-cascader-menu-text-color);min-width:180px}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap.el-scrollbar__wrap{height:204px}.el-cascader-menu__list{box-sizing:border-box;list-style:none;margin:0;min-height:100%;padding:6px 0;position:relative}.el-cascader-menu__hover-zone{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}.el-cascader-menu__empty-text{align-items:center;color:var(--el-cascader-color-empty);display:flex;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.el-cascader-menu__empty-text .is-loading{margin-right:2px}.el-cascader-node{align-items:center;display:flex;height:34px;line-height:34px;outline:none;padding:0 30px 0 20px;position:relative}.el-cascader-node.is-selectable.in-active-path{color:var(--el-cascader-menu-text-color)}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:var(--el-cascader-menu-selected-text-color);font-weight:bold}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:var(--el-cascader-node-background-hover)}.el-cascader-node.is-disabled{color:var(--el-cascader-node-color-disabled);cursor:not-allowed}.el-cascader-node__prefix{left:10px;position:absolute}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{flex:1;overflow:hidden;padding:0 8px;text-align:left;text-overflow:ellipsis;white-space:nowrap}.el-cascader-node>.el-checkbox,.el-cascader-node>.el-radio{margin-right:0}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-cascader{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);display:inline-block;font-size:var(--el-font-size-base);line-height:32px;outline:none;position:relative;vertical-align:middle}.el-cascader:not(.is-disabled):hover .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset;cursor:pointer}.el-cascader .el-input{cursor:pointer;display:flex}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-input__inner:read-only{cursor:pointer}.el-cascader .el-input .el-input__inner:disabled{cursor:not-allowed}.el-cascader .el-input .el-input__suffix-inner .el-icon svg{vertical-align:middle}.el-cascader .el-input .icon-arrow-down{font-size:14px;transition:transform var(--el-transition-duration)}.el-cascader .el-input .icon-arrow-down.is-reverse{transform:rotate(180deg)}.el-cascader .el-input .icon-circle-close:hover{color:var(--el-input-clear-hover-color,var(--el-text-color-secondary))}.el-cascader .el-input.is-focus .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-cascader--large{font-size:14px;line-height:40px}.el-cascader--large .el-cascader__tags{gap:6px;padding:8px}.el-cascader--large .el-cascader__search-input{height:24px;margin-left:7px}.el-cascader--small{font-size:12px;line-height:24px}.el-cascader--small .el-cascader__tags{gap:4px;padding:2px}.el-cascader--small .el-cascader__search-input{height:20px;margin-left:5px}.el-cascader.is-disabled .el-cascader__label{color:var(--el-disabled-text-color);z-index:calc(var(--el-index-normal) + 1)}.el-cascader__dropdown{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);border-radius:var(--el-cascader-menu-radius);font-size:var(--el-cascader-menu-font-size)}.el-cascader__dropdown.el-popper{background:var(--el-cascader-menu-fill)}.el-cascader__dropdown.el-popper,.el-cascader__dropdown.el-popper .el-popper__arrow:before{border:var(--el-cascader-menu-border)}.el-cascader__dropdown.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-cascader__dropdown.el-popper{box-shadow:var(--el-cascader-menu-shadow)}.el-cascader__header{border-bottom:1px solid var(--el-border-color-light);padding:10px}.el-cascader__footer{border-top:1px solid var(--el-border-color-light);padding:10px}.el-cascader__tags{box-sizing:border-box;display:flex;flex-wrap:wrap;gap:6px;left:0;line-height:normal;padding:4px;position:absolute;right:30px;text-align:left;top:50%;transform:translateY(-50%)}.el-cascader__tags .el-tag{align-items:center;background:var(--el-cascader-tag-background);display:inline-flex;max-width:100%;text-overflow:ellipsis}.el-cascader__tags .el-tag.el-tag--dark,.el-cascader__tags .el-tag.el-tag--plain{background-color:var(--el-tag-bg-color)}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag:not(.is-hit).el-tag--dark,.el-cascader__tags .el-tag:not(.is-hit).el-tag--plain{border-color:var(--el-tag-border-color)}.el-cascader__tags .el-tag>span{flex:1;line-height:normal;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);color:var(--el-color-white);flex:none}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__tags .el-tag+input{margin-left:0}.el-cascader__tags.is-validate{right:55px}.el-cascader__collapse-tags{white-space:normal;z-index:var(--el-index-normal)}.el-cascader__collapse-tags .el-tag{align-items:center;background:var(--el-fill-color);display:inline-flex;max-width:100%;text-overflow:ellipsis}.el-cascader__collapse-tags .el-tag.el-tag--dark,.el-cascader__collapse-tags .el-tag.el-tag--plain{background-color:var(--el-tag-bg-color)}.el-cascader__collapse-tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__collapse-tags .el-tag:not(.is-hit).el-tag--dark,.el-cascader__collapse-tags .el-tag:not(.is-hit).el-tag--plain{border-color:var(--el-tag-border-color)}.el-cascader__collapse-tags .el-tag>span{flex:1;line-height:normal;overflow:hidden;text-overflow:ellipsis}.el-cascader__collapse-tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);color:var(--el-color-white);flex:none}.el-cascader__collapse-tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__collapse-tags .el-tag+input{margin-left:0}.el-cascader__collapse-tags .el-tag{margin:2px 0}.el-cascader__suggestion-panel{border-radius:var(--el-cascader-menu-radius)}.el-cascader__suggestion-list{color:var(--el-cascader-menu-text-color);font-size:var(--el-font-size-base);margin:0;max-height:204px;padding:6px 0;text-align:center}.el-cascader__suggestion-item{align-items:center;cursor:pointer;display:flex;height:34px;justify-content:space-between;outline:none;padding:0 15px;text-align:left}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:var(--el-cascader-node-background-hover)}.el-cascader__suggestion-item.is-checked{color:var(--el-cascader-menu-selected-text-color);font-weight:bold}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{color:var(--el-cascader-color-empty);margin:10px 0}.el-cascader__search-input{background:transparent;border:none;box-sizing:border-box;color:var(--el-cascader-menu-text-color);flex:1;height:24px;margin-left:7px;min-width:60px;outline:none;padding:0}.el-cascader__search-input::placeholder{color:transparent}.el-check-tag{background-color:var(--el-color-info-light-9);border-radius:var(--el-border-radius-base);color:var(--el-color-info);cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:bold;line-height:var(--el-font-size-base);padding:7px 15px;transition:var(--el-transition-all)}.el-check-tag:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--primary.is-checked{background-color:var(--el-color-primary-light-8);color:var(--el-color-primary)}.el-check-tag.el-check-tag--primary.is-checked:hover{background-color:var(--el-color-primary-light-7)}.el-check-tag.el-check-tag--primary.is-checked.is-disabled{background-color:var(--el-color-primary-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-checked.is-disabled:hover{background-color:var(--el-color-primary-light-8)}.el-check-tag.el-check-tag--primary.is-disabled{background-color:var(--el-color-info-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-disabled:hover{background-color:var(--el-color-info-light-9)}.el-check-tag.el-check-tag--success.is-checked{background-color:var(--el-color-success-light-8);color:var(--el-color-success)}.el-check-tag.el-check-tag--success.is-checked:hover{background-color:var(--el-color-success-light-7)}.el-check-tag.el-check-tag--success.is-checked.is-disabled{background-color:var(--el-color-success-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-checked.is-disabled:hover{background-color:var(--el-color-success-light-8)}.el-check-tag.el-check-tag--success.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-disabled,.el-check-tag.el-check-tag--success.is-disabled:hover{background-color:var(--el-color-success-light-9)}.el-check-tag.el-check-tag--warning.is-checked{background-color:var(--el-color-warning-light-8);color:var(--el-color-warning)}.el-check-tag.el-check-tag--warning.is-checked:hover{background-color:var(--el-color-warning-light-7)}.el-check-tag.el-check-tag--warning.is-checked.is-disabled{background-color:var(--el-color-warning-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-checked.is-disabled:hover{background-color:var(--el-color-warning-light-8)}.el-check-tag.el-check-tag--warning.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-disabled,.el-check-tag.el-check-tag--warning.is-disabled:hover{background-color:var(--el-color-warning-light-9)}.el-check-tag.el-check-tag--danger.is-checked{background-color:var(--el-color-danger-light-8);color:var(--el-color-danger)}.el-check-tag.el-check-tag--danger.is-checked:hover{background-color:var(--el-color-danger-light-7)}.el-check-tag.el-check-tag--danger.is-checked.is-disabled{background-color:var(--el-color-danger-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-checked.is-disabled:hover{background-color:var(--el-color-danger-light-8)}.el-check-tag.el-check-tag--danger.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-disabled,.el-check-tag.el-check-tag--danger.is-disabled:hover{background-color:var(--el-color-danger-light-9)}.el-check-tag.el-check-tag--error.is-checked{background-color:var(--el-color-error-light-8);color:var(--el-color-error)}.el-check-tag.el-check-tag--error.is-checked:hover{background-color:var(--el-color-error-light-7)}.el-check-tag.el-check-tag--error.is-checked.is-disabled{background-color:var(--el-color-error-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-checked.is-disabled:hover{background-color:var(--el-color-error-light-8)}.el-check-tag.el-check-tag--error.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-disabled,.el-check-tag.el-check-tag--error.is-disabled:hover{background-color:var(--el-color-error-light-9)}.el-check-tag.el-check-tag--info.is-checked{background-color:var(--el-color-info-light-8);color:var(--el-color-info)}.el-check-tag.el-check-tag--info.is-checked:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--info.is-checked.is-disabled{background-color:var(--el-color-info-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-checked.is-disabled:hover{background-color:var(--el-color-info-light-8)}.el-check-tag.el-check-tag--info.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-disabled,.el-check-tag.el-check-tag--info.is-disabled:hover{background-color:var(--el-color-info-light-9)}.el-checkbox-button{--el-checkbox-button-checked-bg-color:var(--el-color-primary);--el-checkbox-button-checked-text-color:var(--el-color-white);--el-checkbox-button-checked-border-color:var(--el-color-primary);display:inline-block;position:relative}.el-checkbox-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-checkbox-font-weight);line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-checkbox-button__inner.is-round{padding:8px 15px}.el-checkbox-button__inner:hover{color:var(--el-color-primary)}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{margin:0;opacity:0;outline:none;position:absolute;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{background-color:var(--el-checkbox-button-checked-bg-color);border-color:var(--el-checkbox-button-checked-border-color);box-shadow:-1px 0 0 0 var(--el-color-primary-light-7);color:var(--el-checkbox-button-checked-text-color)}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button.is-disabled .el-checkbox-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:var(--el-button-disabled-border-color,var(--el-border-color-light))}.el-checkbox-button:first-child .el-checkbox-button__inner{border-bottom-left-radius:var(--el-border-radius-base);border-top-left-radius:var(--el-border-radius-base);box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button:last-child .el-checkbox-button__inner{border-bottom-right-radius:var(--el-border-radius-base);border-top-right-radius:var(--el-border-radius-base)}.el-checkbox-button--large .el-checkbox-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-checkbox-button--large .el-checkbox-button__inner.is-round{padding:12px 19px}.el-checkbox-button--small .el-checkbox-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:5px 11px}.el-checkbox-group{font-size:0;line-height:0}.el-checkbox{--el-checkbox-font-size:14px;--el-checkbox-font-weight:var(--el-font-weight-primary);--el-checkbox-text-color:var(--el-text-color-regular);--el-checkbox-input-height:14px;--el-checkbox-input-width:14px;--el-checkbox-border-radius:var(--el-border-radius-small);--el-checkbox-bg-color:var(--el-fill-color-blank);--el-checkbox-input-border:var(--el-border);--el-checkbox-disabled-border-color:var(--el-border-color);--el-checkbox-disabled-input-fill:var(--el-fill-color-light);--el-checkbox-disabled-icon-color:var(--el-text-color-placeholder);--el-checkbox-disabled-checked-input-fill:var(--el-border-color-extra-light);--el-checkbox-disabled-checked-input-border-color:var(--el-border-color);--el-checkbox-disabled-checked-icon-color:var(--el-text-color-placeholder);--el-checkbox-checked-text-color:var(--el-color-primary);--el-checkbox-checked-input-border-color:var(--el-color-primary);--el-checkbox-checked-bg-color:var(--el-color-primary);--el-checkbox-checked-icon-color:var(--el-color-white);--el-checkbox-input-border-color-hover:var(--el-color-primary);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;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;will-change:transform}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-disabled-checked-icon-color);border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-checked-icon-color);transform:translate(-45%,-60%) rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:var(--el-checkbox-checked-text-color)}.el-checkbox__input.is-focus:not(.is-checked) .el-checkbox__original:not(:focus-visible){border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{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:50%;position:absolute;top:50%;transform:translate(-45%,-60%) 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}[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-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);box-sizing:border-box;color:var(--el-collapse-header-text-color);cursor:pointer;display:flex;font-size:var(--el-collapse-header-font-size);font-weight:500;line-height:var(--el-collapse-header-height);min-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;transition:transform var(--el-transition-duration)}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__title{flex:auto;text-align:left}.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-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-icon-position-left .el-collapse-item__header{gap:8px}.el-collapse-icon-position-left .el-collapse-item__title{order:1}.el-collapse-icon-position-right .el-collapse-item__header{padding-right:8px}.el-color-picker-panel{--el-colorpicker-bg-color:var(--el-bg-color-overlay);--el-fill-color-blank:var(--el-colorpicker-bg-color);background:var(--el-colorpicker-bg-color);box-sizing:content-box;padding:12px;width:300px}.el-color-picker-panel.is-border{border:1px solid var(--el-border-color-lighter);border-radius:4px}.el-color-picker-panel__wrapper{margin-bottom:6px}.el-color-picker-panel__footer{display:flex;justify-content:space-between;margin-top:12px;text-align:right}.el-color-picker-panel__footer .el-input{color:#000000;font-size:12px;line-height:26px;width:160px}.el-color-picker-panel.is-disabled .el-color-hue-slider,.el-color-picker-panel.is-disabled .el-color-svpanel{cursor:not-allowed;opacity:.3}.el-color-picker-panel.is-disabled .el-color-hue-slider__thumb{cursor:not-allowed}.el-color-picker-panel.is-disabled .el-color-alpha-slider,.el-color-picker-panel.is-disabled .el-color-predefine .el-color-predefine__color-selector{cursor:not-allowed;opacity:.3}.el-color-predefine{display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:flex;flex:1;flex-wrap:wrap;gap:8px}.el-color-predefine__color-selector{border:none;border-radius:var(--el-border-radius-base);cursor:pointer;height:20px;outline:none;overflow:hidden;padding:0;width:20px}.el-color-predefine__color-selector.selected{box-shadow:0 0 3px 2px var(--el-color-primary)}.el-color-predefine__color-selector:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-color-predefine__color-selector>div{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:#f00;box-sizing:border-box;float:right;height:12px;padding:0 2px;position:relative;width:280px}.el-color-hue-slider__bar{background:linear-gradient(90deg,#f00 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,#f00);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 rgba(0,0,0,.6);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,#f00 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,#f00)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{height:4px;left:0;top:0;width:100%}.el-color-svpanel{background-image:linear-gradient(0deg,#000,rgba(0,0,0,0)),linear-gradient(90deg,#fff,rgba(255,255,255,0));height:180px;position:relative;width:280px}.el-color-svpanel__cursor{border-radius:50%;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);cursor:pointer;height:4px;position:absolute;transform:translate(-2px,-2px);width:4px}.el-color-svpanel__cursor:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.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.is-disabled .el-color-alpha-slider__thumb{cursor:not-allowed}.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 rgba(0,0,0,.6);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,rgba(255,255,255,0) 0,rgb(255,255,255))}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{height:4px;left:0;top:0;width:100%}.el-color-picker-panel{--el-color-picker-alpha-bg-a:#ccc;--el-color-picker-alpha-bg-b:transparent}.dark .el-color-picker-panel{--el-color-picker-alpha-bg-a:#333333}.el-color-picker{display:inline-block;height:32px;line-height:normal;outline:none;position:relative;width:32px}.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{background-color:var(--el-fill-color-light);cursor:not-allowed}.el-color-picker.is-disabled .el-color-picker__color{opacity:.3}.el-color-picker--large{height:40px;width:40px}.el-color-picker--small{height:24px;width:24px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{transform:scale(.8)}.el-color-picker__trigger{align-items:center;border:1px solid var(--el-border-color);border-radius:4px;cursor:pointer;display:inline-flex;font-size:0;justify-content:center;padding:4px}.el-color-picker__color,.el-color-picker__trigger{box-sizing:border-box;height:100%;position:relative;width:100%}.el-color-picker__color{border:1px solid var(--el-text-color-secondary);border-radius:var(--el-border-radius-small);display:block;text-align:center}.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:#ffffff;display:inline-flex;font-size:12px;justify-content:center}.el-color-picker__panel{background-color:#ffffff;border-radius:var(--el-border-radius-base);box-shadow:var(--el-box-shadow-light)}.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-container{box-sizing:border-box;display:flex;flex:1;flex-basis:auto;flex-direction:row;min-width:0}.el-container.is-vertical{flex-direction:column}.el-date-table{font-size:12px;-webkit-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:var(--el-datepicker-text-color)}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child .el-date-table-cell{border-bottom-left-radius:15px;border-top-left-radius:15px;margin-left:5px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child .el-date-table-cell{border-bottom-right-radius:15px;border-top-right-radius:15px;margin-right:5px}.el-date-table.is-week-mode .el-date-table__row.current .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td{box-sizing:border-box;cursor:pointer;height:30px;padding:4px 0;position:relative;text-align:center;width:32px}.el-date-table td .el-date-table-cell{box-sizing:border-box;height:30px;padding:3px 0}.el-date-table td .el-date-table-cell .el-date-table-cell__text{border-radius:50%;display:block;height:24px;left:50%;line-height:24px;margin:0 auto;position:absolute;transform:translateX(-50%);width:24px}.el-date-table td.next-month,.el-date-table td.prev-month{color:var(--el-datepicker-off-text-color)}.el-date-table td.today{position:relative}.el-date-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:bold}.el-date-table td.today.end-date .el-date-table-cell__text,.el-date-table td.today.start-date .el-date-table-cell__text{color:#ffffff}.el-date-table td.available:hover{color:var(--el-datepicker-hover-text-color)}.el-date-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-date-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#ffffff}.el-date-table td.current:not(.disabled):focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-date-table td.end-date .el-date-table-cell,.el-date-table td.start-date .el-date-table-cell{color:#ffffff}.el-date-table td.end-date .el-date-table-cell__text,.el-date-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color)}.el-date-table td.start-date .el-date-table-cell{border-bottom-left-radius:15px;border-top-left-radius:15px;margin-left:5px}.el-date-table td.end-date .el-date-table-cell{border-bottom-right-radius:15px;border-top-right-radius:15px;margin-right:5px}.el-date-table td.disabled .el-date-table-cell{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed;opacity:1}.el-date-table td.selected .el-date-table-cell{border-radius:15px;margin-left:5px;margin-right:5px}.el-date-table td.selected .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);border-radius:15px;color:#ffffff}.el-date-table td.week{color:var(--el-datepicker-off-text-color);cursor:default;font-size:80%}.el-date-table td:focus{outline:none}.el-date-table th{border-bottom:1px solid var(--el-border-color-lighter);color:var(--el-datepicker-header-text-color);font-weight:400;padding:5px}.el-date-table th.el-date-table__week-header{padding:0;width:24px}.el-month-table{border-collapse:collapse;font-size:12px;margin:-1px}.el-month-table td{cursor:pointer;padding:8px 0;position:relative;text-align:center;width:68px}.el-month-table td .el-date-table-cell{box-sizing:border-box;height:48px;padding:6px 0}.el-month-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:bold}.el-month-table td.today.end-date .el-date-table-cell__text,.el-month-table td.today.start-date .el-date-table-cell__text{color:#ffffff}.el-month-table td.disabled .el-date-table-cell__text{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed}.el-month-table td.disabled .el-date-table-cell__text:hover{color:var(--el-text-color-placeholder)}.el-month-table td .el-date-table-cell__text{border-radius:18px;color:var(--el-datepicker-text-color);display:block;height:36px;left:50%;line-height:36px;margin:0 auto;position:absolute;transform:translateX(-50%);width:54px}.el-month-table td .el-date-table-cell__text:hover{color:var(--el-datepicker-hover-text-color)}.el-month-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-month-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-month-table td.end-date .el-date-table-cell,.el-month-table td.start-date .el-date-table-cell{color:#ffffff}.el-month-table td.end-date .el-date-table-cell__text,.el-month-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#ffffff}.el-month-table td.start-date .el-date-table-cell{border-bottom-left-radius:24px;border-top-left-radius:24px;margin-left:3px}.el-month-table td.end-date .el-date-table-cell{border-bottom-right-radius:24px;border-top-right-radius:24px;margin-right:3px}.el-month-table td.current:not(.disabled) .el-date-table-cell{border-radius:24px;margin-left:3px;margin-right:3px}.el-month-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#ffffff}.el-month-table td:focus-visible{outline:none}.el-month-table td:focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-year-table{border-collapse:collapse;font-size:12px;margin:-1px}.el-year-table .el-icon{color:var(--el-datepicker-icon-color)}.el-year-table td{cursor:pointer;padding:8px 0;position:relative;text-align:center;width:68px}.el-year-table td .el-date-table-cell{box-sizing:border-box;height:48px;padding:6px 0}.el-year-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:bold}.el-year-table td.today.end-date .el-date-table-cell__text,.el-year-table td.today.start-date .el-date-table-cell__text{color:#ffffff}.el-year-table td.disabled .el-date-table-cell__text{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed}.el-year-table td.disabled .el-date-table-cell__text:hover{color:var(--el-text-color-placeholder)}.el-year-table td .el-date-table-cell__text{border-radius:18px;color:var(--el-datepicker-text-color);display:block;height:36px;left:50%;line-height:36px;margin:0 auto;position:absolute;transform:translateX(-50%);width:60px}.el-year-table td .el-date-table-cell__text:hover{color:var(--el-datepicker-hover-text-color)}.el-year-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-year-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-year-table td.end-date .el-date-table-cell,.el-year-table td.start-date .el-date-table-cell{color:#ffffff}.el-year-table td.end-date .el-date-table-cell__text,.el-year-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#ffffff}.el-year-table td.start-date .el-date-table-cell{border-bottom-left-radius:24px;border-top-left-radius:24px}.el-year-table td.end-date .el-date-table-cell{border-bottom-right-radius:24px;border-top-right-radius:24px}.el-year-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#ffffff}.el-year-table td:focus-visible{outline:none}.el-year-table td:focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{display:inline-block;max-height:192px;overflow:auto;position:relative;vertical-align:top;width:50%}.el-time-spinner__wrapper.el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;overflow:hidden;text-align:center}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:default}.el-time-spinner__arrow{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;height:30px;left:0;line-height:30px;position:absolute;text-align:center;width:100%;z-index:var(--el-index-normal)}.el-time-spinner__arrow:hover{color:var(--el-color-primary)}.el-time-spinner__arrow.arrow-up{top:10px}.el-time-spinner__arrow.arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__list{list-style:none;margin:0}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";display:block;height:80px;width:100%}.el-time-spinner__item{color:var(--el-text-color-regular);font-size:12px;height:32px;line-height:32px}.el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:pointer}.el-time-spinner__item.is-active:not(.is-disabled){color:var(--el-text-color-primary);font-weight:bold}.el-time-spinner__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-picker__popper{--el-datepicker-border-color:var(--el-disabled-border-color)}.el-picker__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-picker__popper.el-popper,.el-picker__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-datepicker-border-color)}.el-picker__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-date-editor{--el-date-editor-width:220px;--el-date-editor-monthrange-width:300px;--el-date-editor-daterange-width:350px;--el-date-editor-datetimerange-width:400px;--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;position:relative;text-align:left;vertical-align:middle}.el-date-editor.el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset}.el-date-editor.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-date-editor.is-focus .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-date-editor.el-input,.el-date-editor.el-input__wrapper{height:var(--el-input-height,var(--el-component-size));width:var(--el-date-editor-width)}.el-date-editor--monthrange{--el-date-editor-width:var(--el-date-editor-monthrange-width)}.el-date-editor--daterange,.el-date-editor--timerange{--el-date-editor-width:var(--el-date-editor-daterange-width)}.el-date-editor--datetimerange{--el-date-editor-width:var(--el-date-editor-datetimerange-width)}.el-date-editor--dates .el-input__wrapper{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .clear-icon,.el-date-editor .close-icon{cursor:pointer}.el-date-editor .clear-icon:hover{color:var(--el-input-clear-hover-color)}.el-date-editor .el-range__icon{color:var(--el-text-color-placeholder);float:left;font-size:14px;height:inherit}.el-date-editor .el-range__icon svg{vertical-align:middle}.el-date-editor .el-range-input{appearance:none;background-color:transparent;border:none;color:var(--el-text-color-regular);display:inline-block;font-size:var(--el-font-size-base);height:30px;line-height:30px;margin:0;outline:none;padding:0;text-align:center;width:39%}.el-date-editor .el-range-input::placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-separator{align-items:center;color:var(--el-text-color-primary);display:inline-flex;flex:1;font-size:14px;height:100%;justify-content:center;margin:0;overflow-wrap:break-word;padding:0 5px}.el-date-editor .el-range__close-icon{color:var(--el-text-color-placeholder);cursor:pointer;font-size:14px;height:inherit;width:unset}.el-date-editor .el-range__close-icon:hover{color:var(--el-input-clear-hover-color)}.el-date-editor .el-range__close-icon svg{vertical-align:middle}.el-date-editor .el-range__close-icon--hidden{opacity:0;visibility:hidden}.el-range-editor.el-input__wrapper{align-items:center;display:inline-flex;padding:0 10px;vertical-align:middle}.el-range-editor.is-active,.el-range-editor.is-active:hover{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-range-editor--large{line-height:var(--el-component-size-large)}.el-range-editor--large.el-input__wrapper{height:var(--el-component-size-large)}.el-range-editor--large .el-range-separator{font-size:14px;line-height:40px}.el-range-editor--large .el-range-input{font-size:14px;height:38px;line-height:38px}.el-range-editor--small{line-height:var(--el-component-size-small)}.el-range-editor--small.el-input__wrapper{height:var(--el-component-size-small)}.el-range-editor--small .el-range-separator{font-size:12px;line-height:24px}.el-range-editor--small .el-range-input{font-size:12px;height:22px;line-height:22px}.el-range-editor.is-disabled{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled,.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:var(--el-disabled-border-color)}.el-range-editor.is-disabled input{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled input::placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled .el-range-separator{color:var(--el-disabled-text-color)}.el-picker-panel{background:var(--el-datepicker-bg-color);border-radius:var(--el-popper-border-radius,var(--el-border-radius-base));color:var(--el-text-color-regular);line-height:30px}.el-picker-panel .el-time-panel{background-color:var(--el-datepicker-bg-color);border:1px solid var(--el-datepicker-border-color);box-shadow:var(--el-box-shadow-light);margin:5px 0}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{clear:both;content:"";display:table}.el-picker-panel__content{margin:15px;position:relative}.el-picker-panel__footer{background-color:var(--el-datepicker-bg-color);border-top:1px solid var(--el-datepicker-inner-border-color);font-size:0;padding:4px 12px;position:relative;text-align:right}.el-picker-panel__shortcut{background-color:transparent;border:0;color:var(--el-datepicker-text-color);cursor:pointer;display:block;font-size:14px;line-height:28px;outline:none;padding-left:12px;text-align:left;width:100%}.el-picker-panel__shortcut:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:var(--el-datepicker-active-color)}.el-picker-panel__btn{background-color:transparent;border:1px solid var(--el-fill-color-darker);border-radius:2px;color:var(--el-text-color-primary);cursor:pointer;font-size:12px;line-height:24px;outline:none;padding:0 20px}.el-picker-panel__btn[disabled]{color:var(--el-text-color-disabled);cursor:not-allowed}.el-picker-panel__icon-btn{background:transparent;border:0;color:var(--el-datepicker-icon-color);cursor:pointer;font-size:12px;line-height:1;margin-top:8px;outline:none;padding:1px 6px}.el-picker-panel__icon-btn:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn:focus-visible{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn.is-disabled{color:var(--el-text-color-disabled)}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__icon-btn.is-disabled .el-icon{cursor:inherit}.el-picker-panel__icon-btn .el-icon{cursor:pointer;font-size:inherit}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel.is-disabled .el-picker-panel__prev-btn{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__prev-btn:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__prev-btn .el-icon{cursor:inherit}.el-picker-panel.is-disabled .el-picker-panel__next-btn{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__next-btn:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__next-btn .el-icon{cursor:inherit}.el-picker-panel.is-disabled .el-picker-panel__icon-btn{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__icon-btn:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__icon-btn .el-icon{cursor:inherit}.el-picker-panel.is-disabled .el-picker-panel__shortcut{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__shortcut:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__shortcut .el-icon{cursor:inherit}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{border-right:1px solid var(--el-datepicker-inner-border-color);bottom:0;box-sizing:border-box;overflow:auto;padding-top:6px;position:absolute;top:0;width:110px}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);--el-datepicker-bg-color:var(--el-bg-color-overlay);--el-fill-color-blank:var(--el-datepicker-bg-color);width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{display:table-cell;padding:0 5px;position:relative}.el-date-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;display:table;font-size:12px;padding:8px 5px 5px;position:relative;width:100%}.el-date-picker__header{padding:12px 12px 0;text-align:center}.el-date-picker__header--bordered{border-bottom:1px solid var(--el-border-color-lighter);margin-bottom:0;padding-bottom:12px}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{color:var(--el-text-color-regular);cursor:pointer;font-size:16px;font-weight:500;line-height:22px;padding:0 5px;text-align:center}.el-date-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-picker__header-label:focus-visible{color:var(--el-datepicker-hover-text-color);outline:none}.el-date-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{cursor:pointer;float:left;line-height:30px;margin-left:10px}.el-date-picker .el-time-panel{position:absolute}.el-date-picker.is-disabled .el-date-picker__header-label{color:var(--el-text-color-disabled)}.el-date-picker.is-disabled .el-date-picker__header-label:hover{cursor:not-allowed}.el-date-picker.is-disabled .el-date-picker__header-label .el-icon{cursor:inherit}.el-date-range-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);--el-datepicker-bg-color:var(--el-bg-color-overlay);width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{height:28px;position:relative;text-align:center}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__header-label{color:var(--el-text-color-regular);cursor:pointer;font-size:16px;font-weight:500;line-height:22px;padding:0 5px;text-align:center}.el-date-range-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-range-picker__header-label:focus-visible{color:var(--el-datepicker-hover-text-color);outline:none}.el-date-range-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-range-picker__content{box-sizing:border-box;display:table-cell;margin:0;padding:16px;width:50%}.el-date-range-picker__content.is-left{border-right:1px solid var(--el-datepicker-inner-border-color)}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;display:table;font-size:12px;padding:8px 5px 5px;position:relative;width:100%}.el-date-range-picker__time-header>.el-icon-arrow-right{color:var(--el-datepicker-icon-color);display:table-cell;font-size:20px;vertical-align:middle}.el-date-range-picker__time-picker-wrap{display:table-cell;padding:0 5px;position:relative}.el-date-range-picker__time-picker-wrap .el-picker-panel{background:#ffffff;position:absolute;right:0;top:13px;z-index:1}.el-date-range-picker__time-picker-wrap .el-time-panel{position:absolute}.el-date-range-picker.is-disabled .el-date-range-picker__header-label{color:var(--el-text-color-disabled)}.el-date-range-picker.is-disabled .el-date-range-picker__header-label:hover{cursor:not-allowed}.el-date-range-picker.is-disabled .el-date-range-picker__header-label .el-icon{cursor:inherit}.el-time-range-picker{overflow:visible;width:354px}.el-time-range-picker__content{padding:10px;position:relative;text-align:center;z-index:1}.el-time-range-picker__cell{box-sizing:border-box;display:inline-block;margin:0;padding:4px 7px 7px;width:50%}.el-time-range-picker__header{font-size:14px;margin-bottom:5px;text-align:center}.el-time-range-picker__body{border:1px solid var(--el-datepicker-border-color);border-radius:2px}.el-time-panel{border-radius:2px;box-sizing:content-box;left:0;position:relative;-webkit-user-select:none;user-select:none;width:180px;z-index:var(--el-index-top)}.el-time-panel__content{font-size:0;overflow:hidden;position:relative}.el-time-panel__content:after,.el-time-panel__content:before{box-sizing:border-box;content:"";height:32px;left:0;margin-top:-16px;padding-top:6px;position:absolute;right:0;text-align:left;top:50%;z-index:-1}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{border-bottom:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);margin-left:12%;margin-right:12%;padding-left:50%}.el-time-panel__content.has-seconds:after{left:66.6666666667%}.el-time-panel__content.has-seconds:before{padding-left:33.3333333333%}.el-time-panel__footer{border-top:1px solid var(--el-timepicker-inner-border-color,var(--el-border-color-light));box-sizing:border-box;height:36px;line-height:25px;padding:4px;text-align:right}.el-time-panel__btn{background-color:transparent;border:none;color:var(--el-text-color-primary);cursor:pointer;font-size:12px;line-height:28px;margin:0 5px;outline:none;padding:0 5px}.el-time-panel__btn.confirm{color:var(--el-timepicker-active-color,var(--el-color-primary));font-weight:800}.el-picker-panel.is-border{border:1px solid var(--el-border-color-lighter)}.el-picker-panel.is-border .el-picker-panel__body-wrapper{position:relative}.el-picker-panel.is-border.el-picker-panel [slot=sidebar],.el-picker-panel.is-border.el-picker-panel__sidebar{border-right:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;height:100%;overflow:auto;padding-top:6px;position:absolute;top:0;width:110px}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;color:var(--el-text-color-primary);font-size:var(--el-font-size-base)}.el-descriptions__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:bold}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;font-size:14px;line-height:23px;text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{background:var(--el-descriptions-item-bordered-label-background);color:var(--el-text-color-regular);font-weight:bold}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:0.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-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;border-radius: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;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-modal-dialog.is-penetrable{pointer-events:none}.el-modal-dialog.is-penetrable .el-dialog{pointer-events:auto}.el-overlay-dialog{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0}.el-overlay-dialog.is-closing .el-dialog{pointer-events:none}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform: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-divider{position:relative}.el-divider--horizontal{border-top:1px var(--el-border-color) var(--el-border-style);display:block;height:1px;margin:24px 0;width:100%}.el-divider--vertical{border-left:1px var(--el-border-color) var(--el-border-style);display:inline-block;height:1em;margin:0 8px;position:relative;vertical-align:middle;width:1px}.el-divider__text{background-color:var(--el-bg-color);color:var(--el-text-color-primary);font-size:14px;font-weight:500;padding:0 20px;position:absolute}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.el-overlay.is-drawer{overflow:hidden}.el-drawer{--el-drawer-bg-color:var(--el-dialog-bg-color,var(--el-bg-color));--el-drawer-padding-primary:var(--el-dialog-padding-primary,20px);--el-drawer-dragger-size:8px;background-color:var(--el-drawer-bg-color);box-shadow:var(--el-box-shadow-dark);box-sizing:border-box;display:flex;flex-direction:column;position:absolute;transition:all var(--el-transition-duration)}.el-drawer .btt,.el-drawer .ltr,.el-drawer .rtl,.el-drawer .ttb{transform:translate(0)}.el-drawer__sr-focus:focus{outline:none!important}.el-drawer__header{align-items:center;color:var(--el-text-color-primary);display:flex;margin-bottom:32px;overflow:hidden;padding:var(--el-drawer-padding-primary);padding-bottom:0}.el-drawer__header>:first-child{flex:1}.el-drawer__title{flex:1;font-size:16px;line-height:inherit;margin:0}.el-drawer__footer{overflow:hidden;padding:var(--el-drawer-padding-primary);padding-top:10px;text-align:right}.el-drawer__close-btn{background-color:transparent;border:none;color:inherit;cursor:pointer;display:inline-flex;font-size:var(--el-font-size-extra-large);outline:none}.el-drawer__close-btn:focus i,.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__body{flex:1;overflow:auto;padding:var(--el-drawer-padding-primary)}.el-drawer__body>*{box-sizing:border-box}.el-drawer.is-dragging{transition:none}.el-drawer__dragger{-webkit-user-select:none;user-select:none}.el-drawer__dragger,.el-drawer__dragger:before{background-color:transparent;position:absolute;transition:all .2s}.el-drawer__dragger:before{content:""}.el-drawer__dragger:hover:before{background-color:var(--el-color-primary)}.el-drawer.ltr,.el-drawer.rtl{bottom:0;height:100%;top:0}.el-drawer.ltr>.el-drawer__dragger,.el-drawer.rtl>.el-drawer__dragger{bottom:0;cursor:ew-resize;height:100%;top:0;width:var(--el-drawer-dragger-size)}.el-drawer.ltr>.el-drawer__dragger:before,.el-drawer.rtl>.el-drawer__dragger:before{bottom:0;top:0;width:3px}.el-drawer.btt,.el-drawer.ttb{left:0;right:0;width:100%}.el-drawer.btt>.el-drawer__dragger,.el-drawer.ttb>.el-drawer__dragger{cursor:ns-resize;height:var(--el-drawer-dragger-size);left:0;right:0;width:100%}.el-drawer.btt>.el-drawer__dragger:before,.el-drawer.ttb>.el-drawer__dragger:before{height:3px;left:0;right:0}.el-drawer.ltr{left:0}.el-drawer.ltr>.el-drawer__dragger{right:0}.el-drawer.ltr>.el-drawer__dragger:before{right:-2px}.el-drawer.rtl{right:0}.el-drawer.rtl>.el-drawer__dragger{left:0}.el-drawer.rtl>.el-drawer__dragger:before{left:-2px}.el-drawer.ttb{top:0}.el-drawer.ttb>.el-drawer__dragger{bottom:0}.el-drawer.ttb>.el-drawer__dragger:before{bottom:-2px}.el-drawer.btt{bottom:0}.el-drawer.btt>.el-drawer__dragger{top:0}.el-drawer.btt>.el-drawer__dragger:before{top:-2px}.el-modal-drawer.is-penetrable{pointer-events:none}.el-modal-drawer.is-penetrable .el-drawer{pointer-events:auto}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-active,.el-drawer-fade-enter-from,.el-drawer-fade-enter-to,.el-drawer-fade-leave-active,.el-drawer-fade-leave-from,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{background-color:transparent!important}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translateX(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translateX(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)}.el-dropdown{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);line-height:1;position:relative;vertical-align:top}.el-dropdown.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-dropdown__popper{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10}.el-dropdown__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-dropdown-menu-box-shadow)}.el-dropdown__popper.el-popper,.el-dropdown__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-dropdown__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-dropdown__popper .el-dropdown-menu{border:none}.el-dropdown__popper .el-dropdown__popper-selfdefine{outline:none}.el-dropdown__popper .el-scrollbar__bar{z-index:calc(var(--el-dropdown-menu-index) + 1)}.el-dropdown__popper .el-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:0}.el-dropdown .el-dropdown__caret-button{align-items:center;border-left:none;display:inline-flex;justify-content:center;padding-left:0;padding-right:0;width:32px}.el-dropdown .el-dropdown__caret-button>span{display:inline-flex}.el-dropdown .el-dropdown__caret-button:before{background:var(--el-overlay-color-lighter);bottom:-1px;content:"";display:block;left:0;position:absolute;top:-1px;width:1px}.el-dropdown .el-dropdown__caret-button.el-button:before{background:var(--el-border-color);opacity:.5}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{font-size:inherit;padding-left:0}.el-dropdown .el-dropdown-selfdefine{outline:none}.el-dropdown--large .el-dropdown__caret-button{width:40px}.el-dropdown--small .el-dropdown__caret-button{width:24px}.el-dropdown-menu{background-color:var(--el-bg-color-overlay);border:none;border-radius:var(--el-border-radius-base);box-shadow:none;left:0;list-style:none;margin:0;padding:5px 0;position:relative;top:0;z-index:var(--el-dropdown-menu-index)}.el-dropdown-menu__item{align-items:center;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:var(--el-font-size-base);line-height:22px;list-style:none;margin:0;outline:none;padding:5px 16px;white-space:nowrap}.el-dropdown-menu__item:not(.is-disabled):focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:var(--el-dropdown-menuItem-hover-fill);color:var(--el-dropdown-menuItem-hover-color)}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{border-top:1px solid var(--el-border-color-lighter);margin:6px 0}.el-dropdown-menu__item.is-disabled{color:var(--el-text-color-disabled);cursor:not-allowed}.el-dropdown-menu--large{padding:7px 0}.el-dropdown-menu--large .el-dropdown-menu__item{font-size:14px;line-height:22px;padding:7px 20px}.el-dropdown-menu--large .el-dropdown-menu__item--divided{margin:8px 0}.el-dropdown-menu--small{padding:3px 0}.el-dropdown-menu--small .el-dropdown-menu__item{font-size:12px;line-height:20px;padding:2px 12px}.el-dropdown-menu--small .el-dropdown-menu__item--divided{margin:4px 0}.el-empty{--el-empty-padding:40px 0;--el-empty-image-width:160px;--el-empty-description-margin-top:20px;--el-empty-bottom-margin-top:20px;--el-empty-fill-color-0:var(--el-color-white);--el-empty-fill-color-1:#fcfcfd;--el-empty-fill-color-2:#f8f9fb;--el-empty-fill-color-3:#f7f8fc;--el-empty-fill-color-4:#eeeff3;--el-empty-fill-color-5:#edeef2;--el-empty-fill-color-6:#e9ebef;--el-empty-fill-color-7:#e5e7e9;--el-empty-fill-color-8:#e0e3e9;--el-empty-fill-color-9:#d5d7de;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%;object-fit:contain;-webkit-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-footer{--el-footer-padding:0 20px;--el-footer-height:60px;box-sizing:border-box;flex-shrink:0;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start;text-align:left}.el-form-item--label-right .el-form-item__label{justify-content:flex-end;text-align:right}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;padding-right:0;text-align:left;width:fit-content}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-header{--el-header-padding:0 20px;--el-header-height:60px;box-sizing:border-box;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-image-viewer__wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.el-image-viewer__wrapper:focus{outline:none!important}.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;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer}.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;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:translateX(-50%)}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;gap:22px;height:100%;justify-content:space-around;padding:0 6px;width:100%}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{bottom:90px;color:#fff;cursor:default;left:50%;transform:translateX(-50%)}.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%}.el-image-viewer-parent--hidden{overflow:hidden}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform: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)}}.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-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::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 .el-input__count.is-outside{background:transparent;bottom:unset;line-height:1;padding-top:2px;position:absolute;right:0;top:100%}.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::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 .el-input__count.is-outside{height:unset;padding-top:2px;position:absolute;right:0;top:100%}.el-input .el-input__count.is-outside .el-input__count-inner{background:transparent;line-height:1;padding-left:0}.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{--el-input-inner-height:calc(var(--el-input-height, 32px) - 2px)}.el-input__inner{-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::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%;line-height:var(--el-input-inner-height);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%;line-height:var(--el-input-inner-height);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;cursor:not-allowed}.el-input.is-disabled .el-input__inner{color:var(--el-disabled-text-color);-webkit-text-fill-color:var(--el-disabled-text-color);cursor:not-allowed}.el-input.is-disabled .el-input__inner::placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-disabled .el-input__prefix-inner,.el-input.is-disabled .el-input__suffix-inner{pointer-events:none}.el-input.is-exceed .el-input__wrapper{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-input.is-exceed .el-input__suffix .el-input__count{color:var(--el-color-danger)}.el-input--large{--el-input-height:var(--el-component-size-large);font-size:14px}.el-input--large .el-input__wrapper{padding:1px 15px}.el-input--large{--el-input-inner-height:calc(var(--el-input-height, 40px) - 2px)}.el-input--small{--el-input-height:var(--el-component-size-small);font-size:12px}.el-input--small .el-input__wrapper{padding:1px 7px}.el-input--small{--el-input-inner-height:calc(var(--el-input-height, 24px) - 2px)}.el-input-group{align-items:stretch;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;flex:1;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.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.el-input-number__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;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.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{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.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__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-input-tag{--el-input-tag-border-color-hover:var(--el-border-color-hover);--el-input-tag-placeholder-color:var(--el-text-color-placeholder);--el-input-tag-disabled-color:var(--el-disabled-text-color);--el-input-tag-disabled-border:var(--el-disabled-border-color);--el-input-tag-font-size:var(--el-font-size-base);--el-input-tag-close-hover-color:var(--el-text-color-secondary);--el-input-tag-text-color:var(--el-text-color-regular);--el-input-tag-input-focus-border-color:var(--el-color-primary);--el-input-tag-width:100%;--el-input-tag-mini-height:var(--el-component-size);--el-input-tag-gap:6px;--el-input-tag-padding:4px;--el-input-tag-inner-padding:8px;--el-input-tag-line-height:24px;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:var(--el-input-tag-font-size);line-height:var(--el-input-tag-line-height);min-height:var(--el-input-tag-mini-height);padding:var(--el-input-tag-padding);transform:translateZ(0);transition:var(--el-transition-duration);width:var(--el-input-tag-width)}.el-input-tag.is-focused{box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-input-tag.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--el-border-color-hover) inset}.el-input-tag.is-disabled{background-color:var(--el-fill-color-light);cursor:not-allowed}.el-input-tag.is-disabled,.el-input-tag.is-disabled:hover{box-shadow:0 0 0 1px var(--el-input-tag-disabled-border) inset}.el-input-tag.is-disabled.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input-tag.is-disabled .el-input-tag__inner .el-input-tag__input,.el-input-tag.is-disabled .el-input-tag__inner .el-tag{cursor:not-allowed}.el-input-tag__prefix,.el-input-tag__suffix{align-items:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:flex;flex-shrink:0;padding:0 var(--el-input-tag-inner-padding)}.el-input-tag__suffix{gap:8px}.el-input-tag__collapse-tag{line-height:1}.el-input-tag__input-tag-list{align-items:center;display:flex;flex:1;flex-wrap:wrap;gap:6px;min-width:0;position:relative}.el-input-tag__input-tag-list.is-near{margin-left:-8px}.el-input-tag__input-tag-list .el-tag{border-color:transparent;cursor:pointer}.el-input-tag__input-tag-list .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-input-tag__input-tag-list .el-tag .el-tag__content{min-width:0}.el-input-tag__inner{align-items:center;display:flex;flex:1;flex-wrap:wrap;gap:var(--el-input-tag-gap);max-width:100%;min-width:0;position:relative}.el-input-tag__inner.is-left-space{margin-left:var(--el-input-tag-inner-padding)}.el-input-tag__inner.is-right-space{margin-right:var(--el-input-tag-inner-padding)}.el-input-tag__inner.is-draggable .el-tag{cursor:move;-webkit-user-select:none;user-select:none}.el-input-tag__drop-indicator{background-color:var(--el-color-primary);height:var(--el-input-tag-line-height);position:absolute;top:0;width:1px}.el-input-tag__inner .el-tag{border-color:transparent;cursor:pointer;max-width:100%}.el-input-tag__inner .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-input-tag__inner .el-tag .el-tag__content{line-height:normal;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-input-tag__input-wrapper{flex:1}.el-input-tag__input{appearance:none;background-color:transparent;border:none;color:var(--el-input-tag-text-color);font-family:inherit;font-size:inherit;line-height:inherit;outline:none;padding:0;width:100%}.el-input-tag__input::placeholder{color:var(--el-input-tag-placeholder-color)}.el-input-tag__input-calculator{left:0;max-width:100%;overflow:hidden;position:absolute;top:0;visibility:hidden;white-space:pre}.el-input-tag--large{--el-input-tag-gap:6px;--el-input-tag-padding:8px;--el-input-tag-padding-left:8px;--el-input-tag-font-size:14px}.el-input-tag--small{--el-input-tag-gap:4px;--el-input-tag-padding:2px;--el-input-tag-padding-left:6px;--el-input-tag-font-size:12px;--el-input-tag-line-height:20px;--el-input-tag-mini-height:var(--el-component-size-small)}.el-link{--el-link-font-size:var(--el-font-size-base);--el-link-font-weight:var(--el-font-weight-primary);--el-link-text-color:var(--el-text-color-regular);--el-link-hover-text-color:var(--el-color-primary);--el-link-disabled-text-color:var(--el-text-color-placeholder);align-items:center;color:var(--el-link-text-color);cursor:pointer;display:inline-flex;flex-direction:row;font-size:var(--el-link-font-size);font-weight:var(--el-link-font-weight);justify-content:center;outline:none;padding:0;position:relative;text-decoration:none;vertical-align:middle}.el-link.is-hover-underline:hover:after{border-bottom:1px solid var(--el-link-hover-text-color);bottom:0;content:"";height:0;left:0;position:absolute;right:0}.el-link.is-underline:after{border-bottom:1px solid var(--el-link-text-color);bottom:0;content:"";height:0;left:0;position:absolute;right:0}.el-link:hover{color:var(--el-link-hover-text-color)}.el-link:hover:after{border-color:var(--el-link-hover-text-color)}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link__inner{align-items:center;display:inline-flex;justify-content:center}.el-link.el-link--primary{--el-link-text-color:var(--el-color-primary);--el-link-hover-text-color:var(--el-color-primary-light-3);--el-link-disabled-text-color:var(--el-color-primary-light-5)}.el-link.el-link--success{--el-link-text-color:var(--el-color-success);--el-link-hover-text-color:var(--el-color-success-light-3);--el-link-disabled-text-color:var(--el-color-success-light-5)}.el-link.el-link--warning{--el-link-text-color:var(--el-color-warning);--el-link-hover-text-color:var(--el-color-warning-light-3);--el-link-disabled-text-color:var(--el-color-warning-light-5)}.el-link.el-link--danger{--el-link-text-color:var(--el-color-danger);--el-link-hover-text-color:var(--el-color-danger-light-3);--el-link-disabled-text-color:var(--el-color-danger-light-5)}.el-link.el-link--error{--el-link-text-color:var(--el-color-error);--el-link-hover-text-color:var(--el-color-error-light-3);--el-link-disabled-text-color:var(--el-color-error-light-5)}.el-link.el-link--info{--el-link-text-color:var(--el-color-info);--el-link-hover-text-color:var(--el-color-info-light-3);--el-link-disabled-text-color:var(--el-color-info-light-5)}.el-link.is-disabled{color:var(--el-link-disabled-text-color);cursor:not-allowed}.el-link.is-disabled:after{border-color:var(--el-link-disabled-text-color)}:root{--el-loading-spinner-size:42px;--el-loading-fullscreen-spinner-size:50px}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{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:var(--el-color-primary);stroke-dasharray:90,150;stroke-dashoffset:0;stroke-linecap:round;stroke-width:2}.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-main{--el-main-padding:20px;box-sizing:border-box;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}:root{--el-menu-active-color:var(--el-color-primary);--el-menu-text-color:var(--el-text-color-primary);--el-menu-hover-text-color:var(--el-color-primary);--el-menu-bg-color:var(--el-fill-color-blank);--el-menu-hover-bg-color:var(--el-color-primary-light-9);--el-menu-item-height:56px;--el-menu-sub-item-height:calc(var(--el-menu-item-height) - 6px);--el-menu-horizontal-height:60px;--el-menu-horizontal-sub-item-height:36px;--el-menu-item-font-size:var(--el-font-size-base);--el-menu-item-hover-fill:var(--el-color-primary-light-9);--el-menu-border-color:var(--el-border-color);--el-menu-base-level-padding:20px;--el-menu-level-padding:20px;--el-menu-icon-width:24px}.el-menu{background-color:var(--el-menu-bg-color);border-right:1px solid var(--el-menu-border-color);box-sizing:border-box;list-style:none;margin:0;padding-left:0;position:relative}.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item-group__title,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-sub-menu__title{padding-left:calc(var(--el-menu-base-level-padding) + var(--el-menu-level)*var(--el-menu-level-padding));white-space:nowrap}.el-menu:not(.el-menu--collapse) .el-sub-menu__title{padding-right:calc(var(--el-menu-base-level-padding) + var(--el-menu-icon-width))}.el-menu--horizontal{border-right:none;display:flex;flex-wrap:nowrap;height:var(--el-menu-horizontal-height)}.el-menu--horizontal.el-menu--popup-container{height:unset}.el-menu--horizontal.el-menu{border-bottom:1px solid var(--el-menu-border-color)}.el-menu--horizontal>.el-menu-item{align-items:center;border-bottom:2px solid transparent;color:var(--el-menu-text-color);display:inline-flex;height:100%;justify-content:center;margin:0}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-sub-menu:focus,.el-menu--horizontal>.el-sub-menu:hover{outline:none}.el-menu--horizontal>.el-sub-menu:hover .el-sub-menu__title{color:var(--el-menu-hover-text-color)}.el-menu--horizontal>.el-sub-menu.is-active .el-sub-menu__title{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title{border-bottom:2px solid transparent;color:var(--el-menu-text-color);height:100%}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title:hover{background-color:var(--el-menu-bg-color)}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-sub-menu__title{align-items:center;background-color:var(--el-menu-bg-color);color:var(--el-menu-text-color);display:flex;height:var(--el-menu-horizontal-sub-item-height);line-height:var(--el-menu-horizontal-sub-item-height);padding:0 10px}.el-menu--horizontal .el-menu .el-sub-menu__title{padding-right:40px}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-menu-item.is-active:hover,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title:hover{color:var(--el-menu-active-color)}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{background-color:var(--el-menu-hover-bg-color);color:var(--el-menu-active-color,var(--el-menu-hover-text-color));outline:none}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)!important}.el-menu--collapse{width:calc(var(--el-menu-icon-width) + var(--el-menu-base-level-padding)*2)}.el-menu--collapse>.el-menu-item [class^=el-icon],.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title [class^=el-icon],.el-menu--collapse>.el-sub-menu>.el-sub-menu__title [class^=el-icon]{margin:0;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-menu--collapse>.el-menu-item .el-sub-menu__icon-arrow,.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title>span,.el-menu--collapse>.el-menu-item>span,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title>span{display:inline-block;height:0;overflow:hidden;visibility:hidden;width:0}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-sub-menu{min-width:200px}.el-menu--collapse .el-sub-menu.is-active .el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--popup{border:none;border-radius:var(--el-border-radius-small);box-shadow:var(--el-box-shadow-light);min-width:200px;padding:5px 0;z-index:100}.el-menu .el-icon{flex-shrink:0}.el-menu-item{align-items:center;box-sizing:border-box;color:var(--el-menu-text-color);cursor:pointer;display:flex;font-size:var(--el-menu-item-font-size);height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);list-style:none;padding:0 var(--el-menu-base-level-padding);position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);white-space:nowrap}.el-menu-item *{vertical-align:bottom}.el-menu-item i{color:inherit}.el-menu-item:focus,.el-menu-item:hover{outline:none}.el-menu-item:hover{background-color:var(--el-menu-hover-bg-color)}.el-menu-item.is-disabled{background:none!important;cursor:not-allowed;opacity:.25}.el-menu-item [class^=el-icon]{font-size:18px;margin-right:5px;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-menu-item.is-active{color:var(--el-menu-active-color)}.el-menu-item.is-active i{color:inherit}.el-menu-item .el-menu-tooltip__trigger{align-items:center;box-sizing:border-box;display:inline-flex;height:100%;left:0;padding:0 var(--el-menu-base-level-padding);position:absolute;top:0;width:100%}.el-sub-menu{list-style:none;margin:0;padding-left:0}.el-sub-menu__title{align-items:center;box-sizing:border-box;color:var(--el-menu-text-color);cursor:pointer;display:flex;font-size:var(--el-menu-item-font-size);height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);list-style:none;padding:0 var(--el-menu-base-level-padding);position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);white-space:nowrap}.el-sub-menu__title *{vertical-align:bottom}.el-sub-menu__title i{color:inherit}.el-sub-menu__title:focus,.el-sub-menu__title:hover{outline:none}.el-sub-menu__title.is-disabled{background:none!important;cursor:not-allowed;opacity:.25}.el-sub-menu__title:hover{background-color:var(--el-menu-hover-bg-color)}.el-sub-menu .el-menu{border:none}.el-sub-menu .el-menu-item{height:var(--el-menu-sub-item-height);line-height:var(--el-menu-sub-item-height)}.el-sub-menu.el-sub-menu__hide-arrow .el-sub-menu__title{padding-right:var(--el-menu-base-level-padding)}.el-sub-menu__hide-arrow .el-sub-menu__icon-arrow{display:none!important}.el-sub-menu.is-active .el-sub-menu__title{border-bottom-color:var(--el-menu-active-color)}.el-sub-menu.is-disabled .el-menu-item,.el-sub-menu.is-disabled .el-sub-menu__title{background:none!important;cursor:not-allowed;opacity:.25}.el-sub-menu .el-icon{font-size:18px;margin-right:5px;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-sub-menu .el-icon.el-sub-menu__icon-more{margin-right:0!important}.el-sub-menu .el-sub-menu__icon-arrow{font-size:12px;margin-right:0;margin-top:-6px;position:absolute;right:var(--el-menu-base-level-padding);top:50%;transition:transform var(--el-transition-duration);width:inherit}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{color:var(--el-text-color-secondary);font-size:12px;line-height:normal;padding:7px 0 7px var(--el-menu-base-level-padding)}.horizontal-collapse-transition .el-sub-menu__title .el-sub-menu__icon-arrow{opacity:0;transition:var(--el-transition-duration-fast)}.el-menu,.el-menu--popup-container,.el-popper{outline:none}.el-message-box{--el-messagebox-title-color:var(--el-text-color-primary);--el-messagebox-width:420px;--el-messagebox-border-radius:4px;--el-messagebox-box-shadow:var(--el-box-shadow);--el-messagebox-font-size:var(--el-font-size-large);--el-messagebox-content-font-size:var(--el-font-size-base);--el-messagebox-content-color:var(--el-text-color-regular);--el-messagebox-error-font-size:12px;--el-messagebox-padding-primary:12px;--el-messagebox-font-line-height:var(--el-font-line-height-primary);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}.is-message-box .el-overlay-message-box{bottom:0;left:0;overflow:auto;padding:16px;position:fixed;right:0;text-align:center;top:0}.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;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--primary{--el-messagebox-color:var(--el-color-primary);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--success{--el-messagebox-color:var(--el-color-success);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--info{--el-messagebox-color:var(--el-color-info);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--warning{--el-messagebox-color:var(--el-color-warning);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--error{--el-messagebox-color:var(--el-color-error);color:var(--el-messagebox-color)}.el-message-box__message{margin:0;min-width: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}.el-message-box-parent--hidden{overflow:hidden}.fade-in-linear-enter-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration)}.fade-in-linear-leave-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration) reverse}@keyframes msgbox-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:11px 15px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary);align-items:center;background-color:var(--el-message-bg-color);border-color:var(--el-message-border-color);border-radius:var(--el-border-radius-base);border-style:var(--el-border-style);border-width:var(--el-border-width);box-sizing:border-box;display:flex;gap:8px;max-width:calc(100% - 32px);padding:var(--el-message-padding);position:fixed;transition:opacity var(--el-transition-duration),transform .4s,top .4s,bottom .4s;width:fit-content}.el-message.is-left{left:16px}.el-message.is-right{right:16px}.el-message.is-center{left:0;margin:0 auto;right:0}.el-message.is-plain{background-color:var(--el-bg-color-overlay);border-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-message p{margin:0}.el-message--primary{--el-message-bg-color:var(--el-color-primary-light-9);--el-message-border-color:var(--el-color-primary-light-8);--el-message-text-color:var(--el-color-primary)}.el-message--primary .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--primary{color:var(--el-message-text-color)}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message .el-message__badge{position:absolute;right:-8px;top:-8px}.el-message__content{font-size:14px;line-height:1;padding:0}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{color:var(--el-message-close-icon-color);cursor:pointer;font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translateY(-100%)}.el-message-fade-enter-from.is-bottom,.el-message-fade-leave-to.is-bottom{transform:translateY(100%)}.el-notification{--el-notification-width:330px;--el-notification-padding:14px 26px 14px 13px;--el-notification-radius:8px;--el-notification-shadow:var(--el-box-shadow-light);--el-notification-border-color:var(--el-border-color-lighter);--el-notification-icon-size:24px;--el-notification-close-font-size:var(--el-message-close-size,16px);--el-notification-group-margin-left:13px;--el-notification-group-margin-right:8px;--el-notification-content-font-size:var(--el-font-size-base);--el-notification-content-color:var(--el-text-color-regular);--el-notification-title-font-size:16px;--el-notification-title-color:var(--el-text-color-primary);--el-notification-close-color:var(--el-text-color-secondary);--el-notification-close-hover-color:var(--el-text-color-regular);background-color:var(--el-bg-color-overlay);border:1px solid var(--el-notification-border-color);border-radius:var(--el-notification-radius);box-shadow:var(--el-notification-shadow);box-sizing:border-box;display:flex;overflow:hidden;overflow-wrap:break-word;padding:var(--el-notification-padding);position:fixed;transition:opacity var(--el-transition-duration),transform var(--el-transition-duration),left var(--el-transition-duration),right var(--el-transition-duration),top .4s,bottom var(--el-transition-duration);width:var(--el-notification-width);z-index:9999}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{flex:1;margin-left:var(--el-notification-group-margin-left);margin-right:var(--el-notification-group-margin-right);min-width:0}.el-notification__title{color:var(--el-notification-title-color);font-size:var(--el-notification-title-font-size);font-weight:bold;line-height:var(--el-notification-icon-size);margin:0}.el-notification__content{color:var(--el-notification-content-color);font-size:var(--el-notification-content-font-size);line-height:24px;margin:6px 0 0}.el-notification__content p{margin:0}.el-notification .el-notification__icon{flex-shrink:0;font-size:var(--el-notification-icon-size);height:var(--el-notification-icon-size);width:var(--el-notification-icon-size)}.el-notification .el-notification__closeBtn{color:var(--el-notification-close-color);cursor:pointer;font-size:var(--el-notification-close-font-size);position:absolute;right:15px;top:18px}.el-notification .el-notification__closeBtn:hover{color:var(--el-notification-close-hover-color)}.el-notification .el-notification--primary{--el-notification-icon-color:var(--el-color-primary);color:var(--el-notification-icon-color)}.el-notification .el-notification--success{--el-notification-icon-color:var(--el-color-success);color:var(--el-notification-icon-color)}.el-notification .el-notification--info{--el-notification-icon-color:var(--el-color-info);color:var(--el-notification-icon-color)}.el-notification .el-notification--warning{--el-notification-icon-color:var(--el-color-warning);color:var(--el-notification-icon-color)}.el-notification .el-notification--error{--el-notification-icon-color:var(--el-color-error);color:var(--el-notification-icon-color)}.el-notification-fade-enter-from.right{right:0;transform:translateX(100%)}.el-notification-fade-enter-from.left{left:0;transform:translateX(-100%)}.el-notification-fade-leave-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-page-header.is-contentful .el-page-header__main{border-top:1px solid var(--el-border-color-light);margin-top:16px}.el-page-header__header{align-items:center;display:flex;justify-content:space-between;line-height:24px}.el-page-header__left{align-items:center;display:flex;margin-right:40px;position:relative}.el-page-header__back{align-items:center;cursor:pointer;display:flex}.el-page-header__left .el-divider--vertical{margin:0 16px}.el-page-header__icon{align-items:center;display:flex;font-size:16px;margin-right:10px}.el-page-header__icon .el-icon{font-size:inherit}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{color:var(--el-text-color-primary);font-size:18px}.el-page-header__breadcrumb{margin-bottom:16px}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:normal;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination .btn-next,.el-pagination .btn-prev{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination .btn-next *,.el-pagination .btn-prev *{pointer-events:none}.el-pagination .btn-next:focus,.el-pagination .btn-prev:focus{outline:none}.el-pagination .btn-next:hover,.el-pagination .btn-prev:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-next.is-active,.el-pagination .btn-prev.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:bold}.el-pagination .btn-next.is-active.is-disabled,.el-pagination .btn-prev.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:bold}.el-pagination .btn-next.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-prev:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination .btn-next:focus-visible,.el-pagination .btn-prev:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:bold;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:normal;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:normal;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:bold}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:bold}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-popconfirm{outline:none}.el-popconfirm__main{align-items:center;display:flex}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{margin-top:8px;text-align:right}.el-popover{--el-popover-bg-color:var(--el-bg-color-overlay);--el-popover-font-size:var(--el-font-size-base);--el-popover-border-color:var(--el-border-color-lighter);--el-popover-padding:12px;--el-popover-padding-large:18px 20px;--el-popover-title-font-size:16px;--el-popover-title-text-color:var(--el-text-color-primary);--el-popover-border-radius:4px}.el-popover.el-popper{background:var(--el-popover-bg-color);border:1px solid var(--el-popover-border-color);border-radius:var(--el-popover-border-radius);box-shadow:var(--el-box-shadow-light);box-sizing:border-box;color:var(--el-text-color-regular);font-size:var(--el-popover-font-size);line-height:1.4;min-width:150px;overflow-wrap:break-word;padding:var(--el-popover-padding);z-index:var(--el-index-popper)}.el-popover.el-popper--plain{padding:var(--el-popover-padding-large)}.el-popover__title{color:var(--el-popover-title-text-color);font-size:var(--el-popover-title-font-size);line-height:1;margin-bottom:12px}.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.el-popover.el-popper.is-dark{--el-popover-bg-color:var(--el-text-color-primary);--el-popover-border-color:var(--el-text-color-primary);--el-popover-title-text-color:var(--el-bg-color);color:var(--el-bg-color)}.el-popover.el-popper:focus,.el-popover.el-popper:focus:active{outline-width:0}.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:#ffffff;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-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.el-radio-group{align-items:center;display:inline-flex;flex-wrap:wrap;font-size:0}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-radio-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-radio-font-weight);height:32px;margin-right:30px;outline:none;position:relative;-webkit-user-select:none;user-select:none;white-space:nowrap}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{cursor:pointer;display:inline-flex;outline:none;position:relative;vertical-align:middle;white-space:nowrap}.el-radio__input.is-disabled .el-radio__inner{border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled .el-radio__inner:after{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{background:var(--el-color-primary);border-color:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{background-color:var(--el-color-white);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{background-color:var(--el-radio-input-bg-color);border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);box-sizing:border-box;cursor:pointer;display:inline-block;height:var(--el-radio-input-height);position:relative;transition:all .3s;width:var(--el-radio-input-width)}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{border-radius:var(--el-radio-input-border-radius);content:"";height:4px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in;width:4px}.el-radio__original{bottom:0;left:0;margin:0;opacity:0;outline:none;position:absolute;right:0;top:0;z-index:-1}.el-radio__original:focus-visible+.el-radio__inner{border-radius:var(--el-radio-input-border-radius);outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{height:12px;width:12px}.el-rate{--el-rate-height:20px;--el-rate-font-size:var(--el-font-size-base);--el-rate-icon-size:18px;--el-rate-icon-margin:6px;--el-rate-void-color:var(--el-border-color-darker);--el-rate-fill-color:#f7ba2a;--el-rate-disabled-void-color:var(--el-fill-color);--el-rate-text-color:var(--el-text-color-primary);--el-rate-outline-color:var(--el-color-primary-light-5);align-items:center;display:inline-flex;height:32px}.el-rate:active,.el-rate:focus{outline:none}.el-rate:focus-visible .el-rate__item .el-rate__icon.is-focus-visible{outline:2px solid var(--el-rate-outline-color);transition:outline-offset 0s,outline 0s}.el-rate__item{color:var(--el-rate-void-color);cursor:pointer;display:inline-block;font-size:0;line-height:normal;position:relative;vertical-align:middle}.el-rate .el-rate__icon{display:inline-block;font-size:var(--el-rate-icon-size);margin-right:var(--el-rate-icon-margin);position:relative;transition:var(--el-transition-duration)}.el-rate .el-rate__icon.hover{transform:scale(1.15)}.el-rate .el-rate__icon .path2{left:0;position:absolute;top:0}.el-rate .el-rate__icon.is-active{color:var(--el-rate-fill-color)}.el-rate__decimal{color:var(--el-rate-fill-color);display:inline-block;overflow:hidden}.el-rate__decimal,.el-rate__decimal--box{left:0;position:absolute;top:0}.el-rate__text{color:var(--el-rate-text-color);font-size:var(--el-rate-font-size);vertical-align:middle}.el-rate--large{height:40px}.el-rate--small{height:24px}.el-rate--small .el-rate__icon{font-size:14px}.el-rate.is-disabled .el-rate__item{color:var(--el-rate-disabled-void-color);cursor:not-allowed}.el-result{--el-result-padding:40px 30px;--el-result-icon-font-size:64px;--el-result-title-font-size:20px;--el-result-title-margin-top:20px;--el-result-subtitle-margin-top:10px;--el-result-extra-margin-top:30px;align-items:center;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding:var(--el-result-padding);text-align:center}.el-result__icon svg{height:var(--el-result-icon-font-size);width:var(--el-result-icon-font-size)}.el-result__title{margin-top:var(--el-result-title-margin-top)}.el-result__title p{color:var(--el-text-color-primary);font-size:var(--el-result-title-font-size);line-height:1.3;margin:0}.el-result__subtitle{margin-top:var(--el-result-subtitle-margin-top)}.el-result__subtitle p{color:var(--el-text-color-regular);font-size:var(--el-font-size-base);line-height:1.3;margin:0}.el-result__extra{margin-top:var(--el-result-extra-margin-top)}.el-result .icon-primary{--el-result-color:var(--el-color-primary);color:var(--el-result-color)}.el-result .icon-success{--el-result-color:var(--el-color-success);color:var(--el-result-color)}.el-result .icon-warning{--el-result-color:var(--el-color-warning);color:var(--el-result-color)}.el-result .icon-danger{--el-result-color:var(--el-color-danger);color:var(--el-result-color)}.el-result .icon-error{--el-result-color:var(--el-color-error);color:var(--el-result-color)}.el-result .icon-info{--el-result-color:var(--el-color-info);color:var(--el-result-color)}.el-row{box-sizing:border-box;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}.el-scrollbar{--el-scrollbar-opacity:0.3;--el-scrollbar-bg-color:var(--el-text-color-secondary);--el-scrollbar-hover-opacity:0.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-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:bold}.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;-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;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{box-sizing:border-box;color:var(--el-color-info);font-size:12px;line-height:34px;overflow:hidden;padding:0 20px;text-overflow:ellipsis;white-space:nowrap}.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,.el-select__wrapper.is-disabled input{cursor:not-allowed}.el-select__wrapper.is-disabled .el-select__prefix,.el-select__wrapper.is-disabled .el-select__suffix{pointer-events:none}.el-select__prefix,.el-select__suffix{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(0deg);transition:var(--el-transition-duration)}.el-select__caret.is-reverse{transform:rotate(180deg)}.el-select__clear{cursor:pointer}.el-select__clear:hover{color:var(--el-select-close-hover-color)}.el-select__selection{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;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%;z-index:-1}.el-select__placeholder.is-transparent{color:var(--el-text-color-placeholder);-webkit-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{flex:1}.el-select__input-wrapper.is-hidden{opacity:0;position:absolute;z-index:-1}.el-select__input{appearance:none;background-color:transparent;border:none;color:var(--el-select-multiple-input-color);font-family:inherit;font-size:inherit;height:24px;outline:none;padding:0;width:100%}.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}.el-skeleton{--el-skeleton-circle-size:var(--el-avatar-size)}.el-skeleton__item{background:var(--el-skeleton-color);border-radius:var(--el-border-radius-base);display:inline-block;height:16px;width:100%}.el-skeleton__circle{border-radius:50%;height:var(--el-skeleton-circle-size);line-height:var(--el-skeleton-circle-size);width:var(--el-skeleton-circle-size)}.el-skeleton__button{border-radius:4px;height:40px;width:64px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{height:var(--el-font-size-small);width:100%}.el-skeleton__caption{height:var(--el-font-size-extra-small)}.el-skeleton__h1{height:var(--el-font-size-extra-large)}.el-skeleton__h3{height:var(--el-font-size-large)}.el-skeleton__h5{height:var(--el-font-size-medium)}.el-skeleton__image{align-items:center;border-radius:0;display:flex;justify-content:center;width:unset}.el-skeleton__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;height:22%;width:22%}.el-skeleton{--el-skeleton-color:var(--el-fill-color);--el-skeleton-to-color:var(--el-fill-color-darker)}@keyframes el-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.el-skeleton{width:100%}.el-skeleton__first-line,.el-skeleton__paragraph{background:var(--el-skeleton-color);height:16px;margin-top:16px}.el-skeleton.is-animated .el-skeleton__item{animation:el-skeleton-loading 1.4s ease infinite;background:linear-gradient(90deg,var(--el-skeleton-color) 25%,var(--el-skeleton-to-color) 37%,var(--el-skeleton-color) 63%);background-size:400% 100%}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px;align-items:center;display:flex;height:32px;width:100%}.el-slider__runway{background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);cursor:pointer;flex:1;height:var(--el-slider-height);position:relative}.el-slider__runway.show-input{margin-right:30px;width:auto}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging,.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{transform:scale(1);cursor:not-allowed}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{background-color:var(--el-slider-main-bg-color);border-bottom-left-radius:var(--el-slider-border-radius);border-top-left-radius:var(--el-slider-border-radius);height:var(--el-slider-height);position:absolute}.el-slider__button-wrapper{background-color:transparent;height:var(--el-slider-button-wrapper-size);line-height:normal;outline:none;position:absolute;text-align:center;top:var(--el-slider-button-wrapper-offset);transform:translateX(-50%);-webkit-user-select:none;user-select:none;width:var(--el-slider-button-wrapper-size);z-index:1}.el-slider__button-wrapper:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{background-color:var(--el-color-white);border:2px solid var(--el-slider-main-bg-color);border-radius:50%;box-sizing:border-box;display:inline-block;height:var(--el-slider-button-size);transition:var(--el-transition-duration-fast);-webkit-user-select:none;user-select:none;vertical-align:middle;width:var(--el-slider-button-size)}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{background-color:var(--el-slider-stop-bg-color);border-radius:var(--el-border-radius-circle);height:var(--el-slider-height);position:absolute;transform:translateX(-50%);width:var(--el-slider-height)}.el-slider__marks{height:100%;left:12px;top:0;width:18px}.el-slider__marks-text{color:var(--el-color-info);font-size:14px;margin-top:15px;position:absolute;transform:translateX(-50%);white-space:pre}.el-slider.is-vertical{display:inline-flex;flex:0;height:100%;position:relative;width:auto}.el-slider.is-vertical .el-slider__runway{height:100%;margin:0 16px;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__bar{border-radius:0 0 3px 3px;height:auto;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__button-wrapper{left:var(--el-slider-button-wrapper-offset);top:auto;transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{left:15px;margin-top:0;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.el-space{display:inline-flex;vertical-align:top}.el-space__item{display:flex;flex-wrap:wrap}.el-space__item>*{flex:1}.el-space--vertical{flex-direction:column}.el-time-spinner{white-space:nowrap;width:100%}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{animation:rotate 2s linear infinite;height:50px;width:50px}.el-spinner-inner .path{animation:dash 1.5s ease-in-out infinite;stroke:var(--el-border-color-lighter);stroke-linecap:round}@keyframes rotate{to{transform:rotate(1turn)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-step{flex-shrink:1;position:relative}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{flex-basis:auto!important;flex-grow:0;flex-shrink:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{border-color:var(--el-text-color-primary);color:var(--el-text-color-primary)}.el-step__head.is-wait{border-color:var(--el-text-color-placeholder);color:var(--el-text-color-placeholder)}.el-step__head.is-success{border-color:var(--el-color-success);color:var(--el-color-success)}.el-step__head.is-error{border-color:var(--el-color-danger);color:var(--el-color-danger)}.el-step__head.is-finish{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-step__icon{align-items:center;background:var(--el-bg-color);box-sizing:border-box;display:inline-flex;font-size:14px;height:24px;justify-content:center;position:relative;transition:.15s ease-out;width:24px;z-index:1}.el-step__icon.is-text{border:2px solid;border-radius:50%}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{color:inherit;display:inline-block;font-weight:bold;line-height:1;text-align:center;-webkit-user-select:none;user-select:none}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:normal}.el-step__icon-inner.is-status{transform:translateY(1px)}.el-step__line{background-color:var(--el-text-color-placeholder);border-color:currentColor;position:absolute}.el-step__line-inner{border:1px solid;box-sizing:border-box;display:block;height:0;transition:.15s ease-out;width:0}.el-step__main{text-align:left;white-space:normal}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{color:var(--el-text-color-primary);font-weight:bold}.el-step__title.is-wait{color:var(--el-text-color-placeholder)}.el-step__title.is-success{color:var(--el-color-success)}.el-step__title.is-error{color:var(--el-color-danger)}.el-step__title.is-finish{color:var(--el-color-primary)}.el-step__description{font-size:12px;font-weight:normal;line-height:20px;margin-top:-5px;padding-right:10%}.el-step__description.is-process{color:var(--el-text-color-primary)}.el-step__description.is-wait{color:var(--el-text-color-placeholder)}.el-step__description.is-success{color:var(--el-color-success)}.el-step__description.is-error{color:var(--el-color-danger)}.el-step__description.is-finish{color:var(--el-color-primary)}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;left:0;right:0;top:11px}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{flex-grow:1;padding-left:10px}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{bottom:0;left:11px;top:0;width:2px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-vertical .el-step__description{padding-right:0}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{align-items:center;display:flex}.el-step.is-simple .el-step__head{font-size:0;padding-right:10px;width:auto}.el-step.is-simple .el-step__icon{background:transparent;font-size:12px;height:16px;width:16px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{align-items:stretch;display:flex;flex-grow:1;position:relative}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;overflow-wrap:break-word}.el-step.is-simple .el-step__arrow{align-items:center;display:flex;flex-grow:1;justify-content:center}.el-step.is-simple .el-step__arrow:after,.el-step.is-simple .el-step__arrow:before{background:var(--el-text-color-placeholder);content:"";display:inline-block;height:15px;position:absolute;width:1px}.el-step.is-simple .el-step__arrow:before{transform:rotate(-45deg) translateY(-4px);transform-origin:0 0}.el-step.is-simple .el-step__arrow:after{transform:rotate(45deg) translateY(4px);transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-steps{display:flex;line-height:normal}.el-steps--simple{background:var(--el-fill-color-light);border-radius:4px;padding:13px 8%}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{flex-flow:column;height:100%}.el-switch{--el-switch-on-color:var(--el-color-primary);--el-switch-off-color:var(--el-border-color);align-items:center;display:inline-flex;font-size:14px;height:32px;line-height:20px;position:relative;vertical-align:middle}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{color:var(--el-text-color-primary);cursor:pointer;display:inline-block;font-size:14px;font-weight:500;height:20px;transition:var(--el-transition-duration-fast);vertical-align:middle}.el-switch__label.is-active{color:var(--el-color-primary)}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{display:inline-block;font-size:14px;line-height:1}.el-switch__label .el-icon{height:inherit}.el-switch__label .el-icon svg{vertical-align:middle}.el-switch__input{height:0;margin:0;opacity:0;position:absolute;width:0}.el-switch__input:focus-visible~.el-switch__core{outline:2px solid var(--el-switch-on-color);outline-offset:1px}.el-switch__core{align-items:center;background:var(--el-switch-off-color);border:1px solid var(--el-switch-border-color,var(--el-switch-off-color));border-radius:10px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:20px;min-width:40px;outline:none;position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration)}.el-switch__core .el-switch__inner{align-items:center;display:flex;height:16px;justify-content:center;overflow:hidden;padding:0 4px 0 18px;transition:all var(--el-transition-duration);width:100%}.el-switch__core .el-switch__inner-wrapper{align-items:center;color:var(--el-color-white);display:flex;font-size:12px;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none;white-space:nowrap}.el-switch__core .el-switch__action{align-items:center;background-color:var(--el-color-white);border-radius:var(--el-border-radius-circle);color:var(--el-switch-off-color);display:flex;height:16px;justify-content:center;left:1px;position:absolute;transition:all var(--el-transition-duration);width:16px}.el-switch.is-checked .el-switch__core{background-color:var(--el-switch-on-color);border-color:var(--el-switch-border-color,var(--el-switch-on-color))}.el-switch.is-checked .el-switch__core .el-switch__action{color:var(--el-switch-on-color);left:calc(100% - 17px)}.el-switch.is-checked .el-switch__core .el-switch__inner{padding:0 18px 0 4px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter-from,.el-switch .label-fade-leave-active{opacity:0}.el-switch--large{font-size:14px;height:40px;line-height:24px}.el-switch--large .el-switch__label{font-size:14px;height:24px}.el-switch--large .el-switch__label *{font-size:14px}.el-switch--large .el-switch__core{border-radius:12px;height:24px;min-width:50px}.el-switch--large .el-switch__core .el-switch__inner{height:20px;padding:0 6px 0 22px}.el-switch--large .el-switch__core .el-switch__action{height:20px;width:20px}.el-switch--large.is-checked .el-switch__core .el-switch__action{left:calc(100% - 21px)}.el-switch--large.is-checked .el-switch__core .el-switch__inner{padding:0 22px 0 6px}.el-switch--small{font-size:12px;height:24px;line-height:16px}.el-switch--small .el-switch__label{font-size:12px;height:16px}.el-switch--small .el-switch__label *{font-size:12px}.el-switch--small .el-switch__core{border-radius:8px;height:16px;min-width:30px}.el-switch--small .el-switch__core .el-switch__inner{height:12px;padding:0 2px 0 14px}.el-switch--small .el-switch__core .el-switch__action{height:12px;width:12px}.el-switch--small.is-checked .el-switch__core .el-switch__action{left:calc(100% - 13px)}.el-switch--small.is-checked .el-switch__core .el-switch__inner{padding:0 14px 0 2px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{background-color:#ffffff;border:1px solid var(--el-border-color-lighter);border-radius:2px;box-shadow:var(--el-box-shadow-light);box-sizing:border-box}.el-table-filter__list{list-style:none;margin:0;min-width:100px;outline:none;padding:5px 0}.el-table-filter__list-item{cursor:pointer;font-size:var(--el-font-size-base);line-height:36px;outline:none;padding:0 10px}.el-table-filter__list-item:focus,.el-table-filter__list-item:hover{background-color:var(--el-color-primary-light-9);color:var(--el-color-primary)}.el-table-filter__list-item.is-active{background-color:var(--el-color-primary);color:#ffffff}.el-table-filter__multiple{outline:none}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid var(--el-border-color-lighter);padding:8px}.el-table-filter__bottom button{appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);cursor:pointer;margin:0;outline:none;padding:0;transition:transform var(--el-transition-duration-fast) ease-in-out}.el-table-filter__bottom button:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table-filter__bottom button{color:var(--el-text-color-regular);font-size:var(--el-font-size-small);padding:0 3px}.el-table-filter__bottom button:hover{color:var(--el-color-primary)}.el-table-filter__bottom button.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{align-items:center;display:flex;height:unset;margin-bottom:12px;margin-left:5px;margin-right:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-table{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-fill-color-blank);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-fill-color-blank);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0,0,0,0.15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0,0,0,0.15);--el-table-index:var(--el-index-normal);background-color:var(--el-table-bg-color);box-sizing:border-box;color:var(--el-table-text-color);font-size:var(--el-font-size-base);height:fit-content;max-width:100%;overflow:hidden;position:relative;width:100%}.el-table__inner-wrapper{display:flex;flex-direction:column;height:100%;position:relative}.el-table__inner-wrapper:before{bottom:0;height:1px;left:0}.el-table tbody:focus-visible{outline:none}.el-table.has-footer.el-table--fluid-height tr:last-child td.el-table__cell,.el-table.has-footer.el-table--scrollable-y tr:last-child td.el-table__cell{border-bottom-color:transparent}.el-table__empty-block{align-items:center;display:flex;justify-content:center;left:0;min-height:60px;position:sticky;text-align:center;width:100%}.el-table__empty-text{color:var(--el-text-color-secondary);line-height:60px;width:50%}.el-table__expand-column .cell{padding:0;text-align:center;-webkit-user-select:none;user-select:none}.el-table__expand-icon{appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);cursor:pointer;margin:0;outline:none;padding:0;transition:transform var(--el-transition-duration-fast) ease-in-out}.el-table__expand-icon:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:-2px}.el-table__expand-icon{color:var(--el-text-color-regular);font-size:12px;height:23px;line-height:12px;width:min(23px,100%)}.el-table__expand-icon.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{font-size:12px}.el-table__expanded-cell{background-color:var(--el-table-expanded-cell-bg-color)}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-bottom:0;border-right:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--fit .el-table__inner-wrapper:before{width:100%}.el-table thead{color:var(--el-table-header-text-color)}.el-table thead th{font-weight:600}.el-table thead.is-group th.el-table__cell{background:var(--el-fill-color-light)}.el-table .el-table__cell{box-sizing:border-box;min-width:0;padding:8px 0;position:relative;text-align:left;text-overflow:ellipsis;vertical-align:middle;z-index:var(--el-table-index)}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{border-bottom-width:0;border-right-width:0;padding:0;width:15px}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table .cell{box-sizing:border-box;line-height:23px;overflow:hidden;overflow-wrap:break-word;padding:0 12px;text-overflow:ellipsis;white-space:normal}.el-table .cell.el-tooltip{min-width:50px;white-space:nowrap}.el-table--large{font-size:var(--el-font-size-base)}.el-table--large .el-table__cell{padding:12px 0}.el-table--large .cell{padding:0 16px}.el-table--default{font-size:var(--el-font-size-base)}.el-table--default .el-table__cell{padding:8px 0}.el-table--default .cell{padding:0 12px}.el-table--small{font-size:var(--el-font-size-extra-small)}.el-table--small .el-table__cell{padding:4px 0}.el-table--small .cell{padding:0 8px}.el-table tr{background-color:var(--el-table-tr-bg-color)}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:var(--el-table-border)}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{background-color:var(--el-table-header-bg-color)}.el-table th.el-table__cell>.cell.highlight{color:var(--el-color-primary)}.el-table th.el-table__cell.required>div:before{background:#ff4d51;border-radius:50%;content:"";display:inline-block;height:8px;margin-right:5px;vertical-align:middle;width:8px}.el-table td.el-table__cell div{box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table--border .el-table__inner-wrapper:after,.el-table--border:after,.el-table--border:before,.el-table__inner-wrapper:before{background-color:var(--el-table-border-color);content:"";position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table--border .el-table__inner-wrapper:after{height:1px;left:0;top:0;width:100%;z-index:calc(var(--el-table-index) + 2)}.el-table--border:before{height:100%;left:0;top:-1px;width:1px}.el-table--border:after{height:100%;right:0;top:-1px;width:1px}.el-table--border .el-table__inner-wrapper{border-bottom:none;border-right:none}.el-table--border .el-table__footer-wrapper{flex-shrink:0;position:relative}.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:var(--el-table-border);border-bottom-width:1px}.el-table--border th.el-table__cell{border-bottom:var(--el-table-border)}.el-table--hidden{visibility:hidden}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__body-wrapper tr td.el-table-fixed-column--left,.el-table__body-wrapper tr td.el-table-fixed-column--right,.el-table__body-wrapper tr th.el-table-fixed-column--left,.el-table__body-wrapper tr th.el-table-fixed-column--right,.el-table__footer-wrapper tr td.el-table-fixed-column--left,.el-table__footer-wrapper tr td.el-table-fixed-column--right,.el-table__footer-wrapper tr th.el-table-fixed-column--left,.el-table__footer-wrapper tr th.el-table-fixed-column--right,.el-table__header-wrapper tr td.el-table-fixed-column--left,.el-table__header-wrapper tr td.el-table-fixed-column--right,.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background:inherit;position:sticky!important;z-index:calc(var(--el-table-index) + 1)}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{bottom:0;box-shadow:none;content:"";overflow-x:hidden;overflow-y:hidden;pointer-events:none;position:absolute;top:0;touch-action:none;width:10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before{left:-10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{right:-10px}.el-table__body-wrapper tr td.el-table__fixed-right-patch,.el-table__body-wrapper tr th.el-table__fixed-right-patch,.el-table__footer-wrapper tr td.el-table__fixed-right-patch,.el-table__footer-wrapper tr th.el-table__fixed-right-patch,.el-table__header-wrapper tr td.el-table__fixed-right-patch,.el-table__header-wrapper tr th.el-table__fixed-right-patch{background:#fff;position:sticky!important;right:0;z-index:calc(var(--el-table-index) + 1)}.el-table__header-wrapper{flex-shrink:0}.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body,.el-table__footer,.el-table__header{border-collapse:separate;table-layout:fixed}.el-table__header-wrapper{overflow:hidden}.el-table__header-wrapper tbody td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__footer-wrapper{flex-shrink:0;overflow:hidden}.el-table__footer-wrapper tfoot td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__body-wrapper .el-table-column--selection>.cell,.el-table__header-wrapper .el-table-column--selection>.cell{align-items:center;display:inline-flex;height:23px}.el-table__body-wrapper .el-table-column--selection .el-checkbox,.el-table__header-wrapper .el-table-column--selection .el-checkbox{height:unset}.el-table.is-scrolling-left .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-left.el-table--border .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:var(--el-table-border)}.el-table.is-scrolling-left th.el-table-fixed-column--left{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-right th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-middle .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-none .el-table-fixed-column--left.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--left.is-last-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-last-column:before{box-shadow:none}.el-table.is-scrolling-none th.el-table-fixed-column--left,.el-table.is-scrolling-none th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body-wrapper{flex:1;overflow:hidden;position:relative}.el-table__body-wrapper .el-scrollbar__bar{z-index:calc(var(--el-table-index) + 2)}.el-table .caret-wrapper{appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);cursor:pointer;margin:0;outline:none;padding:0;transition:transform var(--el-transition-duration-fast) ease-in-out}.el-table .caret-wrapper:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table .caret-wrapper{align-items:center;display:inline-flex;flex-direction:column;height:14px;overflow:initial;position:relative;vertical-align:middle;width:24px}.el-table .sort-caret{border:5px solid transparent;height:0;left:7px;position:absolute;width:0}.el-table .sort-caret.ascending{border-bottom-color:var(--el-text-color-placeholder);top:-5px}.el-table .sort-caret.descending{border-top-color:var(--el-text-color-placeholder);bottom:-3px}.el-table .ascending .sort-caret.ascending{border-bottom-color:var(--el-color-primary)}.el-table .descending .sort-caret.descending{border-top-color:var(--el-color-primary)}.el-table .hidden-columns{position:absolute;visibility:hidden;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:var(--el-fill-color-lighter)}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell,.el-table__body tr>td.hover-cell{background-color:var(--el-table-row-hover-bg-color)}.el-table__body tr.current-row>td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table.el-table--scrollable-y .el-table__body-header{position:sticky;top:0;z-index:calc(var(--el-table-index) + 2)}.el-table.el-table--scrollable-y .el-table__body-footer{bottom:0;position:sticky;z-index:calc(var(--el-table-index) + 2)}.el-table__column-resize-proxy{border-left:var(--el-table-border);bottom:0;left:200px;position:absolute;top:0;width:0;z-index:calc(var(--el-table-index) + 9)}.el-table__column-filter-trigger{appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);cursor:pointer;margin:0;outline:none;padding:0;transition:transform var(--el-transition-duration-fast) ease-in-out}.el-table__column-filter-trigger:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table__column-filter-trigger{display:inline-block}.el-table__column-filter-trigger i{color:var(--el-color-info);font-size:14px;vertical-align:middle}.el-table__border-left-patch{height:100%;top:0;width:1px}.el-table__border-bottom-patch,.el-table__border-left-patch{background-color:var(--el-table-border-color);left:0;position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table__border-bottom-patch{height:1px}.el-table__border-right-patch{background-color:var(--el-table-border-color);height:100%;position:absolute;top:0;width:1px;z-index:calc(var(--el-table-index) + 2)}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;text-align:center;width:20px}.el-table .el-table.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table:not(.el-table--border) .el-table__cell{border-right:none}.el-table:not(.el-table--border)>.el-table__inner-wrapper:after{content:none}.el-table-v2{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-fill-color-blank);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-fill-color-blank);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0,0,0,0.15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0,0,0,0.15);--el-table-index:var(--el-index-normal);font-size:var(--el-font-size-base)}.el-table-v2 *{box-sizing:border-box}.el-table-v2__root{position:relative}.el-table-v2__root:hover .el-table-v2__main .el-virtual-scrollbar{opacity:1}.el-table-v2__main{background-color:var(--el-bg-color);display:flex;flex-direction:column-reverse;left:0;overflow:hidden;position:absolute;top:0}.el-table-v2__main .el-vl__horizontal,.el-table-v2__main .el-vl__vertical{z-index:2}.el-table-v2__left{background-color:var(--el-bg-color);box-shadow:2px 0 4px 0 rgba(0,0,0,.06);display:flex;flex-direction:column-reverse;left:0;overflow:hidden;position:absolute;top:0}.el-table-v2__left .el-virtual-scrollbar{opacity:0}.el-table-v2__left .el-vl__horizontal,.el-table-v2__left .el-vl__vertical{z-index:-1}.el-table-v2__right{background-color:var(--el-bg-color);box-shadow:-2px 0 4px 0 rgba(0,0,0,.06);display:flex;flex-direction:column-reverse;overflow:hidden;position:absolute;right:0;top:0}.el-table-v2__right .el-virtual-scrollbar{opacity:0}.el-table-v2__right .el-vl__horizontal,.el-table-v2__right .el-vl__vertical{z-index:-1}.el-table-v2__header-row,.el-table-v2__row{padding-inline-end:var(--el-table-scrollbar-size)}.el-table-v2__header-wrapper{overflow:hidden}.el-table-v2__header{overflow:hidden;position:relative}.el-table-v2__header .el-checkbox{z-index:0}.el-table-v2__footer{bottom:0;overflow:hidden;right:0}.el-table-v2__empty,.el-table-v2__footer,.el-table-v2__overlay{left:0;position:absolute}.el-table-v2__overlay{bottom:0;right:0;top:0;z-index:9999}.el-table-v2__header-row{border-bottom:var(--el-table-border);display:flex}.el-table-v2__header-cell{align-items:center;background-color:var(--el-table-header-bg-color);color:var(--el-table-header-text-color);display:flex;font-weight:bold;height:100%;overflow:hidden;padding:0 8px;-webkit-user-select:none;user-select:none}.el-table-v2__header-cell.is-align-center{justify-content:center;text-align:center}.el-table-v2__header-cell.is-align-right{justify-content:flex-end;text-align:right}.el-table-v2__header-cell.is-sortable{cursor:pointer}.el-table-v2__header-cell:hover .el-icon{display:block}.el-table-v2__sort-icon{appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);cursor:pointer;margin:0;outline:none;padding:0;transition:transform var(--el-transition-duration-fast) ease-in-out}.el-table-v2__sort-icon:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table-v2__sort-icon{display:none;opacity:.6;transition:opacity,display var(--el-transition-duration)}.el-table-v2__sort-icon.is-sorting{display:flex;opacity:1}.el-table-v2__row{align-items:center;border-bottom:var(--el-table-border);display:flex;transition:background-color var(--el-transition-duration)}.el-table-v2__row.is-hovered,.el-table-v2__row:hover{background-color:var(--el-table-row-hover-bg-color)}.el-table-v2__row-cell{align-items:center;display:flex;height:100%;overflow:hidden;padding:0 8px}.el-table-v2__row-cell.is-align-center{justify-content:center;text-align:center}.el-table-v2__row-cell.is-align-right{justify-content:flex-end;text-align:right}.el-table-v2__expand-icon{appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);cursor:pointer;margin:0;outline:none;padding:0;transition:transform var(--el-transition-duration-fast) ease-in-out}.el-table-v2__expand-icon:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table-v2__expand-icon{margin:0 4px;-webkit-user-select:none;user-select:none}.el-table-v2__expand-icon svg{transition:transform var(--el-transition-duration)}.el-table-v2__expand-icon.is-expanded svg{transform:rotate(90deg)}.el-table-v2:not(.is-dynamic) .el-table-v2__cell-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-table-v2.is-dynamic .el-table-v2__row{align-items:stretch;overflow:hidden}.el-table-v2.is-dynamic .el-table-v2__row .el-table-v2__row-cell{overflow-wrap:break-word}.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{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__active-bar.is-bottom{bottom:auto}.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;flex-shrink:0;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-bottom:after{bottom:auto;top:0}.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:#ffffff}.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);box-sizing:border-box;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);margin-top:-1px;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}.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--left>.el-tabs__content+.el-tabs__header{order:-1}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left: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}.el-tabs--top>.el-tabs__content+.el-tabs__header{order:-1}.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:translateX(100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translateX(-100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(-100%);transform-origin:0 0}}.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;display:flex;font-size:calc(var(--el-icon-size) - 2px);height:var(--el-icon-size);width:var(--el-icon-size)}.el-tag .el-tag__close{background-color:transparent;border:none;border-radius:50%;margin-left:6px;outline:none;overflow:hidden;padding:0}.el-tag .el-tag__close:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.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-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}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{margin:0;max-height:200px}.time-select-item{font-size:14px;line-height:20px;padding:8px 10px}.time-select-item.disabled{color:var(--el-datepicker-border-color);cursor:not-allowed}.time-select-item:hover{background-color:var(--el-fill-color-light);cursor:pointer;font-weight:bold}.time-select .time-select-item.selected:not(.disabled){color:var(--el-color-primary);font-weight:bold}.el-timeline-item{padding-bottom:20px;position:relative}.el-timeline-item__wrapper{box-sizing:content-box;position:relative;top:-3px}.el-timeline-item__tail{border-left:2px solid var(--el-timeline-node-color);height:100%;position:absolute}.el-timeline-item .el-timeline-item__icon{color:var(--el-color-white);font-size:var(--el-font-size-small)}.el-timeline-item__node{align-items:center;background-color:var(--el-timeline-node-color);border-color:var(--el-timeline-node-color);border-radius:50%;box-sizing:border-box;display:flex;justify-content:center;position:absolute}.el-timeline-item__node--normal{height:var(--el-timeline-node-size-normal);width:var(--el-timeline-node-size-normal)}.el-timeline-item__node--large{height:var(--el-timeline-node-size-large);width:var(--el-timeline-node-size-large)}.el-timeline-item__node.is-hollow{background:var(--el-color-white);border-style:solid;border-width:2px}.el-timeline-item__node--primary{background-color:var(--el-color-primary);border-color:var(--el-color-primary)}.el-timeline-item__node--success{background-color:var(--el-color-success);border-color:var(--el-color-success)}.el-timeline-item__node--warning{background-color:var(--el-color-warning);border-color:var(--el-color-warning)}.el-timeline-item__node--danger{background-color:var(--el-color-danger);border-color:var(--el-color-danger)}.el-timeline-item__node--info{background-color:var(--el-color-info);border-color:var(--el-color-info)}.el-timeline-item__dot{align-items:center;display:flex;justify-content:center;position:absolute}.el-timeline-item__content{color:var(--el-text-color-primary)}.el-timeline-item__timestamp{color:var(--el-text-color-secondary);font-size:var(--el-font-size-small);line-height:1}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-timeline-item.is-start .el-timeline-item__wrapper{padding-left:28px}.el-timeline-item.is-start .el-timeline-item__tail{left:4px}.el-timeline-item.is-start .el-timeline-item__node--normal{left:-1px}.el-timeline-item.is-start .el-timeline-item__node--large{left:-2px}.el-timeline-item.is-end .el-timeline-item__wrapper{padding-right:28px;text-align:right}.el-timeline-item.is-end .el-timeline-item__tail{right:4px}.el-timeline-item.is-end .el-timeline-item__node--normal{right:-1px}.el-timeline-item.is-end .el-timeline-item__node--large{right:-2px}.el-timeline-item.is-alternate .el-timeline-item__node,.el-timeline-item.is-alternate .el-timeline-item__tail,.el-timeline-item.is-alternate-reverse .el-timeline-item__node,.el-timeline-item.is-alternate-reverse .el-timeline-item__tail{left:50%;transform:translateX(-50%)}.el-timeline{--el-timeline-node-size-normal:12px;--el-timeline-node-size-large:14px;--el-timeline-node-color:var(--el-border-color-light);font-size:var(--el-font-size-base);list-style:none;margin:0}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline .el-timeline-item__center{align-items:center;display:flex}.el-timeline .el-timeline-item__center .el-timeline-item__wrapper{width:100%}.el-timeline .el-timeline-item__center .el-timeline-item__tail{top:0}.el-timeline .el-timeline-item__center:first-child .el-timeline-item__tail{height:calc(50% + 10px);top:calc(50% - 10px)}.el-timeline .el-timeline-item__center:last-child .el-timeline-item__tail{display:block;height:calc(50% - 10px)}.el-timeline.is-start{padding-left:40px;padding-right:0}.el-timeline.is-end{padding-left:0;padding-right:40px}.el-timeline.is-alternate{padding-left:20px;padding-right:20px}.el-timeline.is-alternate .el-timeline-item:nth-child(odd) .el-timeline-item__wrapper{left:calc(50% - var(--el-timeline-node-size-large)/2);padding-left:28px;width:calc(50% - 28px)}.el-timeline.is-alternate .el-timeline-item:nth-child(2n) .el-timeline-item__wrapper{padding-right:28px;text-align:right;width:calc(50% - 28px + var(--el-timeline-node-size-large)/2)}.el-timeline.is-alternate-reverse{padding-left:20px;padding-right:20px}.el-timeline.is-alternate-reverse .el-timeline-item:nth-child(odd) .el-timeline-item__wrapper{padding-right:28px;text-align:right;width:calc(50% - 28px + var(--el-timeline-node-size-large)/2)}.el-timeline.is-alternate-reverse .el-timeline-item:nth-child(2n) .el-timeline-item__wrapper{left:calc(50% - var(--el-timeline-node-size-large)/2);padding-left:28px;width:calc(50% - 28px)}.el-transfer{--el-transfer-border-color:var(--el-border-color-lighter);--el-transfer-border-radius:var(--el-border-radius-base);--el-transfer-panel-width:200px;--el-transfer-panel-header-height:40px;--el-transfer-panel-header-bg-color:var(--el-fill-color-light);--el-transfer-panel-footer-height:40px;--el-transfer-panel-body-height:278px;--el-transfer-item-height:30px;--el-transfer-filter-height:32px;font-size:var(--el-font-size-base)}.el-transfer__buttons{display:inline-block;padding:0 30px;vertical-align:middle}.el-transfer__button{vertical-align:top}.el-transfer__button:nth-child(2){margin:0 0 0 10px}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button .el-icon+span{margin-left:0}.el-transfer-panel{background:var(--el-bg-color-overlay);box-sizing:border-box;display:inline-block;max-height:100%;overflow:hidden;position:relative;text-align:left;vertical-align:middle;width:var(--el-transfer-panel-width)}.el-transfer-panel__body{border-bottom:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);border-left:1px solid var(--el-transfer-border-color);border-right:1px solid var(--el-transfer-border-color);height:var(--el-transfer-panel-body-height);overflow:hidden}.el-transfer-panel__body.is-with-footer{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.el-transfer-panel__list{box-sizing:border-box;height:var(--el-transfer-panel-body-height);list-style:none;margin:0;overflow:auto;padding:6px 0}.el-transfer-panel__list.is-filterable{height:calc(100% - var(--el-transfer-filter-height) - 30px);padding-top:0}.el-transfer-panel__item{display:block!important;height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);padding-left:15px}.el-transfer-panel__item+.el-transfer-panel__item{margin-left:0}.el-transfer-panel__item.el-checkbox{color:var(--el-text-color-regular);margin-right:30px}.el-transfer-panel__item:hover{color:var(--el-color-primary)}.el-transfer-panel__item.el-checkbox .el-checkbox__label{box-sizing:border-box;display:block;line-height:var(--el-transfer-item-height);overflow:hidden;padding-left:22px;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{box-sizing:border-box;padding:15px;text-align:center}.el-transfer-panel__filter .el-input__inner{box-sizing:border-box;display:inline-block;font-size:12px;height:var(--el-transfer-filter-height);width:100%}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-transfer-panel .el-transfer-panel__header{align-items:center;background:var(--el-transfer-panel-header-bg-color);border:1px solid var(--el-transfer-border-color);border-top-left-radius:var(--el-transfer-border-radius);border-top-right-radius:var(--el-transfer-border-radius);box-sizing:border-box;color:var(--el-color-black);display:flex;height:var(--el-transfer-panel-header-height);margin:0;padding-left:15px}.el-transfer-panel .el-transfer-panel__header .el-checkbox{align-items:center;display:flex;position:relative;width:100%}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{color:var(--el-text-color-primary);font-size:16px;font-weight:normal}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{color:var(--el-text-color-secondary);font-size:12px;font-weight:normal;position:absolute;right:15px;top:50%;transform:translate3d(0,-50%,0)}.el-transfer-panel .el-transfer-panel__footer{background:var(--el-bg-color-overlay);border:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);height:var(--el-transfer-panel-footer-height);margin:0;padding:0}.el-transfer-panel .el-transfer-panel__footer:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{color:var(--el-text-color-regular);padding-left:20px}.el-transfer-panel .el-transfer-panel__empty{color:var(--el-text-color-secondary);height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);margin:0;padding:6px 15px 0;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-tree{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder);background:var(--el-fill-color-blank);color:var(--el-tree-text-color);cursor:default;font-size:var(--el-font-size-base);position:relative}.el-tree__empty-block{height:100%;min-height:60px;position:relative;text-align:center;width:100%}.el-tree__empty-text{color:var(--el-text-color-secondary);font-size:var(--el-font-size-base);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.el-tree__drop-indicator{background-color:var(--el-color-primary);height:1px;left:0;position:absolute;right:0}.el-tree-node{outline:none;white-space:nowrap}.el-tree-node:focus>.el-tree-node__content{background-color:var(--el-tree-node-hover-bg-color)}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:var(--el-color-primary);color:#fff}.el-tree-node__content{--el-checkbox-height:var(--el-tree-node-content-height);align-items:center;cursor:pointer;display:flex;height:var(--el-tree-node-content-height)}.el-tree-node__content>.el-tree-node__expand-icon{box-sizing:content-box;padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:var(--el-tree-node-hover-bg-color)}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{color:var(--el-tree-expand-icon-color);cursor:pointer;font-size:12px;transform:rotate(0deg);transition:transform var(--el-transition-duration) ease-in-out}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default;visibility:hidden}.el-tree-node__expand-icon.is-hidden{visibility:hidden}.el-tree-node__loading-icon{color:var(--el-tree-expand-icon-color);font-size:var(--el-font-size-base);margin-right:8px}.el-tree-node>.el-tree-node__children{background-color:transparent;overflow:hidden}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:var(--el-color-primary-light-9)}.el-tree-select{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder)}.el-tree-select__popper .el-tree-node__expand-icon{margin-left:8px}.el-tree-select__popper .el-tree-node.is-checked>.el-tree-node__content .el-select-dropdown__item.selected:after{content:none}.el-tree-select__popper .el-select-dropdown__list>.el-select-dropdown__item{padding-left:32px}.el-tree-select__popper .el-select-dropdown__item{background:transparent!important;flex:1;height:20px;line-height:20px;padding-left:0}.el-upload{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;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{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-vertical) var(--el-upload-dragger-padding-horizontal);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-vertical) - 1px) calc(var(--el-upload-dragger-padding-horizontal) - 1px)}.el-upload-list{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;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{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:#ffffff}.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%;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:#ffffff}.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;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:#ffffff;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:#ffffff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{background-color:#ffffff;bottom:0;color:var(--el-text-color-primary);font-size:14px;font-weight:normal;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-vl__wrapper{position:relative}.el-vl__wrapper.always-on .el-virtual-scrollbar,.el-vl__wrapper:hover .el-virtual-scrollbar{opacity:1}.el-vl__window{scrollbar-width:none}.el-vl__window::-webkit-scrollbar{display:none}.el-virtual-scrollbar{opacity:0;transition:opacity .34s ease-out}.el-virtual-scrollbar.always-on{opacity:1}.el-vg__wrapper{position:relative}.el-popper{--el-popper-border-radius:var(--el-popover-border-radius,4px);--el-popper-bg-color-light:var(--el-bg-color-overlay);--el-popper-bg-color-dark:var(--el-text-color-primary);border-radius:var(--el-popper-border-radius);font-size:12px;line-height:20px;min-width:10px;overflow-wrap:break-word;padding:5px 11px;position:absolute;visibility:visible;word-break:normal;z-index:2000}.el-popper.is-dark{--el-fill-color-blank:var(--el-popper-bg-color-dark);color:var(--el-bg-color)}.el-popper.is-dark,.el-popper.is-dark>.el-popper__arrow:before{background:var(--el-popper-bg-color-dark);border:1px solid var(--el-text-color-primary)}.el-popper.is-dark>.el-popper__arrow:before{right:0}.el-popper.is-light{--el-fill-color-blank:var(--el-popper-bg-color-light)}.el-popper.is-light,.el-popper.is-light>.el-popper__arrow:before{background:var(--el-popper-bg-color-light);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-statistic{--el-statistic-title-font-weight:400;--el-statistic-title-font-size:var(--el-font-size-extra-small);--el-statistic-title-color:var(--el-text-color-regular);--el-statistic-content-font-weight:400;--el-statistic-content-font-size:var(--el-font-size-extra-large);--el-statistic-content-color:var(--el-text-color-primary)}.el-statistic__head{color:var(--el-statistic-title-color);font-size:var(--el-statistic-title-font-size);font-weight:var(--el-statistic-title-font-weight);line-height:20px;margin-bottom:4px}.el-statistic__content{color:var(--el-statistic-content-color);font-size:var(--el-statistic-content-font-size);font-weight:var(--el-statistic-content-font-weight)}.el-statistic__value{display:inline-block}.el-statistic__prefix{display:inline-block;margin-right:4px}.el-statistic__suffix{display:inline-block;margin-left:4px}.el-tour{--el-tour-width:520px;--el-tour-padding-primary:12px;--el-tour-font-line-height:var(--el-font-line-height-primary);--el-tour-title-font-size:16px;--el-tour-title-text-color:var(--el-text-color-primary);--el-tour-title-font-weight:400;--el-tour-close-color:var(--el-color-info);--el-tour-font-size:14px;--el-tour-color:var(--el-text-color-primary);--el-tour-bg-color:var(--el-bg-color);--el-tour-border-radius:4px}.el-tour__hollow{transition:all var(--el-transition-duration) ease}.el-tour__content{border-radius:var(--el-tour-border-radius);box-shadow:var(--el-box-shadow-light);outline:none;overflow-wrap:break-word;padding:var(--el-tour-padding-primary);width:var(--el-tour-width)}.el-tour__arrow,.el-tour__content{background:var(--el-tour-bg-color);box-sizing:border-box}.el-tour__arrow{height:10px;pointer-events:none;position:absolute;transform:rotate(45deg);width:10px}.el-tour__content[data-side^=top] .el-tour__arrow{border-left-color:transparent;border-top-color:transparent}.el-tour__content[data-side^=bottom] .el-tour__arrow{border-bottom-color:transparent;border-right-color:transparent}.el-tour__content[data-side^=left] .el-tour__arrow{border-bottom-color:transparent;border-left-color:transparent}.el-tour__content[data-side^=right] .el-tour__arrow{border-right-color:transparent;border-top-color:transparent}.el-tour__content[data-side^=top] .el-tour__arrow{bottom:-5px}.el-tour__content[data-side^=bottom] .el-tour__arrow{top:-5px}.el-tour__content[data-side^=left] .el-tour__arrow{right:-5px}.el-tour__content[data-side^=right] .el-tour__arrow{left:-5px}.el-tour__closebtn{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-tour__closebtn .el-tour__close{color:var(--el-tour-close-color);font-size:inherit}.el-tour__closebtn:focus .el-tour__close,.el-tour__closebtn:hover .el-tour__close{color:var(--el-color-primary)}.el-tour__header{padding-bottom:var(--el-tour-padding-primary)}.el-tour__header.show-close{padding-right:calc(var(--el-tour-padding-primary) + var(--el-message-close-size, 16px))}.el-tour__title{color:var(--el-tour-title-text-color);font-size:var(--el-tour-title-font-size);font-weight:var(--el-tour-title-font-weight);line-height:var(--el-tour-font-line-height)}.el-tour__body{color:var(--el-tour-text-color);font-size:var(--el-tour-font-size)}.el-tour__body img,.el-tour__body video{max-width:100%}.el-tour__footer{box-sizing:border-box;display:flex;justify-content:space-between;padding-top:var(--el-tour-padding-primary)}.el-tour__content .el-tour-indicators{display:inline-block;flex:1}.el-tour__content .el-tour-indicator{background:var(--el-color-info-light-9);border-radius:50%;display:inline-block;height:6px;margin-right:6px;width:6px}.el-tour__content .el-tour-indicator.is-active{background:var(--el-color-primary)}.el-tour.el-tour--primary{--el-tour-title-text-color:#fff;--el-tour-text-color:#fff;--el-tour-bg-color:var(--el-color-primary);--el-tour-close-color:#fff}.el-tour.el-tour--primary .el-tour__closebtn:focus .el-tour__close,.el-tour.el-tour--primary .el-tour__closebtn:hover .el-tour__close{color:var(--el-tour-title-text-color)}.el-tour.el-tour--primary .el-button--default{background:#fff;border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-tour.el-tour--primary .el-button--primary{border-color:#fff}.el-tour.el-tour--primary .el-tour-indicator{background:rgba(255,255,255,.15)}.el-tour.el-tour--primary .el-tour-indicator.is-active{background:#fff}.el-tour-parent--hidden{overflow:hidden}.el-anchor{--el-anchor-bg-color:var(--el-bg-color);--el-anchor-padding-indent:14px;--el-anchor-line-height:22px;--el-anchor-font-size:12px;--el-anchor-color:var(--el-text-color-secondary);--el-anchor-active-color:var(--el-color-primary);--el-anchor-hover-color:var(--el-text-color-regular);--el-anchor-marker-bg-color:var(--el-color-primary);background-color:var(--el-anchor-bg-color);position:relative}.el-anchor__marker{background-color:var(--el-anchor-marker-bg-color);border-radius:4px;opacity:0;position:absolute;z-index:0}.el-anchor.el-anchor--vertical .el-anchor__marker{height:14px;left:0;top:8px;transition:top .25s ease-in-out,opacity .25s;width:4px}.el-anchor.el-anchor--vertical .el-anchor__list{padding-left:var(--el-anchor-padding-indent)}.el-anchor.el-anchor--vertical.el-anchor--underline:before{background-color:rgba(5,5,5,.06);content:"";height:100%;left:0;position:absolute;width:2px}.el-anchor.el-anchor--vertical.el-anchor--underline .el-anchor__marker{border-radius:unset;width:2px}.el-anchor.el-anchor--horizontal .el-anchor__marker{bottom:0;height:2px;transition:left .25s ease-in-out,opacity .25s,width .25s;width:20px}.el-anchor.el-anchor--horizontal .el-anchor__list{display:flex;padding-bottom:4px}.el-anchor.el-anchor--horizontal .el-anchor__list .el-anchor__item{padding-left:16px}.el-anchor.el-anchor--horizontal .el-anchor__list .el-anchor__item:first-child{padding-left:0}.el-anchor.el-anchor--horizontal.el-anchor--underline:before{background-color:rgba(5,5,5,.06);bottom:0;content:"";height:2px;position:absolute;width:100%}.el-anchor.el-anchor--horizontal.el-anchor--underline .el-anchor__marker{border-radius:unset;height:2px}.el-anchor__item{display:flex;flex-direction:column}.el-anchor__link{color:var(--el-anchor-color);cursor:pointer;font-size:var(--el-anchor-font-size);line-height:var(--el-anchor-line-height);max-width:100%;outline:none;overflow:hidden;padding:4px 0;text-decoration:none;text-overflow:ellipsis;transition:color var(--el-transition-duration);white-space:nowrap}.el-anchor__link:focus,.el-anchor__link:hover{color:var(--el-hover-color)}.el-anchor__link:focus-visible{border-radius:var(--el-border-radius-base);outline:2px solid var(--el-color-primary)}.el-anchor__link.is-active{color:var(--el-anchor-active-color)}.el-anchor .el-anchor__list .el-anchor__item a{display:inline-block}.el-segmented--vertical{flex-direction:column}.el-segmented--vertical .el-segmented__item{padding:11px}.el-segmented{--el-segmented-color:var(--el-text-color-regular);--el-segmented-bg-color:var(--el-fill-color-light);--el-segmented-padding:2px;--el-segmented-item-selected-color:var(--el-color-white);--el-segmented-item-selected-bg-color:var(--el-color-primary);--el-segmented-item-selected-disabled-bg-color:var(--el-color-primary-light-5);--el-segmented-item-hover-color:var(--el-text-color-primary);--el-segmented-item-hover-bg-color:var(--el-fill-color-dark);--el-segmented-item-active-bg-color:var(--el-fill-color-darker);--el-segmented-item-disabled-color:var(--el-text-color-placeholder);align-items:stretch;background:var(--el-segmented-bg-color);border-radius:var(--el-border-radius-base);box-sizing:border-box;color:var(--el-segmented-color);display:inline-flex;font-size:14px;min-height:32px;padding:var(--el-segmented-padding)}.el-segmented__group{align-items:stretch;display:flex;position:relative;width:100%}.el-segmented__item-selected{background:var(--el-segmented-item-selected-bg-color);border-radius:calc(var(--el-border-radius-base) - 2px);height:100%;left:0;pointer-events:none;position:absolute;top:0;transition:all .3s;width:10px}.el-segmented__item-selected.is-disabled{background:var(--el-segmented-item-selected-disabled-bg-color)}.el-segmented__item-selected.is-focus-visible:before{border-radius:inherit;bottom:0;content:"";left:0;outline:2px solid var(--el-segmented-item-selected-bg-color);outline-offset:1px;position:absolute;right:0;top:0}.el-segmented__item{align-items:center;border-radius:calc(var(--el-border-radius-base) - 2px);cursor:pointer;display:flex;flex:1;padding:0 11px}.el-segmented__item:not(.is-disabled):not(.is-selected):hover{background:var(--el-segmented-item-hover-bg-color);color:var(--el-segmented-item-hover-color)}.el-segmented__item:not(.is-disabled):not(.is-selected):active{background:var(--el-segmented-item-active-bg-color)}.el-segmented__item.is-selected,.el-segmented__item.is-selected.is-disabled{color:var(--el-segmented-item-selected-color)}.el-segmented__item.is-disabled{color:var(--el-segmented-item-disabled-color);cursor:not-allowed}.el-segmented__item-input{height:0;margin:0;opacity:0;pointer-events:none;position:absolute;width:0}.el-segmented__item-label{flex:1;line-height:normal;overflow:hidden;text-align:center;text-overflow:ellipsis;transition:color .3s;white-space:nowrap;z-index:1}.el-segmented.is-block{display:flex}.el-segmented.is-block .el-segmented__item{min-width:0}.el-segmented--large{border-radius:var(--el-border-radius-base);font-size:16px;min-height:40px}.el-segmented--large .el-segmented__item-selected{border-radius:calc(var(--el-border-radius-base) - 2px)}.el-segmented--large .el-segmented--vertical .el-segmented__item{padding:11px}.el-segmented--large .el-segmented__item{border-radius:calc(var(--el-border-radius-base) - 2px);padding:0 11px}.el-segmented--small{border-radius:calc(var(--el-border-radius-base) - 1px);font-size:14px;min-height:24px}.el-segmented--small .el-segmented__item-selected{border-radius:calc(var(--el-border-radius-base) - 3px)}.el-segmented--small .el-segmented--vertical .el-segmented__item{padding:7px}.el-segmented--small .el-segmented__item{border-radius:calc(var(--el-border-radius-base) - 3px);padding:0 7px}.el-mention{position:relative;width:100%}.el-mention__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-mention__popper.el-popper,.el-mention__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-mention__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-mention__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-mention__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-mention__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-mention-dropdown{--el-mention-font-size:var(--el-font-size-base);--el-mention-bg-color:var(--el-bg-color-overlay);--el-mention-shadow:var(--el-box-shadow-light);--el-mention-border:1px solid var(--el-border-color-light);--el-mention-option-color:var(--el-text-color-regular);--el-mention-option-height:34px;--el-mention-option-min-width:100px;--el-mention-option-hover-background:var(--el-fill-color-light);--el-mention-option-selected-color:var(--el-color-primary);--el-mention-option-disabled-color:var(--el-text-color-placeholder);--el-mention-option-loading-color:var(--el-text-color-secondary);--el-mention-option-loading-padding:10px 0;--el-mention-max-height:174px;--el-mention-padding:6px 0;--el-mention-header-padding:10px;--el-mention-footer-padding:10px}.el-mention-dropdown__item{box-sizing:border-box;color:var(--el-mention-option-color);cursor:pointer;font-size:var(--el-mention-font-size);height:var(--el-mention-option-height);line-height:var(--el-mention-option-height);min-width:var(--el-mention-option-min-width);overflow:hidden;padding:0 20px;position:relative;text-overflow:ellipsis;white-space:nowrap}.el-mention-dropdown__item.is-hovering{background-color:var(--el-mention-option-hover-background)}.el-mention-dropdown__item.is-selected{color:var(--el-mention-option-selected-color);font-weight:bold}.el-mention-dropdown__item.is-disabled{background-color:unset;color:var(--el-mention-option-disabled-color);cursor:not-allowed}.el-mention-dropdown{border-radius:var(--el-border-radius-base);box-sizing:border-box;z-index:calc(var(--el-index-top) + 1)}.el-mention-dropdown__loading{color:var(--el-mention-option-loading-color);font-size:12px;margin:0;min-width:var(--el-mention-option-min-width);padding:10px 0;text-align:center}.el-mention-dropdown__wrap{max-height:var(--el-mention-max-height)}.el-mention-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:var(--el-mention-padding)}.el-mention-dropdown__header{border-bottom:var(--el-mention-border);padding:var(--el-mention-header-padding)}.el-mention-dropdown__footer{border-top:var(--el-mention-border);padding:var(--el-mention-footer-padding)}.el-splitter{display:flex;height:100%;margin:0;padding:0;position:relative;width:100%}.el-splitter__mask{bottom:0;left:0;position:absolute;right:0;top:0;z-index:999}.el-splitter__mask-horizontal{cursor:ew-resize}.el-splitter__mask-vertical{cursor:ns-resize}.el-splitter__horizontal{flex-direction:row}.el-splitter__vertical{flex-direction:column}.el-splitter-bar{flex:none;position:relative;-webkit-user-select:none;user-select:none}.el-splitter-bar__dragger{background:transparent;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:1}.el-splitter-bar__dragger:after,.el-splitter-bar__dragger:before{background-color:var(--el-border-color-light);content:"";left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.el-splitter-bar__dragger:not(.is-lazy):after{display:none}.el-splitter-bar__dragger:after{opacity:.4}.el-splitter-bar__dragger:hover:not(.is-disabled):before{background-color:var(--el-color-primary-light-5)}.el-splitter-bar__dragger-horizontal:after,.el-splitter-bar__dragger-horizontal:before{height:100%;width:2px}.el-splitter-bar__dragger-vertical:after,.el-splitter-bar__dragger-vertical:before{height:2px;width:100%}.el-splitter-bar__dragger-active:after,.el-splitter-bar__dragger-active:before{background-color:var(--el-color-primary-light-3)}.el-splitter-bar__dragger-active.el-splitter-bar__dragger-horizontal:after{transform:translate(calc(-50% + var(--el-splitter-bar-offset)),-50%)}.el-splitter-bar__dragger-active.el-splitter-bar__dragger-vertical:after{transform:translate(-50%,calc(-50% + var(--el-splitter-bar-offset)))}.el-splitter-bar:hover .el-splitter-bar__collapse-icon{opacity:1}.el-splitter-bar__collapse-icon{align-items:center;background:var(--el-border-color-light);border-radius:2px;cursor:pointer;display:flex;justify-content:center;opacity:0;position:absolute;z-index:9}.el-splitter-bar__collapse-icon:hover{background-color:var(--el-color-primary-light-5);opacity:1}.el-splitter-bar__horizontal-collapse-icon-start{height:24px;left:-12px;top:50%;transform:translate(-50%,-50%);width:16px}.el-splitter-bar__horizontal-collapse-icon-end{height:24px;left:12px;top:50%;transform:translate(-50%,-50%);width:16px}.el-splitter-bar__vertical-collapse-icon-start{height:16px;right:50%;top:-12px;transform:translate(50%,-50%);width:24px}.el-splitter-bar__vertical-collapse-icon-end{height:16px;right:50%;top:12px;transform:translate(50%,-50%);width:24px}.el-splitter-panel{box-sizing:border-box;flex-grow:0;overflow:auto;scrollbar-width:thin}html.dark{color-scheme:dark;--el-color-primary:#409eff;--el-color-primary-light-3:rgb(51,117,185);--el-color-primary-light-5:rgb(42,89,138);--el-color-primary-light-7:rgb(33,61,91);--el-color-primary-light-8:rgb(29,48,67);--el-color-primary-light-9:rgb(24,34,43);--el-color-primary-dark-2:rgb(102,177,255);--el-color-success:#67c23a;--el-color-success-light-3:rgb(78,142,47);--el-color-success-light-5:rgb(62,107,39);--el-color-success-light-7:rgb(45,72,31);--el-color-success-light-8:rgb(37,55,28);--el-color-success-light-9:rgb(28,37,24);--el-color-success-dark-2:rgb(133,206,97);--el-color-warning:#e6a23c;--el-color-warning-light-3:rgb(167,119,48);--el-color-warning-light-5:rgb(125,91,40);--el-color-warning-light-7:rgb(83,63,32);--el-color-warning-light-8:rgb(62,48,28);--el-color-warning-light-9:rgb(41,34,24);--el-color-warning-dark-2:rgb(235,181,99);--el-color-danger:#f56c6c;--el-color-danger-light-3:rgb(178,82,82);--el-color-danger-light-5:rgb(133,64,64);--el-color-danger-light-7:rgb(88,46,46);--el-color-danger-light-8:rgb(65,38,38);--el-color-danger-light-9:rgb(42,29,29);--el-color-danger-dark-2:rgb(247,137,137);--el-color-error:#f56c6c;--el-color-error-light-3:rgb(178,82,82);--el-color-error-light-5:rgb(133,64,64);--el-color-error-light-7:rgb(88,46,46);--el-color-error-light-8:rgb(65,38,38);--el-color-error-light-9:rgb(42,29,29);--el-color-error-dark-2:rgb(247,137,137);--el-color-info:#909399;--el-color-info-light-3:rgb(107,109,113);--el-color-info-light-5:rgb(82,84,87);--el-color-info-light-7:rgb(57,58,60);--el-color-info-light-8:rgb(45,45,47);--el-color-info-light-9:rgb(32,33,33);--el-color-info-dark-2:rgb(166,169,173);--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,0.36),0px 8px 20px rgba(0,0,0,0.72);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,0.72);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,0.72);--el-box-shadow-dark:0px 16px 48px 16px rgba(0,0,0,0.72),0px 12px 32px #000000,0px 8px 16px -8px #000000;--el-bg-color-page:#0a0a0a;--el-bg-color:#141414;--el-bg-color-overlay:#1d1e1f;--el-text-color-primary:#E5EAF3;--el-text-color-regular:#CFD3DC;--el-text-color-secondary:#A3A6AD;--el-text-color-placeholder:#8D9095;--el-text-color-disabled:#6C6E72;--el-border-color-darker:#636466;--el-border-color-dark:#58585B;--el-border-color:#4C4D4F;--el-border-color-light:#414243;--el-border-color-lighter:#363637;--el-border-color-extra-light:#2B2B2C;--el-fill-color-darker:#424243;--el-fill-color-dark:#39393A;--el-fill-color:#303030;--el-fill-color-light:#262727;--el-fill-color-lighter:#1D1D1D;--el-fill-color-extra-light:#191919;--el-fill-color-blank:#141414;--el-mask-color:rgba(0,0,0,0.8);--el-mask-color-extra-light:rgba(0,0,0,0.3)}html.dark .el-button{--el-button-disabled-text-color:rgba(255,255,255,0.5)}html.dark .el-card{--el-card-bg-color:var(--el-bg-color-overlay);--el-fill-color-blank:var(--el-card-bg-color)}html.dark .el-empty{--el-empty-fill-color-0:var(--el-color-black);--el-empty-fill-color-1:#4b4b52;--el-empty-fill-color-2:#36383d;--el-empty-fill-color-3:#1e1e20;--el-empty-fill-color-4:#262629;--el-empty-fill-color-5:#202124;--el-empty-fill-color-6:#212224;--el-empty-fill-color-7:#1b1c1f;--el-empty-fill-color-8:#1c1d1f;--el-empty-fill-color-9:#18181a}/**
 * Tailwind CSS Source File
 * This file is compiled to tailwind.css using the Tailwind CLI
 */

*, ::before, ::after {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

::backdrop {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
 */

/*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
*/

*,
::before,
::after {
  box-sizing: border-box; /* 1 */
  border-width: 0; /* 2 */
  border-style: solid; /* 2 */
  border-color: #e5e7eb; /* 2 */
}

::before,
::after {
  --tw-content: '';
}

/*
1. Use a consistent sensible line-height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured \`sans\` font-family by default.
5. Use the user's configured \`sans\` font-feature-settings by default.
6. Use the user's configured \`sans\` font-variation-settings by default.
7. Disable tap highlights on iOS
*/

html,
:host {
  line-height: 1.5; /* 1 */
  -webkit-text-size-adjust: 100%; /* 2 */
  -moz-tab-size: 4; /* 3 */
  -o-tab-size: 4;
     tab-size: 4; /* 3 */
  font-family: Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, sans-serif; /* 4 */
  font-feature-settings: normal; /* 5 */
  font-variation-settings: normal; /* 6 */
  -webkit-tap-highlight-color: transparent; /* 7 */
}

/*
1. Remove the margin in all browsers.
2. Inherit line-height from \`html\` so users can set them as a class directly on the \`html\` element.
*/

body {
  margin: 0; /* 1 */
  line-height: inherit; /* 2 */
}

/*
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
3. Ensure horizontal rules are visible by default.
*/

hr {
  height: 0; /* 1 */
  color: inherit; /* 2 */
  border-top-width: 1px; /* 3 */
}

/*
Add the correct text decoration in Chrome, Edge, and Safari.
*/

abbr:where([title]) {
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
}

/*
Remove the default font size and weight for headings.
*/

h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: inherit;
  font-weight: inherit;
}

/*
Reset links to optimize for opt-in styling instead of opt-out.
*/

a {
  color: inherit;
  text-decoration: inherit;
}

/*
Add the correct font weight in Edge and Safari.
*/

b,
strong {
  font-weight: bolder;
}

/*
1. Use the user's configured \`mono\` font-family by default.
2. Use the user's configured \`mono\` font-feature-settings by default.
3. Use the user's configured \`mono\` font-variation-settings by default.
4. Correct the odd \`em\` font sizing in all browsers.
*/

code,
kbd,
samp,
pre {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* 1 */
  font-feature-settings: normal; /* 2 */
  font-variation-settings: normal; /* 3 */
  font-size: 1em; /* 4 */
}

/*
Add the correct font size in all browsers.
*/

small {
  font-size: 80%;
}

/*
Prevent \`sub\` and \`sup\` elements from affecting the line height in all browsers.
*/

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/*
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
3. Remove gaps between table borders by default.
*/

table {
  text-indent: 0; /* 1 */
  border-color: inherit; /* 2 */
  border-collapse: collapse; /* 3 */
}

/*
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
3. Remove default padding in all browsers.
*/

button,
input,
optgroup,
select,
textarea {
  font-family: inherit; /* 1 */
  font-feature-settings: inherit; /* 1 */
  font-variation-settings: inherit; /* 1 */
  font-size: 100%; /* 1 */
  font-weight: inherit; /* 1 */
  line-height: inherit; /* 1 */
  letter-spacing: inherit; /* 1 */
  color: inherit; /* 1 */
  margin: 0; /* 2 */
  padding: 0; /* 3 */
}

/*
Remove the inheritance of text transform in Edge and Firefox.
*/

button,
select {
  text-transform: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Remove default button styles.
*/

button,
input:where([type='button']),
input:where([type='reset']),
input:where([type='submit']) {
  -webkit-appearance: button; /* 1 */
  background-color: transparent; /* 2 */
  background-image: none; /* 2 */
}

/*
Use the modern Firefox focus style for all focusable elements.
*/

:-moz-focusring {
  outline: auto;
}

/*
Remove the additional \`:invalid\` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
*/

:-moz-ui-invalid {
  box-shadow: none;
}

/*
Add the correct vertical alignment in Chrome and Firefox.
*/

progress {
  vertical-align: baseline;
}

/*
Correct the cursor style of increment and decrement buttons in Safari.
*/

::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
  height: auto;
}

/*
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/

[type='search'] {
  -webkit-appearance: textfield; /* 1 */
  outline-offset: -2px; /* 2 */
}

/*
Remove the inner padding in Chrome and Safari on macOS.
*/

::-webkit-search-decoration {
  -webkit-appearance: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to \`inherit\` in Safari.
*/

::-webkit-file-upload-button {
  -webkit-appearance: button; /* 1 */
  font: inherit; /* 2 */
}

/*
Add the correct display in Chrome and Safari.
*/

summary {
  display: list-item;
}

/*
Removes the default spacing and border for appropriate elements.
*/

blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  margin: 0;
}

fieldset {
  margin: 0;
  padding: 0;
}

legend {
  padding: 0;
}

ol,
ul,
menu {
  list-style: none;
  margin: 0;
  padding: 0;
}

/*
Reset default styling for dialogs.
*/

dialog {
  padding: 0;
}

/*
Prevent resizing textareas horizontally by default.
*/

textarea {
  resize: vertical;
}

/*
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
2. Set the default placeholder color to the user's configured gray 400 color.
*/

input::-moz-placeholder, textarea::-moz-placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}

input::placeholder,
textarea::placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}

/*
Set the default cursor for buttons.
*/

button,
[role="button"] {
  cursor: pointer;
}

/*
Make sure disabled buttons don't get the pointer cursor.
*/

:disabled {
  cursor: default;
}

/*
1. Make replaced elements \`display: block\` by default. (https://github.com/mozdevs/cssremedy/issues/14)
2. Add \`vertical-align: middle\` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
   This can trigger a poorly considered lint error in some tools but is included by design.
*/

img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block; /* 1 */
  vertical-align: middle; /* 2 */
}

/*
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
*/

img,
video {
  max-width: 100%;
  height: auto;
}

/* Make elements with the HTML hidden attribute stay hidden by default */

[hidden]:where(:not([hidden="until-found"])) {
  display: none;
}

#ai-pro-app {
  font-family: Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, sans-serif;
}
.\\!container {
  width: 100% !important;
}
.container {
  width: 100%;
}
@media (min-width: 640px) {

  .\\!container {
    max-width: 640px !important;
  }

  .container {
    max-width: 640px;
  }
}
@media (min-width: 768px) {

  .\\!container {
    max-width: 768px !important;
  }

  .container {
    max-width: 768px;
  }
}
@media (min-width: 1024px) {

  .\\!container {
    max-width: 1024px !important;
  }

  .container {
    max-width: 1024px;
  }
}
@media (min-width: 1280px) {

  .\\!container {
    max-width: 1280px !important;
  }

  .container {
    max-width: 1280px;
  }
}
@media (min-width: 1536px) {

  .\\!container {
    max-width: 1536px !important;
  }

  .container {
    max-width: 1536px;
  }
}
/* Card Styles */
.card {
  border-radius: 0.5rem;
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
  padding: 1.5rem;
  --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
/* Form Styles */
/* Stats Card */
/* Badge Styles */
.badge {
  display: inline-flex;
  align-items: center;
  border-radius: 9999px;
  padding-left: 0.625rem;
  padding-right: 0.625rem;
  padding-top: 0.125rem;
  padding-bottom: 0.125rem;
  font-size: 0.75rem;
  line-height: 1rem;
  font-weight: 500;
}
#ai-platform-app .sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}
#ai-platform-app .pointer-events-none {
  pointer-events: none;
}
#ai-platform-app .pointer-events-auto {
  pointer-events: auto;
}
#ai-platform-app .\\!visible {
  visibility: visible !important;
}
#ai-platform-app .visible {
  visibility: visible;
}
#ai-platform-app .collapse {
  visibility: collapse;
}
#ai-platform-app .static {
  position: static;
}
#ai-platform-app .\\!fixed {
  position: fixed !important;
}
#ai-platform-app .fixed {
  position: fixed;
}
#ai-platform-app .absolute {
  position: absolute;
}
#ai-platform-app .relative {
  position: relative;
}
#ai-platform-app .sticky {
  position: sticky;
}
#ai-platform-app .inset-0 {
  inset: 0px;
}
#ai-platform-app .inset-y-0 {
  top: 0px;
  bottom: 0px;
}
#ai-platform-app .-bottom-1 {
  bottom: -0.25rem;
}
#ai-platform-app .-bottom-3 {
  bottom: -0.75rem;
}
#ai-platform-app .-top-1 {
  top: -0.25rem;
}
#ai-platform-app .-top-3 {
  top: -0.75rem;
}
#ai-platform-app .bottom-0 {
  bottom: 0px;
}
#ai-platform-app .bottom-4 {
  bottom: 1rem;
}
#ai-platform-app .left-0 {
  left: 0px;
}
#ai-platform-app .left-1 {
  left: 0.25rem;
}
#ai-platform-app .left-2 {
  left: 0.5rem;
}
#ai-platform-app .left-3 {
  left: 0.75rem;
}
#ai-platform-app .left-4 {
  left: 1rem;
}
#ai-platform-app .right-0 {
  right: 0px;
}
#ai-platform-app .right-1 {
  right: 0.25rem;
}
#ai-platform-app .right-2 {
  right: 0.5rem;
}
#ai-platform-app .right-3 {
  right: 0.75rem;
}
#ai-platform-app .right-4 {
  right: 1rem;
}
#ai-platform-app .right-6 {
  right: 1.5rem;
}
#ai-platform-app .top-0 {
  top: 0px;
}
#ai-platform-app .top-1 {
  top: 0.25rem;
}
#ai-platform-app .top-2 {
  top: 0.5rem;
}
#ai-platform-app .top-3 {
  top: 0.75rem;
}
#ai-platform-app .top-4 {
  top: 1rem;
}
#ai-platform-app .top-5 {
  top: 1.25rem;
}
#ai-platform-app .top-6 {
  top: 1.5rem;
}
#ai-platform-app .top-full {
  top: 100%;
}
#ai-platform-app .-z-0 {
  z-index: 0;
}
#ai-platform-app .-z-10 {
  z-index: -10;
}
#ai-platform-app .z-0 {
  z-index: 0;
}
#ai-platform-app .z-10 {
  z-index: 10;
}
#ai-platform-app .z-20 {
  z-index: 20;
}
#ai-platform-app .z-30 {
  z-index: 30;
}
#ai-platform-app .z-50 {
  z-index: 50;
}
#ai-platform-app .col-span-1 {
  grid-column: span 1 / span 1;
}
#ai-platform-app .col-span-2 {
  grid-column: span 2 / span 2;
}
#ai-platform-app .col-span-full {
  grid-column: 1 / -1;
}
#ai-platform-app .-m-2 {
  margin: -0.5rem;
}
#ai-platform-app .-m-6 {
  margin: -1.5rem;
}
#ai-platform-app .m-0 {
  margin: 0px;
}
#ai-platform-app .m-1 {
  margin: 0.25rem;
}
#ai-platform-app .\\!my-4 {
  margin-top: 1rem !important;
  margin-bottom: 1rem !important;
}
#ai-platform-app .mx-2 {
  margin-left: 0.5rem;
  margin-right: 0.5rem;
}
#ai-platform-app .mx-4 {
  margin-left: 1rem;
  margin-right: 1rem;
}
#ai-platform-app .mx-auto {
  margin-left: auto;
  margin-right: auto;
}
#ai-platform-app .my-1 {
  margin-top: 0.25rem;
  margin-bottom: 0.25rem;
}
#ai-platform-app .my-2 {
  margin-top: 0.5rem;
  margin-bottom: 0.5rem;
}
#ai-platform-app .my-3 {
  margin-top: 0.75rem;
  margin-bottom: 0.75rem;
}
#ai-platform-app .my-4 {
  margin-top: 1rem;
  margin-bottom: 1rem;
}
#ai-platform-app .\\!mb-0 {
  margin-bottom: 0px !important;
}
#ai-platform-app .-mb-px {
  margin-bottom: -1px;
}
#ai-platform-app .-mr-16 {
  margin-right: -4rem;
}
#ai-platform-app .-mr-32 {
  margin-right: -8rem;
}
#ai-platform-app .-mr-6 {
  margin-right: -1.5rem;
}
#ai-platform-app .-mt-16 {
  margin-top: -4rem;
}
#ai-platform-app .-mt-2 {
  margin-top: -0.5rem;
}
#ai-platform-app .-mt-32 {
  margin-top: -8rem;
}
#ai-platform-app .-mt-5 {
  margin-top: -1.25rem;
}
#ai-platform-app .-mt-6 {
  margin-top: -1.5rem;
}
#ai-platform-app .mb-0 {
  margin-bottom: 0px;
}
#ai-platform-app .mb-1 {
  margin-bottom: 0.25rem;
}
#ai-platform-app .mb-10 {
  margin-bottom: 2.5rem;
}
#ai-platform-app .mb-12 {
  margin-bottom: 3rem;
}
#ai-platform-app .mb-2 {
  margin-bottom: 0.5rem;
}
#ai-platform-app .mb-3 {
  margin-bottom: 0.75rem;
}
#ai-platform-app .mb-4 {
  margin-bottom: 1rem;
}
#ai-platform-app .mb-5 {
  margin-bottom: 1.25rem;
}
#ai-platform-app .mb-6 {
  margin-bottom: 1.5rem;
}
#ai-platform-app .mb-8 {
  margin-bottom: 2rem;
}
#ai-platform-app .ml-1 {
  margin-left: 0.25rem;
}
#ai-platform-app .ml-2 {
  margin-left: 0.5rem;
}
#ai-platform-app .ml-3 {
  margin-left: 0.75rem;
}
#ai-platform-app .ml-4 {
  margin-left: 1rem;
}
#ai-platform-app .ml-6 {
  margin-left: 1.5rem;
}
#ai-platform-app .ml-8 {
  margin-left: 2rem;
}
#ai-platform-app .ml-auto {
  margin-left: auto;
}
#ai-platform-app .mr-1 {
  margin-right: 0.25rem;
}
#ai-platform-app .mr-2 {
  margin-right: 0.5rem;
}
#ai-platform-app .mr-3 {
  margin-right: 0.75rem;
}
#ai-platform-app .mr-4 {
  margin-right: 1rem;
}
#ai-platform-app .mr-6 {
  margin-right: 1.5rem;
}
#ai-platform-app .mt-0 {
  margin-top: 0px;
}
#ai-platform-app .mt-0\\.5 {
  margin-top: 0.125rem;
}
#ai-platform-app .mt-1 {
  margin-top: 0.25rem;
}
#ai-platform-app .mt-10 {
  margin-top: 2.5rem;
}
#ai-platform-app .mt-2 {
  margin-top: 0.5rem;
}
#ai-platform-app .mt-3 {
  margin-top: 0.75rem;
}
#ai-platform-app .mt-4 {
  margin-top: 1rem;
}
#ai-platform-app .mt-6 {
  margin-top: 1.5rem;
}
#ai-platform-app .mt-8 {
  margin-top: 2rem;
}
#ai-platform-app .mt-auto {
  margin-top: auto;
}
#ai-platform-app .line-clamp-2 {
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
#ai-platform-app .block {
  display: block;
}
#ai-platform-app .inline-block {
  display: inline-block;
}
#ai-platform-app .inline {
  display: inline;
}
#ai-platform-app .flex {
  display: flex;
}
#ai-platform-app .inline-flex {
  display: inline-flex;
}
#ai-platform-app .\\!table {
  display: table !important;
}
#ai-platform-app .table {
  display: table;
}
#ai-platform-app .grid {
  display: grid;
}
#ai-platform-app .contents {
  display: contents;
}
#ai-platform-app .list-item {
  display: list-item;
}
#ai-platform-app .hidden {
  display: none;
}
#ai-platform-app .aspect-video {
  aspect-ratio: 16 / 9;
}
#ai-platform-app .size-1 {
  width: 0.25rem;
  height: 0.25rem;
}
#ai-platform-app .h-0 {
  height: 0px;
}
#ai-platform-app .h-1 {
  height: 0.25rem;
}
#ai-platform-app .h-10 {
  height: 2.5rem;
}
#ai-platform-app .h-12 {
  height: 3rem;
}
#ai-platform-app .h-14 {
  height: 3.5rem;
}
#ai-platform-app .h-16 {
  height: 4rem;
}
#ai-platform-app .h-2 {
  height: 0.5rem;
}
#ai-platform-app .h-20 {
  height: 5rem;
}
#ai-platform-app .h-24 {
  height: 6rem;
}
#ai-platform-app .h-3 {
  height: 0.75rem;
}
#ai-platform-app .h-32 {
  height: 8rem;
}
#ai-platform-app .h-4 {
  height: 1rem;
}
#ai-platform-app .h-40 {
  height: 10rem;
}
#ai-platform-app .h-48 {
  height: 12rem;
}
#ai-platform-app .h-5 {
  height: 1.25rem;
}
#ai-platform-app .h-6 {
  height: 1.5rem;
}
#ai-platform-app .h-64 {
  height: 16rem;
}
#ai-platform-app .h-8 {
  height: 2rem;
}
#ai-platform-app .h-\\[100px\\] {
  height: 100px;
}
#ai-platform-app .h-\\[5000px\\] {
  height: 5000px;
}
#ai-platform-app .h-\\[500px\\] {
  height: 500px;
}
#ai-platform-app .h-\\[calc\\(100vh-200px\\)\\] {
  height: calc(100vh - 200px);
}
#ai-platform-app .h-auto {
  height: auto;
}
#ai-platform-app .h-full {
  height: 100%;
}
#ai-platform-app .max-h-48 {
  max-height: 12rem;
}
#ai-platform-app .max-h-60 {
  max-height: 15rem;
}
#ai-platform-app .max-h-96 {
  max-height: 24rem;
}
#ai-platform-app .max-h-\\[500px\\] {
  max-height: 500px;
}
#ai-platform-app .max-h-\\[calc\\(100vh-220px\\)\\] {
  max-height: calc(100vh - 220px);
}
#ai-platform-app .min-h-\\[200px\\] {
  min-height: 200px;
}
#ai-platform-app .min-h-\\[400px\\] {
  min-height: 400px;
}
#ai-platform-app .min-h-\\[48px\\] {
  min-height: 48px;
}
#ai-platform-app .min-h-\\[500px\\] {
  min-height: 500px;
}
#ai-platform-app .min-h-\\[64px\\] {
  min-height: 64px;
}
#ai-platform-app .min-h-screen {
  min-height: 100vh;
}
#ai-platform-app .\\!w-48 {
  width: 12rem !important;
}
#ai-platform-app .\\!w-64 {
  width: 16rem !important;
}
#ai-platform-app .w-0 {
  width: 0px;
}
#ai-platform-app .w-1 {
  width: 0.25rem;
}
#ai-platform-app .w-10 {
  width: 2.5rem;
}
#ai-platform-app .w-12 {
  width: 3rem;
}
#ai-platform-app .w-14 {
  width: 3.5rem;
}
#ai-platform-app .w-16 {
  width: 4rem;
}
#ai-platform-app .w-2 {
  width: 0.5rem;
}
#ai-platform-app .w-20 {
  width: 5rem;
}
#ai-platform-app .w-24 {
  width: 6rem;
}
#ai-platform-app .w-3 {
  width: 0.75rem;
}
#ai-platform-app .w-32 {
  width: 8rem;
}
#ai-platform-app .w-36 {
  width: 9rem;
}
#ai-platform-app .w-4 {
  width: 1rem;
}
#ai-platform-app .w-40 {
  width: 10rem;
}
#ai-platform-app .w-48 {
  width: 12rem;
}
#ai-platform-app .w-5 {
  width: 1.25rem;
}
#ai-platform-app .w-52 {
  width: 13rem;
}
#ai-platform-app .w-6 {
  width: 1.5rem;
}
#ai-platform-app .w-64 {
  width: 16rem;
}
#ai-platform-app .w-72 {
  width: 18rem;
}
#ai-platform-app .w-8 {
  width: 2rem;
}
#ai-platform-app .w-80 {
  width: 20rem;
}
#ai-platform-app .w-\\[5000px\\] {
  width: 5000px;
}
#ai-platform-app .w-auto {
  width: auto;
}
#ai-platform-app .w-fit {
  width: -moz-fit-content;
  width: fit-content;
}
#ai-platform-app .w-full {
  width: 100%;
}
#ai-platform-app .w-px {
  width: 1px;
}
#ai-platform-app .min-w-0 {
  min-width: 0px;
}
#ai-platform-app .min-w-\\[200px\\] {
  min-width: 200px;
}
#ai-platform-app .min-w-\\[300px\\] {
  min-width: 300px;
}
#ai-platform-app .max-w-2xl {
  max-width: 42rem;
}
#ai-platform-app .max-w-3xl {
  max-width: 48rem;
}
#ai-platform-app .max-w-4xl {
  max-width: 56rem;
}
#ai-platform-app .max-w-5xl {
  max-width: 64rem;
}
#ai-platform-app .max-w-7xl {
  max-width: 80rem;
}
#ai-platform-app .max-w-\\[70\\%\\] {
  max-width: 70%;
}
#ai-platform-app .max-w-lg {
  max-width: 32rem;
}
#ai-platform-app .max-w-md {
  max-width: 28rem;
}
#ai-platform-app .max-w-none {
  max-width: none;
}
#ai-platform-app .max-w-sm {
  max-width: 24rem;
}
#ai-platform-app .max-w-xl {
  max-width: 36rem;
}
#ai-platform-app .max-w-xs {
  max-width: 20rem;
}
#ai-platform-app .flex-1 {
  flex: 1 1 0%;
}
#ai-platform-app .flex-shrink {
  flex-shrink: 1;
}
#ai-platform-app .shrink-0 {
  flex-shrink: 0;
}
#ai-platform-app .border-collapse {
  border-collapse: collapse;
}
#ai-platform-app .-translate-x-1 {
  --tw-translate-x: -0.25rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
#ai-platform-app .-translate-y-0 {
  --tw-translate-y: -0px;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
#ai-platform-app .-translate-y-1 {
  --tw-translate-y: -0.25rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
#ai-platform-app .translate-x-0 {
  --tw-translate-x: 0px;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
#ai-platform-app .translate-x-1 {
  --tw-translate-x: 0.25rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
#ai-platform-app .translate-x-6 {
  --tw-translate-x: 1.5rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
#ai-platform-app .translate-y-0 {
  --tw-translate-y: 0px;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
#ai-platform-app .-rotate-90 {
  --tw-rotate: -90deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
#ai-platform-app .rotate-90 {
  --tw-rotate: 90deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
#ai-platform-app .scale-105 {
  --tw-scale-x: 1.05;
  --tw-scale-y: 1.05;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
#ai-platform-app .scale-110 {
  --tw-scale-x: 1.1;
  --tw-scale-y: 1.1;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
#ai-platform-app .transform {
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
@keyframes spin {

  to {
    transform: rotate(360deg);
  }
}
#ai-platform-app .animate-spin {
  animation: spin 1s linear infinite;
}
#ai-platform-app .cursor-crosshair {
  cursor: crosshair;
}
#ai-platform-app .cursor-default {
  cursor: default;
}
#ai-platform-app .cursor-grab {
  cursor: grab;
}
#ai-platform-app .cursor-move {
  cursor: move;
}
#ai-platform-app .cursor-not-allowed {
  cursor: not-allowed;
}
#ai-platform-app .cursor-pointer {
  cursor: pointer;
}
#ai-platform-app .select-none {
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}
#ai-platform-app .select-all {
  -webkit-user-select: all;
     -moz-user-select: all;
          user-select: all;
}
#ai-platform-app .resize-none {
  resize: none;
}
#ai-platform-app .resize {
  resize: both;
}
#ai-platform-app .appearance-none {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
}
#ai-platform-app .grid-cols-1 {
  grid-template-columns: repeat(1, minmax(0, 1fr));
}
#ai-platform-app .grid-cols-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
#ai-platform-app .grid-cols-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
#ai-platform-app .grid-cols-6 {
  grid-template-columns: repeat(6, minmax(0, 1fr));
}
#ai-platform-app .grid-cols-7 {
  grid-template-columns: repeat(7, minmax(0, 1fr));
}
#ai-platform-app .grid-cols-8 {
  grid-template-columns: repeat(8, minmax(0, 1fr));
}
#ai-platform-app .flex-row {
  flex-direction: row;
}
#ai-platform-app .flex-col {
  flex-direction: column;
}
#ai-platform-app .flex-wrap {
  flex-wrap: wrap;
}
#ai-platform-app .items-start {
  align-items: flex-start;
}
#ai-platform-app .items-end {
  align-items: flex-end;
}
#ai-platform-app .items-center {
  align-items: center;
}
#ai-platform-app .justify-start {
  justify-content: flex-start;
}
#ai-platform-app .justify-end {
  justify-content: flex-end;
}
#ai-platform-app .justify-center {
  justify-content: center;
}
#ai-platform-app .justify-between {
  justify-content: space-between;
}
#ai-platform-app .gap-1 {
  gap: 0.25rem;
}
#ai-platform-app .gap-2 {
  gap: 0.5rem;
}
#ai-platform-app .gap-3 {
  gap: 0.75rem;
}
#ai-platform-app .gap-4 {
  gap: 1rem;
}
#ai-platform-app .gap-6 {
  gap: 1.5rem;
}
#ai-platform-app .gap-8 {
  gap: 2rem;
}
#ai-platform-app :is(.space-x-1 > :not([hidden]) ~ :not([hidden])) {
  --tw-space-x-reverse: 0;
  margin-right: calc(0.25rem * var(--tw-space-x-reverse));
  margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse)));
}
#ai-platform-app :is(.space-x-2 > :not([hidden]) ~ :not([hidden])) {
  --tw-space-x-reverse: 0;
  margin-right: calc(0.5rem * var(--tw-space-x-reverse));
  margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));
}
#ai-platform-app :is(.space-x-3 > :not([hidden]) ~ :not([hidden])) {
  --tw-space-x-reverse: 0;
  margin-right: calc(0.75rem * var(--tw-space-x-reverse));
  margin-left: calc(0.75rem * calc(1 - var(--tw-space-x-reverse)));
}
#ai-platform-app :is(.space-x-4 > :not([hidden]) ~ :not([hidden])) {
  --tw-space-x-reverse: 0;
  margin-right: calc(1rem * var(--tw-space-x-reverse));
  margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));
}
#ai-platform-app :is(.space-x-6 > :not([hidden]) ~ :not([hidden])) {
  --tw-space-x-reverse: 0;
  margin-right: calc(1.5rem * var(--tw-space-x-reverse));
  margin-left: calc(1.5rem * calc(1 - var(--tw-space-x-reverse)));
}
#ai-platform-app :is(.space-x-8 > :not([hidden]) ~ :not([hidden])) {
  --tw-space-x-reverse: 0;
  margin-right: calc(2rem * var(--tw-space-x-reverse));
  margin-left: calc(2rem * calc(1 - var(--tw-space-x-reverse)));
}
#ai-platform-app :is(.space-y-1 > :not([hidden]) ~ :not([hidden])) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));
}
#ai-platform-app :is(.space-y-10 > :not([hidden]) ~ :not([hidden])) {
  --tw-space-y-reverse: 0;
  margin-top: calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(2.5rem * var(--tw-space-y-reverse));
}
#ai-platform-app :is(.space-y-2 > :not([hidden]) ~ :not([hidden])) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
}
#ai-platform-app :is(.space-y-3 > :not([hidden]) ~ :not([hidden])) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));
}
#ai-platform-app :is(.space-y-4 > :not([hidden]) ~ :not([hidden])) {
  --tw-space-y-reverse: 0;
  margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(1rem * var(--tw-space-y-reverse));
}
#ai-platform-app :is(.space-y-6 > :not([hidden]) ~ :not([hidden])) {
  --tw-space-y-reverse: 0;
  margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(1.5rem * var(--tw-space-y-reverse));
}
#ai-platform-app :is(.space-y-8 > :not([hidden]) ~ :not([hidden])) {
  --tw-space-y-reverse: 0;
  margin-top: calc(2rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(2rem * var(--tw-space-y-reverse));
}
#ai-platform-app :is(.divide-x > :not([hidden]) ~ :not([hidden])) {
  --tw-divide-x-reverse: 0;
  border-right-width: calc(1px * var(--tw-divide-x-reverse));
  border-left-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));
}
#ai-platform-app :is(.divide-y > :not([hidden]) ~ :not([hidden])) {
  --tw-divide-y-reverse: 0;
  border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
  border-bottom-width: calc(1px * var(--tw-divide-y-reverse));
}
#ai-platform-app :is(.divide-gray-100 > :not([hidden]) ~ :not([hidden])) {
  --tw-divide-opacity: 1;
  border-color: rgb(243 244 246 / var(--tw-divide-opacity, 1));
}
#ai-platform-app :is(.divide-gray-200 > :not([hidden]) ~ :not([hidden])) {
  --tw-divide-opacity: 1;
  border-color: rgb(229 231 235 / var(--tw-divide-opacity, 1));
}
#ai-platform-app .self-start {
  align-self: flex-start;
}
#ai-platform-app .overflow-hidden {
  overflow: hidden;
}
#ai-platform-app .overflow-visible {
  overflow: visible;
}
#ai-platform-app .overflow-x-auto {
  overflow-x: auto;
}
#ai-platform-app .overflow-y-auto {
  overflow-y: auto;
}
#ai-platform-app .overflow-x-hidden {
  overflow-x: hidden;
}
#ai-platform-app .truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
#ai-platform-app .whitespace-normal {
  white-space: normal;
}
#ai-platform-app .whitespace-nowrap {
  white-space: nowrap;
}
#ai-platform-app .whitespace-pre-wrap {
  white-space: pre-wrap;
}
#ai-platform-app .break-words {
  overflow-wrap: break-word;
}
#ai-platform-app .rounded {
  border-radius: 0.25rem;
}
#ai-platform-app .rounded-2xl {
  border-radius: 1rem;
}
#ai-platform-app .rounded-3xl {
  border-radius: 1.5rem;
}
#ai-platform-app .rounded-full {
  border-radius: 9999px;
}
#ai-platform-app .rounded-lg {
  border-radius: 0.5rem;
}
#ai-platform-app .rounded-md {
  border-radius: 0.375rem;
}
#ai-platform-app .rounded-none {
  border-radius: 0px;
}
#ai-platform-app .rounded-xl {
  border-radius: 0.75rem;
}
#ai-platform-app .rounded-b-xl {
  border-bottom-right-radius: 0.75rem;
  border-bottom-left-radius: 0.75rem;
}
#ai-platform-app .rounded-l-md {
  border-top-left-radius: 0.375rem;
  border-bottom-left-radius: 0.375rem;
}
#ai-platform-app .rounded-r-md {
  border-top-right-radius: 0.375rem;
  border-bottom-right-radius: 0.375rem;
}
#ai-platform-app .rounded-t-lg {
  border-top-left-radius: 0.5rem;
  border-top-right-radius: 0.5rem;
}
#ai-platform-app .rounded-t-sm {
  border-top-left-radius: 0.125rem;
  border-top-right-radius: 0.125rem;
}
#ai-platform-app .rounded-t-xl {
  border-top-left-radius: 0.75rem;
  border-top-right-radius: 0.75rem;
}
#ai-platform-app .rounded-bl-full {
  border-bottom-left-radius: 9999px;
}
#ai-platform-app .rounded-bl-sm {
  border-bottom-left-radius: 0.125rem;
}
#ai-platform-app .rounded-br-sm {
  border-bottom-right-radius: 0.125rem;
}
#ai-platform-app .border {
  border-width: 1px;
}
#ai-platform-app .border-0 {
  border-width: 0px;
}
#ai-platform-app .border-2 {
  border-width: 2px;
}
#ai-platform-app .border-4 {
  border-width: 4px;
}
#ai-platform-app .border-b {
  border-bottom-width: 1px;
}
#ai-platform-app .border-b-2 {
  border-bottom-width: 2px;
}
#ai-platform-app .border-l {
  border-left-width: 1px;
}
#ai-platform-app .border-l-0 {
  border-left-width: 0px;
}
#ai-platform-app .border-l-2 {
  border-left-width: 2px;
}
#ai-platform-app .border-l-4 {
  border-left-width: 4px;
}
#ai-platform-app .border-r {
  border-right-width: 1px;
}
#ai-platform-app .border-t {
  border-top-width: 1px;
}
#ai-platform-app .border-t-4 {
  border-top-width: 4px;
}
#ai-platform-app .border-dashed {
  border-style: dashed;
}
#ai-platform-app .border-none {
  border-style: none;
}
#ai-platform-app .border-blue-100 {
  --tw-border-opacity: 1;
  border-color: rgb(219 234 254 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-blue-200 {
  --tw-border-opacity: 1;
  border-color: rgb(191 219 254 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-blue-300 {
  --tw-border-opacity: 1;
  border-color: rgb(147 197 253 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-blue-400 {
  --tw-border-opacity: 1;
  border-color: rgb(96 165 250 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-blue-500 {
  --tw-border-opacity: 1;
  border-color: rgb(59 130 246 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-blue-600 {
  --tw-border-opacity: 1;
  border-color: rgb(37 99 235 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-gray-100 {
  --tw-border-opacity: 1;
  border-color: rgb(243 244 246 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-gray-200 {
  --tw-border-opacity: 1;
  border-color: rgb(229 231 235 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-gray-300 {
  --tw-border-opacity: 1;
  border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-gray-400 {
  --tw-border-opacity: 1;
  border-color: rgb(156 163 175 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-gray-600 {
  --tw-border-opacity: 1;
  border-color: rgb(75 85 99 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-gray-700 {
  --tw-border-opacity: 1;
  border-color: rgb(55 65 81 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-green-100 {
  --tw-border-opacity: 1;
  border-color: rgb(220 252 231 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-green-200 {
  --tw-border-opacity: 1;
  border-color: rgb(187 247 208 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-green-400 {
  --tw-border-opacity: 1;
  border-color: rgb(74 222 128 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-green-500 {
  --tw-border-opacity: 1;
  border-color: rgb(34 197 94 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-indigo-100 {
  --tw-border-opacity: 1;
  border-color: rgb(224 231 255 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-indigo-500 {
  --tw-border-opacity: 1;
  border-color: rgb(99 102 241 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-orange-200 {
  --tw-border-opacity: 1;
  border-color: rgb(254 215 170 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-purple-100 {
  --tw-border-opacity: 1;
  border-color: rgb(243 232 255 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-purple-200 {
  --tw-border-opacity: 1;
  border-color: rgb(233 213 255 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-red-100 {
  --tw-border-opacity: 1;
  border-color: rgb(254 226 226 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-red-200 {
  --tw-border-opacity: 1;
  border-color: rgb(254 202 202 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-red-300 {
  --tw-border-opacity: 1;
  border-color: rgb(252 165 165 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-slate-100 {
  --tw-border-opacity: 1;
  border-color: rgb(241 245 249 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-slate-200 {
  --tw-border-opacity: 1;
  border-color: rgb(226 232 240 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-slate-300 {
  --tw-border-opacity: 1;
  border-color: rgb(203 213 225 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-slate-50 {
  --tw-border-opacity: 1;
  border-color: rgb(248 250 252 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-transparent {
  border-color: transparent;
}
#ai-platform-app .border-white {
  --tw-border-opacity: 1;
  border-color: rgb(255 255 255 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-yellow-100 {
  --tw-border-opacity: 1;
  border-color: rgb(254 249 195 / var(--tw-border-opacity, 1));
}
#ai-platform-app .\\!border-t-blue-500 {
  --tw-border-opacity: 1 !important;
  border-top-color: rgb(59 130 246 / var(--tw-border-opacity, 1)) !important;
}
#ai-platform-app .\\!border-t-green-500 {
  --tw-border-opacity: 1 !important;
  border-top-color: rgb(34 197 94 / var(--tw-border-opacity, 1)) !important;
}
#ai-platform-app .border-l-blue-500 {
  --tw-border-opacity: 1;
  border-left-color: rgb(59 130 246 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-l-green-500 {
  --tw-border-opacity: 1;
  border-left-color: rgb(34 197 94 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-l-purple-500 {
  --tw-border-opacity: 1;
  border-left-color: rgb(168 85 247 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-r-yellow-500 {
  --tw-border-opacity: 1;
  border-right-color: rgb(234 179 8 / var(--tw-border-opacity, 1));
}
#ai-platform-app .border-t-green-500 {
  --tw-border-opacity: 1;
  border-top-color: rgb(34 197 94 / var(--tw-border-opacity, 1));
}
#ai-platform-app .bg-black {
  --tw-bg-opacity: 1;
  background-color: rgb(0 0 0 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-blue-100 {
  --tw-bg-opacity: 1;
  background-color: rgb(219 234 254 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-blue-400 {
  --tw-bg-opacity: 1;
  background-color: rgb(96 165 250 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-blue-50 {
  --tw-bg-opacity: 1;
  background-color: rgb(239 246 255 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-blue-500 {
  --tw-bg-opacity: 1;
  background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-blue-600 {
  --tw-bg-opacity: 1;
  background-color: rgb(37 99 235 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-blue-700 {
  --tw-bg-opacity: 1;
  background-color: rgb(29 78 216 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-emerald-100 {
  --tw-bg-opacity: 1;
  background-color: rgb(209 250 229 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-emerald-500 {
  --tw-bg-opacity: 1;
  background-color: rgb(16 185 129 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-gray-100 {
  --tw-bg-opacity: 1;
  background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-gray-200 {
  --tw-bg-opacity: 1;
  background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-gray-300 {
  --tw-bg-opacity: 1;
  background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-gray-400 {
  --tw-bg-opacity: 1;
  background-color: rgb(156 163 175 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-gray-50 {
  --tw-bg-opacity: 1;
  background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-gray-600 {
  --tw-bg-opacity: 1;
  background-color: rgb(75 85 99 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-gray-700 {
  --tw-bg-opacity: 1;
  background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-gray-800 {
  --tw-bg-opacity: 1;
  background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-gray-900 {
  --tw-bg-opacity: 1;
  background-color: rgb(17 24 39 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-green-100 {
  --tw-bg-opacity: 1;
  background-color: rgb(220 252 231 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-green-400 {
  --tw-bg-opacity: 1;
  background-color: rgb(74 222 128 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-green-50 {
  --tw-bg-opacity: 1;
  background-color: rgb(240 253 244 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-green-500 {
  --tw-bg-opacity: 1;
  background-color: rgb(34 197 94 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-green-600 {
  --tw-bg-opacity: 1;
  background-color: rgb(22 163 74 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-indigo-100 {
  --tw-bg-opacity: 1;
  background-color: rgb(224 231 255 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-indigo-50 {
  --tw-bg-opacity: 1;
  background-color: rgb(238 242 255 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-indigo-600 {
  --tw-bg-opacity: 1;
  background-color: rgb(79 70 229 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-orange-100 {
  --tw-bg-opacity: 1;
  background-color: rgb(255 237 213 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-orange-50 {
  --tw-bg-opacity: 1;
  background-color: rgb(255 247 237 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-purple-100 {
  --tw-bg-opacity: 1;
  background-color: rgb(243 232 255 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-purple-200 {
  --tw-bg-opacity: 1;
  background-color: rgb(233 213 255 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-purple-50 {
  --tw-bg-opacity: 1;
  background-color: rgb(250 245 255 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-purple-500 {
  --tw-bg-opacity: 1;
  background-color: rgb(168 85 247 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-purple-600 {
  --tw-bg-opacity: 1;
  background-color: rgb(147 51 234 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-red-100 {
  --tw-bg-opacity: 1;
  background-color: rgb(254 226 226 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-red-400 {
  --tw-bg-opacity: 1;
  background-color: rgb(248 113 113 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-red-50 {
  --tw-bg-opacity: 1;
  background-color: rgb(254 242 242 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-red-500 {
  --tw-bg-opacity: 1;
  background-color: rgb(239 68 68 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-red-600 {
  --tw-bg-opacity: 1;
  background-color: rgb(220 38 38 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-slate-100 {
  --tw-bg-opacity: 1;
  background-color: rgb(241 245 249 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-slate-200 {
  --tw-bg-opacity: 1;
  background-color: rgb(226 232 240 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-slate-50 {
  --tw-bg-opacity: 1;
  background-color: rgb(248 250 252 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-slate-800 {
  --tw-bg-opacity: 1;
  background-color: rgb(30 41 59 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-slate-900 {
  --tw-bg-opacity: 1;
  background-color: rgb(15 23 42 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-transparent {
  background-color: transparent;
}
#ai-platform-app .bg-violet-100 {
  --tw-bg-opacity: 1;
  background-color: rgb(237 233 254 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-violet-50 {
  --tw-bg-opacity: 1;
  background-color: rgb(245 243 255 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-white {
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-yellow-100 {
  --tw-bg-opacity: 1;
  background-color: rgb(254 249 195 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-yellow-50 {
  --tw-bg-opacity: 1;
  background-color: rgb(254 252 232 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-yellow-500 {
  --tw-bg-opacity: 1;
  background-color: rgb(234 179 8 / var(--tw-bg-opacity, 1));
}
#ai-platform-app .bg-opacity-0 {
  --tw-bg-opacity: 0;
}
#ai-platform-app .bg-opacity-50 {
  --tw-bg-opacity: 0.5;
}
#ai-platform-app .bg-opacity-80 {
  --tw-bg-opacity: 0.8;
}
#ai-platform-app .bg-opacity-90 {
  --tw-bg-opacity: 0.9;
}
#ai-platform-app .bg-gradient-to-br {
  background-image: linear-gradient(to bottom right, var(--tw-gradient-stops));
}
#ai-platform-app .bg-gradient-to-r {
  background-image: linear-gradient(to right, var(--tw-gradient-stops));
}
#ai-platform-app .from-blue-100 {
  --tw-gradient-from: #dbeafe var(--tw-gradient-from-position);
  --tw-gradient-to: rgb(219 234 254 / 0) var(--tw-gradient-to-position);
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
#ai-platform-app .from-blue-50 {
  --tw-gradient-from: #eff6ff var(--tw-gradient-from-position);
  --tw-gradient-to: rgb(239 246 255 / 0) var(--tw-gradient-to-position);
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
#ai-platform-app .from-blue-500 {
  --tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);
  --tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
#ai-platform-app .from-blue-600 {
  --tw-gradient-from: #2563eb var(--tw-gradient-from-position);
  --tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
#ai-platform-app .to-indigo-50 {
  --tw-gradient-to: #eef2ff var(--tw-gradient-to-position);
}
#ai-platform-app .to-indigo-700 {
  --tw-gradient-to: #4338ca var(--tw-gradient-to-position);
}
#ai-platform-app .to-purple-100 {
  --tw-gradient-to: #f3e8ff var(--tw-gradient-to-position);
}
#ai-platform-app .to-purple-600 {
  --tw-gradient-to: #9333ea var(--tw-gradient-to-position);
}
#ai-platform-app .fill-transparent {
  fill: transparent;
}
#ai-platform-app .stroke-blue-400 {
  stroke: #60a5fa;
}
#ai-platform-app .stroke-gray-400 {
  stroke: #9ca3af;
}
#ai-platform-app .stroke-2 {
  stroke-width: 2;
}
#ai-platform-app .object-cover {
  -o-object-fit: cover;
     object-fit: cover;
}
#ai-platform-app .p-0 {
  padding: 0px;
}
#ai-platform-app .p-1 {
  padding: 0.25rem;
}
#ai-platform-app .p-10 {
  padding: 2.5rem;
}
#ai-platform-app .p-12 {
  padding: 3rem;
}
#ai-platform-app .p-2 {
  padding: 0.5rem;
}
#ai-platform-app .p-3 {
  padding: 0.75rem;
}
#ai-platform-app .p-4 {
  padding: 1rem;
}
#ai-platform-app .p-5 {
  padding: 1.25rem;
}
#ai-platform-app .p-6 {
  padding: 1.5rem;
}
#ai-platform-app .p-8 {
  padding: 2rem;
}
#ai-platform-app .px-0 {
  padding-left: 0px;
  padding-right: 0px;
}
#ai-platform-app .px-1 {
  padding-left: 0.25rem;
  padding-right: 0.25rem;
}
#ai-platform-app .px-12 {
  padding-left: 3rem;
  padding-right: 3rem;
}
#ai-platform-app .px-2 {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}
#ai-platform-app .px-3 {
  padding-left: 0.75rem;
  padding-right: 0.75rem;
}
#ai-platform-app .px-4 {
  padding-left: 1rem;
  padding-right: 1rem;
}
#ai-platform-app .px-5 {
  padding-left: 1.25rem;
  padding-right: 1.25rem;
}
#ai-platform-app .px-6 {
  padding-left: 1.5rem;
  padding-right: 1.5rem;
}
#ai-platform-app .px-8 {
  padding-left: 2rem;
  padding-right: 2rem;
}
#ai-platform-app .py-0 {
  padding-top: 0px;
  padding-bottom: 0px;
}
#ai-platform-app .py-1 {
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
}
#ai-platform-app .py-10 {
  padding-top: 2.5rem;
  padding-bottom: 2.5rem;
}
#ai-platform-app .py-12 {
  padding-top: 3rem;
  padding-bottom: 3rem;
}
#ai-platform-app .py-2 {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}
#ai-platform-app .py-2\\.5 {
  padding-top: 0.625rem;
  padding-bottom: 0.625rem;
}
#ai-platform-app .py-20 {
  padding-top: 5rem;
  padding-bottom: 5rem;
}
#ai-platform-app .py-3 {
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
}
#ai-platform-app .py-4 {
  padding-top: 1rem;
  padding-bottom: 1rem;
}
#ai-platform-app .py-6 {
  padding-top: 1.5rem;
  padding-bottom: 1.5rem;
}
#ai-platform-app .py-8 {
  padding-top: 2rem;
  padding-bottom: 2rem;
}
#ai-platform-app .pb-0 {
  padding-bottom: 0px;
}
#ai-platform-app .pb-2 {
  padding-bottom: 0.5rem;
}
#ai-platform-app .pb-4 {
  padding-bottom: 1rem;
}
#ai-platform-app .pb-6 {
  padding-bottom: 1.5rem;
}
#ai-platform-app .pl-1 {
  padding-left: 0.25rem;
}
#ai-platform-app .pl-10 {
  padding-left: 2.5rem;
}
#ai-platform-app .pl-12 {
  padding-left: 3rem;
}
#ai-platform-app .pl-3 {
  padding-left: 0.75rem;
}
#ai-platform-app .pl-4 {
  padding-left: 1rem;
}
#ai-platform-app .pl-5 {
  padding-left: 1.25rem;
}
#ai-platform-app .pl-6 {
  padding-left: 1.5rem;
}
#ai-platform-app .pl-7 {
  padding-left: 1.75rem;
}
#ai-platform-app .pl-8 {
  padding-left: 2rem;
}
#ai-platform-app .pr-10 {
  padding-right: 2.5rem;
}
#ai-platform-app .pr-12 {
  padding-right: 3rem;
}
#ai-platform-app .pr-16 {
  padding-right: 4rem;
}
#ai-platform-app .pr-2 {
  padding-right: 0.5rem;
}
#ai-platform-app .pr-3 {
  padding-right: 0.75rem;
}
#ai-platform-app .pr-4 {
  padding-right: 1rem;
}
#ai-platform-app .pt-0 {
  padding-top: 0px;
}
#ai-platform-app .pt-1 {
  padding-top: 0.25rem;
}
#ai-platform-app .pt-12 {
  padding-top: 3rem;
}
#ai-platform-app .pt-16 {
  padding-top: 4rem;
}
#ai-platform-app .pt-2 {
  padding-top: 0.5rem;
}
#ai-platform-app .pt-4 {
  padding-top: 1rem;
}
#ai-platform-app .pt-5 {
  padding-top: 1.25rem;
}
#ai-platform-app .pt-6 {
  padding-top: 1.5rem;
}
#ai-platform-app .pt-8 {
  padding-top: 2rem;
}
#ai-platform-app .text-left {
  text-align: left;
}
#ai-platform-app .text-center {
  text-align: center;
}
#ai-platform-app .text-right {
  text-align: right;
}
#ai-platform-app .align-middle {
  vertical-align: middle;
}
#ai-platform-app .font-mono {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
#ai-platform-app .text-2xl {
  font-size: 1.5rem;
  line-height: 2rem;
}
#ai-platform-app .text-3xl {
  font-size: 1.875rem;
  line-height: 2.25rem;
}
#ai-platform-app .text-4xl {
  font-size: 2.25rem;
  line-height: 2.5rem;
}
#ai-platform-app .text-5xl {
  font-size: 3rem;
  line-height: 1;
}
#ai-platform-app .text-6xl {
  font-size: 3.75rem;
  line-height: 1;
}
#ai-platform-app .text-\\[10px\\] {
  font-size: 10px;
}
#ai-platform-app .text-base {
  font-size: 1rem;
  line-height: 1.5rem;
}
#ai-platform-app .text-lg {
  font-size: 1.125rem;
  line-height: 1.75rem;
}
#ai-platform-app .text-sm {
  font-size: 0.875rem;
  line-height: 1.25rem;
}
#ai-platform-app .text-xl {
  font-size: 1.25rem;
  line-height: 1.75rem;
}
#ai-platform-app .text-xs {
  font-size: 0.75rem;
  line-height: 1rem;
}
#ai-platform-app .font-black {
  font-weight: 900;
}
#ai-platform-app .font-bold {
  font-weight: 700;
}
#ai-platform-app .font-medium {
  font-weight: 500;
}
#ai-platform-app .font-normal {
  font-weight: 400;
}
#ai-platform-app .font-semibold {
  font-weight: 600;
}
#ai-platform-app .uppercase {
  text-transform: uppercase;
}
#ai-platform-app .lowercase {
  text-transform: lowercase;
}
#ai-platform-app .capitalize {
  text-transform: capitalize;
}
#ai-platform-app .italic {
  font-style: italic;
}
#ai-platform-app .ordinal {
  --tw-ordinal: ordinal;
  font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);
}
#ai-platform-app .leading-6 {
  line-height: 1.5rem;
}
#ai-platform-app .leading-none {
  line-height: 1;
}
#ai-platform-app .leading-relaxed {
  line-height: 1.625;
}
#ai-platform-app .tracking-tight {
  letter-spacing: -0.025em;
}
#ai-platform-app .tracking-tighter {
  letter-spacing: -0.05em;
}
#ai-platform-app .tracking-wide {
  letter-spacing: 0.025em;
}
#ai-platform-app .tracking-wider {
  letter-spacing: 0.05em;
}
#ai-platform-app .tracking-widest {
  letter-spacing: 0.1em;
}
#ai-platform-app .text-amber-600 {
  --tw-text-opacity: 1;
  color: rgb(217 119 6 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-blue-100 {
  --tw-text-opacity: 1;
  color: rgb(219 234 254 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-blue-400 {
  --tw-text-opacity: 1;
  color: rgb(96 165 250 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-blue-500 {
  --tw-text-opacity: 1;
  color: rgb(59 130 246 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-blue-600 {
  --tw-text-opacity: 1;
  color: rgb(37 99 235 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-blue-700 {
  --tw-text-opacity: 1;
  color: rgb(29 78 216 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-blue-800 {
  --tw-text-opacity: 1;
  color: rgb(30 64 175 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-blue-900 {
  --tw-text-opacity: 1;
  color: rgb(30 58 138 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-emerald-700 {
  --tw-text-opacity: 1;
  color: rgb(4 120 87 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-gray-100 {
  --tw-text-opacity: 1;
  color: rgb(243 244 246 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-gray-200 {
  --tw-text-opacity: 1;
  color: rgb(229 231 235 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-gray-300 {
  --tw-text-opacity: 1;
  color: rgb(209 213 219 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-gray-400 {
  --tw-text-opacity: 1;
  color: rgb(156 163 175 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-gray-500 {
  --tw-text-opacity: 1;
  color: rgb(107 114 128 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-gray-600 {
  --tw-text-opacity: 1;
  color: rgb(75 85 99 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-gray-700 {
  --tw-text-opacity: 1;
  color: rgb(55 65 81 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-gray-800 {
  --tw-text-opacity: 1;
  color: rgb(31 41 55 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-gray-900 {
  --tw-text-opacity: 1;
  color: rgb(17 24 39 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-green-500 {
  --tw-text-opacity: 1;
  color: rgb(34 197 94 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-green-600 {
  --tw-text-opacity: 1;
  color: rgb(22 163 74 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-green-700 {
  --tw-text-opacity: 1;
  color: rgb(21 128 61 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-green-800 {
  --tw-text-opacity: 1;
  color: rgb(22 101 52 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-indigo-600 {
  --tw-text-opacity: 1;
  color: rgb(79 70 229 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-indigo-700 {
  --tw-text-opacity: 1;
  color: rgb(67 56 202 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-orange-500 {
  --tw-text-opacity: 1;
  color: rgb(249 115 22 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-orange-600 {
  --tw-text-opacity: 1;
  color: rgb(234 88 12 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-orange-700 {
  --tw-text-opacity: 1;
  color: rgb(194 65 12 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-purple-500 {
  --tw-text-opacity: 1;
  color: rgb(168 85 247 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-purple-600 {
  --tw-text-opacity: 1;
  color: rgb(147 51 234 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-purple-700 {
  --tw-text-opacity: 1;
  color: rgb(126 34 206 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-purple-800 {
  --tw-text-opacity: 1;
  color: rgb(107 33 168 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-red-400 {
  --tw-text-opacity: 1;
  color: rgb(248 113 113 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-red-500 {
  --tw-text-opacity: 1;
  color: rgb(239 68 68 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-red-600 {
  --tw-text-opacity: 1;
  color: rgb(220 38 38 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-red-700 {
  --tw-text-opacity: 1;
  color: rgb(185 28 28 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-red-800 {
  --tw-text-opacity: 1;
  color: rgb(153 27 27 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-slate-400 {
  --tw-text-opacity: 1;
  color: rgb(148 163 184 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-slate-500 {
  --tw-text-opacity: 1;
  color: rgb(100 116 139 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-slate-600 {
  --tw-text-opacity: 1;
  color: rgb(71 85 105 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-slate-700 {
  --tw-text-opacity: 1;
  color: rgb(51 65 85 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-slate-800 {
  --tw-text-opacity: 1;
  color: rgb(30 41 59 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-violet-600 {
  --tw-text-opacity: 1;
  color: rgb(124 58 237 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-white {
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-yellow-400 {
  --tw-text-opacity: 1;
  color: rgb(250 204 21 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-yellow-600 {
  --tw-text-opacity: 1;
  color: rgb(202 138 4 / var(--tw-text-opacity, 1));
}
#ai-platform-app .text-yellow-800 {
  --tw-text-opacity: 1;
  color: rgb(133 77 14 / var(--tw-text-opacity, 1));
}
#ai-platform-app .underline {
  text-decoration-line: underline;
}
#ai-platform-app .accent-blue-600 {
  accent-color: #2563eb;
}
#ai-platform-app .opacity-0 {
  opacity: 0;
}
#ai-platform-app .opacity-30 {
  opacity: 0.3;
}
#ai-platform-app .opacity-50 {
  opacity: 0.5;
}
#ai-platform-app .opacity-60 {
  opacity: 0.6;
}
#ai-platform-app .opacity-75 {
  opacity: 0.75;
}
#ai-platform-app .opacity-80 {
  opacity: 0.8;
}
#ai-platform-app .shadow {
  --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
#ai-platform-app .shadow-2xl {
  --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);
  --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
#ai-platform-app .shadow-inner {
  --tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);
  --tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
#ai-platform-app .shadow-lg {
  --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
#ai-platform-app .shadow-md {
  --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
#ai-platform-app .shadow-sm {
  --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
  --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
#ai-platform-app .shadow-xl {
  --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
#ai-platform-app .shadow-black {
  --tw-shadow-color: #000;
  --tw-shadow: var(--tw-shadow-colored);
}
#ai-platform-app .shadow-blue-500 {
  --tw-shadow-color: #3b82f6;
  --tw-shadow: var(--tw-shadow-colored);
}
#ai-platform-app .shadow-indigo-100 {
  --tw-shadow-color: #e0e7ff;
  --tw-shadow: var(--tw-shadow-colored);
}
#ai-platform-app .shadow-indigo-200 {
  --tw-shadow-color: #c7d2fe;
  --tw-shadow: var(--tw-shadow-colored);
}
#ai-platform-app .shadow-indigo-600 {
  --tw-shadow-color: #4f46e5;
  --tw-shadow: var(--tw-shadow-colored);
}
#ai-platform-app .shadow-slate-200 {
  --tw-shadow-color: #e2e8f0;
  --tw-shadow: var(--tw-shadow-colored);
}
#ai-platform-app .outline-none {
  outline: 2px solid transparent;
  outline-offset: 2px;
}
#ai-platform-app .outline {
  outline-style: solid;
}
#ai-platform-app .ring-2 {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
#ai-platform-app .ring-4 {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
#ai-platform-app .ring-blue-100 {
  --tw-ring-opacity: 1;
  --tw-ring-color: rgb(219 234 254 / var(--tw-ring-opacity, 1));
}
#ai-platform-app .ring-blue-500 {
  --tw-ring-opacity: 1;
  --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1));
}
#ai-platform-app .ring-white {
  --tw-ring-opacity: 1;
  --tw-ring-color: rgb(255 255 255 / var(--tw-ring-opacity, 1));
}
#ai-platform-app .blur {
  --tw-blur: blur(8px);
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
#ai-platform-app .blur-3xl {
  --tw-blur: blur(64px);
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
#ai-platform-app .\\!filter {
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) !important;
}
#ai-platform-app .filter {
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
#ai-platform-app .backdrop-blur-md {
  --tw-backdrop-blur: blur(12px);
  backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
}
#ai-platform-app .backdrop-blur-sm {
  --tw-backdrop-blur: blur(4px);
  backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
}
#ai-platform-app .backdrop-filter {
  backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
}
#ai-platform-app .\\!transition {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter !important;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important;
  transition-duration: 150ms !important;
}
#ai-platform-app .transition {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
#ai-platform-app .transition-all {
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
#ai-platform-app .transition-colors {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
#ai-platform-app .transition-shadow {
  transition-property: box-shadow;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
#ai-platform-app .transition-transform {
  transition-property: transform;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
#ai-platform-app .delay-300 {
  transition-delay: 300ms;
}
#ai-platform-app .delay-500 {
  transition-delay: 500ms;
}
#ai-platform-app .duration-1000 {
  transition-duration: 1000ms;
}
#ai-platform-app .duration-200 {
  transition-duration: 200ms;
}
#ai-platform-app .duration-300 {
  transition-duration: 300ms;
}
#ai-platform-app .duration-500 {
  transition-duration: 500ms;
}
#ai-platform-app .ease-in {
  transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
}
#ai-platform-app .ease-in-out {
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
#ai-platform-app .ease-out {
  transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}

/**
 * Custom styles for AI Pro Plugin
 */

#ai-platform-app .hover\\:border-blue-300:hover {
  --tw-border-opacity: 1;
  border-color: rgb(147 197 253 / var(--tw-border-opacity, 1));
}

#ai-platform-app .hover\\:border-blue-400:hover {
  --tw-border-opacity: 1;
  border-color: rgb(96 165 250 / var(--tw-border-opacity, 1));
}

#ai-platform-app .hover\\:border-blue-500:hover {
  --tw-border-opacity: 1;
  border-color: rgb(59 130 246 / var(--tw-border-opacity, 1));
}

#ai-platform-app .hover\\:bg-blue-50:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(239 246 255 / var(--tw-bg-opacity, 1));
}

#ai-platform-app .hover\\:bg-gray-50:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));
}

#ai-platform-app .hover\\:stroke-blue-500:hover {
  stroke: #3b82f6;
}

#ai-platform-app .hover\\:text-blue-500:hover {
  --tw-text-opacity: 1;
  color: rgb(59 130 246 / var(--tw-text-opacity, 1));
}

#ai-platform-app .hover\\:text-blue-600:hover {
  --tw-text-opacity: 1;
  color: rgb(37 99 235 / var(--tw-text-opacity, 1));
}

#ai-platform-app .hover\\:shadow-lg:hover {
  --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}

#ai-platform-app .hover\\:shadow-xl:hover {
  --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}

#ai-platform-app :is(.group:hover .group-hover\\:flex) {
  display: flex;
}

#ai-platform-app :is(.group:hover .group-hover\\:scale-110) {
  --tw-scale-x: 1.1;
  --tw-scale-y: 1.1;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

@media (min-width: 640px) {

  #ai-platform-app .sm\\:ml-auto {
    margin-left: auto;
  }

  #ai-platform-app .sm\\:w-auto {
    width: auto;
  }

  #ai-platform-app .sm\\:max-w-xs {
    max-width: 20rem;
  }

  #ai-platform-app .sm\\:flex-row {
    flex-direction: row;
  }

  #ai-platform-app .sm\\:items-center {
    align-items: center;
  }
}

@media (min-width: 768px) {

  #ai-platform-app .md\\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 1024px) {

  #ai-platform-app .lg\\:w-1\\/3 {
    width: 33.333333%;
  }

  #ai-platform-app .lg\\:w-2\\/3 {
    width: 66.666667%;
  }

  #ai-platform-app .lg\\:flex-row {
    flex-direction: row;
  }
}

@media (min-width: 1280px) {

  #ai-platform-app .xl\\:grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
/**
 * AI Pro Plugin - Admin Styles
 *
 * Custom styles for the admin interface
 *
 * @package    AI_Pro_Plugin
 */

/* Reset WordPress admin styles for our app */
.ai-pro-admin-wrapper {
    margin: 0 !important;
    padding: 0 !important;
}

.ai-pro-admin-wrapper * {
    box-sizing: border-box;
}

/* Loading animation */
.ai-pro-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    background: #f9fafb;
}

/* Hide Vue content until mounted */
[v-cloak] {
    display: none;
}

/* Smooth transitions */
.transition-all {
    transition: all 0.3s ease;
}

/* Card styles */
.ai-pro-card {
    background: white;
    border-radius: 8px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
    padding: 1.5rem;
}

/* Stats card hover effect */
.ai-pro-stat-card {
    transition: transform 0.2s, box-shadow 0.2s;
}

.ai-pro-stat-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}

/* Modal styles */
.ai-pro-modal-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.5);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 9999;
}

.ai-pro-modal {
    background: white;
    border-radius: 8px;
    max-width: 600px;
    width: 90%;
    max-height: 90vh;
    overflow-y: auto;
    box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
}

/* Notification animations */
@keyframes slideIn {
    from {
        transform: translateX(100%);
        opacity: 0;
    }

    to {
        transform: translateX(0);
        opacity: 1;
    }
}

.ai-pro-notification {
    animation: slideIn 0.3s ease-out;
}

/* Responsive adjustments */
@media (max-width: 768px) {
    aside {
        position: fixed;
        z-index: 40;
        height: 100vh;
    }
}

/* Custom badge */
.ai-pro-badge {
    display: inline-block;
    padding: 0.25rem 0.5rem;
    border-radius: 0.25rem;
    font-size: 0.75rem;
    font-weight: 600;
}

.ai-pro-badge-success {
    background: #dcfce7;
    color: #166534;
}

.ai-pro-badge-warning {
    background: #fef3c7;
    color: #92400e;
}

.ai-pro-badge-error {
    background: #fee2e2;
    color: #991b1b;
}

/* Progress bar */
.ai-pro-progress {
    width: 100%;
    height: 8px;
    background: #e5e7eb;
    border-radius: 4px;
    overflow: hidden;
}

.ai-pro-progress-bar {
    height: 100%;
    background: #3b82f6;
    transition: width 0.3s ease;
}

#wpcontent {
    padding-left: 0 !important;
}

#ai-pro-app input {
    border: none !important;
}
/*$vite$:1*/`;
  document.head.appendChild(__vite_style__);
  // @__NO_SIDE_EFFECTS__
  function makeMap(str) {
    const map2 = /* @__PURE__ */ Object.create(null);
    for (const key of str.split(",")) map2[key] = 1;
    return (val) => val in map2;
  }
  const EMPTY_OBJ = {};
  const EMPTY_ARR = [];
  const NOOP = () => {
  };
  const NO = () => false;
  const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter
  (key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);
  const isModelListener = (key) => key.startsWith("onUpdate:");
  const extend = Object.assign;
  const remove = (arr, el) => {
    const i = arr.indexOf(el);
    if (i > -1) {
      arr.splice(i, 1);
    }
  };
  const hasOwnProperty$g = Object.prototype.hasOwnProperty;
  const hasOwn = (val, key) => hasOwnProperty$g.call(val, key);
  const isArray$1 = Array.isArray;
  const isMap$1 = (val) => toTypeString(val) === "[object Map]";
  const isSet$1 = (val) => toTypeString(val) === "[object Set]";
  const isDate = (val) => toTypeString(val) === "[object Date]";
  const isRegExp = (val) => toTypeString(val) === "[object RegExp]";
  const isFunction$1 = (val) => typeof val === "function";
  const isString = (val) => typeof val === "string";
  const isSymbol$1 = (val) => typeof val === "symbol";
  const isObject$2 = (val) => val !== null && typeof val === "object";
  const isPromise = (val) => {
    return (isObject$2(val) || isFunction$1(val)) && isFunction$1(val.then) && isFunction$1(val.catch);
  };
  const objectToString$1 = Object.prototype.toString;
  const toTypeString = (value) => objectToString$1.call(value);
  const toRawType = (value) => {
    return toTypeString(value).slice(8, -1);
  };
  const isPlainObject$1 = (val) => toTypeString(val) === "[object Object]";
  const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key;
  const isReservedProp = /* @__PURE__ */ makeMap(
    // the leading comma is intentional so empty string "" is also included
    ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"
  );
  const cacheStringFunction = (fn2) => {
    const cache2 = /* @__PURE__ */ Object.create(null);
    return ((str) => {
      const hit = cache2[str];
      return hit || (cache2[str] = fn2(str));
    });
  };
  const camelizeRE = /-\w/g;
  const camelize = cacheStringFunction(
    (str) => {
      return str.replace(camelizeRE, (c2) => c2.slice(1).toUpperCase());
    }
  );
  const hyphenateRE = /\B([A-Z])/g;
  const hyphenate = cacheStringFunction(
    (str) => str.replace(hyphenateRE, "-$1").toLowerCase()
  );
  const capitalize$1 = cacheStringFunction((str) => {
    return str.charAt(0).toUpperCase() + str.slice(1);
  });
  const toHandlerKey = cacheStringFunction(
    (str) => {
      const s2 = str ? `on${capitalize$1(str)}` : ``;
      return s2;
    }
  );
  const hasChanged = (value, oldValue) => !Object.is(value, oldValue);
  const invokeArrayFns = (fns, ...arg) => {
    for (let i = 0; i < fns.length; i++) {
      fns[i](...arg);
    }
  };
  const def = (obj, key, value, writable = false) => {
    Object.defineProperty(obj, key, {
      configurable: true,
      enumerable: false,
      writable,
      value
    });
  };
  const looseToNumber$1 = (val) => {
    const n = parseFloat(val);
    return isNaN(n) ? val : n;
  };
  const toNumber$1 = (val) => {
    const n = isString(val) ? Number(val) : NaN;
    return isNaN(n) ? val : n;
  };
  let _globalThis;
  const getGlobalThis = () => {
    return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {});
  };
  function normalizeStyle(value) {
    if (isArray$1(value)) {
      const res = {};
      for (let i = 0; i < value.length; i++) {
        const item = value[i];
        const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);
        if (normalized) {
          for (const key in normalized) {
            res[key] = normalized[key];
          }
        }
      }
      return res;
    } else if (isString(value) || isObject$2(value)) {
      return value;
    }
  }
  const listDelimiterRE = /;(?![^(]*\))/g;
  const propertyDelimiterRE = /:([^]+)/;
  const styleCommentRE = /\/\*[^]*?\*\//g;
  function parseStringStyle(cssText) {
    const ret = {};
    cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => {
      if (item) {
        const tmp = item.split(propertyDelimiterRE);
        tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());
      }
    });
    return ret;
  }
  function normalizeClass(value) {
    let res = "";
    if (isString(value)) {
      res = value;
    } else if (isArray$1(value)) {
      for (let i = 0; i < value.length; i++) {
        const normalized = normalizeClass(value[i]);
        if (normalized) {
          res += normalized + " ";
        }
      }
    } else if (isObject$2(value)) {
      for (const name in value) {
        if (value[name]) {
          res += name + " ";
        }
      }
    }
    return res.trim();
  }
  function normalizeProps(props2) {
    if (!props2) return null;
    let { class: klass, style } = props2;
    if (klass && !isString(klass)) {
      props2.class = normalizeClass(klass);
    }
    if (style) {
      props2.style = normalizeStyle(style);
    }
    return props2;
  }
  const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
  const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);
  function includeBooleanAttr(value) {
    return !!value || value === "";
  }
  function looseCompareArrays(a2, b2) {
    if (a2.length !== b2.length) return false;
    let equal = true;
    for (let i = 0; equal && i < a2.length; i++) {
      equal = looseEqual(a2[i], b2[i]);
    }
    return equal;
  }
  function looseEqual(a2, b2) {
    if (a2 === b2) return true;
    let aValidType = isDate(a2);
    let bValidType = isDate(b2);
    if (aValidType || bValidType) {
      return aValidType && bValidType ? a2.getTime() === b2.getTime() : false;
    }
    aValidType = isSymbol$1(a2);
    bValidType = isSymbol$1(b2);
    if (aValidType || bValidType) {
      return a2 === b2;
    }
    aValidType = isArray$1(a2);
    bValidType = isArray$1(b2);
    if (aValidType || bValidType) {
      return aValidType && bValidType ? looseCompareArrays(a2, b2) : false;
    }
    aValidType = isObject$2(a2);
    bValidType = isObject$2(b2);
    if (aValidType || bValidType) {
      if (!aValidType || !bValidType) {
        return false;
      }
      const aKeysCount = Object.keys(a2).length;
      const bKeysCount = Object.keys(b2).length;
      if (aKeysCount !== bKeysCount) {
        return false;
      }
      for (const key in a2) {
        const aHasKey = a2.hasOwnProperty(key);
        const bHasKey = b2.hasOwnProperty(key);
        if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a2[key], b2[key])) {
          return false;
        }
      }
    }
    return String(a2) === String(b2);
  }
  function looseIndexOf(arr, val) {
    return arr.findIndex((item) => looseEqual(item, val));
  }
  const isRef$1 = (val) => {
    return !!(val && val["__v_isRef"] === true);
  };
  const toDisplayString = (val) => {
    return isString(val) ? val : val == null ? "" : isArray$1(val) || isObject$2(val) && (val.toString === objectToString$1 || !isFunction$1(val.toString)) ? isRef$1(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val);
  };
  const replacer = (_key, val) => {
    if (isRef$1(val)) {
      return replacer(_key, val.value);
    } else if (isMap$1(val)) {
      return {
        [`Map(${val.size})`]: [...val.entries()].reduce(
          (entries, [key, val2], i) => {
            entries[stringifySymbol(key, i) + " =>"] = val2;
            return entries;
          },
          {}
        )
      };
    } else if (isSet$1(val)) {
      return {
        [`Set(${val.size})`]: [...val.values()].map((v2) => stringifySymbol(v2))
      };
    } else if (isSymbol$1(val)) {
      return stringifySymbol(val);
    } else if (isObject$2(val) && !isArray$1(val) && !isPlainObject$1(val)) {
      return String(val);
    }
    return val;
  };
  const stringifySymbol = (v2, i = "") => {
    var _a;
    return (
      // Symbol.description in es2019+ so we need to cast here to pass
      // the lib: es2016 check
      isSymbol$1(v2) ? `Symbol(${(_a = v2.description) != null ? _a : i})` : v2
    );
  };
  let activeEffectScope;
  class EffectScope {
    constructor(detached = false) {
      this.detached = detached;
      this._active = true;
      this._on = 0;
      this.effects = [];
      this.cleanups = [];
      this._isPaused = false;
      this.parent = activeEffectScope;
      if (!detached && activeEffectScope) {
        this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(
          this
        ) - 1;
      }
    }
    get active() {
      return this._active;
    }
    pause() {
      if (this._active) {
        this._isPaused = true;
        let i, l2;
        if (this.scopes) {
          for (i = 0, l2 = this.scopes.length; i < l2; i++) {
            this.scopes[i].pause();
          }
        }
        for (i = 0, l2 = this.effects.length; i < l2; i++) {
          this.effects[i].pause();
        }
      }
    }
    /**
     * Resumes the effect scope, including all child scopes and effects.
     */
    resume() {
      if (this._active) {
        if (this._isPaused) {
          this._isPaused = false;
          let i, l2;
          if (this.scopes) {
            for (i = 0, l2 = this.scopes.length; i < l2; i++) {
              this.scopes[i].resume();
            }
          }
          for (i = 0, l2 = this.effects.length; i < l2; i++) {
            this.effects[i].resume();
          }
        }
      }
    }
    run(fn2) {
      if (this._active) {
        const currentEffectScope = activeEffectScope;
        try {
          activeEffectScope = this;
          return fn2();
        } finally {
          activeEffectScope = currentEffectScope;
        }
      }
    }
    /**
     * This should only be called on non-detached scopes
     * @internal
     */
    on() {
      if (++this._on === 1) {
        this.prevScope = activeEffectScope;
        activeEffectScope = this;
      }
    }
    /**
     * This should only be called on non-detached scopes
     * @internal
     */
    off() {
      if (this._on > 0 && --this._on === 0) {
        activeEffectScope = this.prevScope;
        this.prevScope = void 0;
      }
    }
    stop(fromParent) {
      if (this._active) {
        this._active = false;
        let i, l2;
        for (i = 0, l2 = this.effects.length; i < l2; i++) {
          this.effects[i].stop();
        }
        this.effects.length = 0;
        for (i = 0, l2 = this.cleanups.length; i < l2; i++) {
          this.cleanups[i]();
        }
        this.cleanups.length = 0;
        if (this.scopes) {
          for (i = 0, l2 = this.scopes.length; i < l2; i++) {
            this.scopes[i].stop(true);
          }
          this.scopes.length = 0;
        }
        if (!this.detached && this.parent && !fromParent) {
          const last2 = this.parent.scopes.pop();
          if (last2 && last2 !== this) {
            this.parent.scopes[this.index] = last2;
            last2.index = this.index;
          }
        }
        this.parent = void 0;
      }
    }
  }
  function effectScope(detached) {
    return new EffectScope(detached);
  }
  function getCurrentScope() {
    return activeEffectScope;
  }
  function onScopeDispose(fn2, failSilently = false) {
    if (activeEffectScope) {
      activeEffectScope.cleanups.push(fn2);
    }
  }
  let activeSub;
  const pausedQueueEffects = /* @__PURE__ */ new WeakSet();
  class ReactiveEffect {
    constructor(fn2) {
      this.fn = fn2;
      this.deps = void 0;
      this.depsTail = void 0;
      this.flags = 1 | 4;
      this.next = void 0;
      this.cleanup = void 0;
      this.scheduler = void 0;
      if (activeEffectScope && activeEffectScope.active) {
        activeEffectScope.effects.push(this);
      }
    }
    pause() {
      this.flags |= 64;
    }
    resume() {
      if (this.flags & 64) {
        this.flags &= -65;
        if (pausedQueueEffects.has(this)) {
          pausedQueueEffects.delete(this);
          this.trigger();
        }
      }
    }
    /**
     * @internal
     */
    notify() {
      if (this.flags & 2 && !(this.flags & 32)) {
        return;
      }
      if (!(this.flags & 8)) {
        batch(this);
      }
    }
    run() {
      if (!(this.flags & 1)) {
        return this.fn();
      }
      this.flags |= 2;
      cleanupEffect(this);
      prepareDeps(this);
      const prevEffect = activeSub;
      const prevShouldTrack = shouldTrack;
      activeSub = this;
      shouldTrack = true;
      try {
        return this.fn();
      } finally {
        cleanupDeps(this);
        activeSub = prevEffect;
        shouldTrack = prevShouldTrack;
        this.flags &= -3;
      }
    }
    stop() {
      if (this.flags & 1) {
        for (let link = this.deps; link; link = link.nextDep) {
          removeSub(link);
        }
        this.deps = this.depsTail = void 0;
        cleanupEffect(this);
        this.onStop && this.onStop();
        this.flags &= -2;
      }
    }
    trigger() {
      if (this.flags & 64) {
        pausedQueueEffects.add(this);
      } else if (this.scheduler) {
        this.scheduler();
      } else {
        this.runIfDirty();
      }
    }
    /**
     * @internal
     */
    runIfDirty() {
      if (isDirty(this)) {
        this.run();
      }
    }
    get dirty() {
      return isDirty(this);
    }
  }
  let batchDepth = 0;
  let batchedSub;
  let batchedComputed;
  function batch(sub, isComputed = false) {
    sub.flags |= 8;
    if (isComputed) {
      sub.next = batchedComputed;
      batchedComputed = sub;
      return;
    }
    sub.next = batchedSub;
    batchedSub = sub;
  }
  function startBatch() {
    batchDepth++;
  }
  function endBatch() {
    if (--batchDepth > 0) {
      return;
    }
    if (batchedComputed) {
      let e = batchedComputed;
      batchedComputed = void 0;
      while (e) {
        const next = e.next;
        e.next = void 0;
        e.flags &= -9;
        e = next;
      }
    }
    let error;
    while (batchedSub) {
      let e = batchedSub;
      batchedSub = void 0;
      while (e) {
        const next = e.next;
        e.next = void 0;
        e.flags &= -9;
        if (e.flags & 1) {
          try {
            ;
            e.trigger();
          } catch (err) {
            if (!error) error = err;
          }
        }
        e = next;
      }
    }
    if (error) throw error;
  }
  function prepareDeps(sub) {
    for (let link = sub.deps; link; link = link.nextDep) {
      link.version = -1;
      link.prevActiveLink = link.dep.activeLink;
      link.dep.activeLink = link;
    }
  }
  function cleanupDeps(sub) {
    let head;
    let tail = sub.depsTail;
    let link = tail;
    while (link) {
      const prev = link.prevDep;
      if (link.version === -1) {
        if (link === tail) tail = prev;
        removeSub(link);
        removeDep(link);
      } else {
        head = link;
      }
      link.dep.activeLink = link.prevActiveLink;
      link.prevActiveLink = void 0;
      link = prev;
    }
    sub.deps = head;
    sub.depsTail = tail;
  }
  function isDirty(sub) {
    for (let link = sub.deps; link; link = link.nextDep) {
      if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) {
        return true;
      }
    }
    if (sub._dirty) {
      return true;
    }
    return false;
  }
  function refreshComputed(computed2) {
    if (computed2.flags & 4 && !(computed2.flags & 16)) {
      return;
    }
    computed2.flags &= -17;
    if (computed2.globalVersion === globalVersion) {
      return;
    }
    computed2.globalVersion = globalVersion;
    if (!computed2.isSSR && computed2.flags & 128 && (!computed2.deps && !computed2._dirty || !isDirty(computed2))) {
      return;
    }
    computed2.flags |= 2;
    const dep = computed2.dep;
    const prevSub = activeSub;
    const prevShouldTrack = shouldTrack;
    activeSub = computed2;
    shouldTrack = true;
    try {
      prepareDeps(computed2);
      const value = computed2.fn(computed2._value);
      if (dep.version === 0 || hasChanged(value, computed2._value)) {
        computed2.flags |= 128;
        computed2._value = value;
        dep.version++;
      }
    } catch (err) {
      dep.version++;
      throw err;
    } finally {
      activeSub = prevSub;
      shouldTrack = prevShouldTrack;
      cleanupDeps(computed2);
      computed2.flags &= -3;
    }
  }
  function removeSub(link, soft = false) {
    const { dep, prevSub, nextSub } = link;
    if (prevSub) {
      prevSub.nextSub = nextSub;
      link.prevSub = void 0;
    }
    if (nextSub) {
      nextSub.prevSub = prevSub;
      link.nextSub = void 0;
    }
    if (dep.subs === link) {
      dep.subs = prevSub;
      if (!prevSub && dep.computed) {
        dep.computed.flags &= -5;
        for (let l2 = dep.computed.deps; l2; l2 = l2.nextDep) {
          removeSub(l2, true);
        }
      }
    }
    if (!soft && !--dep.sc && dep.map) {
      dep.map.delete(dep.key);
    }
  }
  function removeDep(link) {
    const { prevDep, nextDep } = link;
    if (prevDep) {
      prevDep.nextDep = nextDep;
      link.prevDep = void 0;
    }
    if (nextDep) {
      nextDep.prevDep = prevDep;
      link.nextDep = void 0;
    }
  }
  let shouldTrack = true;
  const trackStack = [];
  function pauseTracking() {
    trackStack.push(shouldTrack);
    shouldTrack = false;
  }
  function resetTracking() {
    const last2 = trackStack.pop();
    shouldTrack = last2 === void 0 ? true : last2;
  }
  function cleanupEffect(e) {
    const { cleanup } = e;
    e.cleanup = void 0;
    if (cleanup) {
      const prevSub = activeSub;
      activeSub = void 0;
      try {
        cleanup();
      } finally {
        activeSub = prevSub;
      }
    }
  }
  let globalVersion = 0;
  class Link {
    constructor(sub, dep) {
      this.sub = sub;
      this.dep = dep;
      this.version = dep.version;
      this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0;
    }
  }
  class Dep {
    // TODO isolatedDeclarations "__v_skip"
    constructor(computed2) {
      this.computed = computed2;
      this.version = 0;
      this.activeLink = void 0;
      this.subs = void 0;
      this.map = void 0;
      this.key = void 0;
      this.sc = 0;
      this.__v_skip = true;
    }
    track(debugInfo) {
      if (!activeSub || !shouldTrack || activeSub === this.computed) {
        return;
      }
      let link = this.activeLink;
      if (link === void 0 || link.sub !== activeSub) {
        link = this.activeLink = new Link(activeSub, this);
        if (!activeSub.deps) {
          activeSub.deps = activeSub.depsTail = link;
        } else {
          link.prevDep = activeSub.depsTail;
          activeSub.depsTail.nextDep = link;
          activeSub.depsTail = link;
        }
        addSub(link);
      } else if (link.version === -1) {
        link.version = this.version;
        if (link.nextDep) {
          const next = link.nextDep;
          next.prevDep = link.prevDep;
          if (link.prevDep) {
            link.prevDep.nextDep = next;
          }
          link.prevDep = activeSub.depsTail;
          link.nextDep = void 0;
          activeSub.depsTail.nextDep = link;
          activeSub.depsTail = link;
          if (activeSub.deps === link) {
            activeSub.deps = next;
          }
        }
      }
      return link;
    }
    trigger(debugInfo) {
      this.version++;
      globalVersion++;
      this.notify(debugInfo);
    }
    notify(debugInfo) {
      startBatch();
      try {
        if (false) ;
        for (let link = this.subs; link; link = link.prevSub) {
          if (link.sub.notify()) {
            ;
            link.sub.dep.notify();
          }
        }
      } finally {
        endBatch();
      }
    }
  }
  function addSub(link) {
    link.dep.sc++;
    if (link.sub.flags & 4) {
      const computed2 = link.dep.computed;
      if (computed2 && !link.dep.subs) {
        computed2.flags |= 4 | 16;
        for (let l2 = computed2.deps; l2; l2 = l2.nextDep) {
          addSub(l2);
        }
      }
      const currentTail = link.dep.subs;
      if (currentTail !== link) {
        link.prevSub = currentTail;
        if (currentTail) currentTail.nextSub = link;
      }
      link.dep.subs = link;
    }
  }
  const targetMap = /* @__PURE__ */ new WeakMap();
  const ITERATE_KEY = /* @__PURE__ */ Symbol(
    ""
  );
  const MAP_KEY_ITERATE_KEY = /* @__PURE__ */ Symbol(
    ""
  );
  const ARRAY_ITERATE_KEY = /* @__PURE__ */ Symbol(
    ""
  );
  function track(target, type, key) {
    if (shouldTrack && activeSub) {
      let depsMap = targetMap.get(target);
      if (!depsMap) {
        targetMap.set(target, depsMap = /* @__PURE__ */ new Map());
      }
      let dep = depsMap.get(key);
      if (!dep) {
        depsMap.set(key, dep = new Dep());
        dep.map = depsMap;
        dep.key = key;
      }
      {
        dep.track();
      }
    }
  }
  function trigger(target, type, key, newValue, oldValue, oldTarget) {
    const depsMap = targetMap.get(target);
    if (!depsMap) {
      globalVersion++;
      return;
    }
    const run = (dep) => {
      if (dep) {
        {
          dep.trigger();
        }
      }
    };
    startBatch();
    if (type === "clear") {
      depsMap.forEach(run);
    } else {
      const targetIsArray = isArray$1(target);
      const isArrayIndex = targetIsArray && isIntegerKey(key);
      if (targetIsArray && key === "length") {
        const newLength = Number(newValue);
        depsMap.forEach((dep, key2) => {
          if (key2 === "length" || key2 === ARRAY_ITERATE_KEY || !isSymbol$1(key2) && key2 >= newLength) {
            run(dep);
          }
        });
      } else {
        if (key !== void 0 || depsMap.has(void 0)) {
          run(depsMap.get(key));
        }
        if (isArrayIndex) {
          run(depsMap.get(ARRAY_ITERATE_KEY));
        }
        switch (type) {
          case "add":
            if (!targetIsArray) {
              run(depsMap.get(ITERATE_KEY));
              if (isMap$1(target)) {
                run(depsMap.get(MAP_KEY_ITERATE_KEY));
              }
            } else if (isArrayIndex) {
              run(depsMap.get("length"));
            }
            break;
          case "delete":
            if (!targetIsArray) {
              run(depsMap.get(ITERATE_KEY));
              if (isMap$1(target)) {
                run(depsMap.get(MAP_KEY_ITERATE_KEY));
              }
            }
            break;
          case "set":
            if (isMap$1(target)) {
              run(depsMap.get(ITERATE_KEY));
            }
            break;
        }
      }
    }
    endBatch();
  }
  function getDepFromReactive(object, key) {
    const depMap = targetMap.get(object);
    return depMap && depMap.get(key);
  }
  function reactiveReadArray(array) {
    const raw = toRaw(array);
    if (raw === array) return raw;
    track(raw, "iterate", ARRAY_ITERATE_KEY);
    return isShallow(array) ? raw : raw.map(toReactive$1);
  }
  function shallowReadArray(arr) {
    track(arr = toRaw(arr), "iterate", ARRAY_ITERATE_KEY);
    return arr;
  }
  function toWrapped(target, item) {
    if (isReadonly(target)) {
      return isReactive(target) ? toReadonly(toReactive$1(item)) : toReadonly(item);
    }
    return toReactive$1(item);
  }
  const arrayInstrumentations = {
    __proto__: null,
    [Symbol.iterator]() {
      return iterator(this, Symbol.iterator, (item) => toWrapped(this, item));
    },
    concat(...args) {
      return reactiveReadArray(this).concat(
        ...args.map((x2) => isArray$1(x2) ? reactiveReadArray(x2) : x2)
      );
    },
    entries() {
      return iterator(this, "entries", (value) => {
        value[1] = toWrapped(this, value[1]);
        return value;
      });
    },
    every(fn2, thisArg) {
      return apply$1(this, "every", fn2, thisArg, void 0, arguments);
    },
    filter(fn2, thisArg) {
      return apply$1(
        this,
        "filter",
        fn2,
        thisArg,
        (v2) => v2.map((item) => toWrapped(this, item)),
        arguments
      );
    },
    find(fn2, thisArg) {
      return apply$1(
        this,
        "find",
        fn2,
        thisArg,
        (item) => toWrapped(this, item),
        arguments
      );
    },
    findIndex(fn2, thisArg) {
      return apply$1(this, "findIndex", fn2, thisArg, void 0, arguments);
    },
    findLast(fn2, thisArg) {
      return apply$1(
        this,
        "findLast",
        fn2,
        thisArg,
        (item) => toWrapped(this, item),
        arguments
      );
    },
    findLastIndex(fn2, thisArg) {
      return apply$1(this, "findLastIndex", fn2, thisArg, void 0, arguments);
    },
    // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement
    forEach(fn2, thisArg) {
      return apply$1(this, "forEach", fn2, thisArg, void 0, arguments);
    },
    includes(...args) {
      return searchProxy(this, "includes", args);
    },
    indexOf(...args) {
      return searchProxy(this, "indexOf", args);
    },
    join(separator) {
      return reactiveReadArray(this).join(separator);
    },
    // keys() iterator only reads `length`, no optimization required
    lastIndexOf(...args) {
      return searchProxy(this, "lastIndexOf", args);
    },
    map(fn2, thisArg) {
      return apply$1(this, "map", fn2, thisArg, void 0, arguments);
    },
    pop() {
      return noTracking(this, "pop");
    },
    push(...args) {
      return noTracking(this, "push", args);
    },
    reduce(fn2, ...args) {
      return reduce(this, "reduce", fn2, args);
    },
    reduceRight(fn2, ...args) {
      return reduce(this, "reduceRight", fn2, args);
    },
    shift() {
      return noTracking(this, "shift");
    },
    // slice could use ARRAY_ITERATE but also seems to beg for range tracking
    some(fn2, thisArg) {
      return apply$1(this, "some", fn2, thisArg, void 0, arguments);
    },
    splice(...args) {
      return noTracking(this, "splice", args);
    },
    toReversed() {
      return reactiveReadArray(this).toReversed();
    },
    toSorted(comparer) {
      return reactiveReadArray(this).toSorted(comparer);
    },
    toSpliced(...args) {
      return reactiveReadArray(this).toSpliced(...args);
    },
    unshift(...args) {
      return noTracking(this, "unshift", args);
    },
    values() {
      return iterator(this, "values", (item) => toWrapped(this, item));
    }
  };
  function iterator(self2, method, wrapValue) {
    const arr = shallowReadArray(self2);
    const iter = arr[method]();
    if (arr !== self2 && !isShallow(self2)) {
      iter._next = iter.next;
      iter.next = () => {
        const result = iter._next();
        if (!result.done) {
          result.value = wrapValue(result.value);
        }
        return result;
      };
    }
    return iter;
  }
  const arrayProto$1 = Array.prototype;
  function apply$1(self2, method, fn2, thisArg, wrappedRetFn, args) {
    const arr = shallowReadArray(self2);
    const needsWrap = arr !== self2 && !isShallow(self2);
    const methodFn = arr[method];
    if (methodFn !== arrayProto$1[method]) {
      const result2 = methodFn.apply(self2, args);
      return needsWrap ? toReactive$1(result2) : result2;
    }
    let wrappedFn = fn2;
    if (arr !== self2) {
      if (needsWrap) {
        wrappedFn = function(item, index) {
          return fn2.call(this, toWrapped(self2, item), index, self2);
        };
      } else if (fn2.length > 2) {
        wrappedFn = function(item, index) {
          return fn2.call(this, item, index, self2);
        };
      }
    }
    const result = methodFn.call(arr, wrappedFn, thisArg);
    return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result;
  }
  function reduce(self2, method, fn2, args) {
    const arr = shallowReadArray(self2);
    let wrappedFn = fn2;
    if (arr !== self2) {
      if (!isShallow(self2)) {
        wrappedFn = function(acc, item, index) {
          return fn2.call(this, acc, toWrapped(self2, item), index, self2);
        };
      } else if (fn2.length > 3) {
        wrappedFn = function(acc, item, index) {
          return fn2.call(this, acc, item, index, self2);
        };
      }
    }
    return arr[method](wrappedFn, ...args);
  }
  function searchProxy(self2, method, args) {
    const arr = toRaw(self2);
    track(arr, "iterate", ARRAY_ITERATE_KEY);
    const res = arr[method](...args);
    if ((res === -1 || res === false) && isProxy(args[0])) {
      args[0] = toRaw(args[0]);
      return arr[method](...args);
    }
    return res;
  }
  function noTracking(self2, method, args = []) {
    pauseTracking();
    startBatch();
    const res = toRaw(self2)[method].apply(self2, args);
    endBatch();
    resetTracking();
    return res;
  }
  const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);
  const builtInSymbols = new Set(
    /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol$1)
  );
  function hasOwnProperty$f(key) {
    if (!isSymbol$1(key)) key = String(key);
    const obj = toRaw(this);
    track(obj, "has", key);
    return obj.hasOwnProperty(key);
  }
  class BaseReactiveHandler {
    constructor(_isReadonly = false, _isShallow = false) {
      this._isReadonly = _isReadonly;
      this._isShallow = _isShallow;
    }
    get(target, key, receiver) {
      if (key === "__v_skip") return target["__v_skip"];
      const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;
      if (key === "__v_isReactive") {
        return !isReadonly2;
      } else if (key === "__v_isReadonly") {
        return isReadonly2;
      } else if (key === "__v_isShallow") {
        return isShallow2;
      } else if (key === "__v_raw") {
        if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype
        // this means the receiver is a user proxy of the reactive proxy
        Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {
          return target;
        }
        return;
      }
      const targetIsArray = isArray$1(target);
      if (!isReadonly2) {
        let fn2;
        if (targetIsArray && (fn2 = arrayInstrumentations[key])) {
          return fn2;
        }
        if (key === "hasOwnProperty") {
          return hasOwnProperty$f;
        }
      }
      const res = Reflect.get(
        target,
        key,
        // if this is a proxy wrapping a ref, return methods using the raw ref
        // as receiver so that we don't have to call `toRaw` on the ref in all
        // its class methods
        isRef(target) ? target : receiver
      );
      if (isSymbol$1(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {
        return res;
      }
      if (!isReadonly2) {
        track(target, "get", key);
      }
      if (isShallow2) {
        return res;
      }
      if (isRef(res)) {
        const value = targetIsArray && isIntegerKey(key) ? res : res.value;
        return isReadonly2 && isObject$2(value) ? readonly(value) : value;
      }
      if (isObject$2(res)) {
        return isReadonly2 ? readonly(res) : reactive(res);
      }
      return res;
    }
  }
  class MutableReactiveHandler extends BaseReactiveHandler {
    constructor(isShallow2 = false) {
      super(false, isShallow2);
    }
    set(target, key, value, receiver) {
      let oldValue = target[key];
      const isArrayWithIntegerKey = isArray$1(target) && isIntegerKey(key);
      if (!this._isShallow) {
        const isOldValueReadonly = isReadonly(oldValue);
        if (!isShallow(value) && !isReadonly(value)) {
          oldValue = toRaw(oldValue);
          value = toRaw(value);
        }
        if (!isArrayWithIntegerKey && isRef(oldValue) && !isRef(value)) {
          if (isOldValueReadonly) {
            return true;
          } else {
            oldValue.value = value;
            return true;
          }
        }
      }
      const hadKey = isArrayWithIntegerKey ? Number(key) < target.length : hasOwn(target, key);
      const result = Reflect.set(
        target,
        key,
        value,
        isRef(target) ? target : receiver
      );
      if (target === toRaw(receiver)) {
        if (!hadKey) {
          trigger(target, "add", key, value);
        } else if (hasChanged(value, oldValue)) {
          trigger(target, "set", key, value);
        }
      }
      return result;
    }
    deleteProperty(target, key) {
      const hadKey = hasOwn(target, key);
      target[key];
      const result = Reflect.deleteProperty(target, key);
      if (result && hadKey) {
        trigger(target, "delete", key, void 0);
      }
      return result;
    }
    has(target, key) {
      const result = Reflect.has(target, key);
      if (!isSymbol$1(key) || !builtInSymbols.has(key)) {
        track(target, "has", key);
      }
      return result;
    }
    ownKeys(target) {
      track(
        target,
        "iterate",
        isArray$1(target) ? "length" : ITERATE_KEY
      );
      return Reflect.ownKeys(target);
    }
  }
  class ReadonlyReactiveHandler extends BaseReactiveHandler {
    constructor(isShallow2 = false) {
      super(true, isShallow2);
    }
    set(target, key) {
      return true;
    }
    deleteProperty(target, key) {
      return true;
    }
  }
  const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();
  const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();
  const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true);
  const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);
  const toShallow = (value) => value;
  const getProto = (v2) => Reflect.getPrototypeOf(v2);
  function createIterableMethod(method, isReadonly2, isShallow2) {
    return function(...args) {
      const target = this["__v_raw"];
      const rawTarget = toRaw(target);
      const targetIsMap = isMap$1(rawTarget);
      const isPair = method === "entries" || method === Symbol.iterator && targetIsMap;
      const isKeyOnly = method === "keys" && targetIsMap;
      const innerIterator = target[method](...args);
      const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive$1;
      !isReadonly2 && track(
        rawTarget,
        "iterate",
        isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY
      );
      return {
        // iterator protocol
        next() {
          const { value, done } = innerIterator.next();
          return done ? { value, done } : {
            value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),
            done
          };
        },
        // iterable protocol
        [Symbol.iterator]() {
          return this;
        }
      };
    };
  }
  function createReadonlyMethod(type) {
    return function(...args) {
      return type === "delete" ? false : type === "clear" ? void 0 : this;
    };
  }
  function createInstrumentations(readonly2, shallow) {
    const instrumentations = {
      get(key) {
        const target = this["__v_raw"];
        const rawTarget = toRaw(target);
        const rawKey = toRaw(key);
        if (!readonly2) {
          if (hasChanged(key, rawKey)) {
            track(rawTarget, "get", key);
          }
          track(rawTarget, "get", rawKey);
        }
        const { has: has2 } = getProto(rawTarget);
        const wrap = shallow ? toShallow : readonly2 ? toReadonly : toReactive$1;
        if (has2.call(rawTarget, key)) {
          return wrap(target.get(key));
        } else if (has2.call(rawTarget, rawKey)) {
          return wrap(target.get(rawKey));
        } else if (target !== rawTarget) {
          target.get(key);
        }
      },
      get size() {
        const target = this["__v_raw"];
        !readonly2 && track(toRaw(target), "iterate", ITERATE_KEY);
        return target.size;
      },
      has(key) {
        const target = this["__v_raw"];
        const rawTarget = toRaw(target);
        const rawKey = toRaw(key);
        if (!readonly2) {
          if (hasChanged(key, rawKey)) {
            track(rawTarget, "has", key);
          }
          track(rawTarget, "has", rawKey);
        }
        return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);
      },
      forEach(callback, thisArg) {
        const observed = this;
        const target = observed["__v_raw"];
        const rawTarget = toRaw(target);
        const wrap = shallow ? toShallow : readonly2 ? toReadonly : toReactive$1;
        !readonly2 && track(rawTarget, "iterate", ITERATE_KEY);
        return target.forEach((value, key) => {
          return callback.call(thisArg, wrap(value), wrap(key), observed);
        });
      }
    };
    extend(
      instrumentations,
      readonly2 ? {
        add: createReadonlyMethod("add"),
        set: createReadonlyMethod("set"),
        delete: createReadonlyMethod("delete"),
        clear: createReadonlyMethod("clear")
      } : {
        add(value) {
          if (!shallow && !isShallow(value) && !isReadonly(value)) {
            value = toRaw(value);
          }
          const target = toRaw(this);
          const proto = getProto(target);
          const hadKey = proto.has.call(target, value);
          if (!hadKey) {
            target.add(value);
            trigger(target, "add", value, value);
          }
          return this;
        },
        set(key, value) {
          if (!shallow && !isShallow(value) && !isReadonly(value)) {
            value = toRaw(value);
          }
          const target = toRaw(this);
          const { has: has2, get: get2 } = getProto(target);
          let hadKey = has2.call(target, key);
          if (!hadKey) {
            key = toRaw(key);
            hadKey = has2.call(target, key);
          }
          const oldValue = get2.call(target, key);
          target.set(key, value);
          if (!hadKey) {
            trigger(target, "add", key, value);
          } else if (hasChanged(value, oldValue)) {
            trigger(target, "set", key, value);
          }
          return this;
        },
        delete(key) {
          const target = toRaw(this);
          const { has: has2, get: get2 } = getProto(target);
          let hadKey = has2.call(target, key);
          if (!hadKey) {
            key = toRaw(key);
            hadKey = has2.call(target, key);
          }
          get2 ? get2.call(target, key) : void 0;
          const result = target.delete(key);
          if (hadKey) {
            trigger(target, "delete", key, void 0);
          }
          return result;
        },
        clear() {
          const target = toRaw(this);
          const hadItems = target.size !== 0;
          const result = target.clear();
          if (hadItems) {
            trigger(
              target,
              "clear",
              void 0,
              void 0
            );
          }
          return result;
        }
      }
    );
    const iteratorMethods = [
      "keys",
      "values",
      "entries",
      Symbol.iterator
    ];
    iteratorMethods.forEach((method) => {
      instrumentations[method] = createIterableMethod(method, readonly2, shallow);
    });
    return instrumentations;
  }
  function createInstrumentationGetter(isReadonly2, shallow) {
    const instrumentations = createInstrumentations(isReadonly2, shallow);
    return (target, key, receiver) => {
      if (key === "__v_isReactive") {
        return !isReadonly2;
      } else if (key === "__v_isReadonly") {
        return isReadonly2;
      } else if (key === "__v_raw") {
        return target;
      }
      return Reflect.get(
        hasOwn(instrumentations, key) && key in target ? instrumentations : target,
        key,
        receiver
      );
    };
  }
  const mutableCollectionHandlers = {
    get: /* @__PURE__ */ createInstrumentationGetter(false, false)
  };
  const shallowCollectionHandlers = {
    get: /* @__PURE__ */ createInstrumentationGetter(false, true)
  };
  const readonlyCollectionHandlers = {
    get: /* @__PURE__ */ createInstrumentationGetter(true, false)
  };
  const shallowReadonlyCollectionHandlers = {
    get: /* @__PURE__ */ createInstrumentationGetter(true, true)
  };
  const reactiveMap = /* @__PURE__ */ new WeakMap();
  const shallowReactiveMap = /* @__PURE__ */ new WeakMap();
  const readonlyMap = /* @__PURE__ */ new WeakMap();
  const shallowReadonlyMap = /* @__PURE__ */ new WeakMap();
  function targetTypeMap(rawType) {
    switch (rawType) {
      case "Object":
      case "Array":
        return 1;
      case "Map":
      case "Set":
      case "WeakMap":
      case "WeakSet":
        return 2;
      default:
        return 0;
    }
  }
  function getTargetType(value) {
    return value["__v_skip"] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value));
  }
  function reactive(target) {
    if (isReadonly(target)) {
      return target;
    }
    return createReactiveObject(
      target,
      false,
      mutableHandlers,
      mutableCollectionHandlers,
      reactiveMap
    );
  }
  function shallowReactive(target) {
    return createReactiveObject(
      target,
      false,
      shallowReactiveHandlers,
      shallowCollectionHandlers,
      shallowReactiveMap
    );
  }
  function readonly(target) {
    return createReactiveObject(
      target,
      true,
      readonlyHandlers,
      readonlyCollectionHandlers,
      readonlyMap
    );
  }
  function shallowReadonly(target) {
    return createReactiveObject(
      target,
      true,
      shallowReadonlyHandlers,
      shallowReadonlyCollectionHandlers,
      shallowReadonlyMap
    );
  }
  function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {
    if (!isObject$2(target)) {
      return target;
    }
    if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) {
      return target;
    }
    const targetType = getTargetType(target);
    if (targetType === 0) {
      return target;
    }
    const existingProxy = proxyMap.get(target);
    if (existingProxy) {
      return existingProxy;
    }
    const proxy = new Proxy(
      target,
      targetType === 2 ? collectionHandlers : baseHandlers
    );
    proxyMap.set(target, proxy);
    return proxy;
  }
  function isReactive(value) {
    if (isReadonly(value)) {
      return isReactive(value["__v_raw"]);
    }
    return !!(value && value["__v_isReactive"]);
  }
  function isReadonly(value) {
    return !!(value && value["__v_isReadonly"]);
  }
  function isShallow(value) {
    return !!(value && value["__v_isShallow"]);
  }
  function isProxy(value) {
    return value ? !!value["__v_raw"] : false;
  }
  function toRaw(observed) {
    const raw = observed && observed["__v_raw"];
    return raw ? toRaw(raw) : observed;
  }
  function markRaw(value) {
    if (!hasOwn(value, "__v_skip") && Object.isExtensible(value)) {
      def(value, "__v_skip", true);
    }
    return value;
  }
  const toReactive$1 = (value) => isObject$2(value) ? reactive(value) : value;
  const toReadonly = (value) => isObject$2(value) ? readonly(value) : value;
  function isRef(r) {
    return r ? r["__v_isRef"] === true : false;
  }
  function ref(value) {
    return createRef(value, false);
  }
  function shallowRef(value) {
    return createRef(value, true);
  }
  function createRef(rawValue, shallow) {
    if (isRef(rawValue)) {
      return rawValue;
    }
    return new RefImpl(rawValue, shallow);
  }
  class RefImpl {
    constructor(value, isShallow2) {
      this.dep = new Dep();
      this["__v_isRef"] = true;
      this["__v_isShallow"] = false;
      this._rawValue = isShallow2 ? value : toRaw(value);
      this._value = isShallow2 ? value : toReactive$1(value);
      this["__v_isShallow"] = isShallow2;
    }
    get value() {
      {
        this.dep.track();
      }
      return this._value;
    }
    set value(newValue) {
      const oldValue = this._rawValue;
      const useDirectValue = this["__v_isShallow"] || isShallow(newValue) || isReadonly(newValue);
      newValue = useDirectValue ? newValue : toRaw(newValue);
      if (hasChanged(newValue, oldValue)) {
        this._rawValue = newValue;
        this._value = useDirectValue ? newValue : toReactive$1(newValue);
        {
          this.dep.trigger();
        }
      }
    }
  }
  function triggerRef(ref2) {
    if (ref2.dep) {
      {
        ref2.dep.trigger();
      }
    }
  }
  function unref(ref2) {
    return isRef(ref2) ? ref2.value : ref2;
  }
  const shallowUnwrapHandlers = {
    get: (target, key, receiver) => key === "__v_raw" ? target : unref(Reflect.get(target, key, receiver)),
    set: (target, key, value, receiver) => {
      const oldValue = target[key];
      if (isRef(oldValue) && !isRef(value)) {
        oldValue.value = value;
        return true;
      } else {
        return Reflect.set(target, key, value, receiver);
      }
    }
  };
  function proxyRefs(objectWithRefs) {
    return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);
  }
  function toRefs(object) {
    const ret = isArray$1(object) ? new Array(object.length) : {};
    for (const key in object) {
      ret[key] = propertyToRef(object, key);
    }
    return ret;
  }
  class ObjectRefImpl {
    constructor(_object, _key, _defaultValue) {
      this._object = _object;
      this._key = _key;
      this._defaultValue = _defaultValue;
      this["__v_isRef"] = true;
      this._value = void 0;
      this._raw = toRaw(_object);
      let shallow = true;
      let obj = _object;
      if (!isArray$1(_object) || !isIntegerKey(String(_key))) {
        do {
          shallow = !isProxy(obj) || isShallow(obj);
        } while (shallow && (obj = obj["__v_raw"]));
      }
      this._shallow = shallow;
    }
    get value() {
      let val = this._object[this._key];
      if (this._shallow) {
        val = unref(val);
      }
      return this._value = val === void 0 ? this._defaultValue : val;
    }
    set value(newVal) {
      if (this._shallow && isRef(this._raw[this._key])) {
        const nestedRef = this._object[this._key];
        if (isRef(nestedRef)) {
          nestedRef.value = newVal;
          return;
        }
      }
      this._object[this._key] = newVal;
    }
    get dep() {
      return getDepFromReactive(this._raw, this._key);
    }
  }
  class GetterRefImpl {
    constructor(_getter) {
      this._getter = _getter;
      this["__v_isRef"] = true;
      this["__v_isReadonly"] = true;
      this._value = void 0;
    }
    get value() {
      return this._value = this._getter();
    }
  }
  function toRef(source, key, defaultValue) {
    if (isRef(source)) {
      return source;
    } else if (isFunction$1(source)) {
      return new GetterRefImpl(source);
    } else if (isObject$2(source) && arguments.length > 1) {
      return propertyToRef(source, key, defaultValue);
    } else {
      return ref(source);
    }
  }
  function propertyToRef(source, key, defaultValue) {
    return new ObjectRefImpl(source, key, defaultValue);
  }
  class ComputedRefImpl {
    constructor(fn2, setter, isSSR) {
      this.fn = fn2;
      this.setter = setter;
      this._value = void 0;
      this.dep = new Dep(this);
      this.__v_isRef = true;
      this.deps = void 0;
      this.depsTail = void 0;
      this.flags = 16;
      this.globalVersion = globalVersion - 1;
      this.next = void 0;
      this.effect = this;
      this["__v_isReadonly"] = !setter;
      this.isSSR = isSSR;
    }
    /**
     * @internal
     */
    notify() {
      this.flags |= 16;
      if (!(this.flags & 8) && // avoid infinite self recursion
      activeSub !== this) {
        batch(this, true);
        return true;
      }
    }
    get value() {
      const link = this.dep.track();
      refreshComputed(this);
      if (link) {
        link.version = this.dep.version;
      }
      return this._value;
    }
    set value(newValue) {
      if (this.setter) {
        this.setter(newValue);
      }
    }
  }
  function computed$1(getterOrOptions, debugOptions, isSSR = false) {
    let getter;
    let setter;
    if (isFunction$1(getterOrOptions)) {
      getter = getterOrOptions;
    } else {
      getter = getterOrOptions.get;
      setter = getterOrOptions.set;
    }
    const cRef = new ComputedRefImpl(getter, setter, isSSR);
    return cRef;
  }
  const INITIAL_WATCHER_VALUE = {};
  const cleanupMap = /* @__PURE__ */ new WeakMap();
  let activeWatcher = void 0;
  function onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) {
    if (owner) {
      let cleanups = cleanupMap.get(owner);
      if (!cleanups) cleanupMap.set(owner, cleanups = []);
      cleanups.push(cleanupFn);
    }
  }
  function watch$1(source, cb, options = EMPTY_OBJ) {
    const { immediate, deep, once, scheduler, augmentJob, call } = options;
    const reactiveGetter = (source2) => {
      if (deep) return source2;
      if (isShallow(source2) || deep === false || deep === 0)
        return traverse(source2, 1);
      return traverse(source2);
    };
    let effect2;
    let getter;
    let cleanup;
    let boundCleanup;
    let forceTrigger = false;
    let isMultiSource = false;
    if (isRef(source)) {
      getter = () => source.value;
      forceTrigger = isShallow(source);
    } else if (isReactive(source)) {
      getter = () => reactiveGetter(source);
      forceTrigger = true;
    } else if (isArray$1(source)) {
      isMultiSource = true;
      forceTrigger = source.some((s2) => isReactive(s2) || isShallow(s2));
      getter = () => source.map((s2) => {
        if (isRef(s2)) {
          return s2.value;
        } else if (isReactive(s2)) {
          return reactiveGetter(s2);
        } else if (isFunction$1(s2)) {
          return call ? call(s2, 2) : s2();
        } else ;
      });
    } else if (isFunction$1(source)) {
      if (cb) {
        getter = call ? () => call(source, 2) : source;
      } else {
        getter = () => {
          if (cleanup) {
            pauseTracking();
            try {
              cleanup();
            } finally {
              resetTracking();
            }
          }
          const currentEffect = activeWatcher;
          activeWatcher = effect2;
          try {
            return call ? call(source, 3, [boundCleanup]) : source(boundCleanup);
          } finally {
            activeWatcher = currentEffect;
          }
        };
      }
    } else {
      getter = NOOP;
    }
    if (cb && deep) {
      const baseGetter = getter;
      const depth = deep === true ? Infinity : deep;
      getter = () => traverse(baseGetter(), depth);
    }
    const scope = getCurrentScope();
    const watchHandle = () => {
      effect2.stop();
      if (scope && scope.active) {
        remove(scope.effects, effect2);
      }
    };
    if (once && cb) {
      const _cb = cb;
      cb = (...args) => {
        _cb(...args);
        watchHandle();
      };
    }
    let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;
    const job = (immediateFirstRun) => {
      if (!(effect2.flags & 1) || !effect2.dirty && !immediateFirstRun) {
        return;
      }
      if (cb) {
        const newValue = effect2.run();
        if (deep || forceTrigger || (isMultiSource ? newValue.some((v2, i) => hasChanged(v2, oldValue[i])) : hasChanged(newValue, oldValue))) {
          if (cleanup) {
            cleanup();
          }
          const currentWatcher = activeWatcher;
          activeWatcher = effect2;
          try {
            const args = [
              newValue,
              // pass undefined as the old value when it's changed for the first time
              oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,
              boundCleanup
            ];
            oldValue = newValue;
            call ? call(cb, 3, args) : (
              // @ts-expect-error
              cb(...args)
            );
          } finally {
            activeWatcher = currentWatcher;
          }
        }
      } else {
        effect2.run();
      }
    };
    if (augmentJob) {
      augmentJob(job);
    }
    effect2 = new ReactiveEffect(getter);
    effect2.scheduler = scheduler ? () => scheduler(job, false) : job;
    boundCleanup = (fn2) => onWatcherCleanup(fn2, false, effect2);
    cleanup = effect2.onStop = () => {
      const cleanups = cleanupMap.get(effect2);
      if (cleanups) {
        if (call) {
          call(cleanups, 4);
        } else {
          for (const cleanup2 of cleanups) cleanup2();
        }
        cleanupMap.delete(effect2);
      }
    };
    if (cb) {
      if (immediate) {
        job(true);
      } else {
        oldValue = effect2.run();
      }
    } else if (scheduler) {
      scheduler(job.bind(null, true), true);
    } else {
      effect2.run();
    }
    watchHandle.pause = effect2.pause.bind(effect2);
    watchHandle.resume = effect2.resume.bind(effect2);
    watchHandle.stop = watchHandle;
    return watchHandle;
  }
  function traverse(value, depth = Infinity, seen) {
    if (depth <= 0 || !isObject$2(value) || value["__v_skip"]) {
      return value;
    }
    seen = seen || /* @__PURE__ */ new Map();
    if ((seen.get(value) || 0) >= depth) {
      return value;
    }
    seen.set(value, depth);
    depth--;
    if (isRef(value)) {
      traverse(value.value, depth, seen);
    } else if (isArray$1(value)) {
      for (let i = 0; i < value.length; i++) {
        traverse(value[i], depth, seen);
      }
    } else if (isSet$1(value) || isMap$1(value)) {
      value.forEach((v2) => {
        traverse(v2, depth, seen);
      });
    } else if (isPlainObject$1(value)) {
      for (const key in value) {
        traverse(value[key], depth, seen);
      }
      for (const key of Object.getOwnPropertySymbols(value)) {
        if (Object.prototype.propertyIsEnumerable.call(value, key)) {
          traverse(value[key], depth, seen);
        }
      }
    }
    return value;
  }
  const stack = [];
  let isWarning = false;
  function warn$1(msg, ...args) {
    if (isWarning) return;
    isWarning = true;
    pauseTracking();
    const instance = stack.length ? stack[stack.length - 1].component : null;
    const appWarnHandler = instance && instance.appContext.config.warnHandler;
    const trace = getComponentTrace();
    if (appWarnHandler) {
      callWithErrorHandling(
        appWarnHandler,
        instance,
        11,
        [
          // eslint-disable-next-line no-restricted-syntax
          msg + args.map((a2) => {
            var _a, _b;
            return (_b = (_a = a2.toString) == null ? void 0 : _a.call(a2)) != null ? _b : JSON.stringify(a2);
          }).join(""),
          instance && instance.proxy,
          trace.map(
            ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`
          ).join("\n"),
          trace
        ]
      );
    } else {
      const warnArgs = [`[Vue warn]: ${msg}`, ...args];
      if (trace.length && // avoid spamming console during tests
      true) {
        warnArgs.push(`
`, ...formatTrace(trace));
      }
      console.warn(...warnArgs);
    }
    resetTracking();
    isWarning = false;
  }
  function getComponentTrace() {
    let currentVNode = stack[stack.length - 1];
    if (!currentVNode) {
      return [];
    }
    const normalizedStack = [];
    while (currentVNode) {
      const last2 = normalizedStack[0];
      if (last2 && last2.vnode === currentVNode) {
        last2.recurseCount++;
      } else {
        normalizedStack.push({
          vnode: currentVNode,
          recurseCount: 0
        });
      }
      const parentInstance = currentVNode.component && currentVNode.component.parent;
      currentVNode = parentInstance && parentInstance.vnode;
    }
    return normalizedStack;
  }
  function formatTrace(trace) {
    const logs = [];
    trace.forEach((entry, i) => {
      logs.push(...i === 0 ? [] : [`
`], ...formatTraceEntry(entry));
    });
    return logs;
  }
  function formatTraceEntry({ vnode, recurseCount }) {
    const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;
    const isRoot = vnode.component ? vnode.component.parent == null : false;
    const open = ` at <${formatComponentName(
      vnode.component,
      vnode.type,
      isRoot
    )}`;
    const close2 = `>` + postfix;
    return vnode.props ? [open, ...formatProps(vnode.props), close2] : [open + close2];
  }
  function formatProps(props2) {
    const res = [];
    const keys2 = Object.keys(props2);
    keys2.slice(0, 3).forEach((key) => {
      res.push(...formatProp(key, props2[key]));
    });
    if (keys2.length > 3) {
      res.push(` ...`);
    }
    return res;
  }
  function formatProp(key, value, raw) {
    if (isString(value)) {
      value = JSON.stringify(value);
      return raw ? value : [`${key}=${value}`];
    } else if (typeof value === "number" || typeof value === "boolean" || value == null) {
      return raw ? value : [`${key}=${value}`];
    } else if (isRef(value)) {
      value = formatProp(key, toRaw(value.value), true);
      return raw ? value : [`${key}=Ref<`, value, `>`];
    } else if (isFunction$1(value)) {
      return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];
    } else {
      value = toRaw(value);
      return raw ? value : [`${key}=`, value];
    }
  }
  function callWithErrorHandling(fn2, instance, type, args) {
    try {
      return args ? fn2(...args) : fn2();
    } catch (err) {
      handleError(err, instance, type);
    }
  }
  function callWithAsyncErrorHandling(fn2, instance, type, args) {
    if (isFunction$1(fn2)) {
      const res = callWithErrorHandling(fn2, instance, type, args);
      if (res && isPromise(res)) {
        res.catch((err) => {
          handleError(err, instance, type);
        });
      }
      return res;
    }
    if (isArray$1(fn2)) {
      const values = [];
      for (let i = 0; i < fn2.length; i++) {
        values.push(callWithAsyncErrorHandling(fn2[i], instance, type, args));
      }
      return values;
    }
  }
  function handleError(err, instance, type, throwInDev = true) {
    const contextVNode = instance ? instance.vnode : null;
    const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || EMPTY_OBJ;
    if (instance) {
      let cur = instance.parent;
      const exposedInstance = instance.proxy;
      const errorInfo = `https://vuejs.org/error-reference/#runtime-${type}`;
      while (cur) {
        const errorCapturedHooks = cur.ec;
        if (errorCapturedHooks) {
          for (let i = 0; i < errorCapturedHooks.length; i++) {
            if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {
              return;
            }
          }
        }
        cur = cur.parent;
      }
      if (errorHandler) {
        pauseTracking();
        callWithErrorHandling(errorHandler, null, 10, [
          err,
          exposedInstance,
          errorInfo
        ]);
        resetTracking();
        return;
      }
    }
    logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction);
  }
  function logError(err, type, contextVNode, throwInDev = true, throwInProd = false) {
    if (throwInProd) {
      throw err;
    } else {
      console.error(err);
    }
  }
  const queue = [];
  let flushIndex = -1;
  const pendingPostFlushCbs = [];
  let activePostFlushCbs = null;
  let postFlushIndex = 0;
  const resolvedPromise = /* @__PURE__ */ Promise.resolve();
  let currentFlushPromise = null;
  function nextTick(fn2) {
    const p2 = currentFlushPromise || resolvedPromise;
    return fn2 ? p2.then(this ? fn2.bind(this) : fn2) : p2;
  }
  function findInsertionIndex(id) {
    let start = flushIndex + 1;
    let end = queue.length;
    while (start < end) {
      const middle = start + end >>> 1;
      const middleJob = queue[middle];
      const middleJobId = getId(middleJob);
      if (middleJobId < id || middleJobId === id && middleJob.flags & 2) {
        start = middle + 1;
      } else {
        end = middle;
      }
    }
    return start;
  }
  function queueJob(job) {
    if (!(job.flags & 1)) {
      const jobId = getId(job);
      const lastJob = queue[queue.length - 1];
      if (!lastJob || // fast path when the job id is larger than the tail
      !(job.flags & 2) && jobId >= getId(lastJob)) {
        queue.push(job);
      } else {
        queue.splice(findInsertionIndex(jobId), 0, job);
      }
      job.flags |= 1;
      queueFlush();
    }
  }
  function queueFlush() {
    if (!currentFlushPromise) {
      currentFlushPromise = resolvedPromise.then(flushJobs);
    }
  }
  function queuePostFlushCb(cb) {
    if (!isArray$1(cb)) {
      if (activePostFlushCbs && cb.id === -1) {
        activePostFlushCbs.splice(postFlushIndex + 1, 0, cb);
      } else if (!(cb.flags & 1)) {
        pendingPostFlushCbs.push(cb);
        cb.flags |= 1;
      }
    } else {
      pendingPostFlushCbs.push(...cb);
    }
    queueFlush();
  }
  function flushPreFlushCbs(instance, seen, i = flushIndex + 1) {
    for (; i < queue.length; i++) {
      const cb = queue[i];
      if (cb && cb.flags & 2) {
        if (instance && cb.id !== instance.uid) {
          continue;
        }
        queue.splice(i, 1);
        i--;
        if (cb.flags & 4) {
          cb.flags &= -2;
        }
        cb();
        if (!(cb.flags & 4)) {
          cb.flags &= -2;
        }
      }
    }
  }
  function flushPostFlushCbs(seen) {
    if (pendingPostFlushCbs.length) {
      const deduped = [...new Set(pendingPostFlushCbs)].sort(
        (a2, b2) => getId(a2) - getId(b2)
      );
      pendingPostFlushCbs.length = 0;
      if (activePostFlushCbs) {
        activePostFlushCbs.push(...deduped);
        return;
      }
      activePostFlushCbs = deduped;
      for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {
        const cb = activePostFlushCbs[postFlushIndex];
        if (cb.flags & 4) {
          cb.flags &= -2;
        }
        if (!(cb.flags & 8)) cb();
        cb.flags &= -2;
      }
      activePostFlushCbs = null;
      postFlushIndex = 0;
    }
  }
  const getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id;
  function flushJobs(seen) {
    try {
      for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {
        const job = queue[flushIndex];
        if (job && !(job.flags & 8)) {
          if (false) ;
          if (job.flags & 4) {
            job.flags &= ~1;
          }
          callWithErrorHandling(
            job,
            job.i,
            job.i ? 15 : 14
          );
          if (!(job.flags & 4)) {
            job.flags &= ~1;
          }
        }
      }
    } finally {
      for (; flushIndex < queue.length; flushIndex++) {
        const job = queue[flushIndex];
        if (job) {
          job.flags &= -2;
        }
      }
      flushIndex = -1;
      queue.length = 0;
      flushPostFlushCbs();
      currentFlushPromise = null;
      if (queue.length || pendingPostFlushCbs.length) {
        flushJobs();
      }
    }
  }
  let currentRenderingInstance = null;
  let currentScopeId = null;
  function setCurrentRenderingInstance(instance) {
    const prev = currentRenderingInstance;
    currentRenderingInstance = instance;
    currentScopeId = instance && instance.type.__scopeId || null;
    return prev;
  }
  function withCtx(fn2, ctx = currentRenderingInstance, isNonScopedSlot) {
    if (!ctx) return fn2;
    if (fn2._n) {
      return fn2;
    }
    const renderFnWithContext = (...args) => {
      if (renderFnWithContext._d) {
        setBlockTracking(-1);
      }
      const prevInstance = setCurrentRenderingInstance(ctx);
      let res;
      try {
        res = fn2(...args);
      } finally {
        setCurrentRenderingInstance(prevInstance);
        if (renderFnWithContext._d) {
          setBlockTracking(1);
        }
      }
      return res;
    };
    renderFnWithContext._n = true;
    renderFnWithContext._c = true;
    renderFnWithContext._d = true;
    return renderFnWithContext;
  }
  function withDirectives(vnode, directives) {
    if (currentRenderingInstance === null) {
      return vnode;
    }
    const instance = getComponentPublicInstance(currentRenderingInstance);
    const bindings = vnode.dirs || (vnode.dirs = []);
    for (let i = 0; i < directives.length; i++) {
      let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];
      if (dir) {
        if (isFunction$1(dir)) {
          dir = {
            mounted: dir,
            updated: dir
          };
        }
        if (dir.deep) {
          traverse(value);
        }
        bindings.push({
          dir,
          instance,
          value,
          oldValue: void 0,
          arg,
          modifiers
        });
      }
    }
    return vnode;
  }
  function invokeDirectiveHook(vnode, prevVNode, instance, name) {
    const bindings = vnode.dirs;
    const oldBindings = prevVNode && prevVNode.dirs;
    for (let i = 0; i < bindings.length; i++) {
      const binding = bindings[i];
      if (oldBindings) {
        binding.oldValue = oldBindings[i].value;
      }
      let hook = binding.dir[name];
      if (hook) {
        pauseTracking();
        callWithAsyncErrorHandling(hook, instance, 8, [
          vnode.el,
          binding,
          vnode,
          prevVNode
        ]);
        resetTracking();
      }
    }
  }
  function provide(key, value) {
    if (currentInstance) {
      let provides = currentInstance.provides;
      const parentProvides = currentInstance.parent && currentInstance.parent.provides;
      if (parentProvides === provides) {
        provides = currentInstance.provides = Object.create(parentProvides);
      }
      provides[key] = value;
    }
  }
  function inject(key, defaultValue, treatDefaultAsFactory = false) {
    const instance = getCurrentInstance();
    if (instance || currentApp) {
      let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;
      if (provides && key in provides) {
        return provides[key];
      } else if (arguments.length > 1) {
        return treatDefaultAsFactory && isFunction$1(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;
      } else ;
    }
  }
  const ssrContextKey = /* @__PURE__ */ Symbol.for("v-scx");
  const useSSRContext = () => {
    {
      const ctx = inject(ssrContextKey);
      return ctx;
    }
  };
  function watchEffect(effect2, options) {
    return doWatch(effect2, null, options);
  }
  function watch(source, cb, options) {
    return doWatch(source, cb, options);
  }
  function doWatch(source, cb, options = EMPTY_OBJ) {
    const { immediate, deep, flush, once } = options;
    const baseWatchOptions = extend({}, options);
    const runsImmediately = cb && immediate || !cb && flush !== "post";
    let ssrCleanup;
    if (isInSSRComponentSetup) {
      if (flush === "sync") {
        const ctx = useSSRContext();
        ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);
      } else if (!runsImmediately) {
        const watchStopHandle = () => {
        };
        watchStopHandle.stop = NOOP;
        watchStopHandle.resume = NOOP;
        watchStopHandle.pause = NOOP;
        return watchStopHandle;
      }
    }
    const instance = currentInstance;
    baseWatchOptions.call = (fn2, type, args) => callWithAsyncErrorHandling(fn2, instance, type, args);
    let isPre = false;
    if (flush === "post") {
      baseWatchOptions.scheduler = (job) => {
        queuePostRenderEffect(job, instance && instance.suspense);
      };
    } else if (flush !== "sync") {
      isPre = true;
      baseWatchOptions.scheduler = (job, isFirstRun) => {
        if (isFirstRun) {
          job();
        } else {
          queueJob(job);
        }
      };
    }
    baseWatchOptions.augmentJob = (job) => {
      if (cb) {
        job.flags |= 4;
      }
      if (isPre) {
        job.flags |= 2;
        if (instance) {
          job.id = instance.uid;
          job.i = instance;
        }
      }
    };
    const watchHandle = watch$1(source, cb, baseWatchOptions);
    if (isInSSRComponentSetup) {
      if (ssrCleanup) {
        ssrCleanup.push(watchHandle);
      } else if (runsImmediately) {
        watchHandle();
      }
    }
    return watchHandle;
  }
  function instanceWatch(source, value, options) {
    const publicThis = this.proxy;
    const getter = isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);
    let cb;
    if (isFunction$1(value)) {
      cb = value;
    } else {
      cb = value.handler;
      options = value;
    }
    const reset = setCurrentInstance(this);
    const res = doWatch(getter, cb.bind(publicThis), options);
    reset();
    return res;
  }
  function createPathGetter(ctx, path) {
    const segments = path.split(".");
    return () => {
      let cur = ctx;
      for (let i = 0; i < segments.length && cur; i++) {
        cur = cur[segments[i]];
      }
      return cur;
    };
  }
  const TeleportEndKey = /* @__PURE__ */ Symbol("_vte");
  const isTeleport = (type) => type.__isTeleport;
  const isTeleportDisabled = (props2) => props2 && (props2.disabled || props2.disabled === "");
  const isTeleportDeferred = (props2) => props2 && (props2.defer || props2.defer === "");
  const isTargetSVG = (target) => typeof SVGElement !== "undefined" && target instanceof SVGElement;
  const isTargetMathML = (target) => typeof MathMLElement === "function" && target instanceof MathMLElement;
  const resolveTarget = (props2, select) => {
    const targetSelector = props2 && props2.to;
    if (isString(targetSelector)) {
      if (!select) {
        return null;
      } else {
        const target = select(targetSelector);
        return target;
      }
    } else {
      return targetSelector;
    }
  };
  const TeleportImpl = {
    name: "Teleport",
    __isTeleport: true,
    process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) {
      const {
        mc: mountChildren,
        pc: patchChildren,
        pbc: patchBlockChildren,
        o: { insert, querySelector, createText, createComment }
      } = internals;
      const disabled = isTeleportDisabled(n2.props);
      let { shapeFlag, children, dynamicChildren } = n2;
      if (n1 == null) {
        const placeholder = n2.el = createText("");
        const mainAnchor = n2.anchor = createText("");
        insert(placeholder, container, anchor);
        insert(mainAnchor, container, anchor);
        const mount = (container2, anchor2) => {
          if (shapeFlag & 16) {
            mountChildren(
              children,
              container2,
              anchor2,
              parentComponent,
              parentSuspense,
              namespace,
              slotScopeIds,
              optimized
            );
          }
        };
        const mountToTarget = () => {
          const target = n2.target = resolveTarget(n2.props, querySelector);
          const targetAnchor = prepareAnchor(target, n2, createText, insert);
          if (target) {
            if (namespace !== "svg" && isTargetSVG(target)) {
              namespace = "svg";
            } else if (namespace !== "mathml" && isTargetMathML(target)) {
              namespace = "mathml";
            }
            if (parentComponent && parentComponent.isCE) {
              (parentComponent.ce._teleportTargets || (parentComponent.ce._teleportTargets = /* @__PURE__ */ new Set())).add(target);
            }
            if (!disabled) {
              mount(target, targetAnchor);
              updateCssVars(n2, false);
            }
          }
        };
        if (disabled) {
          mount(container, mainAnchor);
          updateCssVars(n2, true);
        }
        if (isTeleportDeferred(n2.props)) {
          n2.el.__isMounted = false;
          queuePostRenderEffect(() => {
            mountToTarget();
            delete n2.el.__isMounted;
          }, parentSuspense);
        } else {
          mountToTarget();
        }
      } else {
        if (isTeleportDeferred(n2.props) && n1.el.__isMounted === false) {
          queuePostRenderEffect(() => {
            TeleportImpl.process(
              n1,
              n2,
              container,
              anchor,
              parentComponent,
              parentSuspense,
              namespace,
              slotScopeIds,
              optimized,
              internals
            );
          }, parentSuspense);
          return;
        }
        n2.el = n1.el;
        n2.targetStart = n1.targetStart;
        const mainAnchor = n2.anchor = n1.anchor;
        const target = n2.target = n1.target;
        const targetAnchor = n2.targetAnchor = n1.targetAnchor;
        const wasDisabled = isTeleportDisabled(n1.props);
        const currentContainer = wasDisabled ? container : target;
        const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;
        if (namespace === "svg" || isTargetSVG(target)) {
          namespace = "svg";
        } else if (namespace === "mathml" || isTargetMathML(target)) {
          namespace = "mathml";
        }
        if (dynamicChildren) {
          patchBlockChildren(
            n1.dynamicChildren,
            dynamicChildren,
            currentContainer,
            parentComponent,
            parentSuspense,
            namespace,
            slotScopeIds
          );
          traverseStaticChildren(n1, n2, true);
        } else if (!optimized) {
          patchChildren(
            n1,
            n2,
            currentContainer,
            currentAnchor,
            parentComponent,
            parentSuspense,
            namespace,
            slotScopeIds,
            false
          );
        }
        if (disabled) {
          if (!wasDisabled) {
            moveTeleport(
              n2,
              container,
              mainAnchor,
              internals,
              1
            );
          } else {
            if (n2.props && n1.props && n2.props.to !== n1.props.to) {
              n2.props.to = n1.props.to;
            }
          }
        } else {
          if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {
            const nextTarget = n2.target = resolveTarget(
              n2.props,
              querySelector
            );
            if (nextTarget) {
              moveTeleport(
                n2,
                nextTarget,
                null,
                internals,
                0
              );
            }
          } else if (wasDisabled) {
            moveTeleport(
              n2,
              target,
              targetAnchor,
              internals,
              1
            );
          }
        }
        updateCssVars(n2, disabled);
      }
    },
    remove(vnode, parentComponent, parentSuspense, { um: unmount, o: { remove: hostRemove } }, doRemove) {
      const {
        shapeFlag,
        children,
        anchor,
        targetStart,
        targetAnchor,
        target,
        props: props2
      } = vnode;
      if (target) {
        hostRemove(targetStart);
        hostRemove(targetAnchor);
      }
      doRemove && hostRemove(anchor);
      if (shapeFlag & 16) {
        const shouldRemove = doRemove || !isTeleportDisabled(props2);
        for (let i = 0; i < children.length; i++) {
          const child = children[i];
          unmount(
            child,
            parentComponent,
            parentSuspense,
            shouldRemove,
            !!child.dynamicChildren
          );
        }
      }
    },
    move: moveTeleport,
    hydrate: hydrateTeleport
  };
  function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) {
    if (moveType === 0) {
      insert(vnode.targetAnchor, container, parentAnchor);
    }
    const { el, anchor, shapeFlag, children, props: props2 } = vnode;
    const isReorder = moveType === 2;
    if (isReorder) {
      insert(el, container, parentAnchor);
    }
    if (!isReorder || isTeleportDisabled(props2)) {
      if (shapeFlag & 16) {
        for (let i = 0; i < children.length; i++) {
          move(
            children[i],
            container,
            parentAnchor,
            2
          );
        }
      }
    }
    if (isReorder) {
      insert(anchor, container, parentAnchor);
    }
  }
  function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {
    o: { nextSibling, parentNode, querySelector, insert, createText }
  }, hydrateChildren) {
    function hydrateDisabledTeleport(node2, vnode2, targetStart, targetAnchor) {
      vnode2.anchor = hydrateChildren(
        nextSibling(node2),
        vnode2,
        parentNode(node2),
        parentComponent,
        parentSuspense,
        slotScopeIds,
        optimized
      );
      vnode2.targetStart = targetStart;
      vnode2.targetAnchor = targetAnchor;
    }
    const target = vnode.target = resolveTarget(
      vnode.props,
      querySelector
    );
    const disabled = isTeleportDisabled(vnode.props);
    if (target) {
      const targetNode = target._lpa || target.firstChild;
      if (vnode.shapeFlag & 16) {
        if (disabled) {
          hydrateDisabledTeleport(
            node,
            vnode,
            targetNode,
            targetNode && nextSibling(targetNode)
          );
        } else {
          vnode.anchor = nextSibling(node);
          let targetAnchor = targetNode;
          while (targetAnchor) {
            if (targetAnchor && targetAnchor.nodeType === 8) {
              if (targetAnchor.data === "teleport start anchor") {
                vnode.targetStart = targetAnchor;
              } else if (targetAnchor.data === "teleport anchor") {
                vnode.targetAnchor = targetAnchor;
                target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
                break;
              }
            }
            targetAnchor = nextSibling(targetAnchor);
          }
          if (!vnode.targetAnchor) {
            prepareAnchor(target, vnode, createText, insert);
          }
          hydrateChildren(
            targetNode && nextSibling(targetNode),
            vnode,
            target,
            parentComponent,
            parentSuspense,
            slotScopeIds,
            optimized
          );
        }
      }
      updateCssVars(vnode, disabled);
    } else if (disabled) {
      if (vnode.shapeFlag & 16) {
        hydrateDisabledTeleport(node, vnode, node, nextSibling(node));
      }
    }
    return vnode.anchor && nextSibling(vnode.anchor);
  }
  const Teleport = TeleportImpl;
  function updateCssVars(vnode, isDisabled) {
    const ctx = vnode.ctx;
    if (ctx && ctx.ut) {
      let node, anchor;
      if (isDisabled) {
        node = vnode.el;
        anchor = vnode.anchor;
      } else {
        node = vnode.targetStart;
        anchor = vnode.targetAnchor;
      }
      while (node && node !== anchor) {
        if (node.nodeType === 1) node.setAttribute("data-v-owner", ctx.uid);
        node = node.nextSibling;
      }
      ctx.ut();
    }
  }
  function prepareAnchor(target, vnode, createText, insert) {
    const targetStart = vnode.targetStart = createText("");
    const targetAnchor = vnode.targetAnchor = createText("");
    targetStart[TeleportEndKey] = targetAnchor;
    if (target) {
      insert(targetStart, target);
      insert(targetAnchor, target);
    }
    return targetAnchor;
  }
  const leaveCbKey = /* @__PURE__ */ Symbol("_leaveCb");
  const enterCbKey$1 = /* @__PURE__ */ Symbol("_enterCb");
  function useTransitionState() {
    const state = {
      isMounted: false,
      isLeaving: false,
      isUnmounting: false,
      leavingVNodes: /* @__PURE__ */ new Map()
    };
    onMounted(() => {
      state.isMounted = true;
    });
    onBeforeUnmount(() => {
      state.isUnmounting = true;
    });
    return state;
  }
  const TransitionHookValidator = [Function, Array];
  const BaseTransitionPropsValidators = {
    mode: String,
    appear: Boolean,
    persisted: Boolean,
    // enter
    onBeforeEnter: TransitionHookValidator,
    onEnter: TransitionHookValidator,
    onAfterEnter: TransitionHookValidator,
    onEnterCancelled: TransitionHookValidator,
    // leave
    onBeforeLeave: TransitionHookValidator,
    onLeave: TransitionHookValidator,
    onAfterLeave: TransitionHookValidator,
    onLeaveCancelled: TransitionHookValidator,
    // appear
    onBeforeAppear: TransitionHookValidator,
    onAppear: TransitionHookValidator,
    onAfterAppear: TransitionHookValidator,
    onAppearCancelled: TransitionHookValidator
  };
  const recursiveGetSubtree = (instance) => {
    const subTree = instance.subTree;
    return subTree.component ? recursiveGetSubtree(subTree.component) : subTree;
  };
  const BaseTransitionImpl = {
    name: `BaseTransition`,
    props: BaseTransitionPropsValidators,
    setup(props2, { slots }) {
      const instance = getCurrentInstance();
      const state = useTransitionState();
      return () => {
        const children = slots.default && getTransitionRawChildren(slots.default(), true);
        if (!children || !children.length) {
          return;
        }
        const child = findNonCommentChild(children);
        const rawProps = toRaw(props2);
        const { mode } = rawProps;
        if (state.isLeaving) {
          return emptyPlaceholder(child);
        }
        const innerChild = getInnerChild$1(child);
        if (!innerChild) {
          return emptyPlaceholder(child);
        }
        let enterHooks = resolveTransitionHooks(
          innerChild,
          rawProps,
          state,
          instance,
          // #11061, ensure enterHooks is fresh after clone
          (hooks) => enterHooks = hooks
        );
        if (innerChild.type !== Comment) {
          setTransitionHooks(innerChild, enterHooks);
        }
        let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree);
        if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(oldInnerChild, innerChild) && recursiveGetSubtree(instance).type !== Comment) {
          let leavingHooks = resolveTransitionHooks(
            oldInnerChild,
            rawProps,
            state,
            instance
          );
          setTransitionHooks(oldInnerChild, leavingHooks);
          if (mode === "out-in" && innerChild.type !== Comment) {
            state.isLeaving = true;
            leavingHooks.afterLeave = () => {
              state.isLeaving = false;
              if (!(instance.job.flags & 8)) {
                instance.update();
              }
              delete leavingHooks.afterLeave;
              oldInnerChild = void 0;
            };
            return emptyPlaceholder(child);
          } else if (mode === "in-out" && innerChild.type !== Comment) {
            leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {
              const leavingVNodesCache = getLeavingNodesForType(
                state,
                oldInnerChild
              );
              leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;
              el[leaveCbKey] = () => {
                earlyRemove();
                el[leaveCbKey] = void 0;
                delete enterHooks.delayedLeave;
                oldInnerChild = void 0;
              };
              enterHooks.delayedLeave = () => {
                delayedLeave();
                delete enterHooks.delayedLeave;
                oldInnerChild = void 0;
              };
            };
          } else {
            oldInnerChild = void 0;
          }
        } else if (oldInnerChild) {
          oldInnerChild = void 0;
        }
        return child;
      };
    }
  };
  function findNonCommentChild(children) {
    let child = children[0];
    if (children.length > 1) {
      for (const c2 of children) {
        if (c2.type !== Comment) {
          child = c2;
          break;
        }
      }
    }
    return child;
  }
  const BaseTransition = BaseTransitionImpl;
  function getLeavingNodesForType(state, vnode) {
    const { leavingVNodes } = state;
    let leavingVNodesCache = leavingVNodes.get(vnode.type);
    if (!leavingVNodesCache) {
      leavingVNodesCache = /* @__PURE__ */ Object.create(null);
      leavingVNodes.set(vnode.type, leavingVNodesCache);
    }
    return leavingVNodesCache;
  }
  function resolveTransitionHooks(vnode, props2, state, instance, postClone) {
    const {
      appear,
      mode,
      persisted = false,
      onBeforeEnter,
      onEnter,
      onAfterEnter,
      onEnterCancelled,
      onBeforeLeave,
      onLeave,
      onAfterLeave,
      onLeaveCancelled,
      onBeforeAppear,
      onAppear,
      onAfterAppear,
      onAppearCancelled
    } = props2;
    const key = String(vnode.key);
    const leavingVNodesCache = getLeavingNodesForType(state, vnode);
    const callHook2 = (hook, args) => {
      hook && callWithAsyncErrorHandling(
        hook,
        instance,
        9,
        args
      );
    };
    const callAsyncHook = (hook, args) => {
      const done = args[1];
      callHook2(hook, args);
      if (isArray$1(hook)) {
        if (hook.every((hook2) => hook2.length <= 1)) done();
      } else if (hook.length <= 1) {
        done();
      }
    };
    const hooks = {
      mode,
      persisted,
      beforeEnter(el) {
        let hook = onBeforeEnter;
        if (!state.isMounted) {
          if (appear) {
            hook = onBeforeAppear || onBeforeEnter;
          } else {
            return;
          }
        }
        if (el[leaveCbKey]) {
          el[leaveCbKey](
            true
            /* cancelled */
          );
        }
        const leavingVNode = leavingVNodesCache[key];
        if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {
          leavingVNode.el[leaveCbKey]();
        }
        callHook2(hook, [el]);
      },
      enter(el) {
        let hook = onEnter;
        let afterHook = onAfterEnter;
        let cancelHook = onEnterCancelled;
        if (!state.isMounted) {
          if (appear) {
            hook = onAppear || onEnter;
            afterHook = onAfterAppear || onAfterEnter;
            cancelHook = onAppearCancelled || onEnterCancelled;
          } else {
            return;
          }
        }
        let called = false;
        const done = el[enterCbKey$1] = (cancelled) => {
          if (called) return;
          called = true;
          if (cancelled) {
            callHook2(cancelHook, [el]);
          } else {
            callHook2(afterHook, [el]);
          }
          if (hooks.delayedLeave) {
            hooks.delayedLeave();
          }
          el[enterCbKey$1] = void 0;
        };
        if (hook) {
          callAsyncHook(hook, [el, done]);
        } else {
          done();
        }
      },
      leave(el, remove2) {
        const key2 = String(vnode.key);
        if (el[enterCbKey$1]) {
          el[enterCbKey$1](
            true
            /* cancelled */
          );
        }
        if (state.isUnmounting) {
          return remove2();
        }
        callHook2(onBeforeLeave, [el]);
        let called = false;
        const done = el[leaveCbKey] = (cancelled) => {
          if (called) return;
          called = true;
          remove2();
          if (cancelled) {
            callHook2(onLeaveCancelled, [el]);
          } else {
            callHook2(onAfterLeave, [el]);
          }
          el[leaveCbKey] = void 0;
          if (leavingVNodesCache[key2] === vnode) {
            delete leavingVNodesCache[key2];
          }
        };
        leavingVNodesCache[key2] = vnode;
        if (onLeave) {
          callAsyncHook(onLeave, [el, done]);
        } else {
          done();
        }
      },
      clone(vnode2) {
        const hooks2 = resolveTransitionHooks(
          vnode2,
          props2,
          state,
          instance,
          postClone
        );
        if (postClone) postClone(hooks2);
        return hooks2;
      }
    };
    return hooks;
  }
  function emptyPlaceholder(vnode) {
    if (isKeepAlive(vnode)) {
      vnode = cloneVNode(vnode);
      vnode.children = null;
      return vnode;
    }
  }
  function getInnerChild$1(vnode) {
    if (!isKeepAlive(vnode)) {
      if (isTeleport(vnode.type) && vnode.children) {
        return findNonCommentChild(vnode.children);
      }
      return vnode;
    }
    if (vnode.component) {
      return vnode.component.subTree;
    }
    const { shapeFlag, children } = vnode;
    if (children) {
      if (shapeFlag & 16) {
        return children[0];
      }
      if (shapeFlag & 32 && isFunction$1(children.default)) {
        return children.default();
      }
    }
  }
  function setTransitionHooks(vnode, hooks) {
    if (vnode.shapeFlag & 6 && vnode.component) {
      vnode.transition = hooks;
      setTransitionHooks(vnode.component.subTree, hooks);
    } else if (vnode.shapeFlag & 128) {
      vnode.ssContent.transition = hooks.clone(vnode.ssContent);
      vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);
    } else {
      vnode.transition = hooks;
    }
  }
  function getTransitionRawChildren(children, keepComment = false, parentKey) {
    let ret = [];
    let keyedFragmentCount = 0;
    for (let i = 0; i < children.length; i++) {
      let child = children[i];
      const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);
      if (child.type === Fragment) {
        if (child.patchFlag & 128) keyedFragmentCount++;
        ret = ret.concat(
          getTransitionRawChildren(child.children, keepComment, key)
        );
      } else if (keepComment || child.type !== Comment) {
        ret.push(key != null ? cloneVNode(child, { key }) : child);
      }
    }
    if (keyedFragmentCount > 1) {
      for (let i = 0; i < ret.length; i++) {
        ret[i].patchFlag = -2;
      }
    }
    return ret;
  }
  // @__NO_SIDE_EFFECTS__
  function defineComponent(options, extraOptions) {
    return isFunction$1(options) ? (
      // #8236: extend call and options.name access are considered side-effects
      // by Rollup, so we have to wrap it in a pure-annotated IIFE.
      /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()
    ) : options;
  }
  function markAsyncBoundary(instance) {
    instance.ids = [instance.ids[0] + instance.ids[2]++ + "-", 0, 0];
  }
  const pendingSetRefMap = /* @__PURE__ */ new WeakMap();
  function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
    if (isArray$1(rawRef)) {
      rawRef.forEach(
        (r, i) => setRef(
          r,
          oldRawRef && (isArray$1(oldRawRef) ? oldRawRef[i] : oldRawRef),
          parentSuspense,
          vnode,
          isUnmount
        )
      );
      return;
    }
    if (isAsyncWrapper(vnode) && !isUnmount) {
      if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) {
        setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree);
      }
      return;
    }
    const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el;
    const value = isUnmount ? null : refValue;
    const { i: owner, r: ref3 } = rawRef;
    const oldRef = oldRawRef && oldRawRef.r;
    const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;
    const setupState = owner.setupState;
    const rawSetupState = toRaw(setupState);
    const canSetSetupRef = setupState === EMPTY_OBJ ? NO : (key) => {
      return hasOwn(rawSetupState, key);
    };
    if (oldRef != null && oldRef !== ref3) {
      invalidatePendingSetRef(oldRawRef);
      if (isString(oldRef)) {
        refs[oldRef] = null;
        if (canSetSetupRef(oldRef)) {
          setupState[oldRef] = null;
        }
      } else if (isRef(oldRef)) {
        {
          oldRef.value = null;
        }
        const oldRawRefAtom = oldRawRef;
        if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;
      }
    }
    if (isFunction$1(ref3)) {
      callWithErrorHandling(ref3, owner, 12, [value, refs]);
    } else {
      const _isString = isString(ref3);
      const _isRef = isRef(ref3);
      if (_isString || _isRef) {
        const doSet = () => {
          if (rawRef.f) {
            const existing = _isString ? canSetSetupRef(ref3) ? setupState[ref3] : refs[ref3] : ref3.value;
            if (isUnmount) {
              isArray$1(existing) && remove(existing, refValue);
            } else {
              if (!isArray$1(existing)) {
                if (_isString) {
                  refs[ref3] = [refValue];
                  if (canSetSetupRef(ref3)) {
                    setupState[ref3] = refs[ref3];
                  }
                } else {
                  const newVal = [refValue];
                  {
                    ref3.value = newVal;
                  }
                  if (rawRef.k) refs[rawRef.k] = newVal;
                }
              } else if (!existing.includes(refValue)) {
                existing.push(refValue);
              }
            }
          } else if (_isString) {
            refs[ref3] = value;
            if (canSetSetupRef(ref3)) {
              setupState[ref3] = value;
            }
          } else if (_isRef) {
            {
              ref3.value = value;
            }
            if (rawRef.k) refs[rawRef.k] = value;
          } else ;
        };
        if (value) {
          const job = () => {
            doSet();
            pendingSetRefMap.delete(rawRef);
          };
          job.id = -1;
          pendingSetRefMap.set(rawRef, job);
          queuePostRenderEffect(job, parentSuspense);
        } else {
          invalidatePendingSetRef(rawRef);
          doSet();
        }
      }
    }
  }
  function invalidatePendingSetRef(rawRef) {
    const pendingSetRef = pendingSetRefMap.get(rawRef);
    if (pendingSetRef) {
      pendingSetRef.flags |= 8;
      pendingSetRefMap.delete(rawRef);
    }
  }
  getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1));
  getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id));
  const isAsyncWrapper = (i) => !!i.type.__asyncLoader;
  const isKeepAlive = (vnode) => vnode.type.__isKeepAlive;
  const KeepAliveImpl = {
    name: `KeepAlive`,
    // Marker for special handling inside the renderer. We are not using a ===
    // check directly on KeepAlive in the renderer, because importing it directly
    // would prevent it from being tree-shaken.
    __isKeepAlive: true,
    props: {
      include: [String, RegExp, Array],
      exclude: [String, RegExp, Array],
      max: [String, Number]
    },
    setup(props2, { slots }) {
      const instance = getCurrentInstance();
      const sharedContext = instance.ctx;
      if (!sharedContext.renderer) {
        return () => {
          const children = slots.default && slots.default();
          return children && children.length === 1 ? children[0] : children;
        };
      }
      const cache2 = /* @__PURE__ */ new Map();
      const keys2 = /* @__PURE__ */ new Set();
      let current = null;
      const parentSuspense = instance.suspense;
      const {
        renderer: {
          p: patch,
          m: move,
          um: _unmount,
          o: { createElement }
        }
      } = sharedContext;
      const storageContainer = createElement("div");
      sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {
        const instance2 = vnode.component;
        move(vnode, container, anchor, 0, parentSuspense);
        patch(
          instance2.vnode,
          vnode,
          container,
          anchor,
          instance2,
          parentSuspense,
          namespace,
          vnode.slotScopeIds,
          optimized
        );
        queuePostRenderEffect(() => {
          instance2.isDeactivated = false;
          if (instance2.a) {
            invokeArrayFns(instance2.a);
          }
          const vnodeHook = vnode.props && vnode.props.onVnodeMounted;
          if (vnodeHook) {
            invokeVNodeHook(vnodeHook, instance2.parent, vnode);
          }
        }, parentSuspense);
      };
      sharedContext.deactivate = (vnode) => {
        const instance2 = vnode.component;
        invalidateMount(instance2.m);
        invalidateMount(instance2.a);
        move(vnode, storageContainer, null, 1, parentSuspense);
        queuePostRenderEffect(() => {
          if (instance2.da) {
            invokeArrayFns(instance2.da);
          }
          const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;
          if (vnodeHook) {
            invokeVNodeHook(vnodeHook, instance2.parent, vnode);
          }
          instance2.isDeactivated = true;
        }, parentSuspense);
      };
      function unmount(vnode) {
        resetShapeFlag(vnode);
        _unmount(vnode, instance, parentSuspense, true);
      }
      function pruneCache(filter) {
        cache2.forEach((vnode, key) => {
          const name = getComponentName(
            isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : vnode.type
          );
          if (name && !filter(name)) {
            pruneCacheEntry(key);
          }
        });
      }
      function pruneCacheEntry(key) {
        const cached = cache2.get(key);
        if (cached && (!current || !isSameVNodeType(cached, current))) {
          unmount(cached);
        } else if (current) {
          resetShapeFlag(current);
        }
        cache2.delete(key);
        keys2.delete(key);
      }
      watch(
        () => [props2.include, props2.exclude],
        ([include, exclude]) => {
          include && pruneCache((name) => matches(include, name));
          exclude && pruneCache((name) => !matches(exclude, name));
        },
        // prune post-render after `current` has been updated
        { flush: "post", deep: true }
      );
      let pendingCacheKey = null;
      const cacheSubtree = () => {
        if (pendingCacheKey != null) {
          if (isSuspense(instance.subTree.type)) {
            queuePostRenderEffect(() => {
              cache2.set(pendingCacheKey, getInnerChild(instance.subTree));
            }, instance.subTree.suspense);
          } else {
            cache2.set(pendingCacheKey, getInnerChild(instance.subTree));
          }
        }
      };
      onMounted(cacheSubtree);
      onUpdated(cacheSubtree);
      onBeforeUnmount(() => {
        cache2.forEach((cached) => {
          const { subTree, suspense } = instance;
          const vnode = getInnerChild(subTree);
          if (cached.type === vnode.type && cached.key === vnode.key) {
            resetShapeFlag(vnode);
            const da = vnode.component.da;
            da && queuePostRenderEffect(da, suspense);
            return;
          }
          unmount(cached);
        });
      });
      return () => {
        pendingCacheKey = null;
        if (!slots.default) {
          return current = null;
        }
        const children = slots.default();
        const rawVNode = children[0];
        if (children.length > 1) {
          current = null;
          return children;
        } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {
          current = null;
          return rawVNode;
        }
        let vnode = getInnerChild(rawVNode);
        if (vnode.type === Comment) {
          current = null;
          return vnode;
        }
        const comp = vnode.type;
        const name = getComponentName(
          isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp
        );
        const { include, exclude, max: max2 } = props2;
        if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {
          vnode.shapeFlag &= -257;
          current = vnode;
          return rawVNode;
        }
        const key = vnode.key == null ? comp : vnode.key;
        const cachedVNode = cache2.get(key);
        if (vnode.el) {
          vnode = cloneVNode(vnode);
          if (rawVNode.shapeFlag & 128) {
            rawVNode.ssContent = vnode;
          }
        }
        pendingCacheKey = key;
        if (cachedVNode) {
          vnode.el = cachedVNode.el;
          vnode.component = cachedVNode.component;
          if (vnode.transition) {
            setTransitionHooks(vnode, vnode.transition);
          }
          vnode.shapeFlag |= 512;
          keys2.delete(key);
          keys2.add(key);
        } else {
          keys2.add(key);
          if (max2 && keys2.size > parseInt(max2, 10)) {
            pruneCacheEntry(keys2.values().next().value);
          }
        }
        vnode.shapeFlag |= 256;
        current = vnode;
        return isSuspense(rawVNode.type) ? rawVNode : vnode;
      };
    }
  };
  const KeepAlive = KeepAliveImpl;
  function matches(pattern, name) {
    if (isArray$1(pattern)) {
      return pattern.some((p2) => matches(p2, name));
    } else if (isString(pattern)) {
      return pattern.split(",").includes(name);
    } else if (isRegExp(pattern)) {
      pattern.lastIndex = 0;
      return pattern.test(name);
    }
    return false;
  }
  function onActivated(hook, target) {
    registerKeepAliveHook(hook, "a", target);
  }
  function onDeactivated(hook, target) {
    registerKeepAliveHook(hook, "da", target);
  }
  function registerKeepAliveHook(hook, type, target = currentInstance) {
    const wrappedHook = hook.__wdc || (hook.__wdc = () => {
      let current = target;
      while (current) {
        if (current.isDeactivated) {
          return;
        }
        current = current.parent;
      }
      return hook();
    });
    injectHook(type, wrappedHook, target);
    if (target) {
      let current = target.parent;
      while (current && current.parent) {
        if (isKeepAlive(current.parent.vnode)) {
          injectToKeepAliveRoot(wrappedHook, type, target, current);
        }
        current = current.parent;
      }
    }
  }
  function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {
    const injected = injectHook(
      type,
      hook,
      keepAliveRoot,
      true
      /* prepend */
    );
    onUnmounted(() => {
      remove(keepAliveRoot[type], injected);
    }, target);
  }
  function resetShapeFlag(vnode) {
    vnode.shapeFlag &= -257;
    vnode.shapeFlag &= -513;
  }
  function getInnerChild(vnode) {
    return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;
  }
  function injectHook(type, hook, target = currentInstance, prepend = false) {
    if (target) {
      const hooks = target[type] || (target[type] = []);
      const wrappedHook = hook.__weh || (hook.__weh = (...args) => {
        pauseTracking();
        const reset = setCurrentInstance(target);
        const res = callWithAsyncErrorHandling(hook, target, type, args);
        reset();
        resetTracking();
        return res;
      });
      if (prepend) {
        hooks.unshift(wrappedHook);
      } else {
        hooks.push(wrappedHook);
      }
      return wrappedHook;
    }
  }
  const createHook = (lifecycle) => (hook, target = currentInstance) => {
    if (!isInSSRComponentSetup || lifecycle === "sp") {
      injectHook(lifecycle, (...args) => hook(...args), target);
    }
  };
  const onBeforeMount = createHook("bm");
  const onMounted = createHook("m");
  const onBeforeUpdate = createHook(
    "bu"
  );
  const onUpdated = createHook("u");
  const onBeforeUnmount = createHook(
    "bum"
  );
  const onUnmounted = createHook("um");
  const onServerPrefetch = createHook(
    "sp"
  );
  const onRenderTriggered = createHook("rtg");
  const onRenderTracked = createHook("rtc");
  function onErrorCaptured(hook, target = currentInstance) {
    injectHook("ec", hook, target);
  }
  const COMPONENTS = "components";
  const DIRECTIVES = "directives";
  function resolveComponent(name, maybeSelfReference) {
    return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;
  }
  const NULL_DYNAMIC_COMPONENT = /* @__PURE__ */ Symbol.for("v-ndc");
  function resolveDynamicComponent(component2) {
    if (isString(component2)) {
      return resolveAsset(COMPONENTS, component2, false) || component2;
    } else {
      return component2 || NULL_DYNAMIC_COMPONENT;
    }
  }
  function resolveDirective(name) {
    return resolveAsset(DIRECTIVES, name);
  }
  function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {
    const instance = currentRenderingInstance || currentInstance;
    if (instance) {
      const Component = instance.type;
      if (type === COMPONENTS) {
        const selfName = getComponentName(
          Component,
          false
        );
        if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize$1(camelize(name)))) {
          return Component;
        }
      }
      const res = (
        // local registration
        // check instance[type] first which is resolved for options API
        resolve(instance[type] || Component[type], name) || // global registration
        resolve(instance.appContext[type], name)
      );
      if (!res && maybeSelfReference) {
        return Component;
      }
      return res;
    }
  }
  function resolve(registry, name) {
    return registry && (registry[name] || registry[camelize(name)] || registry[capitalize$1(camelize(name))]);
  }
  function renderList(source, renderItem, cache2, index) {
    let ret;
    const cached = cache2;
    const sourceIsArray = isArray$1(source);
    if (sourceIsArray || isString(source)) {
      const sourceIsReactiveArray = sourceIsArray && isReactive(source);
      let needsWrap = false;
      let isReadonlySource = false;
      if (sourceIsReactiveArray) {
        needsWrap = !isShallow(source);
        isReadonlySource = isReadonly(source);
        source = shallowReadArray(source);
      }
      ret = new Array(source.length);
      for (let i = 0, l2 = source.length; i < l2; i++) {
        ret[i] = renderItem(
          needsWrap ? isReadonlySource ? toReadonly(toReactive$1(source[i])) : toReactive$1(source[i]) : source[i],
          i,
          void 0,
          cached
        );
      }
    } else if (typeof source === "number") {
      ret = new Array(source);
      for (let i = 0; i < source; i++) {
        ret[i] = renderItem(i + 1, i, void 0, cached);
      }
    } else if (isObject$2(source)) {
      if (source[Symbol.iterator]) {
        ret = Array.from(
          source,
          (item, i) => renderItem(item, i, void 0, cached)
        );
      } else {
        const keys2 = Object.keys(source);
        ret = new Array(keys2.length);
        for (let i = 0, l2 = keys2.length; i < l2; i++) {
          const key = keys2[i];
          ret[i] = renderItem(source[key], key, i, cached);
        }
      }
    } else {
      ret = [];
    }
    return ret;
  }
  function createSlots(slots, dynamicSlots) {
    for (let i = 0; i < dynamicSlots.length; i++) {
      const slot = dynamicSlots[i];
      if (isArray$1(slot)) {
        for (let j = 0; j < slot.length; j++) {
          slots[slot[j].name] = slot[j].fn;
        }
      } else if (slot) {
        slots[slot.name] = slot.key ? (...args) => {
          const res = slot.fn(...args);
          if (res) res.key = slot.key;
          return res;
        } : slot.fn;
      }
    }
    return slots;
  }
  function renderSlot(slots, name, props2 = {}, fallback, noSlotted) {
    if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) {
      const hasProps = Object.keys(props2).length > 0;
      if (name !== "default") props2.name = name;
      return openBlock(), createBlock(
        Fragment,
        null,
        [createVNode("slot", props2, fallback && fallback())],
        hasProps ? -2 : 64
      );
    }
    let slot = slots[name];
    if (slot && slot._c) {
      slot._d = false;
    }
    openBlock();
    const validSlotContent = slot && ensureValidVNode$1(slot(props2));
    const slotKey = props2.key || // slot content array of a dynamic conditional slot may have a branch
    // key attached in the `createSlots` helper, respect that
    validSlotContent && validSlotContent.key;
    const rendered = createBlock(
      Fragment,
      {
        key: (slotKey && !isSymbol$1(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content
        (!validSlotContent && fallback ? "_fb" : "")
      },
      validSlotContent || (fallback ? fallback() : []),
      validSlotContent && slots._ === 1 ? 64 : -2
    );
    if (rendered.scopeId) {
      rendered.slotScopeIds = [rendered.scopeId + "-s"];
    }
    if (slot && slot._c) {
      slot._d = true;
    }
    return rendered;
  }
  function ensureValidVNode$1(vnodes) {
    return vnodes.some((child) => {
      if (!isVNode(child)) return true;
      if (child.type === Comment) return false;
      if (child.type === Fragment && !ensureValidVNode$1(child.children))
        return false;
      return true;
    }) ? vnodes : null;
  }
  function toHandlers(obj, preserveCaseIfNecessary) {
    const ret = {};
    for (const key in obj) {
      ret[toHandlerKey(key)] = obj[key];
    }
    return ret;
  }
  const getPublicInstance = (i) => {
    if (!i) return null;
    if (isStatefulComponent(i)) return getComponentPublicInstance(i);
    return getPublicInstance(i.parent);
  };
  const publicPropertiesMap = (
    // Move PURE marker to new line to workaround compiler discarding it
    // due to type annotation
    /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {
      $: (i) => i,
      $el: (i) => i.vnode.el,
      $data: (i) => i.data,
      $props: (i) => i.props,
      $attrs: (i) => i.attrs,
      $slots: (i) => i.slots,
      $refs: (i) => i.refs,
      $parent: (i) => getPublicInstance(i.parent),
      $root: (i) => getPublicInstance(i.root),
      $host: (i) => i.ce,
      $emit: (i) => i.emit,
      $options: (i) => resolveMergedOptions(i),
      $forceUpdate: (i) => i.f || (i.f = () => {
        queueJob(i.update);
      }),
      $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),
      $watch: (i) => instanceWatch.bind(i)
    })
  );
  const hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);
  const PublicInstanceProxyHandlers = {
    get({ _: instance }, key) {
      if (key === "__v_skip") {
        return true;
      }
      const { ctx, setupState, data, props: props2, accessCache, type, appContext } = instance;
      if (key[0] !== "$") {
        const n = accessCache[key];
        if (n !== void 0) {
          switch (n) {
            case 1:
              return setupState[key];
            case 2:
              return data[key];
            case 4:
              return ctx[key];
            case 3:
              return props2[key];
          }
        } else if (hasSetupBinding(setupState, key)) {
          accessCache[key] = 1;
          return setupState[key];
        } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
          accessCache[key] = 2;
          return data[key];
        } else if (hasOwn(props2, key)) {
          accessCache[key] = 3;
          return props2[key];
        } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {
          accessCache[key] = 4;
          return ctx[key];
        } else if (shouldCacheAccess) {
          accessCache[key] = 0;
        }
      }
      const publicGetter = publicPropertiesMap[key];
      let cssModule, globalProperties;
      if (publicGetter) {
        if (key === "$attrs") {
          track(instance.attrs, "get", "");
        }
        return publicGetter(instance);
      } else if (
        // css module (injected by vue-loader)
        (cssModule = type.__cssModules) && (cssModule = cssModule[key])
      ) {
        return cssModule;
      } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {
        accessCache[key] = 4;
        return ctx[key];
      } else if (
        // global properties
        globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)
      ) {
        {
          return globalProperties[key];
        }
      } else ;
    },
    set({ _: instance }, key, value) {
      const { data, setupState, ctx } = instance;
      if (hasSetupBinding(setupState, key)) {
        setupState[key] = value;
        return true;
      } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
        data[key] = value;
        return true;
      } else if (hasOwn(instance.props, key)) {
        return false;
      }
      if (key[0] === "$" && key.slice(1) in instance) {
        return false;
      } else {
        {
          ctx[key] = value;
        }
      }
      return true;
    },
    has({
      _: { data, setupState, accessCache, ctx, appContext, props: props2, type }
    }, key) {
      let cssModules;
      return !!(accessCache[key] || data !== EMPTY_OBJ && key[0] !== "$" && hasOwn(data, key) || hasSetupBinding(setupState, key) || hasOwn(props2, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key) || (cssModules = type.__cssModules) && cssModules[key]);
    },
    defineProperty(target, key, descriptor) {
      if (descriptor.get != null) {
        target._.accessCache[key] = 0;
      } else if (hasOwn(descriptor, "value")) {
        this.set(target, key, descriptor.value, null);
      }
      return Reflect.defineProperty(target, key, descriptor);
    }
  };
  function useSlots() {
    return getContext().slots;
  }
  function useAttrs$1() {
    return getContext().attrs;
  }
  function getContext(calledFunctionName) {
    const i = getCurrentInstance();
    return i.setupContext || (i.setupContext = createSetupContext(i));
  }
  function normalizePropsOrEmits(props2) {
    return isArray$1(props2) ? props2.reduce(
      (normalized, p2) => (normalized[p2] = null, normalized),
      {}
    ) : props2;
  }
  let shouldCacheAccess = true;
  function applyOptions(instance) {
    const options = resolveMergedOptions(instance);
    const publicThis = instance.proxy;
    const ctx = instance.ctx;
    shouldCacheAccess = false;
    if (options.beforeCreate) {
      callHook$1(options.beforeCreate, instance, "bc");
    }
    const {
      // state
      data: dataOptions,
      computed: computedOptions,
      methods,
      watch: watchOptions,
      provide: provideOptions,
      inject: injectOptions,
      // lifecycle
      created,
      beforeMount,
      mounted,
      beforeUpdate,
      updated,
      activated,
      deactivated,
      beforeDestroy,
      beforeUnmount,
      destroyed,
      unmounted,
      render: render2,
      renderTracked,
      renderTriggered,
      errorCaptured,
      serverPrefetch,
      // public API
      expose,
      inheritAttrs,
      // assets
      components,
      directives,
      filters
    } = options;
    const checkDuplicateProperties = null;
    if (injectOptions) {
      resolveInjections(injectOptions, ctx, checkDuplicateProperties);
    }
    if (methods) {
      for (const key in methods) {
        const methodHandler = methods[key];
        if (isFunction$1(methodHandler)) {
          {
            ctx[key] = methodHandler.bind(publicThis);
          }
        }
      }
    }
    if (dataOptions) {
      const data = dataOptions.call(publicThis, publicThis);
      if (!isObject$2(data)) ;
      else {
        instance.data = reactive(data);
      }
    }
    shouldCacheAccess = true;
    if (computedOptions) {
      for (const key in computedOptions) {
        const opt = computedOptions[key];
        const get2 = isFunction$1(opt) ? opt.bind(publicThis, publicThis) : isFunction$1(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP;
        const set2 = !isFunction$1(opt) && isFunction$1(opt.set) ? opt.set.bind(publicThis) : NOOP;
        const c2 = computed({
          get: get2,
          set: set2
        });
        Object.defineProperty(ctx, key, {
          enumerable: true,
          configurable: true,
          get: () => c2.value,
          set: (v2) => c2.value = v2
        });
      }
    }
    if (watchOptions) {
      for (const key in watchOptions) {
        createWatcher(watchOptions[key], ctx, publicThis, key);
      }
    }
    if (provideOptions) {
      const provides = isFunction$1(provideOptions) ? provideOptions.call(publicThis) : provideOptions;
      Reflect.ownKeys(provides).forEach((key) => {
        provide(key, provides[key]);
      });
    }
    if (created) {
      callHook$1(created, instance, "c");
    }
    function registerLifecycleHook(register, hook) {
      if (isArray$1(hook)) {
        hook.forEach((_hook) => register(_hook.bind(publicThis)));
      } else if (hook) {
        register(hook.bind(publicThis));
      }
    }
    registerLifecycleHook(onBeforeMount, beforeMount);
    registerLifecycleHook(onMounted, mounted);
    registerLifecycleHook(onBeforeUpdate, beforeUpdate);
    registerLifecycleHook(onUpdated, updated);
    registerLifecycleHook(onActivated, activated);
    registerLifecycleHook(onDeactivated, deactivated);
    registerLifecycleHook(onErrorCaptured, errorCaptured);
    registerLifecycleHook(onRenderTracked, renderTracked);
    registerLifecycleHook(onRenderTriggered, renderTriggered);
    registerLifecycleHook(onBeforeUnmount, beforeUnmount);
    registerLifecycleHook(onUnmounted, unmounted);
    registerLifecycleHook(onServerPrefetch, serverPrefetch);
    if (isArray$1(expose)) {
      if (expose.length) {
        const exposed = instance.exposed || (instance.exposed = {});
        expose.forEach((key) => {
          Object.defineProperty(exposed, key, {
            get: () => publicThis[key],
            set: (val) => publicThis[key] = val,
            enumerable: true
          });
        });
      } else if (!instance.exposed) {
        instance.exposed = {};
      }
    }
    if (render2 && instance.render === NOOP) {
      instance.render = render2;
    }
    if (inheritAttrs != null) {
      instance.inheritAttrs = inheritAttrs;
    }
    if (components) instance.components = components;
    if (directives) instance.directives = directives;
    if (serverPrefetch) {
      markAsyncBoundary(instance);
    }
  }
  function resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) {
    if (isArray$1(injectOptions)) {
      injectOptions = normalizeInject(injectOptions);
    }
    for (const key in injectOptions) {
      const opt = injectOptions[key];
      let injected;
      if (isObject$2(opt)) {
        if ("default" in opt) {
          injected = inject(
            opt.from || key,
            opt.default,
            true
          );
        } else {
          injected = inject(opt.from || key);
        }
      } else {
        injected = inject(opt);
      }
      if (isRef(injected)) {
        Object.defineProperty(ctx, key, {
          enumerable: true,
          configurable: true,
          get: () => injected.value,
          set: (v2) => injected.value = v2
        });
      } else {
        ctx[key] = injected;
      }
    }
  }
  function callHook$1(hook, instance, type) {
    callWithAsyncErrorHandling(
      isArray$1(hook) ? hook.map((h2) => h2.bind(instance.proxy)) : hook.bind(instance.proxy),
      instance,
      type
    );
  }
  function createWatcher(raw, ctx, publicThis, key) {
    let getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key];
    if (isString(raw)) {
      const handler = ctx[raw];
      if (isFunction$1(handler)) {
        {
          watch(getter, handler);
        }
      }
    } else if (isFunction$1(raw)) {
      {
        watch(getter, raw.bind(publicThis));
      }
    } else if (isObject$2(raw)) {
      if (isArray$1(raw)) {
        raw.forEach((r) => createWatcher(r, ctx, publicThis, key));
      } else {
        const handler = isFunction$1(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];
        if (isFunction$1(handler)) {
          watch(getter, handler, raw);
        }
      }
    } else ;
  }
  function resolveMergedOptions(instance) {
    const base = instance.type;
    const { mixins, extends: extendsOptions } = base;
    const {
      mixins: globalMixins,
      optionsCache: cache2,
      config: { optionMergeStrategies }
    } = instance.appContext;
    const cached = cache2.get(base);
    let resolved;
    if (cached) {
      resolved = cached;
    } else if (!globalMixins.length && !mixins && !extendsOptions) {
      {
        resolved = base;
      }
    } else {
      resolved = {};
      if (globalMixins.length) {
        globalMixins.forEach(
          (m2) => mergeOptions$1(resolved, m2, optionMergeStrategies, true)
        );
      }
      mergeOptions$1(resolved, base, optionMergeStrategies);
    }
    if (isObject$2(base)) {
      cache2.set(base, resolved);
    }
    return resolved;
  }
  function mergeOptions$1(to, from, strats, asMixin = false) {
    const { mixins, extends: extendsOptions } = from;
    if (extendsOptions) {
      mergeOptions$1(to, extendsOptions, strats, true);
    }
    if (mixins) {
      mixins.forEach(
        (m2) => mergeOptions$1(to, m2, strats, true)
      );
    }
    for (const key in from) {
      if (asMixin && key === "expose") ;
      else {
        const strat = internalOptionMergeStrats[key] || strats && strats[key];
        to[key] = strat ? strat(to[key], from[key]) : from[key];
      }
    }
    return to;
  }
  const internalOptionMergeStrats = {
    data: mergeDataFn,
    props: mergeEmitsOrPropsOptions,
    emits: mergeEmitsOrPropsOptions,
    // objects
    methods: mergeObjectOptions,
    computed: mergeObjectOptions,
    // lifecycle
    beforeCreate: mergeAsArray,
    created: mergeAsArray,
    beforeMount: mergeAsArray,
    mounted: mergeAsArray,
    beforeUpdate: mergeAsArray,
    updated: mergeAsArray,
    beforeDestroy: mergeAsArray,
    beforeUnmount: mergeAsArray,
    destroyed: mergeAsArray,
    unmounted: mergeAsArray,
    activated: mergeAsArray,
    deactivated: mergeAsArray,
    errorCaptured: mergeAsArray,
    serverPrefetch: mergeAsArray,
    // assets
    components: mergeObjectOptions,
    directives: mergeObjectOptions,
    // watch
    watch: mergeWatchOptions,
    // provide / inject
    provide: mergeDataFn,
    inject: mergeInject
  };
  function mergeDataFn(to, from) {
    if (!from) {
      return to;
    }
    if (!to) {
      return from;
    }
    return function mergedDataFn() {
      return extend(
        isFunction$1(to) ? to.call(this, this) : to,
        isFunction$1(from) ? from.call(this, this) : from
      );
    };
  }
  function mergeInject(to, from) {
    return mergeObjectOptions(normalizeInject(to), normalizeInject(from));
  }
  function normalizeInject(raw) {
    if (isArray$1(raw)) {
      const res = {};
      for (let i = 0; i < raw.length; i++) {
        res[raw[i]] = raw[i];
      }
      return res;
    }
    return raw;
  }
  function mergeAsArray(to, from) {
    return to ? [...new Set([].concat(to, from))] : from;
  }
  function mergeObjectOptions(to, from) {
    return to ? extend(/* @__PURE__ */ Object.create(null), to, from) : from;
  }
  function mergeEmitsOrPropsOptions(to, from) {
    if (to) {
      if (isArray$1(to) && isArray$1(from)) {
        return [.../* @__PURE__ */ new Set([...to, ...from])];
      }
      return extend(
        /* @__PURE__ */ Object.create(null),
        normalizePropsOrEmits(to),
        normalizePropsOrEmits(from != null ? from : {})
      );
    } else {
      return from;
    }
  }
  function mergeWatchOptions(to, from) {
    if (!to) return from;
    if (!from) return to;
    const merged = extend(/* @__PURE__ */ Object.create(null), to);
    for (const key in from) {
      merged[key] = mergeAsArray(to[key], from[key]);
    }
    return merged;
  }
  function createAppContext() {
    return {
      app: null,
      config: {
        isNativeTag: NO,
        performance: false,
        globalProperties: {},
        optionMergeStrategies: {},
        errorHandler: void 0,
        warnHandler: void 0,
        compilerOptions: {}
      },
      mixins: [],
      components: {},
      directives: {},
      provides: /* @__PURE__ */ Object.create(null),
      optionsCache: /* @__PURE__ */ new WeakMap(),
      propsCache: /* @__PURE__ */ new WeakMap(),
      emitsCache: /* @__PURE__ */ new WeakMap()
    };
  }
  let uid$1 = 0;
  function createAppAPI(render2, hydrate) {
    return function createApp2(rootComponent, rootProps = null) {
      if (!isFunction$1(rootComponent)) {
        rootComponent = extend({}, rootComponent);
      }
      if (rootProps != null && !isObject$2(rootProps)) {
        rootProps = null;
      }
      const context = createAppContext();
      const installedPlugins = /* @__PURE__ */ new WeakSet();
      const pluginCleanupFns = [];
      let isMounted = false;
      const app2 = context.app = {
        _uid: uid$1++,
        _component: rootComponent,
        _props: rootProps,
        _container: null,
        _context: context,
        _instance: null,
        version: version$1,
        get config() {
          return context.config;
        },
        set config(v2) {
        },
        use(plugin, ...options) {
          if (installedPlugins.has(plugin)) ;
          else if (plugin && isFunction$1(plugin.install)) {
            installedPlugins.add(plugin);
            plugin.install(app2, ...options);
          } else if (isFunction$1(plugin)) {
            installedPlugins.add(plugin);
            plugin(app2, ...options);
          } else ;
          return app2;
        },
        mixin(mixin) {
          {
            if (!context.mixins.includes(mixin)) {
              context.mixins.push(mixin);
            }
          }
          return app2;
        },
        component(name, component2) {
          if (!component2) {
            return context.components[name];
          }
          context.components[name] = component2;
          return app2;
        },
        directive(name, directive) {
          if (!directive) {
            return context.directives[name];
          }
          context.directives[name] = directive;
          return app2;
        },
        mount(rootContainer, isHydrate, namespace) {
          if (!isMounted) {
            const vnode = app2._ceVNode || createVNode(rootComponent, rootProps);
            vnode.appContext = context;
            if (namespace === true) {
              namespace = "svg";
            } else if (namespace === false) {
              namespace = void 0;
            }
            {
              render2(vnode, rootContainer, namespace);
            }
            isMounted = true;
            app2._container = rootContainer;
            rootContainer.__vue_app__ = app2;
            return getComponentPublicInstance(vnode.component);
          }
        },
        onUnmount(cleanupFn) {
          pluginCleanupFns.push(cleanupFn);
        },
        unmount() {
          if (isMounted) {
            callWithAsyncErrorHandling(
              pluginCleanupFns,
              app2._instance,
              16
            );
            render2(null, app2._container);
            delete app2._container.__vue_app__;
          }
        },
        provide(key, value) {
          context.provides[key] = value;
          return app2;
        },
        runWithContext(fn2) {
          const lastApp = currentApp;
          currentApp = app2;
          try {
            return fn2();
          } finally {
            currentApp = lastApp;
          }
        }
      };
      return app2;
    };
  }
  let currentApp = null;
  const getModelModifiers = (props2, modelName) => {
    return modelName === "modelValue" || modelName === "model-value" ? props2.modelModifiers : props2[`${modelName}Modifiers`] || props2[`${camelize(modelName)}Modifiers`] || props2[`${hyphenate(modelName)}Modifiers`];
  };
  function emit(instance, event, ...rawArgs) {
    if (instance.isUnmounted) return;
    const props2 = instance.vnode.props || EMPTY_OBJ;
    let args = rawArgs;
    const isModelListener2 = event.startsWith("update:");
    const modifiers = isModelListener2 && getModelModifiers(props2, event.slice(7));
    if (modifiers) {
      if (modifiers.trim) {
        args = rawArgs.map((a2) => isString(a2) ? a2.trim() : a2);
      }
      if (modifiers.number) {
        args = rawArgs.map(looseToNumber$1);
      }
    }
    let handlerName;
    let handler = props2[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)
    props2[handlerName = toHandlerKey(camelize(event))];
    if (!handler && isModelListener2) {
      handler = props2[handlerName = toHandlerKey(hyphenate(event))];
    }
    if (handler) {
      callWithAsyncErrorHandling(
        handler,
        instance,
        6,
        args
      );
    }
    const onceHandler = props2[handlerName + `Once`];
    if (onceHandler) {
      if (!instance.emitted) {
        instance.emitted = {};
      } else if (instance.emitted[handlerName]) {
        return;
      }
      instance.emitted[handlerName] = true;
      callWithAsyncErrorHandling(
        onceHandler,
        instance,
        6,
        args
      );
    }
  }
  const mixinEmitsCache = /* @__PURE__ */ new WeakMap();
  function normalizeEmitsOptions(comp, appContext, asMixin = false) {
    const cache2 = asMixin ? mixinEmitsCache : appContext.emitsCache;
    const cached = cache2.get(comp);
    if (cached !== void 0) {
      return cached;
    }
    const raw = comp.emits;
    let normalized = {};
    let hasExtends = false;
    if (!isFunction$1(comp)) {
      const extendEmits = (raw2) => {
        const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);
        if (normalizedFromExtend) {
          hasExtends = true;
          extend(normalized, normalizedFromExtend);
        }
      };
      if (!asMixin && appContext.mixins.length) {
        appContext.mixins.forEach(extendEmits);
      }
      if (comp.extends) {
        extendEmits(comp.extends);
      }
      if (comp.mixins) {
        comp.mixins.forEach(extendEmits);
      }
    }
    if (!raw && !hasExtends) {
      if (isObject$2(comp)) {
        cache2.set(comp, null);
      }
      return null;
    }
    if (isArray$1(raw)) {
      raw.forEach((key) => normalized[key] = null);
    } else {
      extend(normalized, raw);
    }
    if (isObject$2(comp)) {
      cache2.set(comp, normalized);
    }
    return normalized;
  }
  function isEmitListener(options, key) {
    if (!options || !isOn(key)) {
      return false;
    }
    key = key.slice(2).replace(/Once$/, "");
    return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);
  }
  function markAttrsAccessed() {
  }
  function renderComponentRoot(instance) {
    const {
      type: Component,
      vnode,
      proxy,
      withProxy,
      propsOptions: [propsOptions],
      slots,
      attrs,
      emit: emit2,
      render: render2,
      renderCache,
      props: props2,
      data,
      setupState,
      ctx,
      inheritAttrs
    } = instance;
    const prev = setCurrentRenderingInstance(instance);
    let result;
    let fallthroughAttrs;
    try {
      if (vnode.shapeFlag & 4) {
        const proxyToUse = withProxy || proxy;
        const thisProxy = false ? new Proxy(proxyToUse, {
          get(target, key, receiver) {
            warn$1(
              `Property '${String(
                key
              )}' was accessed via 'this'. Avoid using 'this' in templates.`
            );
            return Reflect.get(target, key, receiver);
          }
        }) : proxyToUse;
        result = normalizeVNode(
          render2.call(
            thisProxy,
            proxyToUse,
            renderCache,
            false ? shallowReadonly(props2) : props2,
            setupState,
            data,
            ctx
          )
        );
        fallthroughAttrs = attrs;
      } else {
        const render22 = Component;
        if (false) ;
        result = normalizeVNode(
          render22.length > 1 ? render22(
            false ? shallowReadonly(props2) : props2,
            false ? {
              get attrs() {
                markAttrsAccessed();
                return shallowReadonly(attrs);
              },
              slots,
              emit: emit2
            } : { attrs, slots, emit: emit2 }
          ) : render22(
            false ? shallowReadonly(props2) : props2,
            null
          )
        );
        fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);
      }
    } catch (err) {
      blockStack.length = 0;
      handleError(err, instance, 1);
      result = createVNode(Comment);
    }
    let root2 = result;
    if (fallthroughAttrs && inheritAttrs !== false) {
      const keys2 = Object.keys(fallthroughAttrs);
      const { shapeFlag } = root2;
      if (keys2.length) {
        if (shapeFlag & (1 | 6)) {
          if (propsOptions && keys2.some(isModelListener)) {
            fallthroughAttrs = filterModelListeners(
              fallthroughAttrs,
              propsOptions
            );
          }
          root2 = cloneVNode(root2, fallthroughAttrs, false, true);
        }
      }
    }
    if (vnode.dirs) {
      root2 = cloneVNode(root2, null, false, true);
      root2.dirs = root2.dirs ? root2.dirs.concat(vnode.dirs) : vnode.dirs;
    }
    if (vnode.transition) {
      setTransitionHooks(root2, vnode.transition);
    }
    {
      result = root2;
    }
    setCurrentRenderingInstance(prev);
    return result;
  }
  const getFunctionalFallthrough = (attrs) => {
    let res;
    for (const key in attrs) {
      if (key === "class" || key === "style" || isOn(key)) {
        (res || (res = {}))[key] = attrs[key];
      }
    }
    return res;
  };
  const filterModelListeners = (attrs, props2) => {
    const res = {};
    for (const key in attrs) {
      if (!isModelListener(key) || !(key.slice(9) in props2)) {
        res[key] = attrs[key];
      }
    }
    return res;
  };
  function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
    const { props: prevProps, children: prevChildren, component: component2 } = prevVNode;
    const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;
    const emits = component2.emitsOptions;
    if (nextVNode.dirs || nextVNode.transition) {
      return true;
    }
    if (optimized && patchFlag >= 0) {
      if (patchFlag & 1024) {
        return true;
      }
      if (patchFlag & 16) {
        if (!prevProps) {
          return !!nextProps;
        }
        return hasPropsChanged(prevProps, nextProps, emits);
      } else if (patchFlag & 8) {
        const dynamicProps = nextVNode.dynamicProps;
        for (let i = 0; i < dynamicProps.length; i++) {
          const key = dynamicProps[i];
          if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {
            return true;
          }
        }
      }
    } else {
      if (prevChildren || nextChildren) {
        if (!nextChildren || !nextChildren.$stable) {
          return true;
        }
      }
      if (prevProps === nextProps) {
        return false;
      }
      if (!prevProps) {
        return !!nextProps;
      }
      if (!nextProps) {
        return true;
      }
      return hasPropsChanged(prevProps, nextProps, emits);
    }
    return false;
  }
  function hasPropsChanged(prevProps, nextProps, emitsOptions) {
    const nextKeys = Object.keys(nextProps);
    if (nextKeys.length !== Object.keys(prevProps).length) {
      return true;
    }
    for (let i = 0; i < nextKeys.length; i++) {
      const key = nextKeys[i];
      if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {
        return true;
      }
    }
    return false;
  }
  function updateHOCHostEl({ vnode, parent: parent2 }, el) {
    while (parent2) {
      const root2 = parent2.subTree;
      if (root2.suspense && root2.suspense.activeBranch === vnode) {
        root2.el = vnode.el;
      }
      if (root2 === vnode) {
        (vnode = parent2.vnode).el = el;
        parent2 = parent2.parent;
      } else {
        break;
      }
    }
  }
  const internalObjectProto = {};
  const createInternalObject = () => Object.create(internalObjectProto);
  const isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto;
  function initProps(instance, rawProps, isStateful, isSSR = false) {
    const props2 = {};
    const attrs = createInternalObject();
    instance.propsDefaults = /* @__PURE__ */ Object.create(null);
    setFullProps(instance, rawProps, props2, attrs);
    for (const key in instance.propsOptions[0]) {
      if (!(key in props2)) {
        props2[key] = void 0;
      }
    }
    if (isStateful) {
      instance.props = isSSR ? props2 : shallowReactive(props2);
    } else {
      if (!instance.type.props) {
        instance.props = attrs;
      } else {
        instance.props = props2;
      }
    }
    instance.attrs = attrs;
  }
  function updateProps(instance, rawProps, rawPrevProps, optimized) {
    const {
      props: props2,
      attrs,
      vnode: { patchFlag }
    } = instance;
    const rawCurrentProps = toRaw(props2);
    const [options] = instance.propsOptions;
    let hasAttrsChanged = false;
    if (
      // always force full diff in dev
      // - #1942 if hmr is enabled with sfc component
      // - vite#872 non-sfc component used by sfc component
      (optimized || patchFlag > 0) && !(patchFlag & 16)
    ) {
      if (patchFlag & 8) {
        const propsToUpdate = instance.vnode.dynamicProps;
        for (let i = 0; i < propsToUpdate.length; i++) {
          let key = propsToUpdate[i];
          if (isEmitListener(instance.emitsOptions, key)) {
            continue;
          }
          const value = rawProps[key];
          if (options) {
            if (hasOwn(attrs, key)) {
              if (value !== attrs[key]) {
                attrs[key] = value;
                hasAttrsChanged = true;
              }
            } else {
              const camelizedKey = camelize(key);
              props2[camelizedKey] = resolvePropValue(
                options,
                rawCurrentProps,
                camelizedKey,
                value,
                instance,
                false
              );
            }
          } else {
            if (value !== attrs[key]) {
              attrs[key] = value;
              hasAttrsChanged = true;
            }
          }
        }
      }
    } else {
      if (setFullProps(instance, rawProps, props2, attrs)) {
        hasAttrsChanged = true;
      }
      let kebabKey;
      for (const key in rawCurrentProps) {
        if (!rawProps || // for camelCase
        !hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case
        // and converted to camelCase (#955)
        ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey))) {
          if (options) {
            if (rawPrevProps && // for camelCase
            (rawPrevProps[key] !== void 0 || // for kebab-case
            rawPrevProps[kebabKey] !== void 0)) {
              props2[key] = resolvePropValue(
                options,
                rawCurrentProps,
                key,
                void 0,
                instance,
                true
              );
            }
          } else {
            delete props2[key];
          }
        }
      }
      if (attrs !== rawCurrentProps) {
        for (const key in attrs) {
          if (!rawProps || !hasOwn(rawProps, key) && true) {
            delete attrs[key];
            hasAttrsChanged = true;
          }
        }
      }
    }
    if (hasAttrsChanged) {
      trigger(instance.attrs, "set", "");
    }
  }
  function setFullProps(instance, rawProps, props2, attrs) {
    const [options, needCastKeys] = instance.propsOptions;
    let hasAttrsChanged = false;
    let rawCastValues;
    if (rawProps) {
      for (let key in rawProps) {
        if (isReservedProp(key)) {
          continue;
        }
        const value = rawProps[key];
        let camelKey;
        if (options && hasOwn(options, camelKey = camelize(key))) {
          if (!needCastKeys || !needCastKeys.includes(camelKey)) {
            props2[camelKey] = value;
          } else {
            (rawCastValues || (rawCastValues = {}))[camelKey] = value;
          }
        } else if (!isEmitListener(instance.emitsOptions, key)) {
          if (!(key in attrs) || value !== attrs[key]) {
            attrs[key] = value;
            hasAttrsChanged = true;
          }
        }
      }
    }
    if (needCastKeys) {
      const rawCurrentProps = toRaw(props2);
      const castValues = rawCastValues || EMPTY_OBJ;
      for (let i = 0; i < needCastKeys.length; i++) {
        const key = needCastKeys[i];
        props2[key] = resolvePropValue(
          options,
          rawCurrentProps,
          key,
          castValues[key],
          instance,
          !hasOwn(castValues, key)
        );
      }
    }
    return hasAttrsChanged;
  }
  function resolvePropValue(options, props2, key, value, instance, isAbsent2) {
    const opt = options[key];
    if (opt != null) {
      const hasDefault = hasOwn(opt, "default");
      if (hasDefault && value === void 0) {
        const defaultValue = opt.default;
        if (opt.type !== Function && !opt.skipFactory && isFunction$1(defaultValue)) {
          const { propsDefaults } = instance;
          if (key in propsDefaults) {
            value = propsDefaults[key];
          } else {
            const reset = setCurrentInstance(instance);
            value = propsDefaults[key] = defaultValue.call(
              null,
              props2
            );
            reset();
          }
        } else {
          value = defaultValue;
        }
        if (instance.ce) {
          instance.ce._setProp(key, value);
        }
      }
      if (opt[
        0
        /* shouldCast */
      ]) {
        if (isAbsent2 && !hasDefault) {
          value = false;
        } else if (opt[
          1
          /* shouldCastTrue */
        ] && (value === "" || value === hyphenate(key))) {
          value = true;
        }
      }
    }
    return value;
  }
  const mixinPropsCache = /* @__PURE__ */ new WeakMap();
  function normalizePropsOptions(comp, appContext, asMixin = false) {
    const cache2 = asMixin ? mixinPropsCache : appContext.propsCache;
    const cached = cache2.get(comp);
    if (cached) {
      return cached;
    }
    const raw = comp.props;
    const normalized = {};
    const needCastKeys = [];
    let hasExtends = false;
    if (!isFunction$1(comp)) {
      const extendProps = (raw2) => {
        hasExtends = true;
        const [props2, keys2] = normalizePropsOptions(raw2, appContext, true);
        extend(normalized, props2);
        if (keys2) needCastKeys.push(...keys2);
      };
      if (!asMixin && appContext.mixins.length) {
        appContext.mixins.forEach(extendProps);
      }
      if (comp.extends) {
        extendProps(comp.extends);
      }
      if (comp.mixins) {
        comp.mixins.forEach(extendProps);
      }
    }
    if (!raw && !hasExtends) {
      if (isObject$2(comp)) {
        cache2.set(comp, EMPTY_ARR);
      }
      return EMPTY_ARR;
    }
    if (isArray$1(raw)) {
      for (let i = 0; i < raw.length; i++) {
        const normalizedKey = camelize(raw[i]);
        if (validatePropName(normalizedKey)) {
          normalized[normalizedKey] = EMPTY_OBJ;
        }
      }
    } else if (raw) {
      for (const key in raw) {
        const normalizedKey = camelize(key);
        if (validatePropName(normalizedKey)) {
          const opt = raw[key];
          const prop = normalized[normalizedKey] = isArray$1(opt) || isFunction$1(opt) ? { type: opt } : extend({}, opt);
          const propType = prop.type;
          let shouldCast = false;
          let shouldCastTrue = true;
          if (isArray$1(propType)) {
            for (let index = 0; index < propType.length; ++index) {
              const type = propType[index];
              const typeName = isFunction$1(type) && type.name;
              if (typeName === "Boolean") {
                shouldCast = true;
                break;
              } else if (typeName === "String") {
                shouldCastTrue = false;
              }
            }
          } else {
            shouldCast = isFunction$1(propType) && propType.name === "Boolean";
          }
          prop[
            0
            /* shouldCast */
          ] = shouldCast;
          prop[
            1
            /* shouldCastTrue */
          ] = shouldCastTrue;
          if (shouldCast || hasOwn(prop, "default")) {
            needCastKeys.push(normalizedKey);
          }
        }
      }
    }
    const res = [normalized, needCastKeys];
    if (isObject$2(comp)) {
      cache2.set(comp, res);
    }
    return res;
  }
  function validatePropName(key) {
    if (key[0] !== "$" && !isReservedProp(key)) {
      return true;
    }
    return false;
  }
  const isInternalKey = (key) => key === "_" || key === "_ctx" || key === "$stable";
  const normalizeSlotValue = (value) => isArray$1(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];
  const normalizeSlot = (key, rawSlot, ctx) => {
    if (rawSlot._n) {
      return rawSlot;
    }
    const normalized = withCtx((...args) => {
      if (false) ;
      return normalizeSlotValue(rawSlot(...args));
    }, ctx);
    normalized._c = false;
    return normalized;
  };
  const normalizeObjectSlots = (rawSlots, slots, instance) => {
    const ctx = rawSlots._ctx;
    for (const key in rawSlots) {
      if (isInternalKey(key)) continue;
      const value = rawSlots[key];
      if (isFunction$1(value)) {
        slots[key] = normalizeSlot(key, value, ctx);
      } else if (value != null) {
        const normalized = normalizeSlotValue(value);
        slots[key] = () => normalized;
      }
    }
  };
  const normalizeVNodeSlots = (instance, children) => {
    const normalized = normalizeSlotValue(children);
    instance.slots.default = () => normalized;
  };
  const assignSlots = (slots, children, optimized) => {
    for (const key in children) {
      if (optimized || !isInternalKey(key)) {
        slots[key] = children[key];
      }
    }
  };
  const initSlots = (instance, children, optimized) => {
    const slots = instance.slots = createInternalObject();
    if (instance.vnode.shapeFlag & 32) {
      const type = children._;
      if (type) {
        assignSlots(slots, children, optimized);
        if (optimized) {
          def(slots, "_", type, true);
        }
      } else {
        normalizeObjectSlots(children, slots);
      }
    } else if (children) {
      normalizeVNodeSlots(instance, children);
    }
  };
  const updateSlots = (instance, children, optimized) => {
    const { vnode, slots } = instance;
    let needDeletionCheck = true;
    let deletionComparisonTarget = EMPTY_OBJ;
    if (vnode.shapeFlag & 32) {
      const type = children._;
      if (type) {
        if (optimized && type === 1) {
          needDeletionCheck = false;
        } else {
          assignSlots(slots, children, optimized);
        }
      } else {
        needDeletionCheck = !children.$stable;
        normalizeObjectSlots(children, slots);
      }
      deletionComparisonTarget = children;
    } else if (children) {
      normalizeVNodeSlots(instance, children);
      deletionComparisonTarget = { default: 1 };
    }
    if (needDeletionCheck) {
      for (const key in slots) {
        if (!isInternalKey(key) && deletionComparisonTarget[key] == null) {
          delete slots[key];
        }
      }
    }
  };
  const queuePostRenderEffect = queueEffectWithSuspense;
  function createRenderer(options) {
    return baseCreateRenderer(options);
  }
  function baseCreateRenderer(options, createHydrationFns) {
    const target = getGlobalThis();
    target.__VUE__ = true;
    const {
      insert: hostInsert,
      remove: hostRemove,
      patchProp: hostPatchProp,
      createElement: hostCreateElement,
      createText: hostCreateText,
      createComment: hostCreateComment,
      setText: hostSetText,
      setElementText: hostSetElementText,
      parentNode: hostParentNode,
      nextSibling: hostNextSibling,
      setScopeId: hostSetScopeId = NOOP,
      insertStaticContent: hostInsertStaticContent
    } = options;
    const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = !!n2.dynamicChildren) => {
      if (n1 === n2) {
        return;
      }
      if (n1 && !isSameVNodeType(n1, n2)) {
        anchor = getNextHostNode(n1);
        unmount(n1, parentComponent, parentSuspense, true);
        n1 = null;
      }
      if (n2.patchFlag === -2) {
        optimized = false;
        n2.dynamicChildren = null;
      }
      const { type, ref: ref3, shapeFlag } = n2;
      switch (type) {
        case Text:
          processText(n1, n2, container, anchor);
          break;
        case Comment:
          processCommentNode(n1, n2, container, anchor);
          break;
        case Static:
          if (n1 == null) {
            mountStaticNode(n2, container, anchor, namespace);
          }
          break;
        case Fragment:
          processFragment(
            n1,
            n2,
            container,
            anchor,
            parentComponent,
            parentSuspense,
            namespace,
            slotScopeIds,
            optimized
          );
          break;
        default:
          if (shapeFlag & 1) {
            processElement(
              n1,
              n2,
              container,
              anchor,
              parentComponent,
              parentSuspense,
              namespace,
              slotScopeIds,
              optimized
            );
          } else if (shapeFlag & 6) {
            processComponent(
              n1,
              n2,
              container,
              anchor,
              parentComponent,
              parentSuspense,
              namespace,
              slotScopeIds,
              optimized
            );
          } else if (shapeFlag & 64) {
            type.process(
              n1,
              n2,
              container,
              anchor,
              parentComponent,
              parentSuspense,
              namespace,
              slotScopeIds,
              optimized,
              internals
            );
          } else if (shapeFlag & 128) {
            type.process(
              n1,
              n2,
              container,
              anchor,
              parentComponent,
              parentSuspense,
              namespace,
              slotScopeIds,
              optimized,
              internals
            );
          } else ;
      }
      if (ref3 != null && parentComponent) {
        setRef(ref3, n1 && n1.ref, parentSuspense, n2 || n1, !n2);
      } else if (ref3 == null && n1 && n1.ref != null) {
        setRef(n1.ref, null, parentSuspense, n1, true);
      }
    };
    const processText = (n1, n2, container, anchor) => {
      if (n1 == null) {
        hostInsert(
          n2.el = hostCreateText(n2.children),
          container,
          anchor
        );
      } else {
        const el = n2.el = n1.el;
        if (n2.children !== n1.children) {
          {
            hostSetText(el, n2.children);
          }
        }
      }
    };
    const processCommentNode = (n1, n2, container, anchor) => {
      if (n1 == null) {
        hostInsert(
          n2.el = hostCreateComment(n2.children || ""),
          container,
          anchor
        );
      } else {
        n2.el = n1.el;
      }
    };
    const mountStaticNode = (n2, container, anchor, namespace) => {
      [n2.el, n2.anchor] = hostInsertStaticContent(
        n2.children,
        container,
        anchor,
        namespace,
        n2.el,
        n2.anchor
      );
    };
    const moveStaticNode = ({ el, anchor }, container, nextSibling) => {
      let next;
      while (el && el !== anchor) {
        next = hostNextSibling(el);
        hostInsert(el, container, nextSibling);
        el = next;
      }
      hostInsert(anchor, container, nextSibling);
    };
    const removeStaticNode = ({ el, anchor }) => {
      let next;
      while (el && el !== anchor) {
        next = hostNextSibling(el);
        hostRemove(el);
        el = next;
      }
      hostRemove(anchor);
    };
    const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
      if (n2.type === "svg") {
        namespace = "svg";
      } else if (n2.type === "math") {
        namespace = "mathml";
      }
      if (n1 == null) {
        mountElement(
          n2,
          container,
          anchor,
          parentComponent,
          parentSuspense,
          namespace,
          slotScopeIds,
          optimized
        );
      } else {
        const customElement = !!(n1.el && n1.el._isVueCE) ? n1.el : null;
        try {
          if (customElement) {
            customElement._beginPatch();
          }
          patchElement(
            n1,
            n2,
            parentComponent,
            parentSuspense,
            namespace,
            slotScopeIds,
            optimized
          );
        } finally {
          if (customElement) {
            customElement._endPatch();
          }
        }
      }
    };
    const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
      let el;
      let vnodeHook;
      const { props: props2, shapeFlag, transition, dirs } = vnode;
      el = vnode.el = hostCreateElement(
        vnode.type,
        namespace,
        props2 && props2.is,
        props2
      );
      if (shapeFlag & 8) {
        hostSetElementText(el, vnode.children);
      } else if (shapeFlag & 16) {
        mountChildren(
          vnode.children,
          el,
          null,
          parentComponent,
          parentSuspense,
          resolveChildrenNamespace(vnode, namespace),
          slotScopeIds,
          optimized
        );
      }
      if (dirs) {
        invokeDirectiveHook(vnode, null, parentComponent, "created");
      }
      setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);
      if (props2) {
        for (const key in props2) {
          if (key !== "value" && !isReservedProp(key)) {
            hostPatchProp(el, key, null, props2[key], namespace, parentComponent);
          }
        }
        if ("value" in props2) {
          hostPatchProp(el, "value", null, props2.value, namespace);
        }
        if (vnodeHook = props2.onVnodeBeforeMount) {
          invokeVNodeHook(vnodeHook, parentComponent, vnode);
        }
      }
      if (dirs) {
        invokeDirectiveHook(vnode, null, parentComponent, "beforeMount");
      }
      const needCallTransitionHooks = needTransition(parentSuspense, transition);
      if (needCallTransitionHooks) {
        transition.beforeEnter(el);
      }
      hostInsert(el, container, anchor);
      if ((vnodeHook = props2 && props2.onVnodeMounted) || needCallTransitionHooks || dirs) {
        queuePostRenderEffect(() => {
          vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);
          needCallTransitionHooks && transition.enter(el);
          dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted");
        }, parentSuspense);
      }
    };
    const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {
      if (scopeId) {
        hostSetScopeId(el, scopeId);
      }
      if (slotScopeIds) {
        for (let i = 0; i < slotScopeIds.length; i++) {
          hostSetScopeId(el, slotScopeIds[i]);
        }
      }
      if (parentComponent) {
        let subTree = parentComponent.subTree;
        if (vnode === subTree || isSuspense(subTree.type) && (subTree.ssContent === vnode || subTree.ssFallback === vnode)) {
          const parentVNode = parentComponent.vnode;
          setScopeId(
            el,
            parentVNode,
            parentVNode.scopeId,
            parentVNode.slotScopeIds,
            parentComponent.parent
          );
        }
      }
    };
    const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => {
      for (let i = start; i < children.length; i++) {
        const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]);
        patch(
          null,
          child,
          container,
          anchor,
          parentComponent,
          parentSuspense,
          namespace,
          slotScopeIds,
          optimized
        );
      }
    };
    const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
      const el = n2.el = n1.el;
      let { patchFlag, dynamicChildren, dirs } = n2;
      patchFlag |= n1.patchFlag & 16;
      const oldProps = n1.props || EMPTY_OBJ;
      const newProps = n2.props || EMPTY_OBJ;
      let vnodeHook;
      parentComponent && toggleRecurse(parentComponent, false);
      if (vnodeHook = newProps.onVnodeBeforeUpdate) {
        invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
      }
      if (dirs) {
        invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate");
      }
      parentComponent && toggleRecurse(parentComponent, true);
      if (oldProps.innerHTML && newProps.innerHTML == null || oldProps.textContent && newProps.textContent == null) {
        hostSetElementText(el, "");
      }
      if (dynamicChildren) {
        patchBlockChildren(
          n1.dynamicChildren,
          dynamicChildren,
          el,
          parentComponent,
          parentSuspense,
          resolveChildrenNamespace(n2, namespace),
          slotScopeIds
        );
      } else if (!optimized) {
        patchChildren(
          n1,
          n2,
          el,
          null,
          parentComponent,
          parentSuspense,
          resolveChildrenNamespace(n2, namespace),
          slotScopeIds,
          false
        );
      }
      if (patchFlag > 0) {
        if (patchFlag & 16) {
          patchProps(el, oldProps, newProps, parentComponent, namespace);
        } else {
          if (patchFlag & 2) {
            if (oldProps.class !== newProps.class) {
              hostPatchProp(el, "class", null, newProps.class, namespace);
            }
          }
          if (patchFlag & 4) {
            hostPatchProp(el, "style", oldProps.style, newProps.style, namespace);
          }
          if (patchFlag & 8) {
            const propsToUpdate = n2.dynamicProps;
            for (let i = 0; i < propsToUpdate.length; i++) {
              const key = propsToUpdate[i];
              const prev = oldProps[key];
              const next = newProps[key];
              if (next !== prev || key === "value") {
                hostPatchProp(el, key, prev, next, namespace, parentComponent);
              }
            }
          }
        }
        if (patchFlag & 1) {
          if (n1.children !== n2.children) {
            hostSetElementText(el, n2.children);
          }
        }
      } else if (!optimized && dynamicChildren == null) {
        patchProps(el, oldProps, newProps, parentComponent, namespace);
      }
      if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {
        queuePostRenderEffect(() => {
          vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
          dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated");
        }, parentSuspense);
      }
    };
    const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => {
      for (let i = 0; i < newChildren.length; i++) {
        const oldVNode = oldChildren[i];
        const newVNode = newChildren[i];
        const container = (
          // oldVNode may be an errored async setup() component inside Suspense
          // which will not have a mounted element
          oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent
          // of the Fragment itself so it can move its children.
          (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement
          // which also requires the correct parent container
          !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.
          oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldVNode.el) : (
            // In other cases, the parent container is not actually used so we
            // just pass the block element here to avoid a DOM parentNode call.
            fallbackContainer
          )
        );
        patch(
          oldVNode,
          newVNode,
          container,
          null,
          parentComponent,
          parentSuspense,
          namespace,
          slotScopeIds,
          true
        );
      }
    };
    const patchProps = (el, oldProps, newProps, parentComponent, namespace) => {
      if (oldProps !== newProps) {
        if (oldProps !== EMPTY_OBJ) {
          for (const key in oldProps) {
            if (!isReservedProp(key) && !(key in newProps)) {
              hostPatchProp(
                el,
                key,
                oldProps[key],
                null,
                namespace,
                parentComponent
              );
            }
          }
        }
        for (const key in newProps) {
          if (isReservedProp(key)) continue;
          const next = newProps[key];
          const prev = oldProps[key];
          if (next !== prev && key !== "value") {
            hostPatchProp(el, key, prev, next, namespace, parentComponent);
          }
        }
        if ("value" in newProps) {
          hostPatchProp(el, "value", oldProps.value, newProps.value, namespace);
        }
      }
    };
    const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
      const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText("");
      const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText("");
      let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;
      if (fragmentSlotScopeIds) {
        slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;
      }
      if (n1 == null) {
        hostInsert(fragmentStartAnchor, container, anchor);
        hostInsert(fragmentEndAnchor, container, anchor);
        mountChildren(
          // #10007
          // such fragment like `<></>` will be compiled into
          // a fragment which doesn't have a children.
          // In this case fallback to an empty array
          n2.children || [],
          container,
          fragmentEndAnchor,
          parentComponent,
          parentSuspense,
          namespace,
          slotScopeIds,
          optimized
        );
      } else {
        if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result
        // of renderSlot() with no valid children
        n1.dynamicChildren && n1.dynamicChildren.length === dynamicChildren.length) {
          patchBlockChildren(
            n1.dynamicChildren,
            dynamicChildren,
            container,
            parentComponent,
            parentSuspense,
            namespace,
            slotScopeIds
          );
          if (
            // #2080 if the stable fragment has a key, it's a <template v-for> that may
            //  get moved around. Make sure all root level vnodes inherit el.
            // #2134 or if it's a component root, it may also get moved around
            // as the component is being moved.
            n2.key != null || parentComponent && n2 === parentComponent.subTree
          ) {
            traverseStaticChildren(
              n1,
              n2,
              true
              /* shallow */
            );
          }
        } else {
          patchChildren(
            n1,
            n2,
            container,
            fragmentEndAnchor,
            parentComponent,
            parentSuspense,
            namespace,
            slotScopeIds,
            optimized
          );
        }
      }
    };
    const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
      n2.slotScopeIds = slotScopeIds;
      if (n1 == null) {
        if (n2.shapeFlag & 512) {
          parentComponent.ctx.activate(
            n2,
            container,
            anchor,
            namespace,
            optimized
          );
        } else {
          mountComponent(
            n2,
            container,
            anchor,
            parentComponent,
            parentSuspense,
            namespace,
            optimized
          );
        }
      } else {
        updateComponent(n1, n2, optimized);
      }
    };
    const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => {
      const instance = initialVNode.component = createComponentInstance(
        initialVNode,
        parentComponent,
        parentSuspense
      );
      if (isKeepAlive(initialVNode)) {
        instance.ctx.renderer = internals;
      }
      {
        setupComponent(instance, false, optimized);
      }
      if (instance.asyncDep) {
        parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect, optimized);
        if (!initialVNode.el) {
          const placeholder = instance.subTree = createVNode(Comment);
          processCommentNode(null, placeholder, container, anchor);
          initialVNode.placeholder = placeholder.el;
        }
      } else {
        setupRenderEffect(
          instance,
          initialVNode,
          container,
          anchor,
          parentSuspense,
          namespace,
          optimized
        );
      }
    };
    const updateComponent = (n1, n2, optimized) => {
      const instance = n2.component = n1.component;
      if (shouldUpdateComponent(n1, n2, optimized)) {
        if (instance.asyncDep && !instance.asyncResolved) {
          updateComponentPreRender(instance, n2, optimized);
          return;
        } else {
          instance.next = n2;
          instance.update();
        }
      } else {
        n2.el = n1.el;
        instance.vnode = n2;
      }
    };
    const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => {
      const componentUpdateFn = () => {
        if (!instance.isMounted) {
          let vnodeHook;
          const { el, props: props2 } = initialVNode;
          const { bm, m: m2, parent: parent2, root: root2, type } = instance;
          const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);
          toggleRecurse(instance, false);
          if (bm) {
            invokeArrayFns(bm);
          }
          if (!isAsyncWrapperVNode && (vnodeHook = props2 && props2.onVnodeBeforeMount)) {
            invokeVNodeHook(vnodeHook, parent2, initialVNode);
          }
          toggleRecurse(instance, true);
          {
            if (root2.ce && // @ts-expect-error _def is private
            root2.ce._def.shadowRoot !== false) {
              root2.ce._injectChildStyle(type);
            }
            const subTree = instance.subTree = renderComponentRoot(instance);
            patch(
              null,
              subTree,
              container,
              anchor,
              instance,
              parentSuspense,
              namespace
            );
            initialVNode.el = subTree.el;
          }
          if (m2) {
            queuePostRenderEffect(m2, parentSuspense);
          }
          if (!isAsyncWrapperVNode && (vnodeHook = props2 && props2.onVnodeMounted)) {
            const scopedInitialVNode = initialVNode;
            queuePostRenderEffect(
              () => invokeVNodeHook(vnodeHook, parent2, scopedInitialVNode),
              parentSuspense
            );
          }
          if (initialVNode.shapeFlag & 256 || parent2 && isAsyncWrapper(parent2.vnode) && parent2.vnode.shapeFlag & 256) {
            instance.a && queuePostRenderEffect(instance.a, parentSuspense);
          }
          instance.isMounted = true;
          initialVNode = container = anchor = null;
        } else {
          let { next, bu, u: u2, parent: parent2, vnode } = instance;
          {
            const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance);
            if (nonHydratedAsyncRoot) {
              if (next) {
                next.el = vnode.el;
                updateComponentPreRender(instance, next, optimized);
              }
              nonHydratedAsyncRoot.asyncDep.then(() => {
                if (!instance.isUnmounted) {
                  componentUpdateFn();
                }
              });
              return;
            }
          }
          let originNext = next;
          let vnodeHook;
          toggleRecurse(instance, false);
          if (next) {
            next.el = vnode.el;
            updateComponentPreRender(instance, next, optimized);
          } else {
            next = vnode;
          }
          if (bu) {
            invokeArrayFns(bu);
          }
          if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) {
            invokeVNodeHook(vnodeHook, parent2, next, vnode);
          }
          toggleRecurse(instance, true);
          const nextTree = renderComponentRoot(instance);
          const prevTree = instance.subTree;
          instance.subTree = nextTree;
          patch(
            prevTree,
            nextTree,
            // parent may have changed if it's in a teleport
            hostParentNode(prevTree.el),
            // anchor may have changed if it's in a fragment
            getNextHostNode(prevTree),
            instance,
            parentSuspense,
            namespace
          );
          next.el = nextTree.el;
          if (originNext === null) {
            updateHOCHostEl(instance, nextTree.el);
          }
          if (u2) {
            queuePostRenderEffect(u2, parentSuspense);
          }
          if (vnodeHook = next.props && next.props.onVnodeUpdated) {
            queuePostRenderEffect(
              () => invokeVNodeHook(vnodeHook, parent2, next, vnode),
              parentSuspense
            );
          }
        }
      };
      instance.scope.on();
      const effect2 = instance.effect = new ReactiveEffect(componentUpdateFn);
      instance.scope.off();
      const update = instance.update = effect2.run.bind(effect2);
      const job = instance.job = effect2.runIfDirty.bind(effect2);
      job.i = instance;
      job.id = instance.uid;
      effect2.scheduler = () => queueJob(job);
      toggleRecurse(instance, true);
      update();
    };
    const updateComponentPreRender = (instance, nextVNode, optimized) => {
      nextVNode.component = instance;
      const prevProps = instance.vnode.props;
      instance.vnode = nextVNode;
      instance.next = null;
      updateProps(instance, nextVNode.props, prevProps, optimized);
      updateSlots(instance, nextVNode.children, optimized);
      pauseTracking();
      flushPreFlushCbs(instance);
      resetTracking();
    };
    const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized = false) => {
      const c1 = n1 && n1.children;
      const prevShapeFlag = n1 ? n1.shapeFlag : 0;
      const c2 = n2.children;
      const { patchFlag, shapeFlag } = n2;
      if (patchFlag > 0) {
        if (patchFlag & 128) {
          patchKeyedChildren(
            c1,
            c2,
            container,
            anchor,
            parentComponent,
            parentSuspense,
            namespace,
            slotScopeIds,
            optimized
          );
          return;
        } else if (patchFlag & 256) {
          patchUnkeyedChildren(
            c1,
            c2,
            container,
            anchor,
            parentComponent,
            parentSuspense,
            namespace,
            slotScopeIds,
            optimized
          );
          return;
        }
      }
      if (shapeFlag & 8) {
        if (prevShapeFlag & 16) {
          unmountChildren(c1, parentComponent, parentSuspense);
        }
        if (c2 !== c1) {
          hostSetElementText(container, c2);
        }
      } else {
        if (prevShapeFlag & 16) {
          if (shapeFlag & 16) {
            patchKeyedChildren(
              c1,
              c2,
              container,
              anchor,
              parentComponent,
              parentSuspense,
              namespace,
              slotScopeIds,
              optimized
            );
          } else {
            unmountChildren(c1, parentComponent, parentSuspense, true);
          }
        } else {
          if (prevShapeFlag & 8) {
            hostSetElementText(container, "");
          }
          if (shapeFlag & 16) {
            mountChildren(
              c2,
              container,
              anchor,
              parentComponent,
              parentSuspense,
              namespace,
              slotScopeIds,
              optimized
            );
          }
        }
      }
    };
    const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
      c1 = c1 || EMPTY_ARR;
      c2 = c2 || EMPTY_ARR;
      const oldLength = c1.length;
      const newLength = c2.length;
      const commonLength = Math.min(oldLength, newLength);
      let i;
      for (i = 0; i < commonLength; i++) {
        const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);
        patch(
          c1[i],
          nextChild,
          container,
          null,
          parentComponent,
          parentSuspense,
          namespace,
          slotScopeIds,
          optimized
        );
      }
      if (oldLength > newLength) {
        unmountChildren(
          c1,
          parentComponent,
          parentSuspense,
          true,
          false,
          commonLength
        );
      } else {
        mountChildren(
          c2,
          container,
          anchor,
          parentComponent,
          parentSuspense,
          namespace,
          slotScopeIds,
          optimized,
          commonLength
        );
      }
    };
    const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
      let i = 0;
      const l2 = c2.length;
      let e1 = c1.length - 1;
      let e2 = l2 - 1;
      while (i <= e1 && i <= e2) {
        const n1 = c1[i];
        const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);
        if (isSameVNodeType(n1, n2)) {
          patch(
            n1,
            n2,
            container,
            null,
            parentComponent,
            parentSuspense,
            namespace,
            slotScopeIds,
            optimized
          );
        } else {
          break;
        }
        i++;
      }
      while (i <= e1 && i <= e2) {
        const n1 = c1[e1];
        const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]);
        if (isSameVNodeType(n1, n2)) {
          patch(
            n1,
            n2,
            container,
            null,
            parentComponent,
            parentSuspense,
            namespace,
            slotScopeIds,
            optimized
          );
        } else {
          break;
        }
        e1--;
        e2--;
      }
      if (i > e1) {
        if (i <= e2) {
          const nextPos = e2 + 1;
          const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;
          while (i <= e2) {
            patch(
              null,
              c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]),
              container,
              anchor,
              parentComponent,
              parentSuspense,
              namespace,
              slotScopeIds,
              optimized
            );
            i++;
          }
        }
      } else if (i > e2) {
        while (i <= e1) {
          unmount(c1[i], parentComponent, parentSuspense, true);
          i++;
        }
      } else {
        const s1 = i;
        const s2 = i;
        const keyToNewIndexMap = /* @__PURE__ */ new Map();
        for (i = s2; i <= e2; i++) {
          const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);
          if (nextChild.key != null) {
            keyToNewIndexMap.set(nextChild.key, i);
          }
        }
        let j;
        let patched = 0;
        const toBePatched = e2 - s2 + 1;
        let moved = false;
        let maxNewIndexSoFar = 0;
        const newIndexToOldIndexMap = new Array(toBePatched);
        for (i = 0; i < toBePatched; i++) newIndexToOldIndexMap[i] = 0;
        for (i = s1; i <= e1; i++) {
          const prevChild = c1[i];
          if (patched >= toBePatched) {
            unmount(prevChild, parentComponent, parentSuspense, true);
            continue;
          }
          let newIndex;
          if (prevChild.key != null) {
            newIndex = keyToNewIndexMap.get(prevChild.key);
          } else {
            for (j = s2; j <= e2; j++) {
              if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) {
                newIndex = j;
                break;
              }
            }
          }
          if (newIndex === void 0) {
            unmount(prevChild, parentComponent, parentSuspense, true);
          } else {
            newIndexToOldIndexMap[newIndex - s2] = i + 1;
            if (newIndex >= maxNewIndexSoFar) {
              maxNewIndexSoFar = newIndex;
            } else {
              moved = true;
            }
            patch(
              prevChild,
              c2[newIndex],
              container,
              null,
              parentComponent,
              parentSuspense,
              namespace,
              slotScopeIds,
              optimized
            );
            patched++;
          }
        }
        const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR;
        j = increasingNewIndexSequence.length - 1;
        for (i = toBePatched - 1; i >= 0; i--) {
          const nextIndex = s2 + i;
          const nextChild = c2[nextIndex];
          const anchorVNode = c2[nextIndex + 1];
          const anchor = nextIndex + 1 < l2 ? (
            // #13559, #14173 fallback to el placeholder for unresolved async component
            anchorVNode.el || resolveAsyncComponentPlaceholder(anchorVNode)
          ) : parentAnchor;
          if (newIndexToOldIndexMap[i] === 0) {
            patch(
              null,
              nextChild,
              container,
              anchor,
              parentComponent,
              parentSuspense,
              namespace,
              slotScopeIds,
              optimized
            );
          } else if (moved) {
            if (j < 0 || i !== increasingNewIndexSequence[j]) {
              move(nextChild, container, anchor, 2);
            } else {
              j--;
            }
          }
        }
      }
    };
    const move = (vnode, container, anchor, moveType, parentSuspense = null) => {
      const { el, type, transition, children, shapeFlag } = vnode;
      if (shapeFlag & 6) {
        move(vnode.component.subTree, container, anchor, moveType);
        return;
      }
      if (shapeFlag & 128) {
        vnode.suspense.move(container, anchor, moveType);
        return;
      }
      if (shapeFlag & 64) {
        type.move(vnode, container, anchor, internals);
        return;
      }
      if (type === Fragment) {
        hostInsert(el, container, anchor);
        for (let i = 0; i < children.length; i++) {
          move(children[i], container, anchor, moveType);
        }
        hostInsert(vnode.anchor, container, anchor);
        return;
      }
      if (type === Static) {
        moveStaticNode(vnode, container, anchor);
        return;
      }
      const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition;
      if (needTransition2) {
        if (moveType === 0) {
          transition.beforeEnter(el);
          hostInsert(el, container, anchor);
          queuePostRenderEffect(() => transition.enter(el), parentSuspense);
        } else {
          const { leave, delayLeave, afterLeave } = transition;
          const remove22 = () => {
            if (vnode.ctx.isUnmounted) {
              hostRemove(el);
            } else {
              hostInsert(el, container, anchor);
            }
          };
          const performLeave = () => {
            if (el._isLeaving) {
              el[leaveCbKey](
                true
                /* cancelled */
              );
            }
            leave(el, () => {
              remove22();
              afterLeave && afterLeave();
            });
          };
          if (delayLeave) {
            delayLeave(el, remove22, performLeave);
          } else {
            performLeave();
          }
        }
      } else {
        hostInsert(el, container, anchor);
      }
    };
    const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {
      const {
        type,
        props: props2,
        ref: ref3,
        children,
        dynamicChildren,
        shapeFlag,
        patchFlag,
        dirs,
        cacheIndex
      } = vnode;
      if (patchFlag === -2) {
        optimized = false;
      }
      if (ref3 != null) {
        pauseTracking();
        setRef(ref3, null, parentSuspense, vnode, true);
        resetTracking();
      }
      if (cacheIndex != null) {
        parentComponent.renderCache[cacheIndex] = void 0;
      }
      if (shapeFlag & 256) {
        parentComponent.ctx.deactivate(vnode);
        return;
      }
      const shouldInvokeDirs = shapeFlag & 1 && dirs;
      const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);
      let vnodeHook;
      if (shouldInvokeVnodeHook && (vnodeHook = props2 && props2.onVnodeBeforeUnmount)) {
        invokeVNodeHook(vnodeHook, parentComponent, vnode);
      }
      if (shapeFlag & 6) {
        unmountComponent(vnode.component, parentSuspense, doRemove);
      } else {
        if (shapeFlag & 128) {
          vnode.suspense.unmount(parentSuspense, doRemove);
          return;
        }
        if (shouldInvokeDirs) {
          invokeDirectiveHook(vnode, null, parentComponent, "beforeUnmount");
        }
        if (shapeFlag & 64) {
          vnode.type.remove(
            vnode,
            parentComponent,
            parentSuspense,
            internals,
            doRemove
          );
        } else if (dynamicChildren && // #5154
        // when v-once is used inside a block, setBlockTracking(-1) marks the
        // parent block with hasOnce: true
        // so that it doesn't take the fast path during unmount - otherwise
        // components nested in v-once are never unmounted.
        !dynamicChildren.hasOnce && // #1153: fast path should not be taken for non-stable (v-for) fragments
        (type !== Fragment || patchFlag > 0 && patchFlag & 64)) {
          unmountChildren(
            dynamicChildren,
            parentComponent,
            parentSuspense,
            false,
            true
          );
        } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) {
          unmountChildren(children, parentComponent, parentSuspense);
        }
        if (doRemove) {
          remove2(vnode);
        }
      }
      if (shouldInvokeVnodeHook && (vnodeHook = props2 && props2.onVnodeUnmounted) || shouldInvokeDirs) {
        queuePostRenderEffect(() => {
          vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);
          shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, "unmounted");
        }, parentSuspense);
      }
    };
    const remove2 = (vnode) => {
      const { type, el, anchor, transition } = vnode;
      if (type === Fragment) {
        {
          removeFragment(el, anchor);
        }
        return;
      }
      if (type === Static) {
        removeStaticNode(vnode);
        return;
      }
      const performRemove = () => {
        hostRemove(el);
        if (transition && !transition.persisted && transition.afterLeave) {
          transition.afterLeave();
        }
      };
      if (vnode.shapeFlag & 1 && transition && !transition.persisted) {
        const { leave, delayLeave } = transition;
        const performLeave = () => leave(el, performRemove);
        if (delayLeave) {
          delayLeave(vnode.el, performRemove, performLeave);
        } else {
          performLeave();
        }
      } else {
        performRemove();
      }
    };
    const removeFragment = (cur, end) => {
      let next;
      while (cur !== end) {
        next = hostNextSibling(cur);
        hostRemove(cur);
        cur = next;
      }
      hostRemove(end);
    };
    const unmountComponent = (instance, parentSuspense, doRemove) => {
      const { bum, scope, job, subTree, um, m: m2, a: a2 } = instance;
      invalidateMount(m2);
      invalidateMount(a2);
      if (bum) {
        invokeArrayFns(bum);
      }
      scope.stop();
      if (job) {
        job.flags |= 8;
        unmount(subTree, instance, parentSuspense, doRemove);
      }
      if (um) {
        queuePostRenderEffect(um, parentSuspense);
      }
      queuePostRenderEffect(() => {
        instance.isUnmounted = true;
      }, parentSuspense);
    };
    const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {
      for (let i = start; i < children.length; i++) {
        unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);
      }
    };
    const getNextHostNode = (vnode) => {
      if (vnode.shapeFlag & 6) {
        return getNextHostNode(vnode.component.subTree);
      }
      if (vnode.shapeFlag & 128) {
        return vnode.suspense.next();
      }
      const el = hostNextSibling(vnode.anchor || vnode.el);
      const teleportEnd = el && el[TeleportEndKey];
      return teleportEnd ? hostNextSibling(teleportEnd) : el;
    };
    let isFlushing = false;
    const render2 = (vnode, container, namespace) => {
      let instance;
      if (vnode == null) {
        if (container._vnode) {
          unmount(container._vnode, null, null, true);
          instance = container._vnode.component;
        }
      } else {
        patch(
          container._vnode || null,
          vnode,
          container,
          null,
          null,
          null,
          namespace
        );
      }
      container._vnode = vnode;
      if (!isFlushing) {
        isFlushing = true;
        flushPreFlushCbs(instance);
        flushPostFlushCbs();
        isFlushing = false;
      }
    };
    const internals = {
      p: patch,
      um: unmount,
      m: move,
      r: remove2,
      mt: mountComponent,
      mc: mountChildren,
      pc: patchChildren,
      pbc: patchBlockChildren,
      n: getNextHostNode,
      o: options
    };
    let hydrate;
    return {
      render: render2,
      hydrate,
      createApp: createAppAPI(render2)
    };
  }
  function resolveChildrenNamespace({ type, props: props2 }, currentNamespace) {
    return currentNamespace === "svg" && type === "foreignObject" || currentNamespace === "mathml" && type === "annotation-xml" && props2 && props2.encoding && props2.encoding.includes("html") ? void 0 : currentNamespace;
  }
  function toggleRecurse({ effect: effect2, job }, allowed) {
    if (allowed) {
      effect2.flags |= 32;
      job.flags |= 4;
    } else {
      effect2.flags &= -33;
      job.flags &= -5;
    }
  }
  function needTransition(parentSuspense, transition) {
    return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted;
  }
  function traverseStaticChildren(n1, n2, shallow = false) {
    const ch1 = n1.children;
    const ch2 = n2.children;
    if (isArray$1(ch1) && isArray$1(ch2)) {
      for (let i = 0; i < ch1.length; i++) {
        const c1 = ch1[i];
        let c2 = ch2[i];
        if (c2.shapeFlag & 1 && !c2.dynamicChildren) {
          if (c2.patchFlag <= 0 || c2.patchFlag === 32) {
            c2 = ch2[i] = cloneIfMounted(ch2[i]);
            c2.el = c1.el;
          }
          if (!shallow && c2.patchFlag !== -2)
            traverseStaticChildren(c1, c2);
        }
        if (c2.type === Text) {
          if (c2.patchFlag !== -1) {
            c2.el = c1.el;
          } else {
            c2.__elIndex = i + // take fragment start anchor into account
            (n1.type === Fragment ? 1 : 0);
          }
        }
        if (c2.type === Comment && !c2.el) {
          c2.el = c1.el;
        }
      }
    }
  }
  function getSequence(arr) {
    const p2 = arr.slice();
    const result = [0];
    let i, j, u2, v2, c2;
    const len = arr.length;
    for (i = 0; i < len; i++) {
      const arrI = arr[i];
      if (arrI !== 0) {
        j = result[result.length - 1];
        if (arr[j] < arrI) {
          p2[i] = j;
          result.push(i);
          continue;
        }
        u2 = 0;
        v2 = result.length - 1;
        while (u2 < v2) {
          c2 = u2 + v2 >> 1;
          if (arr[result[c2]] < arrI) {
            u2 = c2 + 1;
          } else {
            v2 = c2;
          }
        }
        if (arrI < arr[result[u2]]) {
          if (u2 > 0) {
            p2[i] = result[u2 - 1];
          }
          result[u2] = i;
        }
      }
    }
    u2 = result.length;
    v2 = result[u2 - 1];
    while (u2-- > 0) {
      result[u2] = v2;
      v2 = p2[v2];
    }
    return result;
  }
  function locateNonHydratedAsyncRoot(instance) {
    const subComponent = instance.subTree.component;
    if (subComponent) {
      if (subComponent.asyncDep && !subComponent.asyncResolved) {
        return subComponent;
      } else {
        return locateNonHydratedAsyncRoot(subComponent);
      }
    }
  }
  function invalidateMount(hooks) {
    if (hooks) {
      for (let i = 0; i < hooks.length; i++)
        hooks[i].flags |= 8;
    }
  }
  function resolveAsyncComponentPlaceholder(anchorVnode) {
    if (anchorVnode.placeholder) {
      return anchorVnode.placeholder;
    }
    const instance = anchorVnode.component;
    if (instance) {
      return resolveAsyncComponentPlaceholder(instance.subTree);
    }
    return null;
  }
  const isSuspense = (type) => type.__isSuspense;
  function queueEffectWithSuspense(fn2, suspense) {
    if (suspense && suspense.pendingBranch) {
      if (isArray$1(fn2)) {
        suspense.effects.push(...fn2);
      } else {
        suspense.effects.push(fn2);
      }
    } else {
      queuePostFlushCb(fn2);
    }
  }
  const Fragment = /* @__PURE__ */ Symbol.for("v-fgt");
  const Text = /* @__PURE__ */ Symbol.for("v-txt");
  const Comment = /* @__PURE__ */ Symbol.for("v-cmt");
  const Static = /* @__PURE__ */ Symbol.for("v-stc");
  const blockStack = [];
  let currentBlock = null;
  function openBlock(disableTracking = false) {
    blockStack.push(currentBlock = disableTracking ? null : []);
  }
  function closeBlock() {
    blockStack.pop();
    currentBlock = blockStack[blockStack.length - 1] || null;
  }
  let isBlockTreeEnabled = 1;
  function setBlockTracking(value, inVOnce = false) {
    isBlockTreeEnabled += value;
    if (value < 0 && currentBlock && inVOnce) {
      currentBlock.hasOnce = true;
    }
  }
  function setupBlock(vnode) {
    vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;
    closeBlock();
    if (isBlockTreeEnabled > 0 && currentBlock) {
      currentBlock.push(vnode);
    }
    return vnode;
  }
  function createElementBlock(type, props2, children, patchFlag, dynamicProps, shapeFlag) {
    return setupBlock(
      createBaseVNode(
        type,
        props2,
        children,
        patchFlag,
        dynamicProps,
        shapeFlag,
        true
      )
    );
  }
  function createBlock(type, props2, children, patchFlag, dynamicProps) {
    return setupBlock(
      createVNode(
        type,
        props2,
        children,
        patchFlag,
        dynamicProps,
        true
      )
    );
  }
  function isVNode(value) {
    return value ? value.__v_isVNode === true : false;
  }
  function isSameVNodeType(n1, n2) {
    return n1.type === n2.type && n1.key === n2.key;
  }
  const normalizeKey = ({ key }) => key != null ? key : null;
  const normalizeRef = ({
    ref: ref3,
    ref_key,
    ref_for
  }) => {
    if (typeof ref3 === "number") {
      ref3 = "" + ref3;
    }
    return ref3 != null ? isString(ref3) || isRef(ref3) || isFunction$1(ref3) ? { i: currentRenderingInstance, r: ref3, k: ref_key, f: !!ref_for } : ref3 : null;
  };
  function createBaseVNode(type, props2 = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {
    const vnode = {
      __v_isVNode: true,
      __v_skip: true,
      type,
      props: props2,
      key: props2 && normalizeKey(props2),
      ref: props2 && normalizeRef(props2),
      scopeId: currentScopeId,
      slotScopeIds: null,
      children,
      component: null,
      suspense: null,
      ssContent: null,
      ssFallback: null,
      dirs: null,
      transition: null,
      el: null,
      anchor: null,
      target: null,
      targetStart: null,
      targetAnchor: null,
      staticCount: 0,
      shapeFlag,
      patchFlag,
      dynamicProps,
      dynamicChildren: null,
      appContext: null,
      ctx: currentRenderingInstance
    };
    if (needFullChildrenNormalization) {
      normalizeChildren(vnode, children);
      if (shapeFlag & 128) {
        type.normalize(vnode);
      }
    } else if (children) {
      vnode.shapeFlag |= isString(children) ? 8 : 16;
    }
    if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself
    !isBlockNode && // has current parent block
    currentBlock && // presence of a patch flag indicates this node needs patching on updates.
    // component nodes also should always be patched, because even if the
    // component doesn't need to update, it needs to persist the instance on to
    // the next vnode so that it can be properly unmounted later.
    (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the
    // vnode should not be considered dynamic due to handler caching.
    vnode.patchFlag !== 32) {
      currentBlock.push(vnode);
    }
    return vnode;
  }
  const createVNode = _createVNode;
  function _createVNode(type, props2 = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {
    if (!type || type === NULL_DYNAMIC_COMPONENT) {
      type = Comment;
    }
    if (isVNode(type)) {
      const cloned = cloneVNode(
        type,
        props2,
        true
        /* mergeRef: true */
      );
      if (children) {
        normalizeChildren(cloned, children);
      }
      if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {
        if (cloned.shapeFlag & 6) {
          currentBlock[currentBlock.indexOf(type)] = cloned;
        } else {
          currentBlock.push(cloned);
        }
      }
      cloned.patchFlag = -2;
      return cloned;
    }
    if (isClassComponent(type)) {
      type = type.__vccOpts;
    }
    if (props2) {
      props2 = guardReactiveProps(props2);
      let { class: klass, style } = props2;
      if (klass && !isString(klass)) {
        props2.class = normalizeClass(klass);
      }
      if (isObject$2(style)) {
        if (isProxy(style) && !isArray$1(style)) {
          style = extend({}, style);
        }
        props2.style = normalizeStyle(style);
      }
    }
    const shapeFlag = isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject$2(type) ? 4 : isFunction$1(type) ? 2 : 0;
    return createBaseVNode(
      type,
      props2,
      children,
      patchFlag,
      dynamicProps,
      shapeFlag,
      isBlockNode,
      true
    );
  }
  function guardReactiveProps(props2) {
    if (!props2) return null;
    return isProxy(props2) || isInternalObject(props2) ? extend({}, props2) : props2;
  }
  function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false) {
    const { props: props2, ref: ref3, patchFlag, children, transition } = vnode;
    const mergedProps = extraProps ? mergeProps(props2 || {}, extraProps) : props2;
    const cloned = {
      __v_isVNode: true,
      __v_skip: true,
      type: vnode.type,
      props: mergedProps,
      key: mergedProps && normalizeKey(mergedProps),
      ref: extraProps && extraProps.ref ? (
        // #2078 in the case of <component :is="vnode" ref="extra"/>
        // if the vnode itself already has a ref, cloneVNode will need to merge
        // the refs so the single vnode can be set on multiple refs
        mergeRef && ref3 ? isArray$1(ref3) ? ref3.concat(normalizeRef(extraProps)) : [ref3, normalizeRef(extraProps)] : normalizeRef(extraProps)
      ) : ref3,
      scopeId: vnode.scopeId,
      slotScopeIds: vnode.slotScopeIds,
      children,
      target: vnode.target,
      targetStart: vnode.targetStart,
      targetAnchor: vnode.targetAnchor,
      staticCount: vnode.staticCount,
      shapeFlag: vnode.shapeFlag,
      // if the vnode is cloned with extra props, we can no longer assume its
      // existing patch flag to be reliable and need to add the FULL_PROPS flag.
      // note: preserve flag for fragments since they use the flag for children
      // fast paths only.
      patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag,
      dynamicProps: vnode.dynamicProps,
      dynamicChildren: vnode.dynamicChildren,
      appContext: vnode.appContext,
      dirs: vnode.dirs,
      transition,
      // These should technically only be non-null on mounted VNodes. However,
      // they *should* be copied for kept-alive vnodes. So we just always copy
      // them since them being non-null during a mount doesn't affect the logic as
      // they will simply be overwritten.
      component: vnode.component,
      suspense: vnode.suspense,
      ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),
      ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),
      placeholder: vnode.placeholder,
      el: vnode.el,
      anchor: vnode.anchor,
      ctx: vnode.ctx,
      ce: vnode.ce
    };
    if (transition && cloneTransition) {
      setTransitionHooks(
        cloned,
        transition.clone(cloned)
      );
    }
    return cloned;
  }
  function createTextVNode(text = " ", flag = 0) {
    return createVNode(Text, null, text, flag);
  }
  function createCommentVNode(text = "", asBlock = false) {
    return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text);
  }
  function normalizeVNode(child) {
    if (child == null || typeof child === "boolean") {
      return createVNode(Comment);
    } else if (isArray$1(child)) {
      return createVNode(
        Fragment,
        null,
        // #3666, avoid reference pollution when reusing vnode
        child.slice()
      );
    } else if (isVNode(child)) {
      return cloneIfMounted(child);
    } else {
      return createVNode(Text, null, String(child));
    }
  }
  function cloneIfMounted(child) {
    return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child);
  }
  function normalizeChildren(vnode, children) {
    let type = 0;
    const { shapeFlag } = vnode;
    if (children == null) {
      children = null;
    } else if (isArray$1(children)) {
      type = 16;
    } else if (typeof children === "object") {
      if (shapeFlag & (1 | 64)) {
        const slot = children.default;
        if (slot) {
          slot._c && (slot._d = false);
          normalizeChildren(vnode, slot());
          slot._c && (slot._d = true);
        }
        return;
      } else {
        type = 32;
        const slotFlag = children._;
        if (!slotFlag && !isInternalObject(children)) {
          children._ctx = currentRenderingInstance;
        } else if (slotFlag === 3 && currentRenderingInstance) {
          if (currentRenderingInstance.slots._ === 1) {
            children._ = 1;
          } else {
            children._ = 2;
            vnode.patchFlag |= 1024;
          }
        }
      }
    } else if (isFunction$1(children)) {
      children = { default: children, _ctx: currentRenderingInstance };
      type = 32;
    } else {
      children = String(children);
      if (shapeFlag & 64) {
        type = 16;
        children = [createTextVNode(children)];
      } else {
        type = 8;
      }
    }
    vnode.children = children;
    vnode.shapeFlag |= type;
  }
  function mergeProps(...args) {
    const ret = {};
    for (let i = 0; i < args.length; i++) {
      const toMerge = args[i];
      for (const key in toMerge) {
        if (key === "class") {
          if (ret.class !== toMerge.class) {
            ret.class = normalizeClass([ret.class, toMerge.class]);
          }
        } else if (key === "style") {
          ret.style = normalizeStyle([ret.style, toMerge.style]);
        } else if (isOn(key)) {
          const existing = ret[key];
          const incoming = toMerge[key];
          if (incoming && existing !== incoming && !(isArray$1(existing) && existing.includes(incoming))) {
            ret[key] = existing ? [].concat(existing, incoming) : incoming;
          }
        } else if (key !== "") {
          ret[key] = toMerge[key];
        }
      }
    }
    return ret;
  }
  function invokeVNodeHook(hook, instance, vnode, prevVNode = null) {
    callWithAsyncErrorHandling(hook, instance, 7, [
      vnode,
      prevVNode
    ]);
  }
  const emptyAppContext = createAppContext();
  let uid$2 = 0;
  function createComponentInstance(vnode, parent2, suspense) {
    const type = vnode.type;
    const appContext = (parent2 ? parent2.appContext : vnode.appContext) || emptyAppContext;
    const instance = {
      uid: uid$2++,
      vnode,
      type,
      parent: parent2,
      appContext,
      root: null,
      // to be immediately set
      next: null,
      subTree: null,
      // will be set synchronously right after creation
      effect: null,
      update: null,
      // will be set synchronously right after creation
      job: null,
      scope: new EffectScope(
        true
        /* detached */
      ),
      render: null,
      proxy: null,
      exposed: null,
      exposeProxy: null,
      withProxy: null,
      provides: parent2 ? parent2.provides : Object.create(appContext.provides),
      ids: parent2 ? parent2.ids : ["", 0, 0],
      accessCache: null,
      renderCache: [],
      // local resolved assets
      components: null,
      directives: null,
      // resolved props and emits options
      propsOptions: normalizePropsOptions(type, appContext),
      emitsOptions: normalizeEmitsOptions(type, appContext),
      // emit
      emit: null,
      // to be set immediately
      emitted: null,
      // props default value
      propsDefaults: EMPTY_OBJ,
      // inheritAttrs
      inheritAttrs: type.inheritAttrs,
      // state
      ctx: EMPTY_OBJ,
      data: EMPTY_OBJ,
      props: EMPTY_OBJ,
      attrs: EMPTY_OBJ,
      slots: EMPTY_OBJ,
      refs: EMPTY_OBJ,
      setupState: EMPTY_OBJ,
      setupContext: null,
      // suspense related
      suspense,
      suspenseId: suspense ? suspense.pendingId : 0,
      asyncDep: null,
      asyncResolved: false,
      // lifecycle hooks
      // not using enums here because it results in computed properties
      isMounted: false,
      isUnmounted: false,
      isDeactivated: false,
      bc: null,
      c: null,
      bm: null,
      m: null,
      bu: null,
      u: null,
      um: null,
      bum: null,
      da: null,
      a: null,
      rtg: null,
      rtc: null,
      ec: null,
      sp: null
    };
    {
      instance.ctx = { _: instance };
    }
    instance.root = parent2 ? parent2.root : instance;
    instance.emit = emit.bind(null, instance);
    if (vnode.ce) {
      vnode.ce(instance);
    }
    return instance;
  }
  let currentInstance = null;
  const getCurrentInstance = () => currentInstance || currentRenderingInstance;
  let internalSetCurrentInstance;
  let setInSSRSetupState;
  {
    const g = getGlobalThis();
    const registerGlobalSetter = (key, setter) => {
      let setters;
      if (!(setters = g[key])) setters = g[key] = [];
      setters.push(setter);
      return (v2) => {
        if (setters.length > 1) setters.forEach((set2) => set2(v2));
        else setters[0](v2);
      };
    };
    internalSetCurrentInstance = registerGlobalSetter(
      `__VUE_INSTANCE_SETTERS__`,
      (v2) => currentInstance = v2
    );
    setInSSRSetupState = registerGlobalSetter(
      `__VUE_SSR_SETTERS__`,
      (v2) => isInSSRComponentSetup = v2
    );
  }
  const setCurrentInstance = (instance) => {
    const prev = currentInstance;
    internalSetCurrentInstance(instance);
    instance.scope.on();
    return () => {
      instance.scope.off();
      internalSetCurrentInstance(prev);
    };
  };
  const unsetCurrentInstance = () => {
    currentInstance && currentInstance.scope.off();
    internalSetCurrentInstance(null);
  };
  function isStatefulComponent(instance) {
    return instance.vnode.shapeFlag & 4;
  }
  let isInSSRComponentSetup = false;
  function setupComponent(instance, isSSR = false, optimized = false) {
    isSSR && setInSSRSetupState(isSSR);
    const { props: props2, children } = instance.vnode;
    const isStateful = isStatefulComponent(instance);
    initProps(instance, props2, isStateful, isSSR);
    initSlots(instance, children, optimized || isSSR);
    const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0;
    isSSR && setInSSRSetupState(false);
    return setupResult;
  }
  function setupStatefulComponent(instance, isSSR) {
    const Component = instance.type;
    instance.accessCache = /* @__PURE__ */ Object.create(null);
    instance.proxy = new Proxy(instance.ctx, PublicInstanceProxyHandlers);
    const { setup } = Component;
    if (setup) {
      pauseTracking();
      const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null;
      const reset = setCurrentInstance(instance);
      const setupResult = callWithErrorHandling(
        setup,
        instance,
        0,
        [
          instance.props,
          setupContext
        ]
      );
      const isAsyncSetup = isPromise(setupResult);
      resetTracking();
      reset();
      if ((isAsyncSetup || instance.sp) && !isAsyncWrapper(instance)) {
        markAsyncBoundary(instance);
      }
      if (isAsyncSetup) {
        setupResult.then(unsetCurrentInstance, unsetCurrentInstance);
        if (isSSR) {
          return setupResult.then((resolvedResult) => {
            handleSetupResult(instance, resolvedResult);
          }).catch((e) => {
            handleError(e, instance, 0);
          });
        } else {
          instance.asyncDep = setupResult;
        }
      } else {
        handleSetupResult(instance, setupResult);
      }
    } else {
      finishComponentSetup(instance);
    }
  }
  function handleSetupResult(instance, setupResult, isSSR) {
    if (isFunction$1(setupResult)) {
      if (instance.type.__ssrInlineRender) {
        instance.ssrRender = setupResult;
      } else {
        instance.render = setupResult;
      }
    } else if (isObject$2(setupResult)) {
      instance.setupState = proxyRefs(setupResult);
    } else ;
    finishComponentSetup(instance);
  }
  function finishComponentSetup(instance, isSSR, skipOptions) {
    const Component = instance.type;
    if (!instance.render) {
      instance.render = Component.render || NOOP;
    }
    {
      const reset = setCurrentInstance(instance);
      pauseTracking();
      try {
        applyOptions(instance);
      } finally {
        resetTracking();
        reset();
      }
    }
  }
  const attrsProxyHandlers = {
    get(target, key) {
      track(target, "get", "");
      return target[key];
    }
  };
  function createSetupContext(instance) {
    const expose = (exposed) => {
      instance.exposed = exposed || {};
    };
    {
      return {
        attrs: new Proxy(instance.attrs, attrsProxyHandlers),
        slots: instance.slots,
        emit: instance.emit,
        expose
      };
    }
  }
  function getComponentPublicInstance(instance) {
    if (instance.exposed) {
      return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {
        get(target, key) {
          if (key in target) {
            return target[key];
          } else if (key in publicPropertiesMap) {
            return publicPropertiesMap[key](instance);
          }
        },
        has(target, key) {
          return key in target || key in publicPropertiesMap;
        }
      }));
    } else {
      return instance.proxy;
    }
  }
  const classifyRE = /(?:^|[-_])\w/g;
  const classify = (str) => str.replace(classifyRE, (c2) => c2.toUpperCase()).replace(/[-_]/g, "");
  function getComponentName(Component, includeInferred = true) {
    return isFunction$1(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;
  }
  function formatComponentName(instance, Component, isRoot = false) {
    let name = getComponentName(Component);
    if (!name && Component.__file) {
      const match = Component.__file.match(/([^/\\]+)\.\w+$/);
      if (match) {
        name = match[1];
      }
    }
    if (!name && instance) {
      const inferFromRegistry = (registry) => {
        for (const key in registry) {
          if (registry[key] === Component) {
            return key;
          }
        }
      };
      name = inferFromRegistry(instance.components) || instance.parent && inferFromRegistry(
        instance.parent.type.components
      ) || inferFromRegistry(instance.appContext.components);
    }
    return name ? classify(name) : isRoot ? `App` : `Anonymous`;
  }
  function isClassComponent(value) {
    return isFunction$1(value) && "__vccOpts" in value;
  }
  const computed = (getterOrOptions, debugOptions) => {
    const c2 = computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);
    return c2;
  };
  function h$1(type, propsOrChildren, children) {
    try {
      setBlockTracking(-1);
      const l2 = arguments.length;
      if (l2 === 2) {
        if (isObject$2(propsOrChildren) && !isArray$1(propsOrChildren)) {
          if (isVNode(propsOrChildren)) {
            return createVNode(type, null, [propsOrChildren]);
          }
          return createVNode(type, propsOrChildren);
        } else {
          return createVNode(type, null, propsOrChildren);
        }
      } else {
        if (l2 > 3) {
          children = Array.prototype.slice.call(arguments, 2);
        } else if (l2 === 3 && isVNode(children)) {
          children = [children];
        }
        return createVNode(type, propsOrChildren, children);
      }
    } finally {
      setBlockTracking(1);
    }
  }
  const version$1 = "3.5.26";
  const warn = NOOP;
  let policy = void 0;
  const tt$1 = typeof window !== "undefined" && window.trustedTypes;
  if (tt$1) {
    try {
      policy = /* @__PURE__ */ tt$1.createPolicy("vue", {
        createHTML: (val) => val
      });
    } catch (e) {
    }
  }
  const unsafeToTrustedHTML = policy ? (val) => policy.createHTML(val) : (val) => val;
  const svgNS = "http://www.w3.org/2000/svg";
  const mathmlNS = "http://www.w3.org/1998/Math/MathML";
  const doc = typeof document !== "undefined" ? document : null;
  const templateContainer = doc && /* @__PURE__ */ doc.createElement("template");
  const nodeOps = {
    insert: (child, parent2, anchor) => {
      parent2.insertBefore(child, anchor || null);
    },
    remove: (child) => {
      const parent2 = child.parentNode;
      if (parent2) {
        parent2.removeChild(child);
      }
    },
    createElement: (tag, namespace, is, props2) => {
      const el = namespace === "svg" ? doc.createElementNS(svgNS, tag) : namespace === "mathml" ? doc.createElementNS(mathmlNS, tag) : is ? doc.createElement(tag, { is }) : doc.createElement(tag);
      if (tag === "select" && props2 && props2.multiple != null) {
        el.setAttribute("multiple", props2.multiple);
      }
      return el;
    },
    createText: (text) => doc.createTextNode(text),
    createComment: (text) => doc.createComment(text),
    setText: (node, text) => {
      node.nodeValue = text;
    },
    setElementText: (el, text) => {
      el.textContent = text;
    },
    parentNode: (node) => node.parentNode,
    nextSibling: (node) => node.nextSibling,
    querySelector: (selector) => doc.querySelector(selector),
    setScopeId(el, id) {
      el.setAttribute(id, "");
    },
    // __UNSAFE__
    // Reason: innerHTML.
    // Static content here can only come from compiled templates.
    // As long as the user only uses trusted templates, this is safe.
    insertStaticContent(content, parent2, anchor, namespace, start, end) {
      const before = anchor ? anchor.previousSibling : parent2.lastChild;
      if (start && (start === end || start.nextSibling)) {
        while (true) {
          parent2.insertBefore(start.cloneNode(true), anchor);
          if (start === end || !(start = start.nextSibling)) break;
        }
      } else {
        templateContainer.innerHTML = unsafeToTrustedHTML(
          namespace === "svg" ? `<svg>${content}</svg>` : namespace === "mathml" ? `<math>${content}</math>` : content
        );
        const template = templateContainer.content;
        if (namespace === "svg" || namespace === "mathml") {
          const wrapper = template.firstChild;
          while (wrapper.firstChild) {
            template.appendChild(wrapper.firstChild);
          }
          template.removeChild(wrapper);
        }
        parent2.insertBefore(template, anchor);
      }
      return [
        // first
        before ? before.nextSibling : parent2.firstChild,
        // last
        anchor ? anchor.previousSibling : parent2.lastChild
      ];
    }
  };
  const TRANSITION = "transition";
  const ANIMATION = "animation";
  const vtcKey = /* @__PURE__ */ Symbol("_vtc");
  const DOMTransitionPropsValidators = {
    name: String,
    type: String,
    css: {
      type: Boolean,
      default: true
    },
    duration: [String, Number, Object],
    enterFromClass: String,
    enterActiveClass: String,
    enterToClass: String,
    appearFromClass: String,
    appearActiveClass: String,
    appearToClass: String,
    leaveFromClass: String,
    leaveActiveClass: String,
    leaveToClass: String
  };
  const TransitionPropsValidators = /* @__PURE__ */ extend(
    {},
    BaseTransitionPropsValidators,
    DOMTransitionPropsValidators
  );
  const decorate$1 = (t) => {
    t.displayName = "Transition";
    t.props = TransitionPropsValidators;
    return t;
  };
  const Transition = /* @__PURE__ */ decorate$1(
    (props2, { slots }) => h$1(BaseTransition, resolveTransitionProps(props2), slots)
  );
  const callHook = (hook, args = []) => {
    if (isArray$1(hook)) {
      hook.forEach((h2) => h2(...args));
    } else if (hook) {
      hook(...args);
    }
  };
  const hasExplicitCallback = (hook) => {
    return hook ? isArray$1(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false;
  };
  function resolveTransitionProps(rawProps) {
    const baseProps = {};
    for (const key in rawProps) {
      if (!(key in DOMTransitionPropsValidators)) {
        baseProps[key] = rawProps[key];
      }
    }
    if (rawProps.css === false) {
      return baseProps;
    }
    const {
      name = "v",
      type,
      duration,
      enterFromClass = `${name}-enter-from`,
      enterActiveClass = `${name}-enter-active`,
      enterToClass = `${name}-enter-to`,
      appearFromClass = enterFromClass,
      appearActiveClass = enterActiveClass,
      appearToClass = enterToClass,
      leaveFromClass = `${name}-leave-from`,
      leaveActiveClass = `${name}-leave-active`,
      leaveToClass = `${name}-leave-to`
    } = rawProps;
    const durations = normalizeDuration(duration);
    const enterDuration = durations && durations[0];
    const leaveDuration = durations && durations[1];
    const {
      onBeforeEnter,
      onEnter,
      onEnterCancelled,
      onLeave,
      onLeaveCancelled,
      onBeforeAppear = onBeforeEnter,
      onAppear = onEnter,
      onAppearCancelled = onEnterCancelled
    } = baseProps;
    const finishEnter = (el, isAppear, done, isCancelled) => {
      el._enterCancelled = isCancelled;
      removeTransitionClass(el, isAppear ? appearToClass : enterToClass);
      removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);
      done && done();
    };
    const finishLeave = (el, done) => {
      el._isLeaving = false;
      removeTransitionClass(el, leaveFromClass);
      removeTransitionClass(el, leaveToClass);
      removeTransitionClass(el, leaveActiveClass);
      done && done();
    };
    const makeEnterHook = (isAppear) => {
      return (el, done) => {
        const hook = isAppear ? onAppear : onEnter;
        const resolve2 = () => finishEnter(el, isAppear, done);
        callHook(hook, [el, resolve2]);
        nextFrame(() => {
          removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);
          addTransitionClass(el, isAppear ? appearToClass : enterToClass);
          if (!hasExplicitCallback(hook)) {
            whenTransitionEnds(el, type, enterDuration, resolve2);
          }
        });
      };
    };
    return extend(baseProps, {
      onBeforeEnter(el) {
        callHook(onBeforeEnter, [el]);
        addTransitionClass(el, enterFromClass);
        addTransitionClass(el, enterActiveClass);
      },
      onBeforeAppear(el) {
        callHook(onBeforeAppear, [el]);
        addTransitionClass(el, appearFromClass);
        addTransitionClass(el, appearActiveClass);
      },
      onEnter: makeEnterHook(false),
      onAppear: makeEnterHook(true),
      onLeave(el, done) {
        el._isLeaving = true;
        const resolve2 = () => finishLeave(el, done);
        addTransitionClass(el, leaveFromClass);
        if (!el._enterCancelled) {
          forceReflow(el);
          addTransitionClass(el, leaveActiveClass);
        } else {
          addTransitionClass(el, leaveActiveClass);
          forceReflow(el);
        }
        nextFrame(() => {
          if (!el._isLeaving) {
            return;
          }
          removeTransitionClass(el, leaveFromClass);
          addTransitionClass(el, leaveToClass);
          if (!hasExplicitCallback(onLeave)) {
            whenTransitionEnds(el, type, leaveDuration, resolve2);
          }
        });
        callHook(onLeave, [el, resolve2]);
      },
      onEnterCancelled(el) {
        finishEnter(el, false, void 0, true);
        callHook(onEnterCancelled, [el]);
      },
      onAppearCancelled(el) {
        finishEnter(el, true, void 0, true);
        callHook(onAppearCancelled, [el]);
      },
      onLeaveCancelled(el) {
        finishLeave(el);
        callHook(onLeaveCancelled, [el]);
      }
    });
  }
  function normalizeDuration(duration) {
    if (duration == null) {
      return null;
    } else if (isObject$2(duration)) {
      return [NumberOf(duration.enter), NumberOf(duration.leave)];
    } else {
      const n = NumberOf(duration);
      return [n, n];
    }
  }
  function NumberOf(val) {
    const res = toNumber$1(val);
    return res;
  }
  function addTransitionClass(el, cls) {
    cls.split(/\s+/).forEach((c2) => c2 && el.classList.add(c2));
    (el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls);
  }
  function removeTransitionClass(el, cls) {
    cls.split(/\s+/).forEach((c2) => c2 && el.classList.remove(c2));
    const _vtc = el[vtcKey];
    if (_vtc) {
      _vtc.delete(cls);
      if (!_vtc.size) {
        el[vtcKey] = void 0;
      }
    }
  }
  function nextFrame(cb) {
    requestAnimationFrame(() => {
      requestAnimationFrame(cb);
    });
  }
  let endId = 0;
  function whenTransitionEnds(el, expectedType, explicitTimeout, resolve2) {
    const id = el._endId = ++endId;
    const resolveIfNotStale = () => {
      if (id === el._endId) {
        resolve2();
      }
    };
    if (explicitTimeout != null) {
      return setTimeout(resolveIfNotStale, explicitTimeout);
    }
    const { type, timeout, propCount } = getTransitionInfo(el, expectedType);
    if (!type) {
      return resolve2();
    }
    const endEvent = type + "end";
    let ended = 0;
    const end = () => {
      el.removeEventListener(endEvent, onEnd);
      resolveIfNotStale();
    };
    const onEnd = (e) => {
      if (e.target === el && ++ended >= propCount) {
        end();
      }
    };
    setTimeout(() => {
      if (ended < propCount) {
        end();
      }
    }, timeout + 1);
    el.addEventListener(endEvent, onEnd);
  }
  function getTransitionInfo(el, expectedType) {
    const styles = window.getComputedStyle(el);
    const getStyleProperties = (key) => (styles[key] || "").split(", ");
    const transitionDelays = getStyleProperties(`${TRANSITION}Delay`);
    const transitionDurations = getStyleProperties(`${TRANSITION}Duration`);
    const transitionTimeout = getTimeout(transitionDelays, transitionDurations);
    const animationDelays = getStyleProperties(`${ANIMATION}Delay`);
    const animationDurations = getStyleProperties(`${ANIMATION}Duration`);
    const animationTimeout = getTimeout(animationDelays, animationDurations);
    let type = null;
    let timeout = 0;
    let propCount = 0;
    if (expectedType === TRANSITION) {
      if (transitionTimeout > 0) {
        type = TRANSITION;
        timeout = transitionTimeout;
        propCount = transitionDurations.length;
      }
    } else if (expectedType === ANIMATION) {
      if (animationTimeout > 0) {
        type = ANIMATION;
        timeout = animationTimeout;
        propCount = animationDurations.length;
      }
    } else {
      timeout = Math.max(transitionTimeout, animationTimeout);
      type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null;
      propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0;
    }
    const hasTransform = type === TRANSITION && /\b(?:transform|all)(?:,|$)/.test(
      getStyleProperties(`${TRANSITION}Property`).toString()
    );
    return {
      type,
      timeout,
      propCount,
      hasTransform
    };
  }
  function getTimeout(delays, durations) {
    while (delays.length < durations.length) {
      delays = delays.concat(delays);
    }
    return Math.max(...durations.map((d2, i) => toMs(d2) + toMs(delays[i])));
  }
  function toMs(s2) {
    if (s2 === "auto") return 0;
    return Number(s2.slice(0, -1).replace(",", ".")) * 1e3;
  }
  function forceReflow(el) {
    const targetDocument = el ? el.ownerDocument : document;
    return targetDocument.body.offsetHeight;
  }
  function patchClass(el, value, isSVG) {
    const transitionClasses = el[vtcKey];
    if (transitionClasses) {
      value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(" ");
    }
    if (value == null) {
      el.removeAttribute("class");
    } else if (isSVG) {
      el.setAttribute("class", value);
    } else {
      el.className = value;
    }
  }
  const vShowOriginalDisplay = /* @__PURE__ */ Symbol("_vod");
  const vShowHidden = /* @__PURE__ */ Symbol("_vsh");
  const vShow = {
    // used for prop mismatch check during hydration
    name: "show",
    beforeMount(el, { value }, { transition }) {
      el[vShowOriginalDisplay] = el.style.display === "none" ? "" : el.style.display;
      if (transition && value) {
        transition.beforeEnter(el);
      } else {
        setDisplay(el, value);
      }
    },
    mounted(el, { value }, { transition }) {
      if (transition && value) {
        transition.enter(el);
      }
    },
    updated(el, { value, oldValue }, { transition }) {
      if (!value === !oldValue) return;
      if (transition) {
        if (value) {
          transition.beforeEnter(el);
          setDisplay(el, true);
          transition.enter(el);
        } else {
          transition.leave(el, () => {
            setDisplay(el, false);
          });
        }
      } else {
        setDisplay(el, value);
      }
    },
    beforeUnmount(el, { value }) {
      setDisplay(el, value);
    }
  };
  function setDisplay(el, value) {
    el.style.display = value ? el[vShowOriginalDisplay] : "none";
    el[vShowHidden] = !value;
  }
  const CSS_VAR_TEXT = /* @__PURE__ */ Symbol("");
  const displayRE = /(?:^|;)\s*display\s*:/;
  function patchStyle(el, prev, next) {
    const style = el.style;
    const isCssString = isString(next);
    let hasControlledDisplay = false;
    if (next && !isCssString) {
      if (prev) {
        if (!isString(prev)) {
          for (const key in prev) {
            if (next[key] == null) {
              setStyle$1(style, key, "");
            }
          }
        } else {
          for (const prevStyle of prev.split(";")) {
            const key = prevStyle.slice(0, prevStyle.indexOf(":")).trim();
            if (next[key] == null) {
              setStyle$1(style, key, "");
            }
          }
        }
      }
      for (const key in next) {
        if (key === "display") {
          hasControlledDisplay = true;
        }
        setStyle$1(style, key, next[key]);
      }
    } else {
      if (isCssString) {
        if (prev !== next) {
          const cssVarText = style[CSS_VAR_TEXT];
          if (cssVarText) {
            next += ";" + cssVarText;
          }
          style.cssText = next;
          hasControlledDisplay = displayRE.test(next);
        }
      } else if (prev) {
        el.removeAttribute("style");
      }
    }
    if (vShowOriginalDisplay in el) {
      el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : "";
      if (el[vShowHidden]) {
        style.display = "none";
      }
    }
  }
  const importantRE = /\s*!important$/;
  function setStyle$1(style, name, val) {
    if (isArray$1(val)) {
      val.forEach((v2) => setStyle$1(style, name, v2));
    } else {
      if (val == null) val = "";
      if (name.startsWith("--")) {
        style.setProperty(name, val);
      } else {
        const prefixed = autoPrefix(style, name);
        if (importantRE.test(val)) {
          style.setProperty(
            hyphenate(prefixed),
            val.replace(importantRE, ""),
            "important"
          );
        } else {
          style[prefixed] = val;
        }
      }
    }
  }
  const prefixes = ["Webkit", "Moz", "ms"];
  const prefixCache = {};
  function autoPrefix(style, rawName) {
    const cached = prefixCache[rawName];
    if (cached) {
      return cached;
    }
    let name = camelize(rawName);
    if (name !== "filter" && name in style) {
      return prefixCache[rawName] = name;
    }
    name = capitalize$1(name);
    for (let i = 0; i < prefixes.length; i++) {
      const prefixed = prefixes[i] + name;
      if (prefixed in style) {
        return prefixCache[rawName] = prefixed;
      }
    }
    return rawName;
  }
  const xlinkNS = "http://www.w3.org/1999/xlink";
  function patchAttr(el, key, value, isSVG, instance, isBoolean2 = isSpecialBooleanAttr(key)) {
    if (isSVG && key.startsWith("xlink:")) {
      if (value == null) {
        el.removeAttributeNS(xlinkNS, key.slice(6, key.length));
      } else {
        el.setAttributeNS(xlinkNS, key, value);
      }
    } else {
      if (value == null || isBoolean2 && !includeBooleanAttr(value)) {
        el.removeAttribute(key);
      } else {
        el.setAttribute(
          key,
          isBoolean2 ? "" : isSymbol$1(value) ? String(value) : value
        );
      }
    }
  }
  function patchDOMProp(el, key, value, parentComponent, attrName) {
    if (key === "innerHTML" || key === "textContent") {
      if (value != null) {
        el[key] = key === "innerHTML" ? unsafeToTrustedHTML(value) : value;
      }
      return;
    }
    const tag = el.tagName;
    if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally
    !tag.includes("-")) {
      const oldValue = tag === "OPTION" ? el.getAttribute("value") || "" : el.value;
      const newValue = value == null ? (
        // #11647: value should be set as empty string for null and undefined,
        // but <input type="checkbox"> should be set as 'on'.
        el.type === "checkbox" ? "on" : ""
      ) : String(value);
      if (oldValue !== newValue || !("_value" in el)) {
        el.value = newValue;
      }
      if (value == null) {
        el.removeAttribute(key);
      }
      el._value = value;
      return;
    }
    let needRemove = false;
    if (value === "" || value == null) {
      const type = typeof el[key];
      if (type === "boolean") {
        value = includeBooleanAttr(value);
      } else if (value == null && type === "string") {
        value = "";
        needRemove = true;
      } else if (type === "number") {
        value = 0;
        needRemove = true;
      }
    }
    try {
      el[key] = value;
    } catch (e) {
    }
    needRemove && el.removeAttribute(attrName || key);
  }
  function addEventListener(el, event, handler, options) {
    el.addEventListener(event, handler, options);
  }
  function removeEventListener(el, event, handler, options) {
    el.removeEventListener(event, handler, options);
  }
  const veiKey = /* @__PURE__ */ Symbol("_vei");
  function patchEvent(el, rawName, prevValue, nextValue, instance = null) {
    const invokers = el[veiKey] || (el[veiKey] = {});
    const existingInvoker = invokers[rawName];
    if (nextValue && existingInvoker) {
      existingInvoker.value = nextValue;
    } else {
      const [name, options] = parseName(rawName);
      if (nextValue) {
        const invoker = invokers[rawName] = createInvoker(
          nextValue,
          instance
        );
        addEventListener(el, name, invoker, options);
      } else if (existingInvoker) {
        removeEventListener(el, name, existingInvoker, options);
        invokers[rawName] = void 0;
      }
    }
  }
  const optionsModifierRE = /(?:Once|Passive|Capture)$/;
  function parseName(name) {
    let options;
    if (optionsModifierRE.test(name)) {
      options = {};
      let m2;
      while (m2 = name.match(optionsModifierRE)) {
        name = name.slice(0, name.length - m2[0].length);
        options[m2[0].toLowerCase()] = true;
      }
    }
    const event = name[2] === ":" ? name.slice(3) : hyphenate(name.slice(2));
    return [event, options];
  }
  let cachedNow = 0;
  const p$1 = /* @__PURE__ */ Promise.resolve();
  const getNow = () => cachedNow || (p$1.then(() => cachedNow = 0), cachedNow = Date.now());
  function createInvoker(initialValue, instance) {
    const invoker = (e) => {
      if (!e._vts) {
        e._vts = Date.now();
      } else if (e._vts <= invoker.attached) {
        return;
      }
      callWithAsyncErrorHandling(
        patchStopImmediatePropagation(e, invoker.value),
        instance,
        5,
        [e]
      );
    };
    invoker.value = initialValue;
    invoker.attached = getNow();
    return invoker;
  }
  function patchStopImmediatePropagation(e, value) {
    if (isArray$1(value)) {
      const originalStop = e.stopImmediatePropagation;
      e.stopImmediatePropagation = () => {
        originalStop.call(e);
        e._stopped = true;
      };
      return value.map(
        (fn2) => (e2) => !e2._stopped && fn2 && fn2(e2)
      );
    } else {
      return value;
    }
  }
  const isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter
  key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123;
  const patchProp = (el, key, prevValue, nextValue, namespace, parentComponent) => {
    const isSVG = namespace === "svg";
    if (key === "class") {
      patchClass(el, nextValue, isSVG);
    } else if (key === "style") {
      patchStyle(el, prevValue, nextValue);
    } else if (isOn(key)) {
      if (!isModelListener(key)) {
        patchEvent(el, key, prevValue, nextValue, parentComponent);
      }
    } else if (key[0] === "." ? (key = key.slice(1), true) : key[0] === "^" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) {
      patchDOMProp(el, key, nextValue);
      if (!el.tagName.includes("-") && (key === "value" || key === "checked" || key === "selected")) {
        patchAttr(el, key, nextValue, isSVG, parentComponent, key !== "value");
      }
    } else if (
      // #11081 force set props for possible async custom element
      el._isVueCE && (/[A-Z]/.test(key) || !isString(nextValue))
    ) {
      patchDOMProp(el, camelize(key), nextValue, parentComponent, key);
    } else {
      if (key === "true-value") {
        el._trueValue = nextValue;
      } else if (key === "false-value") {
        el._falseValue = nextValue;
      }
      patchAttr(el, key, nextValue, isSVG);
    }
  };
  function shouldSetAsProp(el, key, value, isSVG) {
    if (isSVG) {
      if (key === "innerHTML" || key === "textContent") {
        return true;
      }
      if (key in el && isNativeOn(key) && isFunction$1(value)) {
        return true;
      }
      return false;
    }
    if (key === "spellcheck" || key === "draggable" || key === "translate" || key === "autocorrect") {
      return false;
    }
    if (key === "sandbox" && el.tagName === "IFRAME") {
      return false;
    }
    if (key === "form") {
      return false;
    }
    if (key === "list" && el.tagName === "INPUT") {
      return false;
    }
    if (key === "type" && el.tagName === "TEXTAREA") {
      return false;
    }
    if (key === "width" || key === "height") {
      const tag = el.tagName;
      if (tag === "IMG" || tag === "VIDEO" || tag === "CANVAS" || tag === "SOURCE") {
        return false;
      }
    }
    if (isNativeOn(key) && isString(value)) {
      return false;
    }
    return key in el;
  }
  const positionMap = /* @__PURE__ */ new WeakMap();
  const newPositionMap = /* @__PURE__ */ new WeakMap();
  const moveCbKey = /* @__PURE__ */ Symbol("_moveCb");
  const enterCbKey = /* @__PURE__ */ Symbol("_enterCb");
  const decorate = (t) => {
    delete t.props.mode;
    return t;
  };
  const TransitionGroupImpl = /* @__PURE__ */ decorate({
    name: "TransitionGroup",
    props: /* @__PURE__ */ extend({}, TransitionPropsValidators, {
      tag: String,
      moveClass: String
    }),
    setup(props2, { slots }) {
      const instance = getCurrentInstance();
      const state = useTransitionState();
      let prevChildren;
      let children;
      onUpdated(() => {
        if (!prevChildren.length) {
          return;
        }
        const moveClass = props2.moveClass || `${props2.name || "v"}-move`;
        if (!hasCSSTransform(
          prevChildren[0].el,
          instance.vnode.el,
          moveClass
        )) {
          prevChildren = [];
          return;
        }
        prevChildren.forEach(callPendingCbs);
        prevChildren.forEach(recordPosition);
        const movedChildren = prevChildren.filter(applyTranslation);
        forceReflow(instance.vnode.el);
        movedChildren.forEach((c2) => {
          const el = c2.el;
          const style = el.style;
          addTransitionClass(el, moveClass);
          style.transform = style.webkitTransform = style.transitionDuration = "";
          const cb = el[moveCbKey] = (e) => {
            if (e && e.target !== el) {
              return;
            }
            if (!e || e.propertyName.endsWith("transform")) {
              el.removeEventListener("transitionend", cb);
              el[moveCbKey] = null;
              removeTransitionClass(el, moveClass);
            }
          };
          el.addEventListener("transitionend", cb);
        });
        prevChildren = [];
      });
      return () => {
        const rawProps = toRaw(props2);
        const cssTransitionProps = resolveTransitionProps(rawProps);
        let tag = rawProps.tag || Fragment;
        prevChildren = [];
        if (children) {
          for (let i = 0; i < children.length; i++) {
            const child = children[i];
            if (child.el && child.el instanceof Element) {
              prevChildren.push(child);
              setTransitionHooks(
                child,
                resolveTransitionHooks(
                  child,
                  cssTransitionProps,
                  state,
                  instance
                )
              );
              positionMap.set(child, {
                left: child.el.offsetLeft,
                top: child.el.offsetTop
              });
            }
          }
        }
        children = slots.default ? getTransitionRawChildren(slots.default()) : [];
        for (let i = 0; i < children.length; i++) {
          const child = children[i];
          if (child.key != null) {
            setTransitionHooks(
              child,
              resolveTransitionHooks(child, cssTransitionProps, state, instance)
            );
          }
        }
        return createVNode(tag, null, children);
      };
    }
  });
  const TransitionGroup = TransitionGroupImpl;
  function callPendingCbs(c2) {
    const el = c2.el;
    if (el[moveCbKey]) {
      el[moveCbKey]();
    }
    if (el[enterCbKey]) {
      el[enterCbKey]();
    }
  }
  function recordPosition(c2) {
    newPositionMap.set(c2, {
      left: c2.el.offsetLeft,
      top: c2.el.offsetTop
    });
  }
  function applyTranslation(c2) {
    const oldPos = positionMap.get(c2);
    const newPos = newPositionMap.get(c2);
    const dx = oldPos.left - newPos.left;
    const dy = oldPos.top - newPos.top;
    if (dx || dy) {
      const s2 = c2.el.style;
      s2.transform = s2.webkitTransform = `translate(${dx}px,${dy}px)`;
      s2.transitionDuration = "0s";
      return c2;
    }
  }
  function hasCSSTransform(el, root2, moveClass) {
    const clone2 = el.cloneNode();
    const _vtc = el[vtcKey];
    if (_vtc) {
      _vtc.forEach((cls) => {
        cls.split(/\s+/).forEach((c2) => c2 && clone2.classList.remove(c2));
      });
    }
    moveClass.split(/\s+/).forEach((c2) => c2 && clone2.classList.add(c2));
    clone2.style.display = "none";
    const container = root2.nodeType === 1 ? root2 : root2.parentNode;
    container.appendChild(clone2);
    const { hasTransform } = getTransitionInfo(clone2);
    container.removeChild(clone2);
    return hasTransform;
  }
  const getModelAssigner = (vnode) => {
    const fn2 = vnode.props["onUpdate:modelValue"] || false;
    return isArray$1(fn2) ? (value) => invokeArrayFns(fn2, value) : fn2;
  };
  function onCompositionStart(e) {
    e.target.composing = true;
  }
  function onCompositionEnd(e) {
    const target = e.target;
    if (target.composing) {
      target.composing = false;
      target.dispatchEvent(new Event("input"));
    }
  }
  const assignKey = /* @__PURE__ */ Symbol("_assign");
  function castValue(value, trim, number) {
    if (trim) value = value.trim();
    if (number) value = looseToNumber$1(value);
    return value;
  }
  const vModelText = {
    created(el, { modifiers: { lazy, trim, number } }, vnode) {
      el[assignKey] = getModelAssigner(vnode);
      const castToNumber = number || vnode.props && vnode.props.type === "number";
      addEventListener(el, lazy ? "change" : "input", (e) => {
        if (e.target.composing) return;
        el[assignKey](castValue(el.value, trim, castToNumber));
      });
      if (trim || castToNumber) {
        addEventListener(el, "change", () => {
          el.value = castValue(el.value, trim, castToNumber);
        });
      }
      if (!lazy) {
        addEventListener(el, "compositionstart", onCompositionStart);
        addEventListener(el, "compositionend", onCompositionEnd);
        addEventListener(el, "change", onCompositionEnd);
      }
    },
    // set value on mounted so it's after min/max for type="range"
    mounted(el, { value }) {
      el.value = value == null ? "" : value;
    },
    beforeUpdate(el, { value, oldValue, modifiers: { lazy, trim, number } }, vnode) {
      el[assignKey] = getModelAssigner(vnode);
      if (el.composing) return;
      const elValue = (number || el.type === "number") && !/^0\d/.test(el.value) ? looseToNumber$1(el.value) : el.value;
      const newValue = value == null ? "" : value;
      if (elValue === newValue) {
        return;
      }
      if (document.activeElement === el && el.type !== "range") {
        if (lazy && value === oldValue) {
          return;
        }
        if (trim && el.value.trim() === newValue) {
          return;
        }
      }
      el.value = newValue;
    }
  };
  const vModelCheckbox = {
    // #4096 array checkboxes need to be deep traversed
    deep: true,
    created(el, _2, vnode) {
      el[assignKey] = getModelAssigner(vnode);
      addEventListener(el, "change", () => {
        const modelValue = el._modelValue;
        const elementValue = getValue$2(el);
        const checked = el.checked;
        const assign = el[assignKey];
        if (isArray$1(modelValue)) {
          const index = looseIndexOf(modelValue, elementValue);
          const found = index !== -1;
          if (checked && !found) {
            assign(modelValue.concat(elementValue));
          } else if (!checked && found) {
            const filtered = [...modelValue];
            filtered.splice(index, 1);
            assign(filtered);
          }
        } else if (isSet$1(modelValue)) {
          const cloned = new Set(modelValue);
          if (checked) {
            cloned.add(elementValue);
          } else {
            cloned.delete(elementValue);
          }
          assign(cloned);
        } else {
          assign(getCheckboxValue(el, checked));
        }
      });
    },
    // set initial checked on mount to wait for true-value/false-value
    mounted: setChecked,
    beforeUpdate(el, binding, vnode) {
      el[assignKey] = getModelAssigner(vnode);
      setChecked(el, binding, vnode);
    }
  };
  function setChecked(el, { value, oldValue }, vnode) {
    el._modelValue = value;
    let checked;
    if (isArray$1(value)) {
      checked = looseIndexOf(value, vnode.props.value) > -1;
    } else if (isSet$1(value)) {
      checked = value.has(vnode.props.value);
    } else {
      if (value === oldValue) return;
      checked = looseEqual(value, getCheckboxValue(el, true));
    }
    if (el.checked !== checked) {
      el.checked = checked;
    }
  }
  const vModelRadio = {
    created(el, { value }, vnode) {
      el.checked = looseEqual(value, vnode.props.value);
      el[assignKey] = getModelAssigner(vnode);
      addEventListener(el, "change", () => {
        el[assignKey](getValue$2(el));
      });
    },
    beforeUpdate(el, { value, oldValue }, vnode) {
      el[assignKey] = getModelAssigner(vnode);
      if (value !== oldValue) {
        el.checked = looseEqual(value, vnode.props.value);
      }
    }
  };
  function getValue$2(el) {
    return "_value" in el ? el._value : el.value;
  }
  function getCheckboxValue(el, checked) {
    const key = checked ? "_trueValue" : "_falseValue";
    return key in el ? el[key] : checked;
  }
  const systemModifiers = ["ctrl", "shift", "alt", "meta"];
  const modifierGuards = {
    stop: (e) => e.stopPropagation(),
    prevent: (e) => e.preventDefault(),
    self: (e) => e.target !== e.currentTarget,
    ctrl: (e) => !e.ctrlKey,
    shift: (e) => !e.shiftKey,
    alt: (e) => !e.altKey,
    meta: (e) => !e.metaKey,
    left: (e) => "button" in e && e.button !== 0,
    middle: (e) => "button" in e && e.button !== 1,
    right: (e) => "button" in e && e.button !== 2,
    exact: (e, modifiers) => systemModifiers.some((m2) => e[`${m2}Key`] && !modifiers.includes(m2))
  };
  const withModifiers = (fn2, modifiers) => {
    const cache2 = fn2._withMods || (fn2._withMods = {});
    const cacheKey = modifiers.join(".");
    return cache2[cacheKey] || (cache2[cacheKey] = ((event, ...args) => {
      for (let i = 0; i < modifiers.length; i++) {
        const guard = modifierGuards[modifiers[i]];
        if (guard && guard(event, modifiers)) return;
      }
      return fn2(event, ...args);
    }));
  };
  const keyNames = {
    esc: "escape",
    space: " ",
    up: "arrow-up",
    left: "arrow-left",
    right: "arrow-right",
    down: "arrow-down",
    delete: "backspace"
  };
  const withKeys = (fn2, modifiers) => {
    const cache2 = fn2._withKeys || (fn2._withKeys = {});
    const cacheKey = modifiers.join(".");
    return cache2[cacheKey] || (cache2[cacheKey] = ((event) => {
      if (!("key" in event)) {
        return;
      }
      const eventKey = hyphenate(event.key);
      if (modifiers.some(
        (k) => k === eventKey || keyNames[k] === eventKey
      )) {
        return fn2(event);
      }
    }));
  };
  const rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);
  let renderer;
  function ensureRenderer() {
    return renderer || (renderer = createRenderer(rendererOptions));
  }
  const render = ((...args) => {
    ensureRenderer().render(...args);
  });
  const createApp = ((...args) => {
    const app2 = ensureRenderer().createApp(...args);
    const { mount } = app2;
    app2.mount = (containerOrSelector) => {
      const container = normalizeContainer(containerOrSelector);
      if (!container) return;
      const component2 = app2._component;
      if (!isFunction$1(component2) && !component2.render && !component2.template) {
        component2.template = container.innerHTML;
      }
      if (container.nodeType === 1) {
        container.textContent = "";
      }
      const proxy = mount(container, false, resolveRootNamespace(container));
      if (container instanceof Element) {
        container.removeAttribute("v-cloak");
        container.setAttribute("data-v-app", "");
      }
      return proxy;
    };
    return app2;
  });
  function resolveRootNamespace(container) {
    if (container instanceof SVGElement) {
      return "svg";
    }
    if (typeof MathMLElement === "function" && container instanceof MathMLElement) {
      return "mathml";
    }
  }
  function normalizeContainer(container) {
    if (isString(container)) {
      const res = document.querySelector(container);
      return res;
    }
    return container;
  }
  var en$1 = {
    name: "en",
    el: {
      breadcrumb: {
        label: "Breadcrumb"
      },
      colorpicker: {
        confirm: "OK",
        clear: "Clear",
        defaultLabel: "color picker",
        description: "current color is {color}. press enter to select a new color.",
        alphaLabel: "pick alpha value",
        alphaDescription: "alpha {alpha}, current color is {color}",
        hueLabel: "pick hue value",
        hueDescription: "hue {hue}, current color is {color}",
        svLabel: "pick saturation and brightness value",
        svDescription: "saturation {saturation}, brightness {brightness}, current color is {color}",
        predefineDescription: "select {value} as the color"
      },
      datepicker: {
        now: "Now",
        today: "Today",
        cancel: "Cancel",
        clear: "Clear",
        confirm: "OK",
        dateTablePrompt: "Use the arrow keys and enter to select the day of the month",
        monthTablePrompt: "Use the arrow keys and enter to select the month",
        yearTablePrompt: "Use the arrow keys and enter to select the year",
        selectedDate: "Selected date",
        selectDate: "Select date",
        selectTime: "Select time",
        startDate: "Start Date",
        startTime: "Start Time",
        endDate: "End Date",
        endTime: "End Time",
        prevYear: "Previous Year",
        nextYear: "Next Year",
        prevMonth: "Previous Month",
        nextMonth: "Next Month",
        year: "",
        month1: "January",
        month2: "February",
        month3: "March",
        month4: "April",
        month5: "May",
        month6: "June",
        month7: "July",
        month8: "August",
        month9: "September",
        month10: "October",
        month11: "November",
        month12: "December",
        weeks: {
          sun: "Sun",
          mon: "Mon",
          tue: "Tue",
          wed: "Wed",
          thu: "Thu",
          fri: "Fri",
          sat: "Sat"
        },
        weeksFull: {
          sun: "Sunday",
          mon: "Monday",
          tue: "Tuesday",
          wed: "Wednesday",
          thu: "Thursday",
          fri: "Friday",
          sat: "Saturday"
        },
        months: {
          jan: "Jan",
          feb: "Feb",
          mar: "Mar",
          apr: "Apr",
          may: "May",
          jun: "Jun",
          jul: "Jul",
          aug: "Aug",
          sep: "Sep",
          oct: "Oct",
          nov: "Nov",
          dec: "Dec"
        }
      },
      inputNumber: {
        decrease: "decrease number",
        increase: "increase number"
      },
      select: {
        loading: "Loading",
        noMatch: "No matching data",
        noData: "No data",
        placeholder: "Select"
      },
      mention: {
        loading: "Loading"
      },
      dropdown: {
        toggleDropdown: "Toggle Dropdown"
      },
      cascader: {
        noMatch: "No matching data",
        loading: "Loading",
        placeholder: "Select",
        noData: "No data"
      },
      pagination: {
        goto: "Go to",
        pagesize: "/page",
        total: "Total {total}",
        pageClassifier: "",
        page: "Page",
        prev: "Go to previous page",
        next: "Go to next page",
        currentPage: "page {pager}",
        prevPages: "Previous {pager} pages",
        nextPages: "Next {pager} pages",
        deprecationWarning: "Deprecated usages detected, please refer to the el-pagination documentation for more details"
      },
      dialog: {
        close: "Close this dialog"
      },
      drawer: {
        close: "Close this dialog"
      },
      messagebox: {
        title: "Message",
        confirm: "OK",
        cancel: "Cancel",
        error: "Illegal input",
        close: "Close this dialog"
      },
      upload: {
        deleteTip: "press delete to remove",
        delete: "Delete",
        preview: "Preview",
        continue: "Continue"
      },
      slider: {
        defaultLabel: "slider between {min} and {max}",
        defaultRangeStartLabel: "pick start value",
        defaultRangeEndLabel: "pick end value"
      },
      table: {
        emptyText: "No Data",
        confirmFilter: "Confirm",
        resetFilter: "Reset",
        clearFilter: "All",
        sumText: "Sum",
        selectAllLabel: "Select all rows",
        selectRowLabel: "Select this row",
        expandRowLabel: "Expand this row",
        collapseRowLabel: "Collapse this row",
        sortLabel: "Sort by {column}",
        filterLabel: "Filter by {column}"
      },
      tag: {
        close: "Close this tag"
      },
      tour: {
        next: "Next",
        previous: "Previous",
        finish: "Finish",
        close: "Close this dialog"
      },
      tree: {
        emptyText: "No Data"
      },
      transfer: {
        noMatch: "No matching data",
        noData: "No data",
        titles: ["List 1", "List 2"],
        filterPlaceholder: "Enter keyword",
        noCheckedFormat: "{total} items",
        hasCheckedFormat: "{checked}/{total} checked"
      },
      image: {
        error: "FAILED"
      },
      pageHeader: {
        title: "Back"
      },
      popconfirm: {
        confirmButtonText: "Yes",
        cancelButtonText: "No"
      },
      carousel: {
        leftArrow: "Carousel arrow left",
        rightArrow: "Carousel arrow right",
        indicator: "Carousel switch to index {index}"
      }
    }
  };
  var es$2 = {
    name: "es",
    el: {
      breadcrumb: {
        label: "Breadcrumb"
        // to be translated
      },
      colorpicker: {
        confirm: "Confirmar",
        clear: "Despejar",
        defaultLabel: "color picker",
        // to be translated
        description: "current color is {color}. press enter to select a new color.",
        // to be translated
        alphaLabel: "pick alpha value",
        // to be translated
        alphaDescription: "alpha {alpha}, current color is {color}",
        // to be translated
        hueLabel: "pick hue value",
        // to be translated
        hueDescription: "hue {hue}, current color is {color}",
        // to be translated
        svLabel: "pick saturation and brightness value",
        // to be translated
        svDescription: "saturation {saturation}, brightness {brightness}, current color is {color}",
        // to be translated
        predefineDescription: "select {value} as the color"
        // to be translated
      },
      datepicker: {
        now: "Ahora",
        today: "Hoy",
        cancel: "Cancelar",
        clear: "Despejar",
        confirm: "Confirmar",
        dateTablePrompt: "Use the arrow keys and enter to select the day of the month",
        // to be translated
        monthTablePrompt: "Use the arrow keys and enter to select the month",
        // to be translated
        yearTablePrompt: "Use the arrow keys and enter to select the year",
        // to be translated
        selectedDate: "Selected date",
        // to be translated
        selectDate: "Seleccionar fecha",
        selectTime: "Seleccionar hora",
        startDate: "Fecha Incial",
        startTime: "Hora Inicial",
        endDate: "Fecha Final",
        endTime: "Hora Final",
        prevYear: "Año Anterior",
        nextYear: "Próximo Año",
        prevMonth: "Mes Anterior",
        nextMonth: "Próximo Mes",
        year: "",
        month1: "enero",
        month2: "febrero",
        month3: "marzo",
        month4: "abril",
        month5: "mayo",
        month6: "junio",
        month7: "julio",
        month8: "agosto",
        month9: "septiembre",
        month10: "octubre",
        month11: "noviembre",
        month12: "diciembre",
        weeks: {
          sun: "dom",
          mon: "lun",
          tue: "mar",
          wed: "mié",
          thu: "jue",
          fri: "vie",
          sat: "sáb"
        },
        weeksFull: {
          sun: "Sunday",
          // to be translated
          mon: "Monday",
          // to be translated
          tue: "Tuesday",
          // to be translated
          wed: "Wednesday",
          // to be translated
          thu: "Thursday",
          // to be translated
          fri: "Friday",
          // to be translated
          sat: "Saturday"
          // to be translated
        },
        months: {
          jan: "ene",
          feb: "feb",
          mar: "mar",
          apr: "abr",
          may: "may",
          jun: "jun",
          jul: "jul",
          aug: "ago",
          sep: "sep",
          oct: "oct",
          nov: "nov",
          dec: "dic"
        }
      },
      inputNumber: {
        decrease: "decrease number",
        // to be translated
        increase: "increase number"
        // to be translated
      },
      select: {
        loading: "Cargando",
        noMatch: "No hay datos que coincidan",
        noData: "Sin datos",
        placeholder: "Seleccionar"
      },
      mention: {
        loading: "Cargando"
      },
      dropdown: {
        toggleDropdown: "Toggle Dropdown"
        // to be translated
      },
      cascader: {
        noMatch: "No hay datos que coincidan",
        loading: "Cargando",
        placeholder: "Seleccionar",
        noData: "Sin datos"
      },
      pagination: {
        goto: "Ir a",
        pagesize: "/página",
        total: "Total {total}",
        pageClassifier: "",
        page: "Page",
        // to be translated
        prev: "Go to previous page",
        // to be translated
        next: "Go to next page",
        // to be translated
        currentPage: "page {pager}",
        // to be translated
        prevPages: "Previous {pager} pages",
        // to be translated
        nextPages: "Next {pager} pages",
        // to be translated
        deprecationWarning: "Deprecated usages detected, please refer to the el-pagination documentation for more details"
        // to be translated
      },
      dialog: {
        close: "Close this dialog"
        // to be translated
      },
      drawer: {
        close: "Close this dialog"
        // to be translated
      },
      messagebox: {
        title: "Message",
        // to be translated
        confirm: "Aceptar",
        cancel: "Cancelar",
        error: "Entrada inválida",
        close: "Close this dialog"
        // to be translated
      },
      upload: {
        deleteTip: "Pulse Eliminar para retirar",
        delete: "Eliminar",
        preview: "Vista Previa",
        continue: "Continuar"
      },
      slider: {
        defaultLabel: "slider between {min} and {max}",
        // to be translated
        defaultRangeStartLabel: "pick start value",
        // to be translated
        defaultRangeEndLabel: "pick end value"
        // to be translated
      },
      table: {
        emptyText: "Sin Datos",
        confirmFilter: "Confirmar",
        resetFilter: "Reiniciar",
        clearFilter: "Despejar",
        sumText: "Suma",
        selectAllLabel: "Select all rows",
        // to be translated
        selectRowLabel: "Select this row",
        // to be translated
        expandRowLabel: "Expand this row",
        // to be translated
        collapseRowLabel: "Collapse this row",
        // to be translated
        sortLabel: "Sort by {column}",
        // to be translated
        filterLabel: "Filter by {column}"
        // to be translated
      },
      tag: {
        close: "Close this tag"
        // to be translated
      },
      tour: {
        next: "Next",
        // to be translated
        previous: "Previous",
        // to be translated
        finish: "Finish",
        // to be translated
        close: "Close this dialog"
        // to be translated
      },
      tree: {
        emptyText: "Sin Datos"
      },
      transfer: {
        noMatch: "No hay datos que coincidan",
        noData: "Sin datos",
        titles: ["Lista 1", "Lista 2"],
        filterPlaceholder: "Ingresar palabra clave",
        noCheckedFormat: "{total} artículos",
        hasCheckedFormat: "{checked}/{total} revisados"
      },
      image: {
        error: "HA FALLADO"
      },
      pageHeader: {
        title: "Volver"
      },
      popconfirm: {
        confirmButtonText: "Si",
        cancelButtonText: "No"
      },
      carousel: {
        leftArrow: "Carousel arrow left",
        // to be translated
        rightArrow: "Carousel arrow right",
        // to be translated
        indicator: "Carousel switch to index {index}"
        // to be translated
      }
    }
  };
  var de = {
    name: "de",
    el: {
      breadcrumb: {
        label: "Brotkrümel"
      },
      colorpicker: {
        confirm: "OK",
        clear: "Leeren",
        defaultLabel: "color picker",
        // to be translated
        description: "current color is {color}. press enter to select a new color.",
        // to be translated
        alphaLabel: "pick alpha value",
        // to be translated
        alphaDescription: "alpha {alpha}, current color is {color}",
        // to be translated
        hueLabel: "pick hue value",
        // to be translated
        hueDescription: "hue {hue}, current color is {color}",
        // to be translated
        svLabel: "pick saturation and brightness value",
        // to be translated
        svDescription: "saturation {saturation}, brightness {brightness}, current color is {color}",
        // to be translated
        predefineDescription: "select {value} as the color"
        // to be translated
      },
      datepicker: {
        now: "Jetzt",
        today: "Heute",
        cancel: "Abbrechen",
        clear: "Leeren",
        confirm: "OK",
        dateTablePrompt: "Use the arrow keys and enter to select the day of the month",
        // to be translated
        monthTablePrompt: "Use the arrow keys and enter to select the month",
        // to be translated
        yearTablePrompt: "Use the arrow keys and enter to select the year",
        // to be translated
        selectedDate: "Selected date",
        // to be translated
        selectDate: "Datum wählen",
        selectTime: "Uhrzeit wählen",
        startDate: "Startdatum",
        startTime: "Startzeit",
        endDate: "Enddatum",
        endTime: "Endzeit",
        prevYear: "Letztes Jahr",
        nextYear: "Nächtes Jahr",
        prevMonth: "Letzter Monat",
        nextMonth: "Nächster Monat",
        year: "",
        month1: "Januar",
        month2: "Februar",
        month3: "März",
        month4: "April",
        month5: "Mai",
        month6: "Juni",
        month7: "Juli",
        month8: "August",
        month9: "September",
        month10: "Oktober",
        month11: "November",
        month12: "Dezember",
        weeks: {
          sun: "So",
          mon: "Mo",
          tue: "Di",
          wed: "Mi",
          thu: "Do",
          fri: "Fr",
          sat: "Sa"
        },
        weeksFull: {
          sun: "Sunday",
          // to be translated
          mon: "Monday",
          // to be translated
          tue: "Tuesday",
          // to be translated
          wed: "Wednesday",
          // to be translated
          thu: "Thursday",
          // to be translated
          fri: "Friday",
          // to be translated
          sat: "Saturday"
          // to be translated
        },
        months: {
          jan: "Jan",
          feb: "Feb",
          mar: "Mär",
          apr: "Apr",
          may: "Mai",
          jun: "Jun",
          jul: "Jul",
          aug: "Aug",
          sep: "Sep",
          oct: "Okt",
          nov: "Nov",
          dec: "Dez"
        },
        day: "Tag",
        month: "Monat"
      },
      inputNumber: {
        decrease: "decrease number",
        // to be translated
        increase: "increase number"
        // to be translated
      },
      select: {
        loading: "Lädt.",
        noMatch: "Nichts gefunden.",
        noData: "Keine Daten",
        placeholder: "Daten wählen"
      },
      mention: {
        loading: "Lädt."
      },
      dropdown: {
        toggleDropdown: "Toggle Dropdown"
        // to be translated
      },
      cascader: {
        noMatch: "Nichts gefunden.",
        loading: "Lädt.",
        placeholder: "Daten wählen",
        noData: "Keine Daten"
      },
      pagination: {
        goto: "Gehe zu",
        pagesize: " pro Seite",
        total: "Gesamt {total}",
        pageClassifier: "",
        page: "Seite",
        prev: "Zur vorherigen Seite gehen",
        next: "Zur nächsten Seite gehen",
        currentPage: "Seite {pager}",
        prevPages: "Vorherige {pager} Seiten",
        nextPages: "Nächste {pager} Seiten",
        deprecationWarning: "Deprecated usages detected, please refer to the el-pagination documentation for more details"
        // to be translated
      },
      dialog: {
        close: "Close this dialog"
        // to be translated
      },
      drawer: {
        close: "Close this dialog"
        // to be translated
      },
      messagebox: {
        title: "Message",
        // to be translated
        confirm: "OK",
        cancel: "Abbrechen",
        error: "Fehler",
        close: "Close this dialog"
        // to be translated
      },
      upload: {
        deleteTip: "Klicke löschen zum entfernen",
        delete: "Löschen",
        preview: "Vorschau",
        continue: "Fortsetzen"
      },
      slider: {
        defaultLabel: "slider between {min} and {max}",
        // to be translated
        defaultRangeStartLabel: "pick start value",
        // to be translated
        defaultRangeEndLabel: "pick end value"
        // to be translated
      },
      table: {
        emptyText: "Keine Daten",
        confirmFilter: "Anwenden",
        resetFilter: "Zurücksetzen",
        clearFilter: "Alles ",
        sumText: "Summe",
        selectAllLabel: "Select all rows",
        // to be translated
        selectRowLabel: "Select this row",
        // to be translated
        expandRowLabel: "Expand this row",
        // to be translated
        collapseRowLabel: "Collapse this row",
        // to be translated
        sortLabel: "Sort by {column}",
        // to be translated
        filterLabel: "Filter by {column}"
        // to be translated
      },
      tag: {
        close: "Close this tag"
        // to be translated
      },
      tour: {
        next: "Weiter",
        previous: "Zurück",
        finish: "Fertig",
        close: "Close this dialog"
        // to be translated
      },
      tree: {
        emptyText: "Keine Einträge"
      },
      transfer: {
        noMatch: "Nichts gefunden.",
        noData: "Keine Einträge",
        titles: ["Liste 1", "Liste 2"],
        filterPlaceholder: "Einträge filtern",
        noCheckedFormat: "{total} Einträge",
        hasCheckedFormat: "{checked}/{total} ausgewählt"
      },
      image: {
        error: "FEHLGESCHLAGEN"
      },
      pageHeader: {
        title: "Zurück"
      },
      popconfirm: {
        confirmButtonText: "Ja",
        cancelButtonText: "Nein"
      },
      carousel: {
        leftArrow: "Karussell-Pfeil links",
        rightArrow: "Karussell-Pfeil rechts",
        indicator: "Karussell zu Index {index} wechseln"
      }
    }
  };
  var fr = {
    name: "fr",
    el: {
      breadcrumb: {
        label: "Fil d'Ariane"
      },
      colorpicker: {
        confirm: "Confirmer",
        clear: "Effacer",
        defaultLabel: "Sélecteur de couleurs",
        description: "La couleur actuelle est {color}. Appuyer sur Entrée pour sélectionner une nouvelle couleur.",
        alphaLabel: "Choisir la valeur alpha",
        alphaDescription: "alpha {alpha}, couleur actuelle  {color}",
        hueLabel: "Choisir la veleur hue",
        hueDescription: "hue {hue}, couleur actuelle {color}",
        svLabel: "Choisir la valeur de saturation et de luminosité",
        svDescription: "saturation {saturation}, luminosité {brightness}, couleur actuelle {color}",
        predefineDescription: "Choisir {value} comme couleur actuelle"
      },
      datepicker: {
        now: "Maintenant",
        today: "Auj.",
        cancel: "Annuler",
        clear: "Effacer",
        confirm: "Confirmer",
        dateTablePrompt: "Utiliser les touches fléchées et appuyer sur Entrée pour sélectionner le jour du mois",
        monthTablePrompt: "Utiliser les touches fléchées et appuyer sur Entrée pour sélectionner le mois",
        yearTablePrompt: "Utiliser les touches fléchées et appuyer sur Entrée pour sélectionner l'année",
        selectedDate: "Date sélectionnée",
        selectDate: "Choisir date",
        selectTime: "Choisir horaire",
        startDate: "Date début",
        startTime: "Horaire début",
        endDate: "Date fin",
        endTime: "Horaire fin",
        prevYear: "Année précédente",
        nextYear: "Année suivante",
        prevMonth: "Mois précédent",
        nextMonth: "Mois suivant",
        year: "",
        month1: "Janvier",
        month2: "Février",
        month3: "Mars",
        month4: "Avril",
        month5: "Mai",
        month6: "Juin",
        month7: "Juillet",
        month8: "Août",
        month9: "Septembre",
        month10: "Octobre",
        month11: "Novembre",
        month12: "Décembre",
        weeks: {
          sun: "Dim",
          mon: "Lun",
          tue: "Mar",
          wed: "Mer",
          thu: "Jeu",
          fri: "Ven",
          sat: "Sam"
        },
        weeksFull: {
          sun: "Dimanche",
          mon: "Lundi",
          tue: "Mardi",
          wed: "Mercredi",
          thu: "Jeudi",
          fri: "Vendredi",
          sat: "Samedi"
        },
        months: {
          jan: "Jan",
          feb: "Fév",
          mar: "Mar",
          apr: "Avr",
          may: "Mai",
          jun: "Jun",
          jul: "Jul",
          aug: "Aoû",
          sep: "Sep",
          oct: "Oct",
          nov: "Nov",
          dec: "Déc"
        }
      },
      inputNumber: {
        decrease: "Décrémenter",
        increase: "Incrémenter"
      },
      select: {
        loading: "Chargement",
        noMatch: "Aucune correspondance",
        noData: "Aucune donnée",
        placeholder: "Choisir"
      },
      mention: {
        loading: "Chargement"
      },
      dropdown: {
        toggleDropdown: "Basculer la liste déroulante"
      },
      cascader: {
        noMatch: "Aucune correspondance",
        loading: "Chargement",
        placeholder: "Choisir",
        noData: "Aucune donnée"
      },
      pagination: {
        goto: "Aller à",
        pagesize: "/page",
        total: "Total {total}",
        pageClassifier: "",
        page: "Page",
        prev: "Aller à la page précédente",
        next: "Aller à la page suivante",
        currentPage: "page {pager}",
        prevPages: "{pager} pages précédentes",
        nextPages: "{pager} pages suivantes",
        deprecationWarning: "Utilisations obsolètes détectées, veuillez vous référer à la documentation el-pagination pour plus de détails"
      },
      dialog: {
        close: "Fermer la boîte de dialogue"
      },
      drawer: {
        close: "Fermer la boîte de dialogue"
      },
      messagebox: {
        title: "Message",
        confirm: "Confirmer",
        cancel: "Annuler",
        error: "Erreur",
        close: "Fermer la boîte de dialogue"
      },
      upload: {
        deleteTip: "Cliquer sur supprimer pour retirer le fichier",
        delete: "Supprimer",
        preview: "Aperçu",
        continue: "Continuer"
      },
      slider: {
        defaultLabel: "curseur entre {min} et {max}",
        defaultRangeStartLabel: "choisir la valeur de départ",
        defaultRangeEndLabel: "sélectionner la valeur finale"
      },
      table: {
        emptyText: "Aucune donnée",
        confirmFilter: "Confirmer",
        resetFilter: "Réinitialiser",
        clearFilter: "Tous",
        sumText: "Somme",
        selectAllLabel: "Select all rows",
        // to be translated
        selectRowLabel: "Select this row",
        // to be translated
        expandRowLabel: "Expand this row",
        // to be translated
        collapseRowLabel: "Collapse this row",
        // to be translated
        sortLabel: "Sort by {column}",
        // to be translated
        filterLabel: "Filter by {column}"
        // to be translated
      },
      tag: {
        close: "Fermer le tag"
      },
      tour: {
        next: "Suivant",
        previous: "Précédent",
        finish: "Fin",
        close: "Fermer la boîte de dialogue"
      },
      tree: {
        emptyText: "Aucune donnée"
      },
      transfer: {
        noMatch: "Aucune correspondance",
        noData: "Aucune donnée",
        titles: ["Liste 1", "Liste 2"],
        filterPlaceholder: "Entrer un mot clef",
        noCheckedFormat: "{total} elements",
        hasCheckedFormat: "{checked}/{total} coché(s)"
      },
      image: {
        error: "Echec"
      },
      pageHeader: {
        title: "Retour"
      },
      popconfirm: {
        confirmButtonText: "Oui",
        cancelButtonText: "Non"
      },
      carousel: {
        leftArrow: "Flèche du carrousel vers la gauche",
        rightArrow: "Flèche du carrousel vers la droite",
        indicator: "Passer au carrousel index {index}"
      }
    }
  };
  var ptBr = {
    name: "pt-br",
    el: {
      breadcrumb: {
        label: "Breadcrumb"
        // to be translated
      },
      colorpicker: {
        confirm: "Confirmar",
        clear: "Limpar",
        defaultLabel: "color picker",
        // to be translated
        description: "current color is {color}. press enter to select a new color.",
        // to be translated
        alphaLabel: "pick alpha value",
        // to be translated
        alphaDescription: "alpha {alpha}, current color is {color}",
        // to be translated
        hueLabel: "pick hue value",
        // to be translated
        hueDescription: "hue {hue}, current color is {color}",
        // to be translated
        svLabel: "pick saturation and brightness value",
        // to be translated
        svDescription: "saturation {saturation}, brightness {brightness}, current color is {color}",
        // to be translated
        predefineDescription: "select {value} as the color"
        // to be translated
      },
      datepicker: {
        now: "Agora",
        today: "Hoje",
        cancel: "Cancelar",
        clear: "Limpar",
        confirm: "Confirmar",
        dateTablePrompt: "Use the arrow keys and enter to select the day of the month",
        // to be translated
        monthTablePrompt: "Use the arrow keys and enter to select the month",
        // to be translated
        yearTablePrompt: "Use the arrow keys and enter to select the year",
        // to be translated
        selectedDate: "Selected date",
        // to be translated
        selectDate: "Selecione a data",
        selectTime: "Selecione a hora",
        startDate: "Data inicial",
        startTime: "Hora inicial",
        endDate: "Data final",
        endTime: "Hora final",
        prevYear: "Ano anterior",
        nextYear: "Próximo ano",
        prevMonth: "Mês anterior",
        nextMonth: "Próximo mês",
        year: "",
        month1: "Janeiro",
        month2: "Fevereiro",
        month3: "Março",
        month4: "Abril",
        month5: "Maio",
        month6: "Junho",
        month7: "Julho",
        month8: "Agosto",
        month9: "Setembro",
        month10: "Outubro",
        month11: "Novembro",
        month12: "Dezembro",
        weeks: {
          sun: "Dom",
          mon: "Seg",
          tue: "Ter",
          wed: "Qua",
          thu: "Qui",
          fri: "Sex",
          sat: "Sab"
        },
        weeksFull: {
          sun: "Sunday",
          // to be translated
          mon: "Monday",
          // to be translated
          tue: "Tuesday",
          // to be translated
          wed: "Wednesday",
          // to be translated
          thu: "Thursday",
          // to be translated
          fri: "Friday",
          // to be translated
          sat: "Saturday"
          // to be translated
        },
        months: {
          jan: "Jan",
          feb: "Fev",
          mar: "Mar",
          apr: "Abr",
          may: "Mai",
          jun: "Jun",
          jul: "Jul",
          aug: "Ago",
          sep: "Set",
          oct: "Out",
          nov: "Nov",
          dec: "Dez"
        }
      },
      inputNumber: {
        decrease: "decrease number",
        // to be translated
        increase: "increase number"
        // to be translated
      },
      select: {
        loading: "Carregando",
        noMatch: "Sem resultados",
        noData: "Sem dados",
        placeholder: "Selecione"
      },
      mention: {
        loading: "Carregando"
      },
      dropdown: {
        toggleDropdown: "Toggle Dropdown"
        // to be translated
      },
      cascader: {
        noMatch: "Sem resultados",
        loading: "Carregando",
        placeholder: "Selecione",
        noData: "Sem dados"
      },
      pagination: {
        goto: "Ir para",
        pagesize: "/página",
        total: "Total {total}",
        pageClassifier: "",
        page: "Page",
        // to be translated
        prev: "Go to previous page",
        // to be translated
        next: "Go to next page",
        // to be translated
        currentPage: "page {pager}",
        // to be translated
        prevPages: "Previous {pager} pages",
        // to be translated
        nextPages: "Next {pager} pages",
        // to be translated
        deprecationWarning: "Deprecated usages detected, please refer to the el-pagination documentation for more details"
        // to be translated
      },
      dialog: {
        close: "Close this dialog"
        // to be translated
      },
      drawer: {
        close: "Close this dialog"
        // to be translated
      },
      messagebox: {
        title: "Mensagem",
        confirm: "Confirmar",
        cancel: "Cancelar",
        error: "Erro!",
        close: "Close this dialog"
        // to be translated
      },
      upload: {
        deleteTip: "aperte delete para apagar",
        delete: "Apagar",
        preview: "Pré-visualizar",
        continue: "Continuar"
      },
      slider: {
        defaultLabel: "slider between {min} and {max}",
        // to be translated
        defaultRangeStartLabel: "pick start value",
        // to be translated
        defaultRangeEndLabel: "pick end value"
        // to be translated
      },
      table: {
        emptyText: "Sem dados",
        confirmFilter: "Confirmar",
        resetFilter: "Limpar",
        clearFilter: "Todos",
        sumText: "Total",
        selectAllLabel: "Select all rows",
        // to be translated
        selectRowLabel: "Select this row",
        // to be translated
        expandRowLabel: "Expand this row",
        // to be translated
        collapseRowLabel: "Collapse this row",
        // to be translated
        sortLabel: "Sort by {column}",
        // to be translated
        filterLabel: "Filter by {column}"
        // to be translated
      },
      tag: {
        close: "Close this tag"
        // to be translated
      },
      tour: {
        next: "Próximo",
        previous: "Anterior",
        finish: "Finalizar",
        close: "Close this dialog"
        // to be translated
      },
      tree: {
        emptyText: "Sem dados"
      },
      transfer: {
        noMatch: "Sem resultados",
        noData: "Sem dados",
        titles: ["Lista 1", "Lista 2"],
        filterPlaceholder: "Digite uma palavra-chave",
        noCheckedFormat: "{total} itens",
        hasCheckedFormat: "{checked}/{total} selecionados"
      },
      image: {
        error: "Erro ao carregar imagem"
      },
      pageHeader: {
        title: "Voltar"
      },
      popconfirm: {
        confirmButtonText: "Sim",
        cancelButtonText: "Não"
      },
      carousel: {
        leftArrow: "Carousel arrow left",
        // to be translated
        rightArrow: "Carousel arrow right",
        // to be translated
        indicator: "Carousel switch to index {index}"
        // to be translated
      }
    }
  };
  var ja = {
    name: "ja",
    el: {
      breadcrumb: {
        label: "Breadcrumb"
        // to be translated
      },
      colorpicker: {
        confirm: "OK",
        clear: "クリア",
        defaultLabel: "color picker",
        // to be translated
        description: "current color is {color}. press enter to select a new color.",
        // to be translated
        alphaLabel: "pick alpha value",
        // to be translated
        alphaDescription: "alpha {alpha}, current color is {color}",
        // to be translated
        hueLabel: "pick hue value",
        // to be translated
        hueDescription: "hue {hue}, current color is {color}",
        // to be translated
        svLabel: "pick saturation and brightness value",
        // to be translated
        svDescription: "saturation {saturation}, brightness {brightness}, current color is {color}",
        // to be translated
        predefineDescription: "select {value} as the color"
        // to be translated
      },
      datepicker: {
        now: "現在",
        today: "今日",
        cancel: "キャンセル",
        clear: "クリア",
        confirm: "OK",
        dateTablePrompt: "Use the arrow keys and enter to select the day of the month",
        // to be translated
        monthTablePrompt: "Use the arrow keys and enter to select the month",
        // to be translated
        yearTablePrompt: "Use the arrow keys and enter to select the year",
        // to be translated
        selectedDate: "Selected date",
        // to be translated
        selectDate: "日付を選択",
        selectTime: "時間を選択",
        startDate: "開始日",
        startTime: "開始時間",
        endDate: "終了日",
        endTime: "終了時間",
        prevYear: "前年",
        nextYear: "翌年",
        prevMonth: "前月",
        nextMonth: "翌月",
        year: "年",
        month1: "1月",
        month2: "2月",
        month3: "3月",
        month4: "4月",
        month5: "5月",
        month6: "6月",
        month7: "7月",
        month8: "8月",
        month9: "9月",
        month10: "10月",
        month11: "11月",
        month12: "12月",
        weeks: {
          sun: "日",
          mon: "月",
          tue: "火",
          wed: "水",
          thu: "木",
          fri: "金",
          sat: "土"
        },
        weeksFull: {
          sun: "Sunday",
          // to be translated
          mon: "Monday",
          // to be translated
          tue: "Tuesday",
          // to be translated
          wed: "Wednesday",
          // to be translated
          thu: "Thursday",
          // to be translated
          fri: "Friday",
          // to be translated
          sat: "Saturday"
          // to be translated
        },
        months: {
          jan: "1月",
          feb: "2月",
          mar: "3月",
          apr: "4月",
          may: "5月",
          jun: "6月",
          jul: "7月",
          aug: "8月",
          sep: "9月",
          oct: "10月",
          nov: "11月",
          dec: "12月"
        }
      },
      inputNumber: {
        decrease: "decrease number",
        // to be translated
        increase: "increase number"
        // to be translated
      },
      select: {
        loading: "ロード中",
        noMatch: "データなし",
        noData: "データなし",
        placeholder: "選択してください"
      },
      mention: {
        loading: "ロード中"
      },
      dropdown: {
        toggleDropdown: "Toggle Dropdown"
        // to be translated
      },
      cascader: {
        noMatch: "データなし",
        loading: "ロード中",
        placeholder: "選択してください",
        noData: "データなし"
      },
      pagination: {
        goto: "",
        pagesize: "件/ページ",
        total: "総計 {total} 件",
        pageClassifier: "ページ目へ",
        page: "Page",
        // to be translated
        prev: "Go to previous page",
        // to be translated
        next: "Go to next page",
        // to be translated
        currentPage: "page {pager}",
        // to be translated
        prevPages: "Previous {pager} pages",
        // to be translated
        nextPages: "Next {pager} pages",
        // to be translated
        deprecationWarning: "Deprecated usages detected, please refer to the el-pagination documentation for more details"
        // to be translated
      },
      dialog: {
        close: "Close this dialog"
        // to be translated
      },
      drawer: {
        close: "Close this dialog"
        // to be translated
      },
      messagebox: {
        title: "メッセージ",
        confirm: "OK",
        cancel: "キャンセル",
        error: "正しくない入力",
        close: "Close this dialog"
        // to be translated
      },
      upload: {
        deleteTip: "Delキーを押して削除する",
        delete: "削除する",
        preview: "プレビュー",
        continue: "続行する"
      },
      slider: {
        defaultLabel: "slider between {min} and {max}",
        // to be translated
        defaultRangeStartLabel: "pick start value",
        // to be translated
        defaultRangeEndLabel: "pick end value"
        // to be translated
      },
      table: {
        emptyText: "データなし",
        confirmFilter: "確認",
        resetFilter: "初期化",
        clearFilter: "すべて",
        sumText: "合計",
        selectAllLabel: "Select all rows",
        // to be translated
        selectRowLabel: "Select this row",
        // to be translated
        expandRowLabel: "Expand this row",
        // to be translated
        collapseRowLabel: "Collapse this row",
        // to be translated
        sortLabel: "Sort by {column}",
        // to be translated
        filterLabel: "Filter by {column}"
        // to be translated
      },
      tag: {
        close: "Close this tag"
        // to be translated
      },
      tour: {
        next: "次へ",
        previous: "前へ",
        finish: "ツアー終了",
        close: "Close this dialog"
        // to be translated
      },
      tree: {
        emptyText: "データなし"
      },
      transfer: {
        noMatch: "データなし",
        noData: "データなし",
        titles: ["リスト 1", "リスト 2"],
        filterPlaceholder: "キーワードを入力",
        noCheckedFormat: "総計 {total} 件",
        hasCheckedFormat: "{checked}/{total} を選択した"
      },
      image: {
        error: "失敗"
      },
      pageHeader: {
        title: "戻る"
      },
      popconfirm: {
        confirmButtonText: "はい",
        cancelButtonText: "いいえ"
      },
      carousel: {
        leftArrow: "Carousel arrow left",
        // to be translated
        rightArrow: "Carousel arrow right",
        // to be translated
        indicator: "Carousel switch to index {index}"
        // to be translated
      }
    }
  };
  var it$1 = {
    name: "it",
    el: {
      breadcrumb: {
        label: "Breadcrumb"
        // to be translated
      },
      colorpicker: {
        confirm: "OK",
        clear: "Pulisci",
        defaultLabel: "color picker",
        // to be translated
        description: "current color is {color}. press enter to select a new color.",
        // to be translated
        alphaLabel: "pick alpha value",
        // to be translated
        alphaDescription: "alpha {alpha}, current color is {color}",
        // to be translated
        hueLabel: "pick hue value",
        // to be translated
        hueDescription: "hue {hue}, current color is {color}",
        // to be translated
        svLabel: "pick saturation and brightness value",
        // to be translated
        svDescription: "saturation {saturation}, brightness {brightness}, current color is {color}",
        // to be translated
        predefineDescription: "select {value} as the color"
        // to be translated
      },
      datepicker: {
        now: "Ora",
        today: "Oggi",
        cancel: "Cancella",
        clear: "Pulisci",
        confirm: "OK",
        dateTablePrompt: "Use the arrow keys and enter to select the day of the month",
        // to be translated
        monthTablePrompt: "Use the arrow keys and enter to select the month",
        // to be translated
        yearTablePrompt: "Use the arrow keys and enter to select the year",
        // to be translated
        selectedDate: "Selected date",
        // to be translated
        selectDate: "Seleziona data",
        selectTime: "Seleziona ora",
        startDate: "Data inizio",
        startTime: "Ora inizio",
        endDate: "Data fine",
        endTime: "Ora fine",
        prevYear: "Anno precedente",
        nextYear: "Anno successivo",
        prevMonth: "Mese precedente",
        nextMonth: "Mese successivo",
        year: "",
        month1: "Gennaio",
        month2: "Febbraio",
        month3: "Marzo",
        month4: "Aprile",
        month5: "Maggio",
        month6: "Giugno",
        month7: "Luglio",
        month8: "Agosto",
        month9: "Settembre",
        month10: "Ottobre",
        month11: "Novembre",
        month12: "Dicembre",
        weeks: {
          sun: "Dom",
          mon: "Lun",
          tue: "Mar",
          wed: "Mer",
          thu: "Gio",
          fri: "Ven",
          sat: "Sab"
        },
        weeksFull: {
          sun: "Sunday",
          // to be translated
          mon: "Monday",
          // to be translated
          tue: "Tuesday",
          // to be translated
          wed: "Wednesday",
          // to be translated
          thu: "Thursday",
          // to be translated
          fri: "Friday",
          // to be translated
          sat: "Saturday"
          // to be translated
        },
        months: {
          jan: "Gen",
          feb: "Feb",
          mar: "Mar",
          apr: "Apr",
          may: "Mag",
          jun: "Giu",
          jul: "Lug",
          aug: "Ago",
          sep: "Set",
          oct: "Ott",
          nov: "Nov",
          dec: "Dic"
        }
      },
      inputNumber: {
        decrease: "decrease number",
        // to be translated
        increase: "increase number"
        // to be translated
      },
      select: {
        loading: "Caricamento",
        noMatch: "Nessuna corrispondenza",
        noData: "Nessun dato",
        placeholder: "Seleziona"
      },
      mention: {
        loading: "Caricamento"
      },
      dropdown: {
        toggleDropdown: "Toggle Dropdown"
        // to be translated
      },
      cascader: {
        noMatch: "Nessuna corrispondenza",
        loading: "Caricamento",
        placeholder: "Seleziona",
        noData: "Nessun dato"
      },
      pagination: {
        goto: "Vai a",
        pagesize: "/page",
        total: "Totale {total}",
        pageClassifier: "",
        page: "Page",
        // to be translated
        prev: "Go to previous page",
        // to be translated
        next: "Go to next page",
        // to be translated
        currentPage: "page {pager}",
        // to be translated
        prevPages: "Previous {pager} pages",
        // to be translated
        nextPages: "Next {pager} pages",
        // to be translated
        deprecationWarning: "Deprecated usages detected, please refer to the el-pagination documentation for more details"
        // to be translated
      },
      dialog: {
        close: "Close this dialog"
        // to be translated
      },
      drawer: {
        close: "Close this dialog"
        // to be translated
      },
      messagebox: {
        title: "Message",
        // to be translated
        confirm: "OK",
        cancel: "Cancella",
        error: "Input non valido",
        close: "Close this dialog"
        // to be translated
      },
      upload: {
        deleteTip: "Premi cancella per rimuovere",
        delete: "Cancella",
        preview: "Anteprima",
        continue: "Continua"
      },
      slider: {
        defaultLabel: "slider between {min} and {max}",
        // to be translated
        defaultRangeStartLabel: "pick start value",
        // to be translated
        defaultRangeEndLabel: "pick end value"
        // to be translated
      },
      table: {
        emptyText: "Nessun dato",
        confirmFilter: "Conferma",
        resetFilter: "Reset",
        clearFilter: "Tutti",
        sumText: "Somma",
        selectAllLabel: "Select all rows",
        // to be translated
        selectRowLabel: "Select this row",
        // to be translated
        expandRowLabel: "Expand this row",
        // to be translated
        collapseRowLabel: "Collapse this row",
        // to be translated
        sortLabel: "Sort by {column}",
        // to be translated
        filterLabel: "Filter by {column}"
        // to be translated
      },
      tag: {
        close: "Close this tag"
        // to be translated
      },
      tour: {
        next: "Next",
        // to be translated
        previous: "Previous",
        // to be translated
        finish: "Finish",
        // to be translated
        close: "Close this dialog"
        // to be translated
      },
      tree: {
        emptyText: "Nessun dato"
      },
      transfer: {
        noMatch: "Nessuna corrispondenza",
        noData: "Nessun dato",
        titles: ["Lista 1", "Lista 2"],
        filterPlaceholder: "Inserisci filtro",
        noCheckedFormat: "{total} elementi",
        hasCheckedFormat: "{checked}/{total} selezionati"
      },
      image: {
        error: "FAILED"
        // to be translated
      },
      pageHeader: {
        title: "Back"
        // to be translated
      },
      popconfirm: {
        confirmButtonText: "Yes",
        // to be translated
        cancelButtonText: "No"
        // to be translated
      },
      carousel: {
        leftArrow: "Carousel arrow left",
        // to be translated
        rightArrow: "Carousel arrow right",
        // to be translated
        indicator: "Carousel switch to index {index}"
        // to be translated
      }
    }
  };
  var zhCn = {
    name: "zh-cn",
    el: {
      breadcrumb: {
        label: "面包屑"
      },
      colorpicker: {
        confirm: "确定",
        clear: "清空",
        defaultLabel: "颜色选择器",
        description: "当前颜色 {color}，按 Enter 键选择新颜色",
        alphaLabel: "选择透明度的值",
        alphaDescription: "透明度 {alpha}, 当前颜色 {color}",
        hueLabel: "选择色相值",
        hueDescription: "色相 {hue}, 当前颜色 {color}",
        svLabel: "选择饱和度与明度的值",
        svDescription: "饱和度 {saturation}, 明度 {brightness}, 当前颜色 {color}",
        predefineDescription: "选择 {value} 作为颜色"
      },
      datepicker: {
        now: "此刻",
        today: "今天",
        cancel: "取消",
        clear: "清空",
        confirm: "确定",
        dateTablePrompt: "使用方向键与 Enter 键可选择日期",
        monthTablePrompt: "使用方向键与 Enter 键可选择月份",
        yearTablePrompt: "使用方向键与 Enter 键可选择年份",
        selectedDate: "已选日期",
        selectDate: "选择日期",
        selectTime: "选择时间",
        startDate: "开始日期",
        startTime: "开始时间",
        endDate: "结束日期",
        endTime: "结束时间",
        prevYear: "前一年",
        nextYear: "后一年",
        prevMonth: "上个月",
        nextMonth: "下个月",
        year: "年",
        month1: "1 月",
        month2: "2 月",
        month3: "3 月",
        month4: "4 月",
        month5: "5 月",
        month6: "6 月",
        month7: "7 月",
        month8: "8 月",
        month9: "9 月",
        month10: "10 月",
        month11: "11 月",
        month12: "12 月",
        weeks: {
          sun: "日",
          mon: "一",
          tue: "二",
          wed: "三",
          thu: "四",
          fri: "五",
          sat: "六"
        },
        weeksFull: {
          sun: "星期日",
          mon: "星期一",
          tue: "星期二",
          wed: "星期三",
          thu: "星期四",
          fri: "星期五",
          sat: "星期六"
        },
        months: {
          jan: "一月",
          feb: "二月",
          mar: "三月",
          apr: "四月",
          may: "五月",
          jun: "六月",
          jul: "七月",
          aug: "八月",
          sep: "九月",
          oct: "十月",
          nov: "十一月",
          dec: "十二月"
        }
      },
      inputNumber: {
        decrease: "减少数值",
        increase: "增加数值"
      },
      select: {
        loading: "加载中",
        noMatch: "无匹配数据",
        noData: "无数据",
        placeholder: "请选择"
      },
      mention: {
        loading: "加载中"
      },
      dropdown: {
        toggleDropdown: "切换下拉选项"
      },
      cascader: {
        noMatch: "无匹配数据",
        loading: "加载中",
        placeholder: "请选择",
        noData: "暂无数据"
      },
      pagination: {
        goto: "前往",
        pagesize: "条/页",
        total: "共 {total} 条",
        pageClassifier: "页",
        page: "页",
        prev: "上一页",
        next: "下一页",
        currentPage: "第 {pager} 页",
        prevPages: "向前 {pager} 页",
        nextPages: "向后 {pager} 页",
        deprecationWarning: "你使用了一些已被废弃的用法，请参考 el-pagination 的官方文档"
      },
      dialog: {
        close: "关闭此对话框"
      },
      drawer: {
        close: "关闭此对话框"
      },
      messagebox: {
        title: "提示",
        confirm: "确定",
        cancel: "取消",
        error: "输入的数据不合法!",
        close: "关闭此对话框"
      },
      upload: {
        deleteTip: "按 Delete 键可删除",
        delete: "删除",
        preview: "查看图片",
        continue: "继续上传"
      },
      slider: {
        defaultLabel: "滑块介于 {min} 至 {max}",
        defaultRangeStartLabel: "选择起始值",
        defaultRangeEndLabel: "选择结束值"
      },
      table: {
        emptyText: "暂无数据",
        confirmFilter: "筛选",
        resetFilter: "重置",
        clearFilter: "全部",
        sumText: "合计",
        selectAllLabel: "选择所有行",
        selectRowLabel: "选择当前行",
        expandRowLabel: "展开当前行",
        collapseRowLabel: "收起当前行",
        sortLabel: "按 {column} 排序",
        filterLabel: "按 {column} 过滤"
      },
      tag: {
        close: "关闭此标签"
      },
      tour: {
        next: "下一步",
        previous: "上一步",
        finish: "结束导览",
        close: "关闭此对话框"
      },
      tree: {
        emptyText: "暂无数据"
      },
      transfer: {
        noMatch: "无匹配数据",
        noData: "无数据",
        titles: ["列表 1", "列表 2"],
        filterPlaceholder: "请输入搜索内容",
        noCheckedFormat: "共 {total} 项",
        hasCheckedFormat: "已选 {checked}/{total} 项"
      },
      image: {
        error: "加载失败"
      },
      pageHeader: {
        title: "返回"
      },
      popconfirm: {
        confirmButtonText: "确定",
        cancelButtonText: "取消"
      },
      carousel: {
        leftArrow: "上一张幻灯片",
        rightArrow: "下一张幻灯片",
        indicator: "幻灯片切换至索引 {index}"
      }
    }
  };
  const currentView = ref("dashboard");
  const currentSubView = ref(null);
  function useNavigation() {
    const navigateTo = (view, subView = null) => {
      currentView.value = view;
      currentSubView.value = subView;
      const url = new URL(window.location);
      url.searchParams.set("view", view);
      if (subView) {
        url.searchParams.set("subview", subView);
      } else {
        url.searchParams.delete("subview");
      }
      window.history.pushState({}, "", url);
    };
    const initFromUrl = () => {
      if (window.kitsuneAiPlatformConfig && window.kitsuneAiPlatformConfig.initialView) {
        currentView.value = window.kitsuneAiPlatformConfig.initialView;
      }
      const params = new URLSearchParams(window.location.search);
      const subView = params.get("subview");
      if (subView) {
        currentSubView.value = subView;
      }
    };
    return {
      currentView,
      currentSubView,
      navigateTo,
      initFromUrl
    };
  }
  const ajaxFetch = async (action, data = {}, method = "POST") => {
    const formData = new FormData();
    formData.append("action", action);
    formData.append("nonce", window.kitsuneAiPlatformConfig.ajaxNonce);
    for (const key in data) {
      if (Object.prototype.hasOwnProperty.call(data, key)) {
        const value = data[key];
        if (typeof value === "object" && value !== null) {
          formData.append(key, JSON.stringify(value));
        } else if (value !== void 0) {
          formData.append(key, value);
        }
      }
    }
    let url = window.kitsuneAiPlatformConfig.ajaxUrl;
    let body = formData;
    if (method === "GET") {
      const params = new URLSearchParams();
      for (const pair of formData.entries()) {
        params.append(pair[0], pair[1]);
      }
      url += `?${params.toString()}`;
      body = void 0;
    }
    const response = await fetch(url, {
      method,
      body
    });
    const result = await response.json();
    if (!result.success) {
      throw new Error(result.data?.message || "Request failed");
    }
    return result.data;
  };
  function createApiAction(config) {
    const {
      action,
      method = "POST",
      mapParams = () => ({}),
      mapResult = (response) => ({ success: true, data: response }),
      errorMessage = `Error calling ${action}:`
    } = config;
    return async (...args) => {
      try {
        const params = mapParams(...args);
        const response = await ajaxFetch(action, params, method);
        return mapResult(response, ...args);
      } catch (error) {
        console.error(errorMessage, error);
        return { success: false, message: error.message };
      }
    };
  }
  function useAnalyticsAPI() {
    const getAnalytics = createApiAction({
      action: "kitsune_ai_platform_get_analytics",
      method: "GET",
      mapParams: (params = {}) => params,
      mapResult: (response) => ({ success: true, data: response }),
      errorMessage: "Error fetching analytics:"
    });
    const getDashboardStats = createApiAction({
      action: "kitsune_ai_platform_get_analytics",
      method: "GET",
      mapParams: () => ({ period: "dashboard" }),
      mapResult: (response) => ({ success: true, data: response }),
      errorMessage: "Error fetching dashboard stats:"
    });
    return {
      getAnalytics,
      getDashboardStats
    };
  }
  function useI18n() {
    const strings = window.kitsuneAiPlatformConfig?.i18n ?? {};
    const t = (key, replacements = {}) => {
      let str = key in strings ? strings[key] : key;
      for (const [placeholder, value] of Object.entries(replacements)) {
        str = str.replace(`{${placeholder}}`, String(value));
      }
      return str;
    };
    return { t, strings };
  }
  const showModal = ref(false);
  const modalContent = ref("");
  function useModal() {
    const openModal = (content) => {
      modalContent.value = content;
      showModal.value = true;
    };
    const closeModal = () => {
      showModal.value = false;
      modalContent.value = "";
    };
    return {
      showModal,
      modalContent,
      openModal,
      closeModal
    };
  }
  const _hoisted_1$24 = ["innerHTML"];
  const _sfc_main$3p = {
    __name: "AppModal",
    setup(__props) {
      const { showModal: showModal2, modalContent: modalContent2, closeModal, modalTitle } = useModal();
      return (_ctx, _cache) => {
        const _component_el_dialog = resolveComponent("el-dialog");
        return openBlock(), createBlock(_component_el_dialog, {
          modelValue: unref(showModal2),
          "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(showModal2) ? showModal2.value = $event : null),
          title: unref(modalTitle) || "Modal",
          width: "50%",
          "before-close": unref(closeModal),
          "destroy-on-close": "",
          center: ""
        }, {
          default: withCtx(() => [
            createBaseVNode("div", { innerHTML: unref(modalContent2) }, null, 8, _hoisted_1$24)
          ]),
          _: 1
        }, 8, ["modelValue", "title", "before-close"]);
      };
    }
  };
  const getModelMap = () => window?.kitsuneAiPlatformConfig?.models || {};
  const DEFAULT_OPENAI_MODEL = getModelMap().defaultModel || "gpt-4o";
  const cloneOptions = (options = []) => options.map((option) => ({ ...option }));
  const getChatModelGroups = (providerId) => {
    const modelMap = getModelMap();
    if (providerId === "openai") {
      const schema = modelMap.openai || {};
      return [
        { key: "standard", label: "Standard", models: schema.standard?.models || [] },
        { key: "reasoning", label: "Reasoning", models: Object.keys(schema.reasoning || {}) }
      ];
    }
    if (providerId === "anthropic") {
      const schema = modelMap.anthropic || {};
      const allModels = schema.models || [];
      const thinkingModels = schema.extendedThinking?.supportedModels || [];
      return [
        { key: "standard", label: "Standard", models: allModels.filter((m2) => !thinkingModels.includes(m2)) },
        { key: "extended-thinking", label: "Extended Thinking", models: thinkingModels }
      ];
    }
    if (providerId === "google") {
      const schema = modelMap.google || {};
      return [
        { key: "gemini3", label: "Gemini 3", models: schema.gemini3?.models || [] },
        { key: "gemini25", label: "Gemini 2.5", models: schema.gemini25?.models || [] }
      ];
    }
    return [];
  };
  const getModelOrderMap = (providerId) => {
    const groups = getChatModelGroups(providerId);
    const map2 = {};
    let index = 0;
    for (const group of groups) {
      for (const modelId of group.models) {
        if (map2[modelId] === void 0) {
          map2[modelId] = index;
          index += 1;
        }
      }
    }
    return map2;
  };
  const fallbackModelName = (modelId) => modelId;
  const getSupportedChatModelIds = (providerId) => {
    const groups = getChatModelGroups(providerId);
    const modelIds = [];
    for (const group of groups) {
      modelIds.push(...group.models);
    }
    return [...new Set(modelIds)];
  };
  const mergeSupportedChatModels = (providerId, existingModels = {}, extraModelIds = []) => {
    const supportedModelIds = getSupportedChatModelIds(providerId);
    const mergedModels = {};
    for (const [modelId, modelData] of Object.entries(existingModels || {})) {
      if (supportedModelIds.includes(modelId)) {
        mergedModels[modelId] = modelData;
      }
    }
    for (const modelId of supportedModelIds) {
      if (!mergedModels[modelId]) {
        mergedModels[modelId] = { name: fallbackModelName(modelId) };
      }
    }
    return mergedModels;
  };
  const getChatModelTypeInfo = (providerId, modelId) => {
    if (!providerId || !modelId) {
      return null;
    }
    const groups = getChatModelGroups(providerId);
    for (const group of groups) {
      if (group.models.includes(modelId)) {
        return { key: group.key, label: group.label };
      }
    }
    return null;
  };
  const getProviderChatModelGroups = (providerId, chatModels = {}) => {
    const groups = getChatModelGroups(providerId);
    const groupOrder = new Map(groups.map((group, index) => [group.key, index]));
    const modelOrder = getModelOrderMap(providerId);
    const groupedModels = /* @__PURE__ */ new Map();
    for (const [modelId, modelData] of Object.entries(chatModels || {})) {
      const typeInfo = getChatModelTypeInfo(providerId, modelId);
      const key = typeInfo?.key || "other";
      const label = typeInfo?.label || "Other";
      if (!groupedModels.has(key)) {
        groupedModels.set(key, { key, label, models: [] });
      }
      groupedModels.get(key).models.push({
        id: modelId,
        name: modelData?.name || fallbackModelName(modelId)
      });
    }
    return Array.from(groupedModels.values()).sort((a2, b2) => {
      const aOrder = groupOrder.has(a2.key) ? groupOrder.get(a2.key) : Number.MAX_SAFE_INTEGER;
      const bOrder = groupOrder.has(b2.key) ? groupOrder.get(b2.key) : Number.MAX_SAFE_INTEGER;
      if (aOrder !== bOrder) {
        return aOrder - bOrder;
      }
      return a2.label.localeCompare(b2.label);
    }).map((group) => ({
      ...group,
      models: group.models.sort((a2, b2) => {
        const aOrder = modelOrder[a2.id];
        const bOrder = modelOrder[b2.id];
        if (aOrder !== void 0 || bOrder !== void 0) {
          if (aOrder === void 0) return 1;
          if (bOrder === void 0) return -1;
          if (aOrder !== bOrder) return aOrder - bOrder;
        }
        return a2.name.localeCompare(b2.name);
      })
    }));
  };
  const getModelOptionDefinitions = (providerId, modelId) => {
    if (!providerId || !modelId) {
      return [];
    }
    const modelMap = getModelMap();
    if (providerId === "openai") {
      const schema = modelMap.openai || {};
      if ((schema.standard?.models || []).includes(modelId)) {
        return cloneOptions(schema.standard?.options || []);
      }
      const reasoningConfig = (schema.reasoning || {})[modelId];
      if (!reasoningConfig) {
        return [];
      }
      if (!Array.isArray(reasoningConfig.values) || reasoningConfig.values.length === 0) {
        return [];
      }
      return [
        {
          key: "reasoning_effort",
          label: "Reasoning Effort",
          type: "enum",
          values: [...reasoningConfig.values],
          default: reasoningConfig.default || reasoningConfig.values[0]
        }
      ];
    }
    if (providerId === "anthropic") {
      const schema = modelMap.anthropic || {};
      if (!(schema.models || []).includes(modelId)) {
        return [];
      }
      const options = cloneOptions(schema.options || []);
      if ((schema.extendedThinking?.supportedModels || []).includes(modelId)) {
        options.push(...cloneOptions(schema.extendedThinking?.options || []));
      }
      return options;
    }
    if (providerId === "google") {
      const schema = modelMap.google || {};
      for (const family of Object.values(schema)) {
        if ((family.models || []).includes(modelId)) {
          return cloneOptions(family.options || []);
        }
      }
    }
    return [];
  };
  const getImageModelOptions = (modelId) => {
    if (!modelId) return [];
    const imageModels = getModelMap().imageModels || {};
    const options = imageModels[modelId];
    return Array.isArray(options) ? cloneOptions(options) : [];
  };
  const version = "2.13.2";
  const INSTALLED_KEY = /* @__PURE__ */ Symbol("INSTALLED_KEY");
  const configProviderContextKey = /* @__PURE__ */ Symbol();
  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$h = Object.prototype;
  var hasOwnProperty$e = objectProto$h.hasOwnProperty;
  var nativeObjectToString$1 = objectProto$h.toString;
  var symToStringTag$1 = Symbol$1 ? Symbol$1.toStringTag : void 0;
  function getRawTag(value) {
    var isOwn = hasOwnProperty$e.call(value, symToStringTag$1), tag = value[symToStringTag$1];
    try {
      value[symToStringTag$1] = void 0;
      var unmasked = true;
    } catch (e) {
    }
    var result = nativeObjectToString$1.call(value);
    if (unmasked) {
      if (isOwn) {
        value[symToStringTag$1] = tag;
      } else {
        delete value[symToStringTag$1];
      }
    }
    return result;
  }
  var objectProto$g = Object.prototype;
  var nativeObjectToString = objectProto$g.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, iteratee) {
    var index = -1, length = array == null ? 0 : array.length, result = Array(length);
    while (++index < length) {
      result[index] = iteratee(array[index], index, array);
    }
    return result;
  }
  var isArray = Array.isArray;
  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 result = value + "";
    return result == "0" && 1 / value == -Infinity ? "-0" : result;
  }
  var reWhitespace = /\s/;
  function trimmedEndIndex(string2) {
    var index = string2.length;
    while (index-- && reWhitespace.test(string2.charAt(index))) {
    }
    return index;
  }
  var reTrimStart = /^\s+/;
  function baseTrim(string2) {
    return string2 ? string2.slice(0, trimmedEndIndex(string2) + 1).replace(reTrimStart, "") : string2;
  }
  function isObject$1(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$1(value)) {
      var other = typeof value.valueOf == "function" ? value.valueOf() : value;
      value = isObject$1(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$1(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 uid2 = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
    return uid2 ? "Symbol(src)_1." + uid2 : "";
  })();
  function isMasked(func) {
    return !!maskSrcKey && maskSrcKey in func;
  }
  var funcProto$2 = Function.prototype;
  var funcToString$2 = funcProto$2.toString;
  function toSource(func) {
    if (func != null) {
      try {
        return funcToString$2.call(func);
      } catch (e) {
      }
      try {
        return func + "";
      } catch (e) {
      }
    }
    return "";
  }
  var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
  var reIsHostCtor = /^\[object .+?Constructor\]$/;
  var funcProto$1 = Function.prototype, objectProto$f = Object.prototype;
  var funcToString$1 = funcProto$1.toString;
  var hasOwnProperty$d = objectProto$f.hasOwnProperty;
  var reIsNative = RegExp(
    "^" + funcToString$1.call(hasOwnProperty$d).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
  );
  function baseIsNative(value) {
    if (!isObject$1(value) || isMasked(value)) {
      return false;
    }
    var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
    return pattern.test(toSource(value));
  }
  function getValue$1(object, key) {
    return object == null ? void 0 : object[key];
  }
  function getNative(object, key) {
    var value = getValue$1(object, key);
    return baseIsNative(value) ? value : void 0;
  }
  var WeakMap$1 = getNative(root, "WeakMap");
  var objectCreate = Object.create;
  var baseCreate = /* @__PURE__ */ (function() {
    function object() {
    }
    return function(proto) {
      if (!isObject$1(proto)) {
        return {};
      }
      if (objectCreate) {
        return objectCreate(proto);
      }
      object.prototype = proto;
      var result = new object();
      object.prototype = void 0;
      return result;
    };
  })();
  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);
  }
  function noop$1() {
  }
  function copyArray(source, array) {
    var index = -1, length = source.length;
    array || (array = Array(length));
    while (++index < length) {
      array[index] = source[index];
    }
    return array;
  }
  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, string2) {
    return defineProperty(func, "toString", {
      "configurable": true,
      "enumerable": false,
      "value": constant(string2),
      "writable": true
    });
  };
  var setToString = shortOut(baseSetToString);
  function arrayEach(array, iteratee) {
    var index = -1, length = array == null ? 0 : array.length;
    while (++index < length) {
      if (iteratee(array[index], index, array) === false) {
        break;
      }
    }
    return array;
  }
  function baseFindIndex(array, predicate, fromIndex, fromRight) {
    var length = array.length, index = fromIndex + (fromRight ? 1 : -1);
    while (fromRight ? index-- : ++index < length) {
      if (predicate(array[index], index, array)) {
        return index;
      }
    }
    return -1;
  }
  function baseIsNaN(value) {
    return value !== value;
  }
  function strictIndexOf(array, value, fromIndex) {
    var index = fromIndex - 1, length = array.length;
    while (++index < length) {
      if (array[index] === value) {
        return index;
      }
    }
    return -1;
  }
  function baseIndexOf(array, value, fromIndex) {
    return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);
  }
  function arrayIncludes(array, value) {
    var length = array == null ? 0 : array.length;
    return !!length && baseIndexOf(array, value, 0) > -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(object, key, value) {
    if (key == "__proto__" && defineProperty) {
      defineProperty(object, key, {
        "configurable": true,
        "enumerable": true,
        "value": value,
        "writable": true
      });
    } else {
      object[key] = value;
    }
  }
  function eq(value, other) {
    return value === other || value !== value && other !== other;
  }
  var objectProto$e = Object.prototype;
  var hasOwnProperty$c = objectProto$e.hasOwnProperty;
  function assignValue(object, key, value) {
    var objValue = object[key];
    if (!(hasOwnProperty$c.call(object, key) && eq(objValue, value)) || value === void 0 && !(key in object)) {
      baseAssignValue(object, key, value);
    }
  }
  function copyObject(source, props2, object, customizer) {
    var isNew = !object;
    object || (object = {});
    var index = -1, length = props2.length;
    while (++index < length) {
      var key = props2[index];
      var newValue = void 0;
      if (newValue === void 0) {
        newValue = source[key];
      }
      if (isNew) {
        baseAssignValue(object, key, newValue);
      } else {
        assignValue(object, key, newValue);
      }
    }
    return object;
  }
  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);
    };
  }
  function baseRest(func, start) {
    return setToString(overRest(func, start, identity), func + "");
  }
  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);
  }
  function isIterateeCall(value, index, object) {
    if (!isObject$1(object)) {
      return false;
    }
    var type = typeof index;
    if (type == "number" ? isArrayLike(object) && isIndex(index, object.length) : type == "string" && index in object) {
      return eq(object[index], value);
    }
    return false;
  }
  function createAssigner(assigner) {
    return baseRest(function(object, sources) {
      var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : void 0, guard = length > 2 ? sources[2] : void 0;
      customizer = assigner.length > 3 && typeof customizer == "function" ? (length--, customizer) : void 0;
      if (guard && isIterateeCall(sources[0], sources[1], guard)) {
        customizer = length < 3 ? void 0 : customizer;
        length = 1;
      }
      object = Object(object);
      while (++index < length) {
        var source = sources[index];
        if (source) {
          assigner(object, source, index, customizer);
        }
      }
      return object;
    });
  }
  var objectProto$d = Object.prototype;
  function isPrototype(value) {
    var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto$d;
    return value === proto;
  }
  function baseTimes(n, iteratee) {
    var index = -1, result = Array(n);
    while (++index < n) {
      result[index] = iteratee(index);
    }
    return result;
  }
  var argsTag$3 = "[object Arguments]";
  function baseIsArguments(value) {
    return isObjectLike(value) && baseGetTag(value) == argsTag$3;
  }
  var objectProto$c = Object.prototype;
  var hasOwnProperty$b = objectProto$c.hasOwnProperty;
  var propertyIsEnumerable$1 = objectProto$c.propertyIsEnumerable;
  var isArguments = baseIsArguments(/* @__PURE__ */ (function() {
    return arguments;
  })()) ? baseIsArguments : function(value) {
    return isObjectLike(value) && hasOwnProperty$b.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$4 = "[object Object]", regexpTag$3 = "[object RegExp]", setTag$5 = "[object Set]", stringTag$3 = "[object String]", weakMapTag$2 = "[object WeakMap]";
  var arrayBufferTag$3 = "[object ArrayBuffer]", dataViewTag$4 = "[object DataView]", float32Tag$2 = "[object Float32Array]", float64Tag$2 = "[object Float64Array]", int8Tag$2 = "[object Int8Array]", int16Tag$2 = "[object Int16Array]", int32Tag$2 = "[object Int32Array]", uint8Tag$2 = "[object Uint8Array]", uint8ClampedTag$2 = "[object Uint8ClampedArray]", uint16Tag$2 = "[object Uint16Array]", uint32Tag$2 = "[object Uint32Array]";
  var typedArrayTags = {};
  typedArrayTags[float32Tag$2] = typedArrayTags[float64Tag$2] = typedArrayTags[int8Tag$2] = typedArrayTags[int16Tag$2] = typedArrayTags[int32Tag$2] = typedArrayTags[uint8Tag$2] = typedArrayTags[uint8ClampedTag$2] = typedArrayTags[uint16Tag$2] = typedArrayTags[uint32Tag$2] = true;
  typedArrayTags[argsTag$2] = typedArrayTags[arrayTag$2] = typedArrayTags[arrayBufferTag$3] = typedArrayTags[boolTag$3] = typedArrayTags[dataViewTag$4] = typedArrayTags[dateTag$3] = typedArrayTags[errorTag$2] = typedArrayTags[funcTag$1] = typedArrayTags[mapTag$5] = typedArrayTags[numberTag$3] = typedArrayTags[objectTag$4] = typedArrayTags[regexpTag$3] = typedArrayTags[setTag$5] = typedArrayTags[stringTag$3] = typedArrayTags[weakMapTag$2] = false;
  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 types2 = freeModule$1 && freeModule$1.require && freeModule$1.require("util").types;
      if (types2) {
        return types2;
      }
      return freeProcess && freeProcess.binding && freeProcess.binding("util");
    } catch (e) {
    }
  })();
  var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
  var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
  var objectProto$b = Object.prototype;
  var hasOwnProperty$a = objectProto$b.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, result = skipIndexes ? baseTimes(value.length, String) : [], length = result.length;
    for (var key in value) {
      if ((inherited || hasOwnProperty$a.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)))) {
        result.push(key);
      }
    }
    return result;
  }
  function overArg(func, transform) {
    return function(arg) {
      return func(transform(arg));
    };
  }
  var nativeKeys = overArg(Object.keys, Object);
  var objectProto$a = Object.prototype;
  var hasOwnProperty$9 = objectProto$a.hasOwnProperty;
  function baseKeys(object) {
    if (!isPrototype(object)) {
      return nativeKeys(object);
    }
    var result = [];
    for (var key in Object(object)) {
      if (hasOwnProperty$9.call(object, key) && key != "constructor") {
        result.push(key);
      }
    }
    return result;
  }
  function keys(object) {
    return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
  }
  function nativeKeysIn(object) {
    var result = [];
    if (object != null) {
      for (var key in Object(object)) {
        result.push(key);
      }
    }
    return result;
  }
  var objectProto$9 = Object.prototype;
  var hasOwnProperty$8 = objectProto$9.hasOwnProperty;
  function baseKeysIn(object) {
    if (!isObject$1(object)) {
      return nativeKeysIn(object);
    }
    var isProto = isPrototype(object), result = [];
    for (var key in object) {
      if (!(key == "constructor" && (isProto || !hasOwnProperty$8.call(object, key)))) {
        result.push(key);
      }
    }
    return result;
  }
  function keysIn(object) {
    return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
  }
  var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/;
  function isKey(value, object) {
    if (isArray(value)) {
      return false;
    }
    var type = typeof value;
    if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol(value)) {
      return true;
    }
    return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);
  }
  var nativeCreate = getNative(Object, "create");
  function hashClear() {
    this.__data__ = nativeCreate ? nativeCreate(null) : {};
    this.size = 0;
  }
  function hashDelete(key) {
    var result = this.has(key) && delete this.__data__[key];
    this.size -= result ? 1 : 0;
    return result;
  }
  var HASH_UNDEFINED$2 = "__lodash_hash_undefined__";
  var objectProto$8 = Object.prototype;
  var hasOwnProperty$7 = objectProto$8.hasOwnProperty;
  function hashGet(key) {
    var data = this.__data__;
    if (nativeCreate) {
      var result = data[key];
      return result === HASH_UNDEFINED$2 ? void 0 : result;
    }
    return hasOwnProperty$7.call(data, key) ? data[key] : void 0;
  }
  var objectProto$7 = Object.prototype;
  var hasOwnProperty$6 = objectProto$7.hasOwnProperty;
  function hashHas(key) {
    var data = this.__data__;
    return nativeCreate ? data[key] !== void 0 : hasOwnProperty$6.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 result = getMapData(this, key)["delete"](key);
    this.size -= result ? 1 : 0;
    return result;
  }
  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), size = data.size;
    data.set(key, value);
    this.size += data.size == size ? 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], cache2 = memoized.cache;
      if (cache2.has(key)) {
        return cache2.get(key);
      }
      var result = func.apply(this, args);
      memoized.cache = cache2.set(key, result) || cache2;
      return result;
    };
    memoized.cache = new (memoize.Cache || MapCache)();
    return memoized;
  }
  memoize.Cache = MapCache;
  var MAX_MEMOIZE_SIZE = 500;
  function memoizeCapped(func) {
    var result = memoize(func, function(key) {
      if (cache2.size === MAX_MEMOIZE_SIZE) {
        cache2.clear();
      }
      return key;
    });
    var cache2 = result.cache;
    return result;
  }
  var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
  var reEscapeChar = /\\(\\)?/g;
  var stringToPath = memoizeCapped(function(string2) {
    var result = [];
    if (string2.charCodeAt(0) === 46) {
      result.push("");
    }
    string2.replace(rePropName, function(match, number, quote, subString) {
      result.push(quote ? subString.replace(reEscapeChar, "$1") : number || match);
    });
    return result;
  });
  function toString$1(value) {
    return value == null ? "" : baseToString(value);
  }
  function castPath(value, object) {
    if (isArray(value)) {
      return value;
    }
    return isKey(value, object) ? [value] : stringToPath(toString$1(value));
  }
  function toKey(value) {
    if (typeof value == "string" || isSymbol(value)) {
      return value;
    }
    var result = value + "";
    return result == "0" && 1 / value == -Infinity ? "-0" : result;
  }
  function baseGet(object, path) {
    path = castPath(path, object);
    var index = 0, length = path.length;
    while (object != null && index < length) {
      object = object[toKey(path[index++])];
    }
    return index && index == length ? object : void 0;
  }
  function get(object, path, defaultValue) {
    var result = object == null ? void 0 : baseGet(object, path);
    return result === void 0 ? defaultValue : result;
  }
  function arrayPush(array, values) {
    var index = -1, length = values.length, offset2 = array.length;
    while (++index < length) {
      array[offset2 + index] = values[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, result) {
    var index = -1, length = array.length;
    predicate || (predicate = isFlattenable);
    result || (result = []);
    while (++index < length) {
      var value = array[index];
      if (depth > 0 && predicate(value)) {
        if (depth > 1) {
          baseFlatten(value, depth - 1, predicate, isStrict, result);
        } else {
          arrayPush(result, value);
        }
      } else if (!isStrict) {
        result[result.length] = value;
      }
    }
    return result;
  }
  function flatten(array) {
    var length = array == null ? 0 : array.length;
    return length ? baseFlatten(array, 1) : [];
  }
  function flatRest(func) {
    return setToString(overRest(func, void 0, flatten), func + "");
  }
  var getPrototype = overArg(Object.getPrototypeOf, Object);
  var objectTag$3 = "[object Object]";
  var funcProto = Function.prototype, objectProto$6 = Object.prototype;
  var funcToString = funcProto.toString;
  var hasOwnProperty$5 = objectProto$6.hasOwnProperty;
  var objectCtorString = funcToString.call(Object);
  function isPlainObject(value) {
    if (!isObjectLike(value) || baseGetTag(value) != objectTag$3) {
      return false;
    }
    var proto = getPrototype(value);
    if (proto === null) {
      return true;
    }
    var Ctor = hasOwnProperty$5.call(proto, "constructor") && proto.constructor;
    return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;
  }
  function baseSlice(array, start, end) {
    var index = -1, length = array.length;
    if (start < 0) {
      start = -start > length ? 0 : length + start;
    }
    end = end > length ? length : end;
    if (end < 0) {
      end += length;
    }
    length = start > end ? 0 : end - start >>> 0;
    start >>>= 0;
    var result = Array(length);
    while (++index < length) {
      result[index] = array[index + start];
    }
    return result;
  }
  function castArray$1() {
    if (!arguments.length) {
      return [];
    }
    var value = arguments[0];
    return isArray(value) ? value : [value];
  }
  function baseClamp(number, lower, upper) {
    if (number === number) {
      if (upper !== void 0) {
        number = number <= upper ? number : upper;
      }
      if (lower !== void 0) {
        number = number >= lower ? number : lower;
      }
    }
    return number;
  }
  function clamp$2(number, lower, upper) {
    if (upper === void 0) {
      upper = lower;
      lower = void 0;
    }
    if (upper !== void 0) {
      upper = toNumber(upper);
      upper = upper === upper ? upper : 0;
    }
    if (lower !== void 0) {
      lower = toNumber(lower);
      lower = lower === lower ? lower : 0;
    }
    return baseClamp(toNumber(number), lower, upper);
  }
  function stackClear() {
    this.__data__ = new ListCache();
    this.size = 0;
  }
  function stackDelete(key) {
    var data = this.__data__, result = data["delete"](key);
    this.size = data.size;
    return result;
  }
  function stackGet(key) {
    return this.__data__.get(key);
  }
  function stackHas(key) {
    return this.__data__.has(key);
  }
  var LARGE_ARRAY_SIZE$1 = 200;
  function stackSet(key, value) {
    var data = this.__data__;
    if (data instanceof ListCache) {
      var pairs = data.__data__;
      if (!Map$1 || pairs.length < LARGE_ARRAY_SIZE$1 - 1) {
        pairs.push([key, value]);
        this.size = ++data.size;
        return this;
      }
      data = this.__data__ = new MapCache(pairs);
    }
    data.set(key, value);
    this.size = data.size;
    return this;
  }
  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;
  function baseAssign(object, source) {
    return object && copyObject(source, keys(source), object);
  }
  function baseAssignIn(object, source) {
    return object && copyObject(source, keysIn(source), object);
  }
  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 Buffer = moduleExports ? root.Buffer : void 0, allocUnsafe = Buffer ? Buffer.allocUnsafe : void 0;
  function cloneBuffer(buffer, isDeep) {
    if (isDeep) {
      return buffer.slice();
    }
    var length = buffer.length, result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
    buffer.copy(result);
    return result;
  }
  function arrayFilter(array, predicate) {
    var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];
    while (++index < length) {
      var value = array[index];
      if (predicate(value, index, array)) {
        result[resIndex++] = value;
      }
    }
    return result;
  }
  function stubArray() {
    return [];
  }
  var objectProto$5 = Object.prototype;
  var propertyIsEnumerable = objectProto$5.propertyIsEnumerable;
  var nativeGetSymbols$1 = Object.getOwnPropertySymbols;
  var getSymbols = !nativeGetSymbols$1 ? stubArray : function(object) {
    if (object == null) {
      return [];
    }
    object = Object(object);
    return arrayFilter(nativeGetSymbols$1(object), function(symbol) {
      return propertyIsEnumerable.call(object, symbol);
    });
  };
  function copySymbols(source, object) {
    return copyObject(source, getSymbols(source), object);
  }
  var nativeGetSymbols = Object.getOwnPropertySymbols;
  var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
    var result = [];
    while (object) {
      arrayPush(result, getSymbols(object));
      object = getPrototype(object);
    }
    return result;
  };
  function copySymbolsIn(source, object) {
    return copyObject(source, getSymbolsIn(source), object);
  }
  function baseGetAllKeys(object, keysFunc, symbolsFunc) {
    var result = keysFunc(object);
    return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
  }
  function getAllKeys(object) {
    return baseGetAllKeys(object, keys, getSymbols);
  }
  function getAllKeysIn(object) {
    return baseGetAllKeys(object, keysIn, getSymbolsIn);
  }
  var DataView = 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), mapCtorString = toSource(Map$1), promiseCtorString = toSource(Promise$1), setCtorString = toSource(Set$1), weakMapCtorString = toSource(WeakMap$1);
  var getTag = baseGetTag;
  if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag$3 || Map$1 && getTag(new Map$1()) != mapTag$4 || Promise$1 && getTag(Promise$1.resolve()) != promiseTag || Set$1 && getTag(new Set$1()) != setTag$4 || WeakMap$1 && getTag(new WeakMap$1()) != weakMapTag$1) {
    getTag = function(value) {
      var result = baseGetTag(value), Ctor = result == objectTag$2 ? value.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : "";
      if (ctorString) {
        switch (ctorString) {
          case dataViewCtorString:
            return dataViewTag$3;
          case mapCtorString:
            return mapTag$4;
          case promiseCtorString:
            return promiseTag;
          case setCtorString:
            return setTag$4;
          case weakMapCtorString:
            return weakMapTag$1;
        }
      }
      return result;
    };
  }
  var objectProto$4 = Object.prototype;
  var hasOwnProperty$4 = objectProto$4.hasOwnProperty;
  function initCloneArray(array) {
    var length = array.length, result = new array.constructor(length);
    if (length && typeof array[0] == "string" && hasOwnProperty$4.call(array, "index")) {
      result.index = array.index;
      result.input = array.input;
    }
    return result;
  }
  var Uint8Array = root.Uint8Array;
  function cloneArrayBuffer(arrayBuffer) {
    var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
    new Uint8Array(result).set(new Uint8Array(arrayBuffer));
    return result;
  }
  function cloneDataView(dataView, isDeep) {
    var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
    return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
  }
  var reFlags = /\w*$/;
  function cloneRegExp(regexp) {
    var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
    result.lastIndex = regexp.lastIndex;
    return result;
  }
  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 = isDeep ? cloneArrayBuffer(typedArray.buffer) : 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(object, tag, isDeep) {
    var Ctor = object.constructor;
    switch (tag) {
      case arrayBufferTag$2:
        return cloneArrayBuffer(object);
      case boolTag$2:
      case dateTag$2:
        return new Ctor(+object);
      case dataViewTag$2:
        return cloneDataView(object, isDeep);
      case float32Tag$1:
      case float64Tag$1:
      case int8Tag$1:
      case int16Tag$1:
      case int32Tag$1:
      case uint8Tag$1:
      case uint8ClampedTag$1:
      case uint16Tag$1:
      case uint32Tag$1:
        return cloneTypedArray(object, isDeep);
      case mapTag$3:
        return new Ctor();
      case numberTag$2:
      case stringTag$2:
        return new Ctor(object);
      case regexpTag$2:
        return cloneRegExp(object);
      case setTag$3:
        return new Ctor();
      case symbolTag$2:
        return cloneSymbol(object);
    }
  }
  function initCloneObject(object) {
    return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};
  }
  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 CLONE_DEEP_FLAG$2 = 1, CLONE_FLAT_FLAG$1 = 2, CLONE_SYMBOLS_FLAG$3 = 4;
  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, object, stack2) {
    var result, isDeep = bitmask & CLONE_DEEP_FLAG$2, isFlat = bitmask & CLONE_FLAT_FLAG$1, isFull = bitmask & CLONE_SYMBOLS_FLAG$3;
    if (customizer) {
      result = object ? customizer(value, key, object, stack2) : customizer(value);
    }
    if (result !== void 0) {
      return result;
    }
    if (!isObject$1(value)) {
      return value;
    }
    var isArr = isArray(value);
    if (isArr) {
      result = initCloneArray(value);
      if (!isDeep) {
        return copyArray(value, result);
      }
    } else {
      var tag = getTag(value), isFunc = tag == funcTag || tag == genTag;
      if (isBuffer(value)) {
        return cloneBuffer(value, isDeep);
      }
      if (tag == objectTag$1 || tag == argsTag$1 || isFunc && !object) {
        result = isFlat || isFunc ? {} : initCloneObject(value);
        if (!isDeep) {
          return isFlat ? copySymbolsIn(value, baseAssignIn(result, value)) : copySymbols(value, baseAssign(result, value));
        }
      } else {
        if (!cloneableTags[tag]) {
          return object ? value : {};
        }
        result = initCloneByTag(value, tag, isDeep);
      }
    }
    stack2 || (stack2 = new Stack());
    var stacked = stack2.get(value);
    if (stacked) {
      return stacked;
    }
    stack2.set(value, result);
    if (isSet(value)) {
      value.forEach(function(subValue) {
        result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack2));
      });
    } else if (isMap(value)) {
      value.forEach(function(subValue, key2) {
        result.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack2));
      });
    }
    var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys;
    var props2 = isArr ? void 0 : keysFunc(value);
    arrayEach(props2 || value, function(subValue, key2) {
      if (props2) {
        key2 = subValue;
        subValue = value[key2];
      }
      assignValue(result, key2, baseClone(subValue, bitmask, customizer, key2, value, stack2));
    });
    return result;
  }
  var CLONE_SYMBOLS_FLAG$2 = 4;
  function clone(value) {
    return baseClone(value, CLONE_SYMBOLS_FLAG$2);
  }
  var CLONE_DEEP_FLAG$1 = 1, CLONE_SYMBOLS_FLAG$1 = 4;
  function cloneDeep(value) {
    return baseClone(value, CLONE_DEEP_FLAG$1 | CLONE_SYMBOLS_FLAG$1);
  }
  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(values) {
    var index = -1, length = values == null ? 0 : values.length;
    this.__data__ = new MapCache();
    while (++index < length) {
      this.add(values[index]);
    }
  }
  SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
  SetCache.prototype.has = setCacheHas;
  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(cache2, key) {
    return cache2.has(key);
  }
  var COMPARE_PARTIAL_FLAG$5 = 1, COMPARE_UNORDERED_FLAG$3 = 2;
  function equalArrays(array, other, bitmask, customizer, equalFunc, stack2) {
    var isPartial = bitmask & COMPARE_PARTIAL_FLAG$5, arrLength = array.length, othLength = other.length;
    if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
      return false;
    }
    var arrStacked = stack2.get(array);
    var othStacked = stack2.get(other);
    if (arrStacked && othStacked) {
      return arrStacked == other && othStacked == array;
    }
    var index = -1, result = true, seen = bitmask & COMPARE_UNORDERED_FLAG$3 ? new SetCache() : void 0;
    stack2.set(array, other);
    stack2.set(other, array);
    while (++index < arrLength) {
      var arrValue = array[index], othValue = other[index];
      if (customizer) {
        var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack2) : customizer(arrValue, othValue, index, array, other, stack2);
      }
      if (compared !== void 0) {
        if (compared) {
          continue;
        }
        result = false;
        break;
      }
      if (seen) {
        if (!arraySome(other, function(othValue2, othIndex) {
          if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack2))) {
            return seen.push(othIndex);
          }
        })) {
          result = false;
          break;
        }
      } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack2))) {
        result = false;
        break;
      }
    }
    stack2["delete"](array);
    stack2["delete"](other);
    return result;
  }
  function mapToArray(map2) {
    var index = -1, result = Array(map2.size);
    map2.forEach(function(value, key) {
      result[++index] = [key, value];
    });
    return result;
  }
  function setToArray(set2) {
    var index = -1, result = Array(set2.size);
    set2.forEach(function(value) {
      result[++index] = value;
    });
    return result;
  }
  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(object, other, tag, bitmask, customizer, equalFunc, stack2) {
    switch (tag) {
      case dataViewTag:
        if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {
          return false;
        }
        object = object.buffer;
        other = other.buffer;
      case arrayBufferTag:
        if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
          return false;
        }
        return true;
      case boolTag:
      case dateTag:
      case numberTag:
        return eq(+object, +other);
      case errorTag:
        return object.name == other.name && object.message == other.message;
      case regexpTag:
      case stringTag:
        return object == other + "";
      case mapTag:
        var convert = mapToArray;
      case setTag:
        var isPartial = bitmask & COMPARE_PARTIAL_FLAG$4;
        convert || (convert = setToArray);
        if (object.size != other.size && !isPartial) {
          return false;
        }
        var stacked = stack2.get(object);
        if (stacked) {
          return stacked == other;
        }
        bitmask |= COMPARE_UNORDERED_FLAG$2;
        stack2.set(object, other);
        var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack2);
        stack2["delete"](object);
        return result;
      case symbolTag:
        if (symbolValueOf) {
          return symbolValueOf.call(object) == symbolValueOf.call(other);
        }
    }
    return false;
  }
  var COMPARE_PARTIAL_FLAG$3 = 1;
  var objectProto$3 = Object.prototype;
  var hasOwnProperty$3 = objectProto$3.hasOwnProperty;
  function equalObjects(object, other, bitmask, customizer, equalFunc, stack2) {
    var isPartial = bitmask & COMPARE_PARTIAL_FLAG$3, objProps = getAllKeys(object), 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$3.call(other, key))) {
        return false;
      }
    }
    var objStacked = stack2.get(object);
    var othStacked = stack2.get(other);
    if (objStacked && othStacked) {
      return objStacked == other && othStacked == object;
    }
    var result = true;
    stack2.set(object, other);
    stack2.set(other, object);
    var skipCtor = isPartial;
    while (++index < objLength) {
      key = objProps[index];
      var objValue = object[key], othValue = other[key];
      if (customizer) {
        var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack2) : customizer(objValue, othValue, key, object, other, stack2);
      }
      if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack2) : compared)) {
        result = false;
        break;
      }
      skipCtor || (skipCtor = key == "constructor");
    }
    if (result && !skipCtor) {
      var objCtor = object.constructor, othCtor = other.constructor;
      if (objCtor != othCtor && ("constructor" in object && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) {
        result = false;
      }
    }
    stack2["delete"](object);
    stack2["delete"](other);
    return result;
  }
  var COMPARE_PARTIAL_FLAG$2 = 1;
  var argsTag = "[object Arguments]", arrayTag = "[object Array]", objectTag = "[object Object]";
  var objectProto$2 = Object.prototype;
  var hasOwnProperty$2 = objectProto$2.hasOwnProperty;
  function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack2) {
    var objIsArr = isArray(object), othIsArr = isArray(other), objTag = objIsArr ? arrayTag : getTag(object), 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(object)) {
      if (!isBuffer(other)) {
        return false;
      }
      objIsArr = true;
      objIsObj = false;
    }
    if (isSameTag && !objIsObj) {
      stack2 || (stack2 = new Stack());
      return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack2) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack2);
    }
    if (!(bitmask & COMPARE_PARTIAL_FLAG$2)) {
      var objIsWrapped = objIsObj && hasOwnProperty$2.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty$2.call(other, "__wrapped__");
      if (objIsWrapped || othIsWrapped) {
        var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
        stack2 || (stack2 = new Stack());
        return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack2);
      }
    }
    if (!isSameTag) {
      return false;
    }
    stack2 || (stack2 = new Stack());
    return equalObjects(object, other, bitmask, customizer, equalFunc, stack2);
  }
  function baseIsEqual(value, other, bitmask, customizer, stack2) {
    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, stack2);
  }
  var COMPARE_PARTIAL_FLAG$1 = 1, COMPARE_UNORDERED_FLAG$1 = 2;
  function baseIsMatch(object, source, matchData, customizer) {
    var index = matchData.length, length = index;
    if (object == null) {
      return !length;
    }
    object = Object(object);
    while (index--) {
      var data = matchData[index];
      if (data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {
        return false;
      }
    }
    while (++index < length) {
      data = matchData[index];
      var key = data[0], objValue = object[key], srcValue = data[1];
      if (data[2]) {
        if (objValue === void 0 && !(key in object)) {
          return false;
        }
      } else {
        var stack2 = new Stack();
        var result;
        if (!(result === void 0 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$1 | COMPARE_UNORDERED_FLAG$1, customizer, stack2) : result)) {
          return false;
        }
      }
    }
    return true;
  }
  function isStrictComparable(value) {
    return value === value && !isObject$1(value);
  }
  function getMatchData(object) {
    var result = keys(object), length = result.length;
    while (length--) {
      var key = result[length], value = object[key];
      result[length] = [key, value, isStrictComparable(value)];
    }
    return result;
  }
  function matchesStrictComparable(key, srcValue) {
    return function(object) {
      if (object == null) {
        return false;
      }
      return object[key] === srcValue && (srcValue !== void 0 || key in Object(object));
    };
  }
  function baseMatches(source) {
    var matchData = getMatchData(source);
    if (matchData.length == 1 && matchData[0][2]) {
      return matchesStrictComparable(matchData[0][0], matchData[0][1]);
    }
    return function(object) {
      return object === source || baseIsMatch(object, source, matchData);
    };
  }
  function baseHasIn(object, key) {
    return object != null && key in Object(object);
  }
  function hasPath(object, path, hasFunc) {
    path = castPath(path, object);
    var index = -1, length = path.length, result = false;
    while (++index < length) {
      var key = toKey(path[index]);
      if (!(result = object != null && hasFunc(object, key))) {
        break;
      }
      object = object[key];
    }
    if (result || ++index != length) {
      return result;
    }
    length = object == null ? 0 : object.length;
    return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object));
  }
  function hasIn(object, path) {
    return object != null && hasPath(object, 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(object) {
      var objValue = get(object, path);
      return objValue === void 0 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
    };
  }
  function baseProperty(key) {
    return function(object) {
      return object == null ? void 0 : object[key];
    };
  }
  function basePropertyDeep(path) {
    return function(object) {
      return baseGet(object, 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);
  }
  function createBaseFor(fromRight) {
    return function(object, iteratee, keysFunc) {
      var index = -1, iterable = Object(object), props2 = keysFunc(object), length = props2.length;
      while (length--) {
        var key = props2[++index];
        if (iteratee(iterable[key], key, iterable) === false) {
          break;
        }
      }
      return object;
    };
  }
  var baseFor = createBaseFor();
  function baseForOwn(object, iteratee) {
    return object && baseFor(object, iteratee, keys);
  }
  function createBaseEach(eachFunc, fromRight) {
    return function(collection, iteratee) {
      if (collection == null) {
        return collection;
      }
      if (!isArrayLike(collection)) {
        return eachFunc(collection, iteratee);
      }
      var length = collection.length, index = -1, iterable = Object(collection);
      while (++index < length) {
        if (iteratee(iterable[index], index, iterable) === false) {
          break;
        }
      }
      return collection;
    };
  }
  var baseEach = createBaseEach(baseForOwn);
  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, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;
    if (typeof func != "function") {
      throw new TypeError(FUNC_ERROR_TEXT$1);
    }
    wait = toNumber(wait) || 0;
    if (isObject$1(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;
      result = func.apply(thisArg, args);
      return result;
    }
    function leadingEdge(time) {
      lastInvokeTime = time;
      timerId = setTimeout(timerExpired, wait);
      return leading ? invokeFunc(time) : result;
    }
    function remainingWait(time) {
      var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall;
      return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;
    }
    function shouldInvoke(time) {
      var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;
      return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;
    }
    function timerExpired() {
      var time = now();
      if (shouldInvoke(time)) {
        return trailingEdge(time);
      }
      timerId = setTimeout(timerExpired, remainingWait(time));
    }
    function trailingEdge(time) {
      timerId = void 0;
      if (trailing && lastArgs) {
        return invokeFunc(time);
      }
      lastArgs = lastThis = void 0;
      return result;
    }
    function cancel() {
      if (timerId !== void 0) {
        clearTimeout(timerId);
      }
      lastInvokeTime = 0;
      lastArgs = lastCallTime = lastThis = timerId = void 0;
    }
    function flush() {
      return timerId === void 0 ? result : trailingEdge(now());
    }
    function debounced() {
      var time = now(), isInvoking = shouldInvoke(time);
      lastArgs = arguments;
      lastThis = this;
      lastCallTime = time;
      if (isInvoking) {
        if (timerId === void 0) {
          return leadingEdge(lastCallTime);
        }
        if (maxing) {
          clearTimeout(timerId);
          timerId = setTimeout(timerExpired, wait);
          return invokeFunc(lastCallTime);
        }
      }
      if (timerId === void 0) {
        timerId = setTimeout(timerExpired, wait);
      }
      return result;
    }
    debounced.cancel = cancel;
    debounced.flush = flush;
    return debounced;
  }
  function assignMergeValue(object, key, value) {
    if (value !== void 0 && !eq(object[key], value) || value === void 0 && !(key in object)) {
      baseAssignValue(object, key, value);
    }
  }
  function isArrayLikeObject(value) {
    return isObjectLike(value) && isArrayLike(value);
  }
  function safeGet(object, key) {
    if (key === "constructor" && typeof object[key] === "function") {
      return;
    }
    if (key == "__proto__") {
      return;
    }
    return object[key];
  }
  function toPlainObject(value) {
    return copyObject(value, keysIn(value));
  }
  function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack2) {
    var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack2.get(srcValue);
    if (stacked) {
      assignMergeValue(object, key, stacked);
      return;
    }
    var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack2) : void 0;
    var isCommon = newValue === void 0;
    if (isCommon) {
      var isArr = isArray(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue);
      newValue = srcValue;
      if (isArr || isBuff || isTyped) {
        if (isArray(objValue)) {
          newValue = objValue;
        } else if (isArrayLikeObject(objValue)) {
          newValue = copyArray(objValue);
        } else if (isBuff) {
          isCommon = false;
          newValue = cloneBuffer(srcValue, true);
        } else if (isTyped) {
          isCommon = false;
          newValue = cloneTypedArray(srcValue, true);
        } else {
          newValue = [];
        }
      } else if (isPlainObject(srcValue) || isArguments(srcValue)) {
        newValue = objValue;
        if (isArguments(objValue)) {
          newValue = toPlainObject(objValue);
        } else if (!isObject$1(objValue) || isFunction(objValue)) {
          newValue = initCloneObject(srcValue);
        }
      } else {
        isCommon = false;
      }
    }
    if (isCommon) {
      stack2.set(srcValue, newValue);
      mergeFunc(newValue, srcValue, srcIndex, customizer, stack2);
      stack2["delete"](srcValue);
    }
    assignMergeValue(object, key, newValue);
  }
  function baseMerge(object, source, srcIndex, customizer, stack2) {
    if (object === source) {
      return;
    }
    baseFor(source, function(srcValue, key) {
      stack2 || (stack2 = new Stack());
      if (isObject$1(srcValue)) {
        baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack2);
      } else {
        var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + "", object, source, stack2) : void 0;
        if (newValue === void 0) {
          newValue = srcValue;
        }
        assignMergeValue(object, key, newValue);
      }
    }, keysIn);
  }
  function last(array) {
    var length = array == null ? 0 : array.length;
    return length ? array[length - 1] : void 0;
  }
  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, true);
  }
  function baseMap(collection, iteratee) {
    var index = -1, result = isArrayLike(collection) ? Array(collection.length) : [];
    baseEach(collection, function(value, key, collection2) {
      result[++index] = iteratee(value, key, collection2);
    });
    return result;
  }
  function map(collection, iteratee) {
    var func = isArray(collection) ? arrayMap : baseMap;
    return func(collection, baseIteratee(iteratee));
  }
  function flatMap(collection, iteratee) {
    return baseFlatten(map(collection, iteratee), 1);
  }
  var INFINITY$1 = 1 / 0;
  function flattenDeep(array) {
    var length = array == null ? 0 : array.length;
    return length ? baseFlatten(array, INFINITY$1) : [];
  }
  function fromPairs(pairs) {
    var index = -1, length = pairs == null ? 0 : pairs.length, result = {};
    while (++index < length) {
      var pair = pairs[index];
      result[pair[0]] = pair[1];
    }
    return result;
  }
  var objectProto$1 = Object.prototype;
  var hasOwnProperty$1 = objectProto$1.hasOwnProperty;
  function baseHas(object, key) {
    return object != null && hasOwnProperty$1.call(object, key);
  }
  function has(object, path) {
    return object != null && hasPath(object, path, baseHas);
  }
  function parent(object, path) {
    return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
  }
  function isEqual$1(value, other) {
    return baseIsEqual(value, other);
  }
  function isNil(value) {
    return value == null;
  }
  function isNull(value) {
    return value === null;
  }
  function isUndefined$1(value) {
    return value === void 0;
  }
  var merge = createAssigner(function(object, source, srcIndex) {
    baseMerge(object, source, srcIndex);
  });
  var objectProto = Object.prototype;
  var hasOwnProperty = objectProto.hasOwnProperty;
  function baseUnset(object, path) {
    path = castPath(path, object);
    var index = -1, length = path.length;
    if (!length) {
      return true;
    }
    var isRootPrimitive = object == null || typeof object !== "object" && typeof object !== "function";
    while (++index < length) {
      var key = path[index];
      if (typeof key !== "string") {
        continue;
      }
      if (key === "__proto__" && !hasOwnProperty.call(object, "__proto__")) {
        return false;
      }
      if (key === "constructor" && index + 1 < length && typeof path[index + 1] === "string" && path[index + 1] === "prototype") {
        if (isRootPrimitive && index === 0) {
          continue;
        }
        return false;
      }
    }
    var obj = parent(object, path);
    return obj == null || delete obj[toKey(last(path))];
  }
  function customOmitClone(value) {
    return isPlainObject(value) ? void 0 : value;
  }
  var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4;
  var omit = flatRest(function(object, paths) {
    var result = {};
    if (object == null) {
      return result;
    }
    var isDeep = false;
    paths = arrayMap(paths, function(path) {
      path = castPath(path, object);
      isDeep || (isDeep = path.length > 1);
      return path;
    });
    copyObject(object, getAllKeysIn(object), result);
    if (isDeep) {
      result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
    }
    var length = paths.length;
    while (length--) {
      baseUnset(result, paths[length]);
    }
    return result;
  });
  function baseSet(object, path, value, customizer) {
    if (!isObject$1(object)) {
      return object;
    }
    path = castPath(path, object);
    var index = -1, length = path.length, lastIndex = length - 1, nested = object;
    while (nested != null && ++index < length) {
      var key = toKey(path[index]), newValue = value;
      if (key === "__proto__" || key === "constructor" || key === "prototype") {
        return object;
      }
      if (index != lastIndex) {
        var objValue = nested[key];
        newValue = void 0;
        if (newValue === void 0) {
          newValue = isObject$1(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {};
        }
      }
      assignValue(nested, key, newValue);
      nested = nested[key];
    }
    return object;
  }
  function basePickBy(object, paths, predicate) {
    var index = -1, length = paths.length, result = {};
    while (++index < length) {
      var path = paths[index], value = baseGet(object, path);
      if (predicate(value, path)) {
        baseSet(result, castPath(path, object), value);
      }
    }
    return result;
  }
  function basePick(object, paths) {
    return basePickBy(object, paths, function(value, path) {
      return hasIn(object, path);
    });
  }
  var pick = flatRest(function(object, paths) {
    return object == null ? {} : basePick(object, paths);
  });
  function set(object, path, value) {
    return object == null ? object : baseSet(object, path, value);
  }
  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$1(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
    });
  }
  var INFINITY = 1 / 0;
  var createSet = !(Set$1 && 1 / setToArray(new Set$1([, -0]))[1] == INFINITY) ? noop$1 : function(values) {
    return new Set$1(values);
  };
  var LARGE_ARRAY_SIZE = 200;
  function baseUniq(array, iteratee, comparator) {
    var index = -1, includes = arrayIncludes, length = array.length, isCommon = true, result = [], seen = result;
    if (length >= LARGE_ARRAY_SIZE) {
      var set2 = createSet(array);
      if (set2) {
        return setToArray(set2);
      }
      isCommon = false;
      includes = cacheHas;
      seen = new SetCache();
    } else {
      seen = result;
    }
    outer:
      while (++index < length) {
        var value = array[index], computed2 = value;
        value = value !== 0 ? value : 0;
        if (isCommon && computed2 === computed2) {
          var seenIndex = seen.length;
          while (seenIndex--) {
            if (seen[seenIndex] === computed2) {
              continue outer;
            }
          }
          result.push(value);
        } else if (!includes(seen, computed2, comparator)) {
          if (seen !== result) {
            seen.push(computed2);
          }
          result.push(value);
        }
      }
    return result;
  }
  var union = baseRest(function(arrays) {
    return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
  });
  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",
        alphaDescription: "alpha {alpha}, current color is {color}",
        hueLabel: "pick hue value",
        hueDescription: "hue {hue}, current color is {color}",
        svLabel: "pick saturation and brightness value",
        svDescription: "saturation {saturation}, brightness {brightness}, current color is {color}",
        predefineDescription: "select {value} as the color"
      },
      datepicker: {
        now: "Now",
        today: "Today",
        cancel: "Cancel",
        clear: "Clear",
        confirm: "OK",
        dateTablePrompt: "Use the arrow keys and enter to select the day of the month",
        monthTablePrompt: "Use the arrow keys and enter to select the month",
        yearTablePrompt: "Use the arrow keys and enter to select the year",
        selectedDate: "Selected date",
        selectDate: "Select date",
        selectTime: "Select time",
        startDate: "Start Date",
        startTime: "Start Time",
        endDate: "End Date",
        endTime: "End Time",
        prevYear: "Previous Year",
        nextYear: "Next Year",
        prevMonth: "Previous Month",
        nextMonth: "Next Month",
        year: "",
        month1: "January",
        month2: "February",
        month3: "March",
        month4: "April",
        month5: "May",
        month6: "June",
        month7: "July",
        month8: "August",
        month9: "September",
        month10: "October",
        month11: "November",
        month12: "December",
        weeks: {
          sun: "Sun",
          mon: "Mon",
          tue: "Tue",
          wed: "Wed",
          thu: "Thu",
          fri: "Fri",
          sat: "Sat"
        },
        weeksFull: {
          sun: "Sunday",
          mon: "Monday",
          tue: "Tuesday",
          wed: "Wednesday",
          thu: "Thursday",
          fri: "Friday",
          sat: "Saturday"
        },
        months: {
          jan: "Jan",
          feb: "Feb",
          mar: "Mar",
          apr: "Apr",
          may: "May",
          jun: "Jun",
          jul: "Jul",
          aug: "Aug",
          sep: "Sep",
          oct: "Oct",
          nov: "Nov",
          dec: "Dec"
        }
      },
      inputNumber: {
        decrease: "decrease number",
        increase: "increase number"
      },
      select: {
        loading: "Loading",
        noMatch: "No matching data",
        noData: "No data",
        placeholder: "Select"
      },
      mention: {
        loading: "Loading"
      },
      dropdown: {
        toggleDropdown: "Toggle Dropdown"
      },
      cascader: {
        noMatch: "No matching data",
        loading: "Loading",
        placeholder: "Select",
        noData: "No data"
      },
      pagination: {
        goto: "Go to",
        pagesize: "/page",
        total: "Total {total}",
        pageClassifier: "",
        page: "Page",
        prev: "Go to previous page",
        next: "Go to next page",
        currentPage: "page {pager}",
        prevPages: "Previous {pager} pages",
        nextPages: "Next {pager} pages",
        deprecationWarning: "Deprecated usages detected, please refer to the el-pagination documentation for more details"
      },
      dialog: {
        close: "Close this dialog"
      },
      drawer: {
        close: "Close this dialog"
      },
      messagebox: {
        title: "Message",
        confirm: "OK",
        cancel: "Cancel",
        error: "Illegal input",
        close: "Close this dialog"
      },
      upload: {
        deleteTip: "press delete to remove",
        delete: "Delete",
        preview: "Preview",
        continue: "Continue"
      },
      slider: {
        defaultLabel: "slider between {min} and {max}",
        defaultRangeStartLabel: "pick start value",
        defaultRangeEndLabel: "pick end value"
      },
      table: {
        emptyText: "No Data",
        confirmFilter: "Confirm",
        resetFilter: "Reset",
        clearFilter: "All",
        sumText: "Sum",
        selectAllLabel: "Select all rows",
        selectRowLabel: "Select this row",
        expandRowLabel: "Expand this row",
        collapseRowLabel: "Collapse this row",
        sortLabel: "Sort by {column}",
        filterLabel: "Filter by {column}"
      },
      tag: {
        close: "Close this tag"
      },
      tour: {
        next: "Next",
        previous: "Previous",
        finish: "Finish",
        close: "Close this dialog"
      },
      tree: {
        emptyText: "No Data"
      },
      transfer: {
        noMatch: "No matching data",
        noData: "No data",
        titles: ["List 1", "List 2"],
        filterPlaceholder: "Enter keyword",
        noCheckedFormat: "{total} items",
        hasCheckedFormat: "{checked}/{total} checked"
      },
      image: {
        error: "FAILED"
      },
      pageHeader: {
        title: "Back"
      },
      popconfirm: {
        confirmButtonText: "Yes",
        cancelButtonText: "No"
      },
      carousel: {
        leftArrow: "Carousel arrow left",
        rightArrow: "Carousel arrow right",
        indicator: "Carousel switch to index {index}"
      }
    }
  };
  const buildTranslator = (locale) => (path, option) => translate(path, option, unref(locale));
  const translate = (path, option, locale) => get(locale, path, path).replace(
    /\{(\w+)\}/g,
    (_2, key) => {
      var _a;
      return `${(_a = option == null ? void 0 : option[key]) != null ? _a : `{${key}}`}`;
    }
  );
  const buildLocaleContext = (locale) => {
    const lang = computed(() => unref(locale).name);
    const localeRef = isRef(locale) ? locale : ref(locale);
    return {
      lang,
      locale: localeRef,
      t: buildTranslator(locale)
    };
  };
  const localeContextKey = /* @__PURE__ */ Symbol("localeContextKey");
  const useLocale = (localeOverrides) => {
    const locale = localeOverrides || inject(localeContextKey, ref());
    return buildLocaleContext(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 = /* @__PURE__ */ Symbol("namespaceContextKey");
  const useGetDerivedNamespace = (namespaceOverrides) => {
    const derivedNamespace = namespaceOverrides || (getCurrentInstance() ? inject(namespaceContextKey, ref(defaultNamespace)) : ref(defaultNamespace));
    const namespace = computed(() => {
      return unref(derivedNamespace) || defaultNamespace;
    });
    return namespace;
  };
  const useNamespace = (block, namespaceOverrides) => {
    const namespace = useGetDerivedNamespace(namespaceOverrides);
    const b2 = (blockSuffix = "") => _bem(namespace.value, block, blockSuffix, "", "");
    const e = (element) => element ? _bem(namespace.value, block, "", element, "") : "";
    const m2 = (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 = (object) => {
      const styles = {};
      for (const key in object) {
        if (object[key]) {
          styles[`--${namespace.value}-${key}`] = object[key];
        }
      }
      return styles;
    };
    const cssVarBlock = (object) => {
      const styles = {};
      for (const key in object) {
        if (object[key]) {
          styles[`--${namespace.value}-${block}-${key}`] = object[key];
        }
      }
      return styles;
    };
    const cssVarName = (name) => `--${namespace.value}-${name}`;
    const cssVarBlockName = (name) => `--${namespace.value}-${block}-${name}`;
    return {
      namespace,
      b: b2,
      e,
      m: m2,
      be: be2,
      em,
      bm,
      bem,
      is,
      // css
      cssVar,
      cssVarName,
      cssVarBlock,
      cssVarBlockName
    };
  };
  const isUndefined = (val) => val === void 0;
  const isBoolean = (val) => typeof val === "boolean";
  const isNumber = (val) => typeof val === "number";
  const isEmpty = (val) => !val && val !== 0 || isArray$1(val) && val.length === 0 || isObject$2(val) && !Object.keys(val).length;
  const isElement$1 = (e) => {
    if (typeof Element === "undefined") return false;
    return e instanceof Element;
  };
  const isPropAbsent = (prop) => isNil(prop);
  const isStringNumber = (val) => {
    if (!isString(val)) {
      return false;
    }
    return !Number.isNaN(Number(val));
  };
  const isWindow = (val) => val === window;
  function computedEager(fn2, options) {
    var _a;
    const result = shallowRef();
    watchEffect(() => {
      result.value = fn2();
    }, {
      ...options,
      flush: (_a = void 0) != null ? _a : "sync"
    });
    return readonly(result);
  }
  function tryOnScopeDispose(fn2) {
    if (getCurrentScope()) {
      onScopeDispose(fn2);
      return true;
    }
    return false;
  }
  function toValue(r) {
    return typeof r === "function" ? r() : unref(r);
  }
  function toReactive(objectRef) {
    if (!isRef(objectRef))
      return reactive(objectRef);
    const proxy = new Proxy({}, {
      get(_2, p2, receiver) {
        return unref(Reflect.get(objectRef.value, p2, receiver));
      },
      set(_2, p2, value) {
        if (isRef(objectRef.value[p2]) && !isRef(value))
          objectRef.value[p2].value = value;
        else
          objectRef.value[p2] = value;
        return true;
      },
      deleteProperty(_2, p2) {
        return Reflect.deleteProperty(objectRef.value, p2);
      },
      has(_2, p2) {
        return Reflect.has(objectRef.value, p2);
      },
      ownKeys() {
        return Object.keys(objectRef.value);
      },
      getOwnPropertyDescriptor() {
        return {
          enumerable: true,
          configurable: true
        };
      }
    });
    return reactive(proxy);
  }
  function reactiveComputed(fn2) {
    return toReactive(computed(fn2));
  }
  const isClient = typeof window !== "undefined" && typeof document !== "undefined";
  typeof WorkerGlobalScope !== "undefined" && globalThis instanceof WorkerGlobalScope;
  const isDef = (val) => typeof val !== "undefined";
  const notNullish = (val) => val != null;
  const toString = Object.prototype.toString;
  const isObject = (val) => toString.call(val) === "[object Object]";
  const clamp$1 = (n, min2, max2) => Math.min(max2, Math.max(min2, n));
  const noop = () => {
  };
  const isIOS = /* @__PURE__ */ getIsIOS();
  function getIsIOS() {
    var _a, _b;
    return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) || ((_b = window == null ? void 0 : window.navigator) == null ? void 0 : _b.maxTouchPoints) > 2 && /iPad|Macintosh/.test(window == null ? void 0 : window.navigator.userAgent));
  }
  function createFilterWrapper(filter, fn2) {
    function wrapper(...args) {
      return new Promise((resolve2, reject) => {
        Promise.resolve(filter(() => fn2.apply(this, args), { fn: fn2, thisArg: this, args })).then(resolve2).catch(reject);
      });
    }
    return wrapper;
  }
  function debounceFilter(ms, options = {}) {
    let timer;
    let maxTimer;
    let lastRejector = noop;
    const _clearTimeout = (timer2) => {
      clearTimeout(timer2);
      lastRejector();
      lastRejector = noop;
    };
    const filter = (invoke2) => {
      const duration = toValue(ms);
      const maxDuration = toValue(options.maxWait);
      if (timer)
        _clearTimeout(timer);
      if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {
        if (maxTimer) {
          _clearTimeout(maxTimer);
          maxTimer = null;
        }
        return Promise.resolve(invoke2());
      }
      return new Promise((resolve2, reject) => {
        lastRejector = options.rejectOnCancel ? reject : resolve2;
        if (maxDuration && !maxTimer) {
          maxTimer = setTimeout(() => {
            if (timer)
              _clearTimeout(timer);
            maxTimer = null;
            resolve2(invoke2());
          }, maxDuration);
        }
        timer = setTimeout(() => {
          if (maxTimer)
            _clearTimeout(maxTimer);
          maxTimer = null;
          resolve2(invoke2());
        }, duration);
      });
    };
    return filter;
  }
  function throttleFilter(...args) {
    let lastExec = 0;
    let timer;
    let isLeading = true;
    let lastRejector = noop;
    let lastValue;
    let ms;
    let trailing;
    let leading;
    let rejectOnCancel;
    if (!isRef(args[0]) && typeof args[0] === "object")
      ({ delay: ms, trailing = true, leading = true, rejectOnCancel = false } = args[0]);
    else
      [ms, trailing = true, leading = true, rejectOnCancel = false] = args;
    const clear = () => {
      if (timer) {
        clearTimeout(timer);
        timer = void 0;
        lastRejector();
        lastRejector = noop;
      }
    };
    const filter = (_invoke) => {
      const duration = toValue(ms);
      const elapsed = Date.now() - lastExec;
      const invoke2 = () => {
        return lastValue = _invoke();
      };
      clear();
      if (duration <= 0) {
        lastExec = Date.now();
        return invoke2();
      }
      if (elapsed > duration && (leading || !isLeading)) {
        lastExec = Date.now();
        invoke2();
      } else if (trailing) {
        lastValue = new Promise((resolve2, reject) => {
          lastRejector = rejectOnCancel ? reject : resolve2;
          timer = setTimeout(() => {
            lastExec = Date.now();
            isLeading = true;
            resolve2(invoke2());
            clear();
          }, Math.max(0, duration - elapsed));
        });
      }
      if (!leading && !timer)
        timer = setTimeout(() => isLeading = true, duration);
      isLeading = false;
      return lastValue;
    };
    return filter;
  }
  function getLifeCycleTarget(target) {
    return getCurrentInstance();
  }
  function useDebounceFn(fn2, ms = 200, options = {}) {
    return createFilterWrapper(
      debounceFilter(ms, options),
      fn2
    );
  }
  function refDebounced(value, ms = 200, options = {}) {
    const debounced = ref(value.value);
    const updater = useDebounceFn(() => {
      debounced.value = value.value;
    }, ms, options);
    watch(value, () => updater());
    return debounced;
  }
  function useThrottleFn(fn2, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {
    return createFilterWrapper(
      throttleFilter(ms, trailing, leading, rejectOnCancel),
      fn2
    );
  }
  function tryOnMounted(fn2, sync = true, target) {
    const instance = getLifeCycleTarget();
    if (instance)
      onMounted(fn2, target);
    else if (sync)
      fn2();
    else
      nextTick(fn2);
  }
  function useTimeoutFn(cb, interval, options = {}) {
    const {
      immediate = true
    } = options;
    const isPending = ref(false);
    let timer = null;
    function clear() {
      if (timer) {
        clearTimeout(timer);
        timer = null;
      }
    }
    function stop() {
      isPending.value = false;
      clear();
    }
    function start(...args) {
      clear();
      isPending.value = true;
      timer = setTimeout(() => {
        isPending.value = false;
        timer = null;
        cb(...args);
      }, toValue(interval));
    }
    if (immediate) {
      isPending.value = true;
      if (isClient)
        start();
    }
    tryOnScopeDispose(stop);
    return {
      isPending: readonly(isPending),
      start,
      stop
    };
  }
  function unrefElement(elRef) {
    var _a;
    const plain = toValue(elRef);
    return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;
  }
  const defaultWindow = isClient ? window : void 0;
  const defaultDocument = isClient ? window.document : void 0;
  function useEventListener(...args) {
    let target;
    let events2;
    let listeners;
    let options;
    if (typeof args[0] === "string" || Array.isArray(args[0])) {
      [events2, listeners, options] = args;
      target = defaultWindow;
    } else {
      [target, events2, listeners, options] = args;
    }
    if (!target)
      return noop;
    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 = watch(
      () => [unrefElement(target), toValue(options)],
      ([el, options2]) => {
        cleanup();
        if (!el)
          return;
        const optionsClone = isObject(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(stop);
    return stop;
  }
  let _iOSWorkaround = false;
  function onClickOutside(target, handler, options = {}) {
    const { window: window2 = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;
    if (!window2)
      return noop;
    if (isIOS && !_iOSWorkaround) {
      _iOSWorkaround = true;
      Array.from(window2.document.body.children).forEach((el) => el.addEventListener("click", noop));
      window2.document.documentElement.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);
        shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));
      }, { passive: true }),
      detectIframe && useEventListener(window2, "blur", (event) => {
        setTimeout(() => {
          var _a;
          const el = unrefElement(target);
          if (((_a = window2.document.activeElement) == null ? void 0 : _a.tagName) === "IFRAME" && !(el == null ? void 0 : el.contains(window2.document.activeElement))) {
            handler(event);
          }
        }, 0);
      })
    ].filter(Boolean);
    const stop = () => cleanup.forEach((fn2) => fn2());
    return stop;
  }
  function useMounted() {
    const isMounted = ref(false);
    const instance = getCurrentInstance();
    if (instance) {
      onMounted(() => {
        isMounted.value = true;
      }, instance);
    }
    return isMounted;
  }
  function useSupported(callback) {
    const isMounted = useMounted();
    return computed(() => {
      isMounted.value;
      return Boolean(callback());
    });
  }
  function useMutationObserver(target, callback, options = {}) {
    const { window: window2 = defaultWindow, ...mutationOptions } = options;
    let observer;
    const isSupported = useSupported(() => window2 && "MutationObserver" in window2);
    const cleanup = () => {
      if (observer) {
        observer.disconnect();
        observer = void 0;
      }
    };
    const targets = computed(() => {
      const value = toValue(target);
      const items = (Array.isArray(value) ? value : [value]).map(unrefElement).filter(notNullish);
      return new Set(items);
    });
    const stopWatch = watch(
      () => targets.value,
      (targets2) => {
        cleanup();
        if (isSupported.value && targets2.size) {
          observer = new MutationObserver(callback);
          targets2.forEach((el) => observer.observe(el, mutationOptions));
        }
      },
      { immediate: true, flush: "post" }
    );
    const takeRecords = () => {
      return observer == null ? void 0 : observer.takeRecords();
    };
    const stop = () => {
      cleanup();
      stopWatch();
    };
    tryOnScopeDispose(stop);
    return {
      isSupported,
      stop,
      takeRecords
    };
  }
  function useActiveElement(options = {}) {
    var _a;
    const {
      window: window2 = defaultWindow,
      deep = true,
      triggerOnRemoval = false
    } = options;
    const document2 = (_a = options.document) != null ? _a : window2 == null ? void 0 : window2.document;
    const getDeepActiveElement = () => {
      var _a2;
      let element = document2 == null ? void 0 : document2.activeElement;
      if (deep) {
        while (element == null ? void 0 : element.shadowRoot)
          element = (_a2 = element == null ? void 0 : element.shadowRoot) == null ? void 0 : _a2.activeElement;
      }
      return element;
    };
    const activeElement = ref();
    const trigger2 = () => {
      activeElement.value = getDeepActiveElement();
    };
    if (window2) {
      useEventListener(window2, "blur", (event) => {
        if (event.relatedTarget !== null)
          return;
        trigger2();
      }, true);
      useEventListener(window2, "focus", trigger2, true);
    }
    if (triggerOnRemoval) {
      useMutationObserver(document2, (mutations) => {
        mutations.filter((m2) => m2.removedNodes.length).map((n) => Array.from(n.removedNodes)).flat().forEach((node) => {
          if (node === activeElement.value)
            trigger2();
        });
      }, {
        childList: true,
        subtree: true
      });
    }
    trigger2();
    return activeElement;
  }
  function useMediaQuery(query, options = {}) {
    const { window: window2 = defaultWindow } = options;
    const isSupported = useSupported(() => window2 && "matchMedia" in window2 && typeof window2.matchMedia === "function");
    let mediaQuery;
    const matches2 = ref(false);
    const handler = (event) => {
      matches2.value = event.matches;
    };
    const cleanup = () => {
      if (!mediaQuery)
        return;
      if ("removeEventListener" in mediaQuery)
        mediaQuery.removeEventListener("change", handler);
      else
        mediaQuery.removeListener(handler);
    };
    const stopWatch = watchEffect(() => {
      if (!isSupported.value)
        return;
      cleanup();
      mediaQuery = window2.matchMedia(toValue(query));
      if ("addEventListener" in mediaQuery)
        mediaQuery.addEventListener("change", handler);
      else
        mediaQuery.addListener(handler);
      matches2.value = mediaQuery.matches;
    });
    tryOnScopeDispose(() => {
      stopWatch();
      cleanup();
      mediaQuery = void 0;
    });
    return matches2;
  }
  function cloneFnJSON(source) {
    return JSON.parse(JSON.stringify(source));
  }
  function useCssVar(prop, target, options = {}) {
    const { window: window2 = defaultWindow, initialValue = "", observe = false } = options;
    const variable = ref(initialValue);
    const elRef = computed(() => {
      var _a;
      return unrefElement(target) || ((_a = window2 == null ? void 0 : window2.document) == null ? void 0 : _a.documentElement);
    });
    function updateCssVar() {
      var _a;
      const key = toValue(prop);
      const el = toValue(elRef);
      if (el && window2) {
        const value = (_a = window2.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();
        variable.value = value || initialValue;
      }
    }
    if (observe) {
      useMutationObserver(elRef, updateCssVar, {
        attributeFilter: ["style", "class"],
        window: window2
      });
    }
    watch(
      [elRef, () => toValue(prop)],
      updateCssVar,
      { immediate: true }
    );
    watch(
      variable,
      (val) => {
        var _a;
        if ((_a = elRef.value) == null ? void 0 : _a.style)
          elRef.value.style.setProperty(toValue(prop), val);
      }
    );
    return variable;
  }
  function useDocumentVisibility(options = {}) {
    const { document: document2 = defaultDocument } = options;
    if (!document2)
      return ref("visible");
    const visibility = ref(document2.visibilityState);
    useEventListener(document2, "visibilitychange", () => {
      visibility.value = document2.visibilityState;
    });
    return visibility;
  }
  function useResizeObserver(target, callback, options = {}) {
    const { window: window2 = defaultWindow, ...observerOptions } = options;
    let observer;
    const isSupported = useSupported(() => window2 && "ResizeObserver" in window2);
    const cleanup = () => {
      if (observer) {
        observer.disconnect();
        observer = void 0;
      }
    };
    const targets = computed(() => Array.isArray(target) ? target.map((el) => unrefElement(el)) : [unrefElement(target)]);
    const stopWatch = watch(
      targets,
      (els) => {
        cleanup();
        if (isSupported.value && window2) {
          observer = new ResizeObserver(callback);
          for (const _el of els)
            _el && observer.observe(_el, observerOptions);
        }
      },
      { immediate: true, flush: "post" }
    );
    const stop = () => {
      cleanup();
      stopWatch();
    };
    tryOnScopeDispose(stop);
    return {
      isSupported,
      stop
    };
  }
  function useElementBounding(target, options = {}) {
    const {
      reset = true,
      windowResize = true,
      windowScroll = true,
      immediate = true
    } = options;
    const height = ref(0);
    const bottom = ref(0);
    const left = ref(0);
    const right = ref(0);
    const top = ref(0);
    const width = ref(0);
    const x2 = ref(0);
    const y = ref(0);
    function update() {
      const el = unrefElement(target);
      if (!el) {
        if (reset) {
          height.value = 0;
          bottom.value = 0;
          left.value = 0;
          right.value = 0;
          top.value = 0;
          width.value = 0;
          x2.value = 0;
          y.value = 0;
        }
        return;
      }
      const rect = el.getBoundingClientRect();
      height.value = rect.height;
      bottom.value = rect.bottom;
      left.value = rect.left;
      right.value = rect.right;
      top.value = rect.top;
      width.value = rect.width;
      x2.value = rect.x;
      y.value = rect.y;
    }
    useResizeObserver(target, update);
    watch(() => unrefElement(target), (ele) => !ele && update());
    useMutationObserver(target, update, {
      attributeFilter: ["style", "class"]
    });
    if (windowScroll)
      useEventListener("scroll", update, { capture: true, passive: true });
    if (windowResize)
      useEventListener("resize", update, { passive: true });
    tryOnMounted(() => {
      if (immediate)
        update();
    });
    return {
      height,
      bottom,
      left,
      right,
      top,
      width,
      x: x2,
      y,
      update
    };
  }
  function useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {
    const { window: window2 = defaultWindow, box = "content-box" } = options;
    const isSVG = computed(() => {
      var _a, _b;
      return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes("svg");
    });
    const width = ref(initialSize.width);
    const height = ref(initialSize.height);
    const { stop: stop1 } = useResizeObserver(
      target,
      ([entry]) => {
        const boxSize = box === "border-box" ? entry.borderBoxSize : box === "content-box" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;
        if (window2 && isSVG.value) {
          const $elem = unrefElement(target);
          if ($elem) {
            const rect = $elem.getBoundingClientRect();
            width.value = rect.width;
            height.value = rect.height;
          }
        } else {
          if (boxSize) {
            const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];
            width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);
            height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);
          } else {
            width.value = entry.contentRect.width;
            height.value = entry.contentRect.height;
          }
        }
      },
      options
    );
    tryOnMounted(() => {
      const ele = unrefElement(target);
      if (ele) {
        width.value = "offsetWidth" in ele ? ele.offsetWidth : initialSize.width;
        height.value = "offsetHeight" in ele ? ele.offsetHeight : initialSize.height;
      }
    });
    const stop2 = watch(
      () => unrefElement(target),
      (ele) => {
        width.value = ele ? initialSize.width : 0;
        height.value = ele ? initialSize.height : 0;
      }
    );
    function stop() {
      stop1();
      stop2();
    }
    return {
      width,
      height,
      stop
    };
  }
  function useIntersectionObserver(target, callback, options = {}) {
    const {
      root: root2,
      rootMargin = "0px",
      threshold = 0.1,
      window: window2 = defaultWindow,
      immediate = true
    } = options;
    const isSupported = useSupported(() => window2 && "IntersectionObserver" in window2);
    const targets = computed(() => {
      const _target = toValue(target);
      return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(notNullish);
    });
    let cleanup = noop;
    const isActive = ref(immediate);
    const stopWatch = isSupported.value ? watch(
      () => [targets.value, unrefElement(root2), isActive.value],
      ([targets2, root22]) => {
        cleanup();
        if (!isActive.value)
          return;
        if (!targets2.length)
          return;
        const observer = new IntersectionObserver(
          callback,
          {
            root: unrefElement(root22),
            rootMargin,
            threshold
          }
        );
        targets2.forEach((el) => el && observer.observe(el));
        cleanup = () => {
          observer.disconnect();
          cleanup = noop;
        };
      },
      { immediate, flush: "post" }
    ) : noop;
    const stop = () => {
      cleanup();
      stopWatch();
      isActive.value = false;
    };
    tryOnScopeDispose(stop);
    return {
      isSupported,
      isActive,
      pause() {
        cleanup();
        isActive.value = false;
      },
      resume() {
        isActive.value = true;
      },
      stop
    };
  }
  function useVModel(props2, key, emit2, options = {}) {
    var _a, _b, _c;
    const {
      clone: clone2 = false,
      passive = false,
      eventName,
      deep = false,
      defaultValue,
      shouldEmit
    } = options;
    const vm = getCurrentInstance();
    const _emit = emit2 || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));
    let event = eventName;
    if (!key) {
      {
        key = "modelValue";
      }
    }
    event = event || `update:${key.toString()}`;
    const cloneFn = (val) => !clone2 ? val : typeof clone2 === "function" ? clone2(val) : cloneFnJSON(val);
    const getValue2 = () => isDef(props2[key]) ? cloneFn(props2[key]) : defaultValue;
    const triggerEmit = (value) => {
      if (shouldEmit) {
        if (shouldEmit(value))
          _emit(event, value);
      } else {
        _emit(event, value);
      }
    };
    if (passive) {
      const initialValue = getValue2();
      const proxy = ref(initialValue);
      let isUpdating = false;
      watch(
        () => props2[key],
        (v2) => {
          if (!isUpdating) {
            isUpdating = true;
            proxy.value = cloneFn(v2);
            nextTick(() => isUpdating = false);
          }
        }
      );
      watch(
        proxy,
        (v2) => {
          if (!isUpdating && (v2 !== props2[key] || deep))
            triggerEmit(v2);
        },
        { deep }
      );
      return proxy;
    } else {
      return computed({
        get() {
          return getValue2();
        },
        set(value) {
          triggerEmit(value);
        }
      });
    }
  }
  function useWindowFocus(options = {}) {
    const { window: window2 = defaultWindow } = options;
    if (!window2)
      return ref(false);
    const focused = ref(window2.document.hasFocus());
    useEventListener(window2, "blur", () => {
      focused.value = false;
    });
    useEventListener(window2, "focus", () => {
      focused.value = true;
    });
    return focused;
  }
  function useWindowSize(options = {}) {
    const {
      window: window2 = defaultWindow,
      initialWidth = Number.POSITIVE_INFINITY,
      initialHeight = Number.POSITIVE_INFINITY,
      listenOrientation = true,
      includeScrollbar = true
    } = options;
    const width = ref(initialWidth);
    const height = ref(initialHeight);
    const update = () => {
      if (window2) {
        if (includeScrollbar) {
          width.value = window2.innerWidth;
          height.value = window2.innerHeight;
        } else {
          width.value = window2.document.documentElement.clientWidth;
          height.value = window2.document.documentElement.clientHeight;
        }
      }
    };
    update();
    tryOnMounted(update);
    useEventListener("resize", update, { passive: true });
    if (listenOrientation) {
      const matches2 = useMediaQuery("(orientation: portrait)");
      watch(matches2, () => update());
    }
    return { width, height };
  }
  class ElementPlusError extends Error {
    constructor(m2) {
      super(m2);
      this.name = "ElementPlusError";
    }
  }
  function throwError(scope, m2) {
    throw new ElementPlusError(`[${scope}] ${m2}`);
  }
  function debugWarn(scope, message2) {
  }
  const initial = {
    current: 0
  };
  const zIndex = ref(0);
  const defaultInitialZIndex = 2e3;
  const ZINDEX_INJECTION_KEY = /* @__PURE__ */ Symbol("elZIndexContextKey");
  const zIndexContextKey = /* @__PURE__ */ Symbol("zIndexContextKey");
  const useZIndex = (zIndexOverrides) => {
    const increasingInjection = getCurrentInstance() ? inject(ZINDEX_INJECTION_KEY, initial) : initial;
    const zIndexInjection = zIndexOverrides || (getCurrentInstance() ? inject(zIndexContextKey, void 0) : void 0);
    const initialZIndex = computed(() => {
      const zIndexFromInjection = unref(zIndexInjection);
      return isNumber(zIndexFromInjection) ? zIndexFromInjection : defaultInitialZIndex;
    });
    const currentZIndex = computed(() => initialZIndex.value + zIndex.value);
    const nextZIndex = () => {
      increasingInjection.current++;
      zIndex.value = increasingInjection.current;
      return currentZIndex.value;
    };
    if (!isClient && !inject(ZINDEX_INJECTION_KEY)) ;
    return {
      initialZIndex,
      currentZIndex,
      nextZIndex
    };
  };
  const epPropKey = "__epPropKey";
  const definePropType = (val) => val;
  const isEpProp = (val) => isObject$2(val) && !!val[epPropKey];
  const buildProp = (prop, key) => {
    if (!isObject$2(prop) || isEpProp(prop)) return prop;
    const { values, required, default: defaultValue, type, validator } = prop;
    const _validator = values || validator ? (val) => {
      let valid = false;
      let allowedValues = [];
      if (values) {
        allowedValues = Array.from(values);
        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(", ");
        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 = (props2) => fromPairs(
    Object.entries(props2).map(([key, option]) => [
      key,
      buildProp(option, key)
    ])
  );
  const componentSizes = ["", "default", "small", "large"];
  const useSizeProp = buildProp({
    type: String,
    values: componentSizes,
    required: false
  });
  const SIZE_INJECTION_KEY = /* @__PURE__ */ Symbol("size");
  const useGlobalSize = () => {
    const injectedSize = inject(SIZE_INJECTION_KEY, {});
    return computed(() => {
      return unref(injectedSize.size) || "";
    });
  };
  const emptyValuesContextKey = /* @__PURE__ */ Symbol("emptyValuesContextKey");
  const DEFAULT_EMPTY_VALUES = ["", void 0, null];
  const DEFAULT_VALUE_ON_CLEAR = void 0;
  const useEmptyValuesProps = buildProps({
    /**
     * @description empty values supported by the component
     */
    emptyValues: Array,
    /**
     * @description return value when cleared, if you want to set `undefined`, use `() => undefined`
     */
    valueOnClear: {
      /* eslint-disable-next-line @typescript-eslint/no-unsafe-function-type */
      type: definePropType([
        String,
        Number,
        Boolean,
        Function
      ]),
      default: void 0,
      validator: (val) => {
        val = isFunction$1(val) ? val() : val;
        if (isArray$1(val)) {
          return val.every((item) => !item);
        }
        return !val;
      }
    }
  });
  const useEmptyValues = (props2, defaultValue) => {
    const config = getCurrentInstance() ? inject(emptyValuesContextKey, ref({})) : ref({});
    const emptyValues = computed(
      () => props2.emptyValues || config.value.emptyValues || DEFAULT_EMPTY_VALUES
    );
    const valueOnClear = computed(() => {
      if (isFunction$1(props2.valueOnClear)) {
        return props2.valueOnClear();
      } else if (props2.valueOnClear !== void 0) {
        return props2.valueOnClear;
      } else if (isFunction$1(config.value.valueOnClear)) {
        return config.value.valueOnClear();
      } else if (config.value.valueOnClear !== void 0) {
        return config.value.valueOnClear;
      }
      return defaultValue !== void 0 ? defaultValue : DEFAULT_VALUE_ON_CLEAR;
    });
    const isEmptyValue2 = (value) => {
      let result = true;
      if (isArray$1(value)) {
        result = emptyValues.value.some((emptyValue) => {
          return isEqual$1(value, emptyValue);
        });
      } else {
        result = emptyValues.value.includes(value);
      }
      return result;
    };
    if (!isEmptyValue2(valueOnClear.value)) ;
    return {
      emptyValues,
      valueOnClear,
      isEmptyValue: isEmptyValue2
    };
  };
  const keysOf = (arr) => Object.keys(arr);
  const entriesOf = (arr) => Object.entries(arr);
  const getProp = (obj, path, defaultValue) => {
    return {
      get value() {
        return get(obj, path, defaultValue);
      },
      set value(val) {
        set(obj, path, val);
      }
    };
  };
  const globalConfig = ref();
  function useGlobalConfig(key, defaultValue = void 0) {
    const config = getCurrentInstance() ? inject(configProviderContextKey, globalConfig) : globalConfig;
    if (key) {
      return computed(() => {
        var _a, _b;
        return (_b = (_a = config.value) == null ? void 0 : _a[key]) != null ? _b : defaultValue;
      });
    } else {
      return config;
    }
  }
  function useGlobalComponentSettings(block, sizeFallback) {
    const config = useGlobalConfig();
    const ns = useNamespace(
      block,
      computed(() => {
        var _a;
        return ((_a = config.value) == null ? void 0 : _a.namespace) || defaultNamespace;
      })
    );
    const locale = useLocale(computed(() => {
      var _a;
      return (_a = config.value) == null ? void 0 : _a.locale;
    }));
    const zIndex2 = useZIndex(
      computed(() => {
        var _a;
        return ((_a = config.value) == null ? void 0 : _a.zIndex) || defaultInitialZIndex;
      })
    );
    const size = computed(() => {
      var _a;
      return unref(sizeFallback) || ((_a = config.value) == null ? void 0 : _a.size) || "";
    });
    provideGlobalConfig(computed(() => unref(config) || {}));
    return {
      ns,
      locale,
      zIndex: zIndex2,
      size
    };
  }
  const provideGlobalConfig = (config, app2, global2 = false) => {
    var _a;
    const inSetup = !!getCurrentInstance();
    const oldConfig = inSetup ? useGlobalConfig() : void 0;
    const provideFn = (_a = app2 == null ? void 0 : app2.provide) != null ? _a : inSetup ? provide : void 0;
    if (!provideFn) {
      return;
    }
    const context = computed(() => {
      const cfg = unref(config);
      if (!(oldConfig == null ? void 0 : oldConfig.value)) return cfg;
      return mergeConfig(oldConfig.value, cfg);
    });
    provideFn(configProviderContextKey, context);
    provideFn(
      localeContextKey,
      computed(() => context.value.locale)
    );
    provideFn(
      namespaceContextKey,
      computed(() => context.value.namespace)
    );
    provideFn(
      zIndexContextKey,
      computed(() => context.value.zIndex)
    );
    provideFn(SIZE_INJECTION_KEY, {
      size: computed(() => context.value.size || "")
    });
    provideFn(
      emptyValuesContextKey,
      computed(() => ({
        emptyValues: context.value.emptyValues,
        valueOnClear: context.value.valueOnClear
      }))
    );
    if (global2 || !globalConfig.value) {
      globalConfig.value = context.value;
    }
    return context;
  };
  const mergeConfig = (a2, b2) => {
    const keys2 = [.../* @__PURE__ */ new Set([...keysOf(a2), ...keysOf(b2)])];
    const obj = {};
    for (const key of keys2) {
      obj[key] = b2[key] !== void 0 ? b2[key] : a2[key];
    }
    return obj;
  };
  const makeInstaller = (components = []) => {
    const install = (app2, options) => {
      if (app2[INSTALLED_KEY]) return;
      app2[INSTALLED_KEY] = true;
      components.forEach((c2) => app2.use(c2));
      if (options) provideGlobalConfig(options, app2, true);
    };
    return {
      version,
      install
    };
  };
  const teleportProps = buildProps({
    to: {
      type: definePropType([String, Object]),
      required: true
    },
    disabled: Boolean
  });
  const UPDATE_MODEL_EVENT = "update:modelValue";
  const CHANGE_EVENT = "change";
  const INPUT_EVENT = "input";
  const affixProps = buildProps({
    /**
     * @description affix element zIndex value
     * */
    zIndex: {
      type: definePropType([Number, String]),
      default: 100
    },
    /**
     * @description target container. (CSS selector)
     */
    target: {
      type: String,
      default: ""
    },
    /**
     * @description offset distance
     * */
    offset: {
      type: Number,
      default: 0
    },
    /**
     * @description position of affix
     * */
    position: {
      type: String,
      values: ["top", "bottom"],
      default: "top"
    },
    /**
     * @description whether affix element is teleported, if `true` it will be teleported to where `append-to` sets
     * */
    teleported: Boolean,
    /**
     * @description which element the affix element appends to
     * */
    appendTo: {
      type: teleportProps.to.type,
      default: "body"
    }
  });
  const affixEmits = {
    scroll: ({ scrollTop, fixed }) => isNumber(scrollTop) && isBoolean(fixed),
    [CHANGE_EVENT]: (fixed) => isBoolean(fixed)
  };
  var _sfc_main$3o = /* @__PURE__ */ defineComponent({
    __name: "teleport",
    props: teleportProps,
    setup(__props) {
      return (_ctx, _cache) => {
        return _ctx.disabled ? renderSlot(_ctx.$slots, "default", { key: 0 }) : (openBlock(), createBlock(Teleport, {
          key: 1,
          to: _ctx.to
        }, [
          renderSlot(_ctx.$slots, "default")
        ], 8, ["to"]));
      };
    }
  });
  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 withInstallDirective = (directive, name) => {
    directive.install = (app2) => {
      app2.directive(name, directive);
    };
    return directive;
  };
  const withNoopInstall = (component2) => {
    component2.install = NOOP;
    return component2;
  };
  const ElTeleport = withInstall(_sfc_main$3o);
  function easeInOutCubic(t, b2, c2, d2) {
    const cc = c2 - b2;
    t /= d2 / 2;
    if (t < 1) {
      return cc / 2 * t * t * t + b2;
    }
    return cc / 2 * ((t -= 2) * t * t + 2) + b2;
  }
  const rAF = (fn2) => isClient ? window.requestAnimationFrame(fn2) : setTimeout(fn2, 16);
  const cAF = (handle) => isClient ? window.cancelAnimationFrame(handle) : clearTimeout(handle);
  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 _a;
    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 = (_a = document.defaultView) == null ? void 0 : _a.getComputedStyle(element, "");
      return computed2 ? computed2[key] : "";
    } catch (e) {
      return element.style[key];
    }
  };
  const setStyle = (element, styleName, value) => {
    if (!element || !styleName) return;
    if (isObject$2(styleName)) {
      entriesOf(styleName).forEach(
        ([prop, value2]) => setStyle(element, prop, value2)
      );
    } else {
      const key = camelize(styleName);
      element.style[key] = value;
    }
  };
  function addUnit(value, defaultUnit = "px") {
    if (!value && value !== 0) return "";
    if (isNumber(value) || isStringNumber(value)) {
      return `${value}${defaultUnit}`;
    } else if (isString(value)) {
      return value;
    }
  }
  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((s2) => overflow.includes(s2));
  };
  const getScrollContainer = (el, isVertical) => {
    if (!isClient) return;
    let parent2 = el;
    while (parent2) {
      if ([window, document, document.documentElement].includes(parent2))
        return window;
      if (isScroll(parent2, isVertical)) return parent2;
      parent2 = parent2.parentNode;
    }
    return parent2;
  };
  let scrollBarWidth;
  const getScrollBarWidth = (namespace) => {
    var _a;
    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;
    (_a = outer.parentNode) == null ? void 0 : _a.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;
    }
  }
  function animateScrollTo(container, from, to, duration, callback) {
    const startTime = Date.now();
    let handle;
    const scroll = () => {
      const timestamp = Date.now();
      const time = timestamp - startTime;
      const nextScrollTop = easeInOutCubic(
        time > duration ? duration : time,
        from,
        to,
        duration
      );
      if (isWindow(container)) {
        container.scrollTo(window.pageXOffset, nextScrollTop);
      } else {
        container.scrollTop = nextScrollTop;
      }
      if (time < duration) {
        handle = rAF(scroll);
      } else if (isFunction$1(callback)) {
        callback();
      }
    };
    scroll();
    return () => {
      handle && cAF(handle);
    };
  }
  const getScrollElement = (target, container) => {
    if (isWindow(container)) {
      return target.ownerDocument.documentElement;
    }
    return container;
  };
  const getScrollTop = (container) => {
    if (isWindow(container)) {
      return window.scrollY;
    }
    return container.scrollTop;
  };
  const COMPONENT_NAME$o = "ElAffix";
  var _sfc_main$3n = /* @__PURE__ */ defineComponent({
    ...{
      name: COMPONENT_NAME$o
    },
    __name: "affix",
    props: affixProps,
    emits: affixEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const ns = useNamespace("affix");
      const target = shallowRef();
      const root2 = shallowRef();
      const scrollContainer = shallowRef();
      const { height: windowHeight } = useWindowSize();
      const {
        height: rootHeight,
        width: rootWidth,
        top: rootTop,
        bottom: rootBottom,
        left: rootLeft,
        update: updateRoot
      } = useElementBounding(root2, { windowScroll: false });
      const targetRect = useElementBounding(target);
      const fixed = ref(false);
      const scrollTop = ref(0);
      const transform = ref(0);
      const teleportDisabled = computed(() => {
        return !props2.teleported || !fixed.value;
      });
      const rootStyle = computed(() => {
        return {
          height: fixed.value ? `${rootHeight.value}px` : "",
          width: fixed.value ? `${rootWidth.value}px` : ""
        };
      });
      const affixStyle = computed(() => {
        if (!fixed.value) return {};
        const offset2 = addUnit(props2.offset);
        return {
          height: `${rootHeight.value}px`,
          width: `${rootWidth.value}px`,
          top: props2.position === "top" ? offset2 : "",
          bottom: props2.position === "bottom" ? offset2 : "",
          left: props2.teleported ? `${rootLeft.value}px` : "",
          transform: transform.value ? `translateY(${transform.value}px)` : "",
          zIndex: props2.zIndex
        };
      });
      const update = () => {
        if (!scrollContainer.value) return;
        scrollTop.value = scrollContainer.value instanceof Window ? document.documentElement.scrollTop : scrollContainer.value.scrollTop || 0;
        const { position, target: target2, offset: offset2 } = props2;
        const rootHeightOffset = offset2 + rootHeight.value;
        if (position === "top") {
          if (target2) {
            const difference = targetRect.bottom.value - rootHeightOffset;
            fixed.value = offset2 > rootTop.value && targetRect.bottom.value > 0;
            transform.value = difference < 0 ? difference : 0;
          } else {
            fixed.value = offset2 > rootTop.value;
          }
        } else if (target2) {
          const difference = windowHeight.value - targetRect.top.value - rootHeightOffset;
          fixed.value = windowHeight.value - offset2 < rootBottom.value && windowHeight.value > targetRect.top.value;
          transform.value = difference < 0 ? -difference : 0;
        } else {
          fixed.value = windowHeight.value - offset2 < rootBottom.value;
        }
      };
      const updateRootRect = async () => {
        if (!fixed.value) {
          updateRoot();
          return;
        }
        fixed.value = false;
        await nextTick();
        updateRoot();
        fixed.value = true;
      };
      const handleScroll2 = async () => {
        updateRoot();
        await nextTick();
        emit2("scroll", {
          scrollTop: scrollTop.value,
          fixed: fixed.value
        });
      };
      watch(fixed, (val) => emit2(CHANGE_EVENT, val));
      onMounted(() => {
        var _a;
        if (props2.target) {
          target.value = (_a = document.querySelector(props2.target)) != null ? _a : void 0;
          if (!target.value)
            throwError(COMPONENT_NAME$o, `Target does not exist: ${props2.target}`);
        } else {
          target.value = document.documentElement;
        }
        scrollContainer.value = getScrollContainer(root2.value, true);
        updateRoot();
      });
      onActivated(() => {
        nextTick(updateRootRect);
      });
      onDeactivated(() => {
        fixed.value = false;
      });
      useEventListener(scrollContainer, "scroll", handleScroll2);
      watchEffect(update);
      __expose({
        /** @description update affix status */
        update,
        /** @description update rootRect info */
        updateRoot: updateRootRect
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            ref_key: "root",
            ref: root2,
            class: normalizeClass(unref(ns).b()),
            style: normalizeStyle(rootStyle.value)
          },
          [
            createVNode(unref(ElTeleport), {
              disabled: teleportDisabled.value,
              to: __props.appendTo
            }, {
              default: withCtx(() => [
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass({ [unref(ns).m("fixed")]: fixed.value }),
                    style: normalizeStyle(affixStyle.value)
                  },
                  [
                    renderSlot(_ctx.$slots, "default")
                  ],
                  6
                  /* CLASS, STYLE */
                )
              ]),
              _: 3
              /* FORWARDED */
            }, 8, ["disabled", "to"])
          ],
          6
          /* CLASS, STYLE */
        );
      };
    }
  });
  const ElAffix = withInstall(_sfc_main$3n);
  var _sfc_main$3m = /* @__PURE__ */ defineComponent({
    name: "AddLocation",
    __name: "add-location",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M288 896h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416M512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M544 384h96a32 32 0 1 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64h96v-96a32 32 0 0 1 64 0z"
        })
      ]));
    }
  }), add_location_default = _sfc_main$3m;
  var _sfc_main2 = /* @__PURE__ */ defineComponent({
    name: "Aim",
    __name: "aim",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("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"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 96a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V128a32 32 0 0 1 32-32m0 576a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V704a32 32 0 0 1 32-32M96 512a32 32 0 0 1 32-32h192a32 32 0 0 1 0 64H128a32 32 0 0 1-32-32m576 0a32 32 0 0 1 32-32h192a32 32 0 1 1 0 64H704a32 32 0 0 1-32-32"
        })
      ]));
    }
  }), aim_default = _sfc_main2;
  var _sfc_main3 = /* @__PURE__ */ defineComponent({
    name: "AlarmClock",
    __name: "alarm-clock",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 832a320 320 0 1 0 0-640 320 320 0 0 0 0 640m0 64a384 384 0 1 1 0-768 384 384 0 0 1 0 768"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m292.288 824.576 55.424 32-48 83.136a32 32 0 1 1-55.424-32zm439.424 0-55.424 32 48 83.136a32 32 0 1 0 55.424-32zM512 512h160a32 32 0 1 1 0 64H480a32 32 0 0 1-32-32V320a32 32 0 0 1 64 0zM90.496 312.256A160 160 0 0 1 312.32 90.496l-46.848 46.848a96 96 0 0 0-128 128L90.56 312.256zm835.264 0A160 160 0 0 0 704 90.496l46.848 46.848a96 96 0 0 1 128 128z"
        })
      ]));
    }
  }), alarm_clock_default = _sfc_main3;
  var _sfc_main4 = /* @__PURE__ */ defineComponent({
    name: "Apple",
    __name: "apple",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M599.872 203.776a189.4 189.4 0 0 1 64.384-4.672l2.624.128c31.168 1.024 51.2 4.096 79.488 16.32 37.632 16.128 74.496 45.056 111.488 89.344 96.384 115.264 82.752 372.8-34.752 521.728-7.68 9.728-32 41.6-30.72 39.936a427 427 0 0 1-30.08 35.776c-31.232 32.576-65.28 49.216-110.08 50.048-31.36.64-53.568-5.312-84.288-18.752l-6.528-2.88c-20.992-9.216-30.592-11.904-47.296-11.904-18.112 0-28.608 2.88-51.136 12.672l-6.464 2.816c-28.416 12.224-48.32 18.048-76.16 19.2-74.112 2.752-116.928-38.08-180.672-132.16-96.64-142.08-132.608-349.312-55.04-486.4 46.272-81.92 129.92-133.632 220.672-135.04 32.832-.576 60.288 6.848 99.648 22.72 27.136 10.88 34.752 13.76 37.376 14.272 16.256-20.16 27.776-36.992 34.56-50.24 13.568-26.304 27.2-59.968 40.704-100.8a32 32 0 1 1 60.8 20.224c-12.608 37.888-25.408 70.4-38.528 97.664m-51.52 78.08c-14.528 17.792-31.808 37.376-51.904 58.816a32 32 0 1 1-46.72-43.776l12.288-13.248c-28.032-11.2-61.248-26.688-95.68-26.112-70.4 1.088-135.296 41.6-171.648 105.792C121.6 492.608 176 684.16 247.296 788.992c34.816 51.328 76.352 108.992 130.944 106.944 52.48-2.112 72.32-34.688 135.872-34.688s81.28 34.688 136.96 33.536c56.448-1.088 75.776-39.04 126.848-103.872 107.904-136.768 107.904-362.752 35.776-449.088-72.192-86.272-124.672-84.096-151.68-85.12-41.472-4.288-81.6 12.544-113.664 25.152"
        })
      ]));
    }
  }), apple_default = _sfc_main4;
  var _sfc_main5 = /* @__PURE__ */ defineComponent({
    name: "ArrowDownBold",
    __name: "arrow-down-bold",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M104.704 338.752a64 64 0 0 1 90.496 0l316.8 316.8 316.8-316.8a64 64 0 0 1 90.496 90.496L557.248 791.296a64 64 0 0 1-90.496 0L104.704 429.248a64 64 0 0 1 0-90.496"
        })
      ]));
    }
  }), arrow_down_bold_default = _sfc_main5;
  var _sfc_main6 = /* @__PURE__ */ defineComponent({
    name: "ArrowDown",
    __name: "arrow-down",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M831.872 340.864 512 652.672 192.128 340.864a30.59 30.59 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.59 30.59 0 0 0-42.752 0z"
        })
      ]));
    }
  }), arrow_down_default = _sfc_main6;
  var _sfc_main7 = /* @__PURE__ */ defineComponent({
    name: "ArrowLeftBold",
    __name: "arrow-left-bold",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M685.248 104.704a64 64 0 0 1 0 90.496L368.448 512l316.8 316.8a64 64 0 0 1-90.496 90.496L232.704 557.248a64 64 0 0 1 0-90.496l362.048-362.048a64 64 0 0 1 90.496 0"
        })
      ]));
    }
  }), arrow_left_bold_default = _sfc_main7;
  var _sfc_main8 = /* @__PURE__ */ defineComponent({
    name: "ArrowLeft",
    __name: "arrow-left",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.59 30.59 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.59 30.59 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0"
        })
      ]));
    }
  }), arrow_left_default = _sfc_main8;
  var _sfc_main9 = /* @__PURE__ */ defineComponent({
    name: "ArrowRightBold",
    __name: "arrow-right-bold",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M338.752 104.704a64 64 0 0 0 0 90.496l316.8 316.8-316.8 316.8a64 64 0 0 0 90.496 90.496l362.048-362.048a64 64 0 0 0 0-90.496L429.248 104.704a64 64 0 0 0-90.496 0"
        })
      ]));
    }
  }), arrow_right_bold_default = _sfc_main9;
  var _sfc_main10 = /* @__PURE__ */ defineComponent({
    name: "ArrowRight",
    __name: "arrow-right",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M340.864 149.312a30.59 30.59 0 0 0 0 42.752L652.736 512 340.864 831.872a30.59 30.59 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"
        })
      ]));
    }
  }), arrow_right_default = _sfc_main10;
  var _sfc_main11 = /* @__PURE__ */ defineComponent({
    name: "ArrowUpBold",
    __name: "arrow-up-bold",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M104.704 685.248a64 64 0 0 0 90.496 0l316.8-316.8 316.8 316.8a64 64 0 0 0 90.496-90.496L557.248 232.704a64 64 0 0 0-90.496 0L104.704 594.752a64 64 0 0 0 0 90.496"
        })
      ]));
    }
  }), arrow_up_bold_default = _sfc_main11;
  var _sfc_main12 = /* @__PURE__ */ defineComponent({
    name: "ArrowUp",
    __name: "arrow-up",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("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"
        })
      ]));
    }
  }), arrow_up_default = _sfc_main12;
  var _sfc_main13 = /* @__PURE__ */ defineComponent({
    name: "Avatar",
    __name: "avatar",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M628.736 528.896A416 416 0 0 1 928 928H96a415.87 415.87 0 0 1 299.264-399.104L512 704zM720 304a208 208 0 1 1-416 0 208 208 0 0 1 416 0"
        })
      ]));
    }
  }), avatar_default = _sfc_main13;
  var _sfc_main14 = /* @__PURE__ */ defineComponent({
    name: "Back",
    __name: "back",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M224 480h640a32 32 0 1 1 0 64H224a32 32 0 0 1 0-64"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m237.248 512 265.408 265.344a32 32 0 0 1-45.312 45.312l-288-288a32 32 0 0 1 0-45.312l288-288a32 32 0 1 1 45.312 45.312z"
        })
      ]));
    }
  }), back_default = _sfc_main14;
  var _sfc_main15 = /* @__PURE__ */ defineComponent({
    name: "Baseball",
    __name: "baseball",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M195.2 828.8a448 448 0 1 1 633.6-633.6 448 448 0 0 1-633.6 633.6m45.248-45.248a384 384 0 1 0 543.104-543.104 384 384 0 0 0-543.104 543.104"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M497.472 96.896c22.784 4.672 44.416 9.472 64.896 14.528a256.128 256.128 0 0 0 350.208 350.208c5.056 20.48 9.856 42.112 14.528 64.896A320.128 320.128 0 0 1 497.472 96.896M108.48 491.904a320.128 320.128 0 0 1 423.616 423.68c-23.04-3.648-44.992-7.424-65.728-11.52a256.128 256.128 0 0 0-346.496-346.432 1737 1737 0 0 1-11.392-65.728"
        })
      ]));
    }
  }), baseball_default = _sfc_main15;
  var _sfc_main16 = /* @__PURE__ */ defineComponent({
    name: "Basketball",
    __name: "basketball",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M778.752 788.224a382.46 382.46 0 0 0 116.032-245.632 256.51 256.51 0 0 0-241.728-13.952 762.9 762.9 0 0 1 125.696 259.584m-55.04 44.224a699.65 699.65 0 0 0-125.056-269.632 256.13 256.13 0 0 0-56.064 331.968 382.7 382.7 0 0 0 181.12-62.336m-254.08 61.248A320.13 320.13 0 0 1 557.76 513.6a716 716 0 0 0-48.192-48.128 320.13 320.13 0 0 1-379.264 88.384 382.4 382.4 0 0 0 110.144 229.696 382.4 382.4 0 0 0 229.184 110.08zM129.28 481.088a256.13 256.13 0 0 0 331.072-56.448 699.65 699.65 0 0 0-268.8-124.352 382.66 382.66 0 0 0-62.272 180.8m106.56-235.84a762.9 762.9 0 0 1 258.688 125.056 256.51 256.51 0 0 0-13.44-241.088A382.46 382.46 0 0 0 235.84 245.248m318.08-114.944c40.576 89.536 37.76 193.92-8.448 281.344a780 780 0 0 1 66.176 66.112 320.83 320.83 0 0 1 282.112-8.128 382.4 382.4 0 0 0-110.144-229.12 382.4 382.4 0 0 0-229.632-110.208zM828.8 828.8a448 448 0 1 1-633.6-633.6 448 448 0 0 1 633.6 633.6"
        })
      ]));
    }
  }), basketball_default = _sfc_main16;
  var _sfc_main17 = /* @__PURE__ */ defineComponent({
    name: "BellFilled",
    __name: "bell-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M640 832a128 128 0 0 1-256 0zm192-64H134.4a38.4 38.4 0 0 1 0-76.8H192V448c0-154.88 110.08-284.16 256.32-313.6a64 64 0 1 1 127.36 0A320.13 320.13 0 0 1 832 448v243.2h57.6a38.4 38.4 0 0 1 0 76.8z"
        })
      ]));
    }
  }), bell_filled_default = _sfc_main17;
  var _sfc_main18 = /* @__PURE__ */ defineComponent({
    name: "Bell",
    __name: "bell",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 64a64 64 0 0 1 64 64v64H448v-64a64 64 0 0 1 64-64"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M256 768h512V448a256 256 0 1 0-512 0zm256-640a320 320 0 0 1 320 320v384H192V448a320 320 0 0 1 320-320"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M96 768h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32m352 128h128a64 64 0 0 1-128 0"
        })
      ]));
    }
  }), bell_default = _sfc_main18;
  var _sfc_main19 = /* @__PURE__ */ defineComponent({
    name: "Bicycle",
    __name: "bicycle",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M256 832a128 128 0 1 0 0-256 128 128 0 0 0 0 256m0 64a192 192 0 1 1 0-384 192 192 0 0 1 0 384"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M288 672h320q32 0 32 32t-32 32H288q-32 0-32-32t32-32"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M768 832a128 128 0 1 0 0-256 128 128 0 0 0 0 256m0 64a192 192 0 1 1 0-384 192 192 0 0 1 0 384"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M480 192a32 32 0 0 1 0-64h160a32 32 0 0 1 31.04 24.256l96 384a32 32 0 0 1-62.08 15.488L615.04 192zM96 384a32 32 0 0 1 0-64h128a32 32 0 0 1 30.336 21.888l64 192a32 32 0 1 1-60.672 20.224L200.96 384z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m373.376 599.808-42.752-47.616 320-288 42.752 47.616z"
        })
      ]));
    }
  }), bicycle_default = _sfc_main19;
  var _sfc_main20 = /* @__PURE__ */ defineComponent({
    name: "BottomLeft",
    __name: "bottom-left",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M256 768h416a32 32 0 1 1 0 64H224a32 32 0 0 1-32-32V352a32 32 0 0 1 64 0z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M246.656 822.656a32 32 0 0 1-45.312-45.312l544-544a32 32 0 0 1 45.312 45.312z"
        })
      ]));
    }
  }), bottom_left_default = _sfc_main20;
  var _sfc_main21 = /* @__PURE__ */ defineComponent({
    name: "BottomRight",
    __name: "bottom-right",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M352 768a32 32 0 1 0 0 64h448a32 32 0 0 0 32-32V352a32 32 0 0 0-64 0v416z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M777.344 822.656a32 32 0 0 0 45.312-45.312l-544-544a32 32 0 0 0-45.312 45.312z"
        })
      ]));
    }
  }), bottom_right_default = _sfc_main21;
  var _sfc_main22 = /* @__PURE__ */ defineComponent({
    name: "Bottom",
    __name: "bottom",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M544 805.888V168a32 32 0 1 0-64 0v637.888L246.656 557.952a30.72 30.72 0 0 0-45.312 0 35.52 35.52 0 0 0 0 48.064l288 306.048a30.72 30.72 0 0 0 45.312 0l288-306.048a35.52 35.52 0 0 0 0-48 30.72 30.72 0 0 0-45.312 0L544 805.824z"
        })
      ]));
    }
  }), bottom_default = _sfc_main22;
  var _sfc_main23 = /* @__PURE__ */ defineComponent({
    name: "Bowl",
    __name: "bowl",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M714.432 704a351.74 351.74 0 0 0 148.16-256H161.408a351.74 351.74 0 0 0 148.16 256zM288 766.592A415.68 415.68 0 0 1 96 416a32 32 0 0 1 32-32h768a32 32 0 0 1 32 32 415.68 415.68 0 0 1-192 350.592V832a64 64 0 0 1-64 64H352a64 64 0 0 1-64-64zM493.248 320h-90.496l254.4-254.4a32 32 0 1 1 45.248 45.248zm187.328 0h-128l269.696-155.712a32 32 0 0 1 32 55.424zM352 768v64h320v-64z"
        })
      ]));
    }
  }), bowl_default = _sfc_main23;
  var _sfc_main24 = /* @__PURE__ */ defineComponent({
    name: "Box",
    __name: "box",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M317.056 128 128 344.064V896h768V344.064L706.944 128zm-14.528-64h418.944a32 32 0 0 1 24.064 10.88l206.528 236.096A32 32 0 0 1 960 332.032V928a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V332.032a32 32 0 0 1 7.936-21.12L278.4 75.008A32 32 0 0 1 302.528 64"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M64 320h896v64H64z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M448 327.872V640h128V327.872L526.08 128h-28.16zM448 64h128l64 256v352a32 32 0 0 1-32 32H416a32 32 0 0 1-32-32V320z"
        })
      ]));
    }
  }), box_default = _sfc_main24;
  var _sfc_main25 = /* @__PURE__ */ defineComponent({
    name: "Briefcase",
    __name: "briefcase",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M320 320V128h384v192h192v192H128V320zM128 576h768v320H128zm256-256h256.064V192H384z"
        })
      ]));
    }
  }), briefcase_default = _sfc_main25;
  var _sfc_main26 = /* @__PURE__ */ defineComponent({
    name: "BrushFilled",
    __name: "brush-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M608 704v160a96 96 0 0 1-192 0V704h-96a128 128 0 0 1-128-128h640a128 128 0 0 1-128 128zM192 512V128.064h640V512z"
        })
      ]));
    }
  }), brush_filled_default = _sfc_main26;
  var _sfc_main27 = /* @__PURE__ */ defineComponent({
    name: "Brush",
    __name: "brush",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M896 448H128v192a64 64 0 0 0 64 64h192v192h256V704h192a64 64 0 0 0 64-64zm-770.752-64c0-47.552 5.248-90.24 15.552-128 14.72-54.016 42.496-107.392 83.2-160h417.28l-15.36 70.336L736 96h211.2c-24.832 42.88-41.92 96.256-51.2 160a664 664 0 0 0-6.144 128H960v256a128 128 0 0 1-128 128H704v160a32 32 0 0 1-32 32H352a32 32 0 0 1-32-32V768H192A128 128 0 0 1 64 640V384zm64 0h636.544c-2.048-45.824.256-91.584 6.848-137.216 4.48-30.848 10.688-59.776 18.688-86.784h-96.64l-221.12 141.248L561.92 160H256.512c-25.856 37.888-43.776 75.456-53.952 112.832-8.768 32.064-13.248 69.12-13.312 111.168"
        })
      ]));
    }
  }), brush_default = _sfc_main27;
  var _sfc_main28 = /* @__PURE__ */ defineComponent({
    name: "Burger",
    __name: "burger",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M160 512a32 32 0 0 0-32 32v64a32 32 0 0 0 30.08 32H864a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm736-58.56A96 96 0 0 1 960 544v64a96 96 0 0 1-51.968 85.312L855.36 833.6a96 96 0 0 1-89.856 62.272H258.496A96 96 0 0 1 168.64 833.6l-52.608-140.224A96 96 0 0 1 64 608v-64a96 96 0 0 1 64-90.56V448a384 384 0 1 1 768 5.44M832 448a320 320 0 0 0-640 0zM512 704H188.352l40.192 107.136a32 32 0 0 0 29.952 20.736h507.008a32 32 0 0 0 29.952-20.736L835.648 704z"
        })
      ]));
    }
  }), burger_default = _sfc_main28;
  var _sfc_main29 = /* @__PURE__ */ defineComponent({
    name: "Calendar",
    __name: "calendar",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64zm192-256h384V96a32 32 0 1 1 64 0v32h160a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h160V96a32 32 0 0 1 64 0zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64"
        })
      ]));
    }
  }), calendar_default = _sfc_main29;
  var _sfc_main30 = /* @__PURE__ */ defineComponent({
    name: "CameraFilled",
    __name: "camera-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M160 224a64 64 0 0 0-64 64v512a64 64 0 0 0 64 64h704a64 64 0 0 0 64-64V288a64 64 0 0 0-64-64H748.416l-46.464-92.672A64 64 0 0 0 644.736 96H379.328a64 64 0 0 0-57.216 35.392L275.776 224zm352 435.2a115.2 115.2 0 1 0 0-230.4 115.2 115.2 0 0 0 0 230.4m0 140.8a256 256 0 1 1 0-512 256 256 0 0 1 0 512"
        })
      ]));
    }
  }), camera_filled_default = _sfc_main30;
  var _sfc_main31 = /* @__PURE__ */ defineComponent({
    name: "Camera",
    __name: "camera",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M896 256H128v576h768zm-199.424-64-32.064-64h-304.96l-32 64zM96 192h160l46.336-92.608A64 64 0 0 1 359.552 64h304.96a64 64 0 0 1 57.216 35.328L768.192 192H928a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V224a32 32 0 0 1 32-32m416 512a160 160 0 1 0 0-320 160 160 0 0 0 0 320m0 64a224 224 0 1 1 0-448 224 224 0 0 1 0 448"
        })
      ]));
    }
  }), camera_default = _sfc_main31;
  var _sfc_main32 = /* @__PURE__ */ defineComponent({
    name: "CaretBottom",
    __name: "caret-bottom",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m192 384 320 384 320-384z"
        })
      ]));
    }
  }), caret_bottom_default = _sfc_main32;
  var _sfc_main33 = /* @__PURE__ */ defineComponent({
    name: "CaretLeft",
    __name: "caret-left",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M672 192 288 511.936 672 832z"
        })
      ]));
    }
  }), caret_left_default = _sfc_main33;
  var _sfc_main34 = /* @__PURE__ */ defineComponent({
    name: "CaretRight",
    __name: "caret-right",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M384 192v640l384-320.064z"
        })
      ]));
    }
  }), caret_right_default = _sfc_main34;
  var _sfc_main35 = /* @__PURE__ */ defineComponent({
    name: "CaretTop",
    __name: "caret-top",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 320 192 704h639.936z"
        })
      ]));
    }
  }), caret_top_default = _sfc_main35;
  var _sfc_main36 = /* @__PURE__ */ defineComponent({
    name: "Cellphone",
    __name: "cellphone",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M256 128a64 64 0 0 0-64 64v640a64 64 0 0 0 64 64h512a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64zm0-64h512a128 128 0 0 1 128 128v640a128 128 0 0 1-128 128H256a128 128 0 0 1-128-128V192A128 128 0 0 1 256 64m128 128h256a32 32 0 1 1 0 64H384a32 32 0 0 1 0-64m128 640a64 64 0 1 1 0-128 64 64 0 0 1 0 128"
        })
      ]));
    }
  }), cellphone_default = _sfc_main36;
  var _sfc_main37 = /* @__PURE__ */ defineComponent({
    name: "ChatDotRound",
    __name: "chat-dot-round",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m174.72 855.68 135.296-45.12 23.68 11.84C388.096 849.536 448.576 864 512 864c211.84 0 384-166.784 384-352S723.84 160 512 160 128 326.784 128 512c0 69.12 24.96 139.264 70.848 199.232l22.08 28.8-46.272 115.584zm-45.248 82.56A32 32 0 0 1 89.6 896l58.368-145.92C94.72 680.32 64 596.864 64 512 64 299.904 256 96 512 96s448 203.904 448 416-192 416-448 416a461.06 461.06 0 0 1-206.912-48.384l-175.616 58.56z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 563.2a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4m192 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4m-384 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4"
        })
      ]));
    }
  }), chat_dot_round_default = _sfc_main37;
  var _sfc_main38 = /* @__PURE__ */ defineComponent({
    name: "ChatDotSquare",
    __name: "chat-dot-square",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M273.536 736H800a64 64 0 0 0 64-64V256a64 64 0 0 0-64-64H224a64 64 0 0 0-64 64v570.88zM296 800 147.968 918.4A32 32 0 0 1 96 893.44V256a128 128 0 0 1 128-128h576a128 128 0 0 1 128 128v416a128 128 0 0 1-128 128z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 499.2a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4m192 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4m-384 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4"
        })
      ]));
    }
  }), chat_dot_square_default = _sfc_main38;
  var _sfc_main39 = /* @__PURE__ */ defineComponent({
    name: "ChatLineRound",
    __name: "chat-line-round",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m174.72 855.68 135.296-45.12 23.68 11.84C388.096 849.536 448.576 864 512 864c211.84 0 384-166.784 384-352S723.84 160 512 160 128 326.784 128 512c0 69.12 24.96 139.264 70.848 199.232l22.08 28.8-46.272 115.584zm-45.248 82.56A32 32 0 0 1 89.6 896l58.368-145.92C94.72 680.32 64 596.864 64 512 64 299.904 256 96 512 96s448 203.904 448 416-192 416-448 416a461.06 461.06 0 0 1-206.912-48.384l-175.616 58.56z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M352 576h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32m32-192h256q32 0 32 32t-32 32H384q-32 0-32-32t32-32"
        })
      ]));
    }
  }), chat_line_round_default = _sfc_main39;
  var _sfc_main40 = /* @__PURE__ */ defineComponent({
    name: "ChatLineSquare",
    __name: "chat-line-square",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M160 826.88 273.536 736H800a64 64 0 0 0 64-64V256a64 64 0 0 0-64-64H224a64 64 0 0 0-64 64zM296 800 147.968 918.4A32 32 0 0 1 96 893.44V256a128 128 0 0 1 128-128h576a128 128 0 0 1 128 128v416a128 128 0 0 1-128 128z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M352 512h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32m0-192h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32"
        })
      ]));
    }
  }), chat_line_square_default = _sfc_main40;
  var _sfc_main41 = /* @__PURE__ */ defineComponent({
    name: "ChatRound",
    __name: "chat-round",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m174.72 855.68 130.048-43.392 23.424 11.392C382.4 849.984 444.352 864 512 864c223.744 0 384-159.872 384-352 0-192.832-159.104-352-384-352S128 319.168 128 512a341.12 341.12 0 0 0 69.248 204.288l21.632 28.8-44.16 110.528zm-45.248 82.56A32 32 0 0 1 89.6 896l56.512-141.248A405.12 405.12 0 0 1 64 512C64 299.904 235.648 96 512 96s448 203.904 448 416-173.44 416-448 416c-79.68 0-150.848-17.152-211.712-46.72l-170.88 56.96z"
        })
      ]));
    }
  }), chat_round_default = _sfc_main41;
  var _sfc_main42 = /* @__PURE__ */ defineComponent({
    name: "ChatSquare",
    __name: "chat-square",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M273.536 736H800a64 64 0 0 0 64-64V256a64 64 0 0 0-64-64H224a64 64 0 0 0-64 64v570.88zM296 800 147.968 918.4A32 32 0 0 1 96 893.44V256a128 128 0 0 1 128-128h576a128 128 0 0 1 128 128v416a128 128 0 0 1-128 128z"
        })
      ]));
    }
  }), chat_square_default = _sfc_main42;
  var _sfc_main43 = /* @__PURE__ */ defineComponent({
    name: "Check",
    __name: "check",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("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"
        })
      ]));
    }
  }), check_default = _sfc_main43;
  var _sfc_main44 = /* @__PURE__ */ defineComponent({
    name: "Checked",
    __name: "checked",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M704 192h160v736H160V192h160.064v64H704zM311.616 537.28l-45.312 45.248L447.36 763.52l316.8-316.8-45.312-45.184L447.36 673.024zM384 192V96h256v96z"
        })
      ]));
    }
  }), checked_default = _sfc_main44;
  var _sfc_main45 = /* @__PURE__ */ defineComponent({
    name: "Cherry",
    __name: "cherry",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M261.056 449.6c13.824-69.696 34.88-128.96 63.36-177.728 23.744-40.832 61.12-88.64 112.256-143.872H320a32 32 0 0 1 0-64h384a32 32 0 1 1 0 64H554.752c14.912 39.168 41.344 86.592 79.552 141.76 47.36 68.48 84.8 106.752 106.304 114.304a224 224 0 1 1-84.992 14.784c-22.656-22.912-47.04-53.76-73.92-92.608-38.848-56.128-67.008-105.792-84.352-149.312-55.296 58.24-94.528 107.52-117.76 147.2-23.168 39.744-41.088 88.768-53.568 147.072a224.064 224.064 0 1 1-64.96-1.6M288 832a160 160 0 1 0 0-320 160 160 0 0 0 0 320m448-64a160 160 0 1 0 0-320 160 160 0 0 0 0 320"
        })
      ]));
    }
  }), cherry_default = _sfc_main45;
  var _sfc_main46 = /* @__PURE__ */ defineComponent({
    name: "Chicken",
    __name: "chicken",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M349.952 716.992 478.72 588.16a106.7 106.7 0 0 1-26.176-19.072 106.7 106.7 0 0 1-19.072-26.176L304.704 671.744c.768 3.072 1.472 6.144 2.048 9.216l2.048 31.936 31.872 1.984c3.136.64 6.208 1.28 9.28 2.112m57.344 33.152a128 128 0 1 1-216.32 114.432l-1.92-32-32-1.92a128 128 0 1 1 114.432-216.32L416.64 469.248c-2.432-101.44 58.112-239.104 149.056-330.048 107.328-107.328 231.296-85.504 316.8 0 85.44 85.44 107.328 209.408 0 316.8-91.008 90.88-228.672 151.424-330.112 149.056L407.296 750.08zm90.496-226.304c49.536 49.536 233.344-7.04 339.392-113.088 78.208-78.208 63.232-163.072 0-226.304-63.168-63.232-148.032-78.208-226.24 0C504.896 290.496 448.32 474.368 497.792 523.84M244.864 708.928a64 64 0 1 0-59.84 59.84l56.32-3.52zm8.064 127.68a64 64 0 1 0 59.84-59.84l-56.32 3.52z"
        })
      ]));
    }
  }), chicken_default = _sfc_main46;
  var _sfc_main47 = /* @__PURE__ */ defineComponent({
    name: "ChromeFilled",
    __name: "chrome-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        "xml:space": "preserve",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M938.67 512.01c0-44.59-6.82-87.6-19.54-128H682.67a212.37 212.37 0 0 1 42.67 128c.06 38.71-10.45 76.7-30.42 109.87l-182.91 316.8c235.65-.01 426.66-191.02 426.66-426.67"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M576.79 401.63a127.9 127.9 0 0 0-63.56-17.6c-22.36-.22-44.39 5.43-63.89 16.38s-35.79 26.82-47.25 46.02a128 128 0 0 0-2.16 127.44l1.24 2.13a127.9 127.9 0 0 0 46.36 46.61 127.9 127.9 0 0 0 63.38 17.44c22.29.2 44.24-5.43 63.68-16.33a127.94 127.94 0 0 0 47.16-45.79v-.01l1.11-1.92a127.98 127.98 0 0 0 .29-127.46 127.96 127.96 0 0 0-46.36-46.91"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M394.45 333.96A213.34 213.34 0 0 1 512 298.67h369.58A426.5 426.5 0 0 0 512 85.34a425.6 425.6 0 0 0-171.74 35.98 425.6 425.6 0 0 0-142.62 102.22l118.14 204.63a213.4 213.4 0 0 1 78.67-94.21m117.56 604.72H512zm-97.25-236.73a213.3 213.3 0 0 1-89.54-86.81L142.48 298.6c-36.35 62.81-57.13 135.68-57.13 213.42 0 203.81 142.93 374.22 333.95 416.55h.04l118.19-204.71a213.3 213.3 0 0 1-122.77-21.91"
        })
      ]));
    }
  }), chrome_filled_default = _sfc_main47;
  var _sfc_main48 = /* @__PURE__ */ defineComponent({
    name: "CircleCheckFilled",
    __name: "circle-check-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.27 38.27 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"
        })
      ]));
    }
  }), circle_check_filled_default = _sfc_main48;
  var _sfc_main49 = /* @__PURE__ */ defineComponent({
    name: "CircleCheck",
    __name: "circle-check",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("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"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752z"
        })
      ]));
    }
  }), circle_check_default = _sfc_main49;
  var _sfc_main50 = /* @__PURE__ */ defineComponent({
    name: "CircleCloseFilled",
    __name: "circle-close-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("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"
        })
      ]));
    }
  }), circle_close_filled_default = _sfc_main50;
  var _sfc_main51 = /* @__PURE__ */ defineComponent({
    name: "CircleClose",
    __name: "circle-close",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("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"
        }),
        createBaseVNode("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"
        })
      ]));
    }
  }), circle_close_default = _sfc_main51;
  var _sfc_main52 = /* @__PURE__ */ defineComponent({
    name: "CirclePlusFilled",
    __name: "circle-plus-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-38.4 409.6H326.4a38.4 38.4 0 1 0 0 76.8h147.2v147.2a38.4 38.4 0 0 0 76.8 0V550.4h147.2a38.4 38.4 0 0 0 0-76.8H550.4V326.4a38.4 38.4 0 1 0-76.8 0z"
        })
      ]));
    }
  }), circle_plus_filled_default = _sfc_main52;
  var _sfc_main53 = /* @__PURE__ */ defineComponent({
    name: "CirclePlus",
    __name: "circle-plus",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M352 480h320a32 32 0 1 1 0 64H352a32 32 0 0 1 0-64"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M480 672V352a32 32 0 1 1 64 0v320a32 32 0 0 1-64 0"
        }),
        createBaseVNode("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"
        })
      ]));
    }
  }), circle_plus_default = _sfc_main53;
  var _sfc_main54 = /* @__PURE__ */ defineComponent({
    name: "Clock",
    __name: "clock",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("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"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32"
        })
      ]));
    }
  }), clock_default = _sfc_main54;
  var _sfc_main55 = /* @__PURE__ */ defineComponent({
    name: "CloseBold",
    __name: "close-bold",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M195.2 195.2a64 64 0 0 1 90.496 0L512 421.504 738.304 195.2a64 64 0 0 1 90.496 90.496L602.496 512 828.8 738.304a64 64 0 0 1-90.496 90.496L512 602.496 285.696 828.8a64 64 0 0 1-90.496-90.496L421.504 512 195.2 285.696a64 64 0 0 1 0-90.496"
        })
      ]));
    }
  }), close_bold_default = _sfc_main55;
  var _sfc_main56 = /* @__PURE__ */ defineComponent({
    name: "Close",
    __name: "close",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("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"
        })
      ]));
    }
  }), close_default = _sfc_main56;
  var _sfc_main57 = /* @__PURE__ */ defineComponent({
    name: "Cloudy",
    __name: "cloudy",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M598.4 831.872H328.192a256 256 0 0 1-34.496-510.528A352 352 0 1 1 598.4 831.872m-271.36-64h272.256a288 288 0 1 0-248.512-417.664L335.04 381.44l-34.816 3.584a192 192 0 0 0 26.88 382.848z"
        })
      ]));
    }
  }), cloudy_default = _sfc_main57;
  var _sfc_main58 = /* @__PURE__ */ defineComponent({
    name: "CoffeeCup",
    __name: "coffee-cup",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M768 192a192 192 0 1 1-8 383.808A256.13 256.13 0 0 1 512 768H320A256 256 0 0 1 64 512V160a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32zm0 64v256a128 128 0 1 0 0-256M96 832h640a32 32 0 1 1 0 64H96a32 32 0 1 1 0-64m32-640v320a192 192 0 0 0 192 192h192a192 192 0 0 0 192-192V192z"
        })
      ]));
    }
  }), coffee_cup_default = _sfc_main58;
  var _sfc_main59 = /* @__PURE__ */ defineComponent({
    name: "Coffee",
    __name: "coffee",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M822.592 192h14.272a32 32 0 0 1 31.616 26.752l21.312 128A32 32 0 0 1 858.24 384h-49.344l-39.04 546.304A32 32 0 0 1 737.92 960H285.824a32 32 0 0 1-32-29.696L214.912 384H165.76a32 32 0 0 1-31.552-37.248l21.312-128A32 32 0 0 1 187.136 192h14.016l-6.72-93.696A32 32 0 0 1 226.368 64h571.008a32 32 0 0 1 31.936 34.304zm-64.128 0 4.544-64H260.736l4.544 64zm-548.16 128H820.48l-10.688-64H214.208l-10.688 64zm68.736 64 36.544 512H708.16l36.544-512z"
        })
      ]));
    }
  }), coffee_default = _sfc_main59;
  var _sfc_main60 = /* @__PURE__ */ defineComponent({
    name: "Coin",
    __name: "coin",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m161.92 580.736 29.888 58.88C171.328 659.776 160 681.728 160 704c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 615.808 928 657.664 928 704c0 129.728-188.544 224-416 224S96 833.728 96 704c0-46.592 24.32-88.576 65.92-123.264"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m161.92 388.736 29.888 58.88C171.328 467.84 160 489.792 160 512c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 423.808 928 465.664 928 512c0 129.728-188.544 224-416 224S96 641.728 96 512c0-46.592 24.32-88.576 65.92-123.264"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 544c-227.456 0-416-94.272-416-224S284.544 96 512 96s416 94.272 416 224-188.544 224-416 224m0-64c196.672 0 352-77.696 352-160S708.672 160 512 160s-352 77.696-352 160 155.328 160 352 160"
        })
      ]));
    }
  }), coin_default = _sfc_main60;
  var _sfc_main61 = /* @__PURE__ */ defineComponent({
    name: "ColdDrink",
    __name: "cold-drink",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M768 64a192 192 0 1 1-69.952 370.88L480 725.376V896h96a32 32 0 1 1 0 64H320a32 32 0 1 1 0-64h96V725.376L76.8 273.536a64 64 0 0 1-12.8-38.4v-10.688a32 32 0 0 1 32-32h71.808l-65.536-83.84a32 32 0 0 1 50.432-39.424l96.256 123.264h337.728A192.06 192.06 0 0 1 768 64M656.896 192.448H800a32 32 0 0 1 32 32v10.624a64 64 0 0 1-12.8 38.4l-80.448 107.2a128 128 0 1 0-81.92-188.16v-.064zm-357.888 64 129.472 165.76a32 32 0 0 1-50.432 39.36l-160.256-205.12H144l304 404.928 304-404.928z"
        })
      ]));
    }
  }), cold_drink_default = _sfc_main61;
  var _sfc_main62 = /* @__PURE__ */ defineComponent({
    name: "CollectionTag",
    __name: "collection-tag",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M256 128v698.88l196.032-156.864a96 96 0 0 1 119.936 0L768 826.816V128zm-32-64h576a32 32 0 0 1 32 32v797.44a32 32 0 0 1-51.968 24.96L531.968 720a32 32 0 0 0-39.936 0L243.968 918.4A32 32 0 0 1 192 893.44V96a32 32 0 0 1 32-32"
        })
      ]));
    }
  }), collection_tag_default = _sfc_main62;
  var _sfc_main63 = /* @__PURE__ */ defineComponent({
    name: "Collection",
    __name: "collection",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M192 736h640V128H256a64 64 0 0 0-64 64zm64-672h608a32 32 0 0 1 32 32v672a32 32 0 0 1-32 32H160l-32 57.536V192A128 128 0 0 1 256 64"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M240 800a48 48 0 1 0 0 96h592v-96zm0-64h656v160a64 64 0 0 1-64 64H240a112 112 0 0 1 0-224m144-608v250.88l96-76.8 96 76.8V128zm-64-64h320v381.44a32 32 0 0 1-51.968 24.96L480 384l-108.032 86.4A32 32 0 0 1 320 445.44z"
        })
      ]));
    }
  }), collection_default = _sfc_main63;
  var _sfc_main64 = /* @__PURE__ */ defineComponent({
    name: "Comment",
    __name: "comment",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M736 504a56 56 0 1 1 0-112 56 56 0 0 1 0 112m-224 0a56 56 0 1 1 0-112 56 56 0 0 1 0 112m-224 0a56 56 0 1 1 0-112 56 56 0 0 1 0 112M128 128v640h192v160l224-160h352V128z"
        })
      ]));
    }
  }), comment_default = _sfc_main64;
  var _sfc_main65 = /* @__PURE__ */ defineComponent({
    name: "Compass",
    __name: "compass",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("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"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M725.888 315.008C676.48 428.672 624 513.28 568.576 568.64c-55.424 55.424-139.968 107.904-253.568 157.312a12.8 12.8 0 0 1-16.896-16.832c49.536-113.728 102.016-198.272 157.312-253.632 55.36-55.296 139.904-107.776 253.632-157.312a12.8 12.8 0 0 1 16.832 16.832"
        })
      ]));
    }
  }), compass_default = _sfc_main65;
  var _sfc_main66 = /* @__PURE__ */ defineComponent({
    name: "Connection",
    __name: "connection",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M640 384v64H448a128 128 0 0 0-128 128v128a128 128 0 0 0 128 128h320a128 128 0 0 0 128-128V576a128 128 0 0 0-64-110.848V394.88c74.56 26.368 128 97.472 128 181.056v128a192 192 0 0 1-192 192H448a192 192 0 0 1-192-192V576a192 192 0 0 1 192-192z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M384 640v-64h192a128 128 0 0 0 128-128V320a128 128 0 0 0-128-128H256a128 128 0 0 0-128 128v128a128 128 0 0 0 64 110.848v70.272A192.06 192.06 0 0 1 64 448V320a192 192 0 0 1 192-192h320a192 192 0 0 1 192 192v128a192 192 0 0 1-192 192z"
        })
      ]));
    }
  }), connection_default = _sfc_main66;
  var _sfc_main67 = /* @__PURE__ */ defineComponent({
    name: "Coordinate",
    __name: "coordinate",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M480 512h64v320h-64z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M192 896h640a64 64 0 0 0-64-64H256a64 64 0 0 0-64 64m64-128h512a128 128 0 0 1 128 128v64H128v-64a128 128 0 0 1 128-128m256-256a192 192 0 1 0 0-384 192 192 0 0 0 0 384m0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512"
        })
      ]));
    }
  }), coordinate_default = _sfc_main67;
  var _sfc_main68 = /* @__PURE__ */ defineComponent({
    name: "CopyDocument",
    __name: "copy-document",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M768 832a128 128 0 0 1-128 128H192A128 128 0 0 1 64 832V384a128 128 0 0 1 128-128v64a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M384 128a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64zm0-64h448a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H384a128 128 0 0 1-128-128V192A128 128 0 0 1 384 64"
        })
      ]));
    }
  }), copy_document_default = _sfc_main68;
  var _sfc_main69 = /* @__PURE__ */ defineComponent({
    name: "Cpu",
    __name: "cpu",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M320 256a64 64 0 0 0-64 64v384a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V320a64 64 0 0 0-64-64zm0-64h384a128 128 0 0 1 128 128v384a128 128 0 0 1-128 128H320a128 128 0 0 1-128-128V320a128 128 0 0 1 128-128"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 64a32 32 0 0 1 32 32v128h-64V96a32 32 0 0 1 32-32m160 0a32 32 0 0 1 32 32v128h-64V96a32 32 0 0 1 32-32m-320 0a32 32 0 0 1 32 32v128h-64V96a32 32 0 0 1 32-32m160 896a32 32 0 0 1-32-32V800h64v128a32 32 0 0 1-32 32m160 0a32 32 0 0 1-32-32V800h64v128a32 32 0 0 1-32 32m-320 0a32 32 0 0 1-32-32V800h64v128a32 32 0 0 1-32 32M64 512a32 32 0 0 1 32-32h128v64H96a32 32 0 0 1-32-32m0-160a32 32 0 0 1 32-32h128v64H96a32 32 0 0 1-32-32m0 320a32 32 0 0 1 32-32h128v64H96a32 32 0 0 1-32-32m896-160a32 32 0 0 1-32 32H800v-64h128a32 32 0 0 1 32 32m0-160a32 32 0 0 1-32 32H800v-64h128a32 32 0 0 1 32 32m0 320a32 32 0 0 1-32 32H800v-64h128a32 32 0 0 1 32 32"
        })
      ]));
    }
  }), cpu_default = _sfc_main69;
  var _sfc_main70 = /* @__PURE__ */ defineComponent({
    name: "CreditCard",
    __name: "credit-card",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M896 324.096c0-42.368-2.496-55.296-9.536-68.48a52.35 52.35 0 0 0-22.144-22.08c-13.12-7.04-26.048-9.536-68.416-9.536H228.096c-42.368 0-55.296 2.496-68.48 9.536a52.35 52.35 0 0 0-22.08 22.144c-7.04 13.12-9.536 26.048-9.536 68.416v375.808c0 42.368 2.496 55.296 9.536 68.48a52.35 52.35 0 0 0 22.144 22.08c13.12 7.04 26.048 9.536 68.416 9.536h567.808c42.368 0 55.296-2.496 68.48-9.536a52.35 52.35 0 0 0 22.08-22.144c7.04-13.12 9.536-26.048 9.536-68.416zm64 0v375.808c0 57.088-5.952 77.76-17.088 98.56-11.136 20.928-27.52 37.312-48.384 48.448S852.928 864 795.968 864H228.032c-57.088 0-77.76-5.952-98.56-17.088a116.3 116.3 0 0 1-48.448-48.384c-11.136-20.864-17.088-41.6-17.088-98.56V324.032c0-57.088 5.952-77.76 17.088-98.56 11.136-20.928 27.52-37.312 48.384-48.448s41.6-17.088 98.56-17.088H795.84c57.088 0 77.76 5.952 98.56 17.088 20.928 11.136 37.312 27.52 48.448 48.384s17.088 41.6 17.088 98.56z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M64 320h896v64H64zm0 128h896v64H64zm128 192h256v64H192z"
        })
      ]));
    }
  }), credit_card_default = _sfc_main70;
  var _sfc_main71 = /* @__PURE__ */ defineComponent({
    name: "Crop",
    __name: "crop",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M256 768h672a32 32 0 1 1 0 64H224a32 32 0 0 1-32-32V96a32 32 0 0 1 64 0z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M832 224v704a32 32 0 1 1-64 0V256H96a32 32 0 0 1 0-64h704a32 32 0 0 1 32 32"
        })
      ]));
    }
  }), crop_default = _sfc_main71;
  var _sfc_main72 = /* @__PURE__ */ defineComponent({
    name: "DArrowLeft",
    __name: "d-arrow-left",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.59 30.59 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.59 30.59 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L197.76 534.272a32 32 0 0 1 0-44.672zm256 0a29.12 29.12 0 0 1 41.728 0 30.59 30.59 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.59 30.59 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L453.76 534.272a32 32 0 0 1 0-44.672z"
        })
      ]));
    }
  }), d_arrow_left_default = _sfc_main72;
  var _sfc_main73 = /* @__PURE__ */ defineComponent({
    name: "DArrowRight",
    __name: "d-arrow-right",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M452.864 149.312a29.12 29.12 0 0 1 41.728.064L826.24 489.664a32 32 0 0 1 0 44.672L494.592 874.624a29.12 29.12 0 0 1-41.728 0 30.59 30.59 0 0 1 0-42.752L764.736 512 452.864 192a30.59 30.59 0 0 1 0-42.688m-256 0a29.12 29.12 0 0 1 41.728.064L570.24 489.664a32 32 0 0 1 0 44.672L238.592 874.624a29.12 29.12 0 0 1-41.728 0 30.59 30.59 0 0 1 0-42.752L508.736 512 196.864 192a30.59 30.59 0 0 1 0-42.688"
        })
      ]));
    }
  }), d_arrow_right_default = _sfc_main73;
  var _sfc_main74 = /* @__PURE__ */ defineComponent({
    name: "DCaret",
    __name: "d-caret",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m512 128 288 320H224zM224 576h576L512 896z"
        })
      ]));
    }
  }), d_caret_default = _sfc_main74;
  var _sfc_main75 = /* @__PURE__ */ defineComponent({
    name: "DataAnalysis",
    __name: "data-analysis",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m665.216 768 110.848 192h-73.856L591.36 768H433.024L322.176 960H248.32l110.848-192H160a32 32 0 0 1-32-32V192H64a32 32 0 0 1 0-64h896a32 32 0 1 1 0 64h-64v544a32 32 0 0 1-32 32zM832 192H192v512h640zM352 448a32 32 0 0 1 32 32v64a32 32 0 0 1-64 0v-64a32 32 0 0 1 32-32m160-64a32 32 0 0 1 32 32v128a32 32 0 0 1-64 0V416a32 32 0 0 1 32-32m160-64a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V352a32 32 0 0 1 32-32"
        })
      ]));
    }
  }), data_analysis_default = _sfc_main75;
  var _sfc_main76 = /* @__PURE__ */ defineComponent({
    name: "DataBoard",
    __name: "data-board",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M32 128h960v64H32z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M192 192v512h640V192zm-64-64h768v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M322.176 960H248.32l144.64-250.56 55.424 32zm453.888 0h-73.856L576 741.44l55.424-32z"
        })
      ]));
    }
  }), data_board_default = _sfc_main76;
  var _sfc_main77 = /* @__PURE__ */ defineComponent({
    name: "DataLine",
    __name: "data-line",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M359.168 768H160a32 32 0 0 1-32-32V192H64a32 32 0 0 1 0-64h896a32 32 0 1 1 0 64h-64v544a32 32 0 0 1-32 32H665.216l110.848 192h-73.856L591.36 768H433.024L322.176 960H248.32zM832 192H192v512h640zM342.656 534.656a32 32 0 1 1-45.312-45.312L444.992 341.76l125.44 94.08L679.04 300.032a32 32 0 1 1 49.92 39.936L581.632 524.224 451.008 426.24 342.656 534.592z"
        })
      ]));
    }
  }), data_line_default = _sfc_main77;
  var _sfc_main78 = /* @__PURE__ */ defineComponent({
    name: "DeleteFilled",
    __name: "delete-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M352 192V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64H96a32 32 0 0 1 0-64zm64 0h192v-64H416zM192 960a32 32 0 0 1-32-32V256h704v672a32 32 0 0 1-32 32zm224-192a32 32 0 0 0 32-32V416a32 32 0 0 0-64 0v320a32 32 0 0 0 32 32m192 0a32 32 0 0 0 32-32V416a32 32 0 0 0-64 0v320a32 32 0 0 0 32 32"
        })
      ]));
    }
  }), delete_filled_default = _sfc_main78;
  var _sfc_main79 = /* @__PURE__ */ defineComponent({
    name: "DeleteLocation",
    __name: "delete-location",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M288 896h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416M512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M384 384h256q32 0 32 32t-32 32H384q-32 0-32-32t32-32"
        })
      ]));
    }
  }), delete_location_default = _sfc_main79;
  var _sfc_main80 = /* @__PURE__ */ defineComponent({
    name: "Delete",
    __name: "delete",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("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"
        })
      ]));
    }
  }), delete_default = _sfc_main80;
  var _sfc_main81 = /* @__PURE__ */ defineComponent({
    name: "Dessert",
    __name: "dessert",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M128 416v-48a144 144 0 0 1 168.64-141.888 224.128 224.128 0 0 1 430.72 0A144 144 0 0 1 896 368v48a384 384 0 0 1-352 382.72V896h-64v-97.28A384 384 0 0 1 128 416m287.104-32.064h193.792a143.81 143.81 0 0 1 58.88-132.736 160.064 160.064 0 0 0-311.552 0 143.81 143.81 0 0 1 58.88 132.8zm-72.896 0a72 72 0 1 0-140.48 0zm339.584 0h140.416a72 72 0 1 0-140.48 0zM512 736a320 320 0 0 0 318.4-288.064H193.6A320 320 0 0 0 512 736M384 896.064h256a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64"
        })
      ]));
    }
  }), dessert_default = _sfc_main81;
  var _sfc_main82 = /* @__PURE__ */ defineComponent({
    name: "Discount",
    __name: "discount",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M224 704h576V318.336L552.512 115.84a64 64 0 0 0-81.024 0L224 318.336zm0 64v128h576V768zM593.024 66.304l259.2 212.096A32 32 0 0 1 864 303.168V928a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V303.168a32 32 0 0 1 11.712-24.768l259.2-212.096a128 128 0 0 1 162.112 0"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 448a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256"
        })
      ]));
    }
  }), discount_default = _sfc_main82;
  var _sfc_main83 = /* @__PURE__ */ defineComponent({
    name: "DishDot",
    __name: "dish-dot",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m384.064 274.56.064-50.688A128 128 0 0 1 512.128 96c70.528 0 127.68 57.152 127.68 127.68v50.752A448.19 448.19 0 0 1 955.392 768H68.544A448.19 448.19 0 0 1 384 274.56zM96 832h832a32 32 0 1 1 0 64H96a32 32 0 1 1 0-64m32-128h768a384 384 0 1 0-768 0m447.808-448v-32.32a63.68 63.68 0 0 0-63.68-63.68 64 64 0 0 0-64 63.936V256z"
        })
      ]));
    }
  }), dish_dot_default = _sfc_main83;
  var _sfc_main84 = /* @__PURE__ */ defineComponent({
    name: "Dish",
    __name: "dish",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M480 257.152V192h-96a32 32 0 0 1 0-64h256a32 32 0 1 1 0 64h-96v65.152A448 448 0 0 1 955.52 768H68.48A448 448 0 0 1 480 257.152M128 704h768a384 384 0 1 0-768 0M96 832h832a32 32 0 1 1 0 64H96a32 32 0 1 1 0-64"
        })
      ]));
    }
  }), dish_default = _sfc_main84;
  var _sfc_main85 = /* @__PURE__ */ defineComponent({
    name: "DocumentAdd",
    __name: "document-add",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("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-32m320 512V448h64v128h128v64H544v128h-64V640H352v-64z"
        })
      ]));
    }
  }), document_add_default = _sfc_main85;
  var _sfc_main86 = /* @__PURE__ */ defineComponent({
    name: "DocumentChecked",
    __name: "document-checked",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M805.504 320 640 154.496V320zM832 384H576V128H192v768h640zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m318.4 582.144 180.992-180.992L704.64 510.4 478.4 736.64 320 578.304l45.248-45.312z"
        })
      ]));
    }
  }), document_checked_default = _sfc_main86;
  var _sfc_main87 = /* @__PURE__ */ defineComponent({
    name: "DocumentCopy",
    __name: "document-copy",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M128 320v576h576V320zm-32-64h640a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V288a32 32 0 0 1 32-32M960 96v704a32 32 0 0 1-32 32h-96v-64h64V128H384v64h-64V96a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32M256 672h320v64H256zm0-192h320v64H256z"
        })
      ]));
    }
  }), document_copy_default = _sfc_main87;
  var _sfc_main88 = /* @__PURE__ */ defineComponent({
    name: "DocumentDelete",
    __name: "document-delete",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M805.504 320 640 154.496V320zM832 384H576V128H192v768h640zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m308.992 546.304-90.496-90.624 45.248-45.248 90.56 90.496 90.496-90.432 45.248 45.248-90.496 90.56 90.496 90.496-45.248 45.248-90.496-90.496-90.56 90.496-45.248-45.248z"
        })
      ]));
    }
  }), document_delete_default = _sfc_main88;
  var _sfc_main89 = /* @__PURE__ */ defineComponent({
    name: "DocumentRemove",
    __name: "document-remove",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M805.504 320 640 154.496V320zM832 384H576V128H192v768h640zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m192 512h320v64H352z"
        })
      ]));
    }
  }), document_remove_default = _sfc_main89;
  var _sfc_main90 = /* @__PURE__ */ defineComponent({
    name: "Document",
    __name: "document",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("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"
        })
      ]));
    }
  }), document_default = _sfc_main90;
  var _sfc_main91 = /* @__PURE__ */ defineComponent({
    name: "Download",
    __name: "download",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m384-253.696 236.288-236.352 45.248 45.248L508.8 704 192 387.2l45.248-45.248L480 584.704V128h64z"
        })
      ]));
    }
  }), download_default = _sfc_main91;
  var _sfc_main92 = /* @__PURE__ */ defineComponent({
    name: "Drizzling",
    __name: "drizzling",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m739.328 291.328-35.2-6.592-12.8-33.408a192.064 192.064 0 0 0-365.952 23.232l-9.92 40.896-41.472 7.04a176.32 176.32 0 0 0-146.24 173.568c0 97.28 78.72 175.936 175.808 175.936h400a192 192 0 0 0 35.776-380.672M959.552 480a256 256 0 0 1-256 256h-400A239.81 239.81 0 0 1 63.744 496.192a240.32 240.32 0 0 1 199.488-236.8 256.128 256.128 0 0 1 487.872-30.976A256.064 256.064 0 0 1 959.552 480M288 800h64v64h-64zm192 0h64v64h-64zm-96 96h64v64h-64zm192 0h64v64h-64zm96-96h64v64h-64z"
        })
      ]));
    }
  }), drizzling_default = _sfc_main92;
  var _sfc_main93 = /* @__PURE__ */ defineComponent({
    name: "EditPen",
    __name: "edit-pen",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m199.04 672.64 193.984 112 224-387.968-193.92-112-224 388.032zm-23.872 60.16 32.896 148.288 144.896-45.696zM455.04 229.248l193.92 112 56.704-98.112-193.984-112zM104.32 708.8l384-665.024 304.768 175.936L409.152 884.8h.064l-248.448 78.336zm384 254.272v-64h448v64z"
        })
      ]));
    }
  }), edit_pen_default = _sfc_main93;
  var _sfc_main94 = /* @__PURE__ */ defineComponent({
    name: "Edit",
    __name: "edit",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M832 512a32 32 0 1 1 64 0v352a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h352a32 32 0 0 1 0 64H192v640h640z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m469.952 554.24 52.8-7.552L847.104 222.4a32 32 0 1 0-45.248-45.248L477.44 501.44l-7.552 52.8zm422.4-422.4a96 96 0 0 1 0 135.808l-331.84 331.84a32 32 0 0 1-18.112 9.088L436.8 623.68a32 32 0 0 1-36.224-36.224l15.104-105.6a32 32 0 0 1 9.024-18.112l331.904-331.84a96 96 0 0 1 135.744 0z"
        })
      ]));
    }
  }), edit_default = _sfc_main94;
  var _sfc_main95 = /* @__PURE__ */ defineComponent({
    name: "ElemeFilled",
    __name: "eleme-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M176 64h672c61.824 0 112 50.176 112 112v672a112 112 0 0 1-112 112H176A112 112 0 0 1 64 848V176c0-61.824 50.176-112 112-112m150.528 173.568c-152.896 99.968-196.544 304.064-97.408 456.96a330.69 330.69 0 0 0 456.96 96.64c9.216-5.888 17.6-11.776 25.152-18.56a18.24 18.24 0 0 0 4.224-24.32L700.352 724.8a47.55 47.55 0 0 0-65.536-14.272A234.56 234.56 0 0 1 310.592 641.6C240 533.248 271.104 387.968 379.456 316.48a234.3 234.3 0 0 1 276.352 15.168c1.664.832 2.56 2.56 3.392 4.224 5.888 8.384 3.328 19.328-5.12 25.216L456.832 489.6a47.55 47.55 0 0 0-14.336 65.472l16 24.384c5.888 8.384 16.768 10.88 25.216 5.056l308.224-199.936a19.584 19.584 0 0 0 6.72-23.488v-.896c-4.992-9.216-10.048-17.6-15.104-26.88-99.968-151.168-304.064-194.88-456.96-95.744zM786.88 504.704l-62.208 40.32c-8.32 5.888-10.88 16.768-4.992 25.216L760 632.32c5.888 8.448 16.768 11.008 25.152 5.12l31.104-20.16a55.36 55.36 0 0 0 16-76.48l-20.224-31.04a19.52 19.52 0 0 0-25.152-5.12z"
        })
      ]));
    }
  }), eleme_filled_default = _sfc_main95;
  var _sfc_main96 = /* @__PURE__ */ defineComponent({
    name: "Eleme",
    __name: "eleme",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M300.032 188.8c174.72-113.28 408-63.36 522.24 109.44 5.76 10.56 11.52 20.16 17.28 30.72v.96a22.4 22.4 0 0 1-7.68 26.88l-352.32 228.48c-9.6 6.72-22.08 3.84-28.8-5.76l-18.24-27.84a54.336 54.336 0 0 1 16.32-74.88l225.6-146.88c9.6-6.72 12.48-19.2 5.76-28.8-.96-1.92-1.92-3.84-3.84-4.8a267.84 267.84 0 0 0-315.84-17.28c-123.84 81.6-159.36 247.68-78.72 371.52a268.096 268.096 0 0 0 370.56 78.72 54.336 54.336 0 0 1 74.88 16.32l17.28 26.88c5.76 9.6 3.84 21.12-4.8 27.84-8.64 7.68-18.24 14.4-28.8 21.12a377.92 377.92 0 0 1-522.24-110.4c-113.28-174.72-63.36-408 111.36-522.24m526.08 305.28a22.336 22.336 0 0 1 28.8 5.76l23.04 35.52a63.23 63.23 0 0 1-18.24 87.36l-35.52 23.04c-9.6 6.72-22.08 3.84-28.8-5.76l-46.08-71.04c-6.72-9.6-3.84-22.08 5.76-28.8z"
        })
      ]));
    }
  }), eleme_default = _sfc_main96;
  var _sfc_main97 = /* @__PURE__ */ defineComponent({
    name: "ElementPlus",
    __name: "element-plus",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M839.7 734.7c0 33.3-17.9 41-17.9 41S519.7 949.8 499.2 960c-10.2 5.1-20.5 5.1-30.7 0 0 0-314.9-184.3-325.1-192-5.1-5.1-10.2-12.8-12.8-20.5V368.6c0-17.9 20.5-28.2 20.5-28.2L466 158.6q19.2-7.65 38.4 0s279 161.3 309.8 179.2c17.9 7.7 28.2 25.6 25.6 46.1-.1-5-.1 317.5-.1 350.8M714.2 371.2c-64-35.8-217.6-125.4-217.6-125.4-7.7-5.1-20.5-5.1-30.7 0L217.6 389.1s-17.9 10.2-17.9 23v297c0 5.1 5.1 12.8 7.7 17.9 7.7 5.1 256 148.5 256 148.5 7.7 5.1 17.9 5.1 25.6 0 15.4-7.7 250.9-145.9 250.9-145.9s12.8-5.1 12.8-30.7v-74.2l-276.5 169v-64c0-17.9 7.7-30.7 20.5-46.1L745 535c5.1-7.7 10.2-20.5 10.2-30.7v-66.6l-279 169v-69.1c0-15.4 5.1-30.7 17.9-38.4zM919 135.7c0-5.1-5.1-7.7-7.7-7.7h-58.9V66.6c0-5.1-5.1-5.1-10.2-5.1l-30.7 5.1c-5.1 0-5.1 2.6-5.1 5.1V128h-56.3c-5.1 0-5.1 5.1-7.7 5.1v38.4h69.1v64c0 5.1 5.1 5.1 10.2 5.1l30.7-5.1c5.1 0 5.1-2.6 5.1-5.1v-56.3h64z"
        })
      ]));
    }
  }), element_plus_default = _sfc_main97;
  var _sfc_main98 = /* @__PURE__ */ defineComponent({
    name: "Expand",
    __name: "expand",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M128 192h768v128H128zm0 256h512v128H128zm0 256h768v128H128zm576-352 192 160-192 128z"
        })
      ]));
    }
  }), expand_default = _sfc_main98;
  var _sfc_main99 = /* @__PURE__ */ defineComponent({
    name: "Failed",
    __name: "failed",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m557.248 608 135.744-135.744-45.248-45.248-135.68 135.744-135.808-135.68-45.248 45.184L466.752 608l-135.68 135.68 45.184 45.312L512 653.248l135.744 135.744 45.248-45.248L557.312 608zM704 192h160v736H160V192h160v64h384zm-320 0V96h256v96z"
        })
      ]));
    }
  }), failed_default = _sfc_main99;
  var _sfc_main100 = /* @__PURE__ */ defineComponent({
    name: "Female",
    __name: "female",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 640a256 256 0 1 0 0-512 256 256 0 0 0 0 512m0 64a320 320 0 1 1 0-640 320 320 0 0 1 0 640"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 640q32 0 32 32v256q0 32-32 32t-32-32V672q0-32 32-32"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M352 800h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32"
        })
      ]));
    }
  }), female_default = _sfc_main100;
  var _sfc_main101 = /* @__PURE__ */ defineComponent({
    name: "Files",
    __name: "files",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M128 384v448h768V384zm-32-64h832a32 32 0 0 1 32 32v512a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V352a32 32 0 0 1 32-32m64-128h704v64H160zm96-128h512v64H256z"
        })
      ]));
    }
  }), files_default = _sfc_main101;
  var _sfc_main102 = /* @__PURE__ */ defineComponent({
    name: "Film",
    __name: "film",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M160 160v704h704V160zm-32-64h768a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H128a32 32 0 0 1-32-32V128a32 32 0 0 1 32-32"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M320 288V128h64v352h256V128h64v160h160v64H704v128h160v64H704v128h160v64H704v160h-64V544H384v352h-64V736H128v-64h192V544H128v-64h192V352H128v-64z"
        })
      ]));
    }
  }), film_default = _sfc_main102;
  var _sfc_main103 = /* @__PURE__ */ defineComponent({
    name: "Filter",
    __name: "filter",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M384 523.392V928a32 32 0 0 0 46.336 28.608l192-96A32 32 0 0 0 640 832V523.392l280.768-343.104a32 32 0 1 0-49.536-40.576l-288 352A32 32 0 0 0 576 512v300.224l-128 64V512a32 32 0 0 0-7.232-20.288L195.52 192H704a32 32 0 1 0 0-64H128a32 32 0 0 0-24.768 52.288z"
        })
      ]));
    }
  }), filter_default = _sfc_main103;
  var _sfc_main104 = /* @__PURE__ */ defineComponent({
    name: "Finished",
    __name: "finished",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M280.768 753.728 691.456 167.04a32 32 0 1 1 52.416 36.672L314.24 817.472a32 32 0 0 1-45.44 7.296l-230.4-172.8a32 32 0 0 1 38.4-51.2zM736 448a32 32 0 1 1 0-64h192a32 32 0 1 1 0 64zM608 640a32 32 0 0 1 0-64h319.936a32 32 0 1 1 0 64zM480 832a32 32 0 1 1 0-64h447.936a32 32 0 1 1 0 64z"
        })
      ]));
    }
  }), finished_default = _sfc_main104;
  var _sfc_main105 = /* @__PURE__ */ defineComponent({
    name: "FirstAidKit",
    __name: "first-aid-kit",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M192 256a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V320a64 64 0 0 0-64-64zm0-64h640a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H192A128 128 0 0 1 64 768V320a128 128 0 0 1 128-128"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M544 512h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64h96v-96a32 32 0 0 1 64 0zM352 128v64h320v-64zm-32-64h384a32 32 0 0 1 32 32v128a32 32 0 0 1-32 32H320a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32"
        })
      ]));
    }
  }), first_aid_kit_default = _sfc_main105;
  var _sfc_main106 = /* @__PURE__ */ defineComponent({
    name: "Flag",
    __name: "flag",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M288 128h608L736 384l160 256H288v320h-96V64h96z"
        })
      ]));
    }
  }), flag_default = _sfc_main106;
  var _sfc_main107 = /* @__PURE__ */ defineComponent({
    name: "Fold",
    __name: "fold",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M896 192H128v128h768zm0 256H384v128h512zm0 256H128v128h768zM320 384 128 512l192 128z"
        })
      ]));
    }
  }), fold_default = _sfc_main107;
  var _sfc_main108 = /* @__PURE__ */ defineComponent({
    name: "FolderAdd",
    __name: "folder-add",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M128 192v640h768V320H485.76L357.504 192zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32m384 416V416h64v128h128v64H544v128h-64V608H352v-64z"
        })
      ]));
    }
  }), folder_add_default = _sfc_main108;
  var _sfc_main109 = /* @__PURE__ */ defineComponent({
    name: "FolderChecked",
    __name: "folder-checked",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M128 192v640h768V320H485.76L357.504 192zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32m414.08 502.144 180.992-180.992L736.32 494.4 510.08 720.64l-158.4-158.336 45.248-45.312z"
        })
      ]));
    }
  }), folder_checked_default = _sfc_main109;
  var _sfc_main110 = /* @__PURE__ */ defineComponent({
    name: "FolderDelete",
    __name: "folder-delete",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M128 192v640h768V320H485.76L357.504 192zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32m370.752 448-90.496-90.496 45.248-45.248L512 530.752l90.496-90.496 45.248 45.248L557.248 576l90.496 90.496-45.248 45.248L512 621.248l-90.496 90.496-45.248-45.248z"
        })
      ]));
    }
  }), folder_delete_default = _sfc_main110;
  var _sfc_main111 = /* @__PURE__ */ defineComponent({
    name: "FolderOpened",
    __name: "folder-opened",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M878.08 448H241.92l-96 384h636.16zM832 384v-64H485.76L357.504 192H128v448l57.92-231.744A32 32 0 0 1 216.96 384zm-24.96 512H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h287.872l128.384 128H864a32 32 0 0 1 32 32v96h23.04a32 32 0 0 1 31.04 39.744l-112 448A32 32 0 0 1 807.04 896"
        })
      ]));
    }
  }), folder_opened_default = _sfc_main111;
  var _sfc_main112 = /* @__PURE__ */ defineComponent({
    name: "FolderRemove",
    __name: "folder-remove",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M128 192v640h768V320H485.76L357.504 192zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32m256 416h320v64H352z"
        })
      ]));
    }
  }), folder_remove_default = _sfc_main112;
  var _sfc_main113 = /* @__PURE__ */ defineComponent({
    name: "Folder",
    __name: "folder",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M128 192v640h768V320H485.76L357.504 192zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32"
        })
      ]));
    }
  }), folder_default = _sfc_main113;
  var _sfc_main114 = /* @__PURE__ */ defineComponent({
    name: "Food",
    __name: "food",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M128 352.576V352a288 288 0 0 1 491.072-204.224 192 192 0 0 1 274.24 204.48 64 64 0 0 1 57.216 74.24C921.6 600.512 850.048 710.656 736 756.992V800a96 96 0 0 1-96 96H384a96 96 0 0 1-96-96v-43.008c-114.048-46.336-185.6-156.48-214.528-330.496A64 64 0 0 1 128 352.64zm64-.576h64a160 160 0 0 1 320 0h64a224 224 0 0 0-448 0m128 0h192a96 96 0 0 0-192 0m439.424 0h68.544A128.256 128.256 0 0 0 704 192c-15.36 0-29.952 2.688-43.52 7.616 11.328 18.176 20.672 37.76 27.84 58.304A64.128 64.128 0 0 1 759.424 352M672 768H352v32a32 32 0 0 0 32 32h256a32 32 0 0 0 32-32zm-342.528-64h365.056c101.504-32.64 165.76-124.928 192.896-288H136.576c27.136 163.072 91.392 255.36 192.896 288"
        })
      ]));
    }
  }), food_default = _sfc_main114;
  var _sfc_main115 = /* @__PURE__ */ defineComponent({
    name: "Football",
    __name: "football",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 960a448 448 0 1 1 0-896 448 448 0 0 1 0 896m0-64a384 384 0 1 0 0-768 384 384 0 0 0 0 768"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M186.816 268.288c16-16.384 31.616-31.744 46.976-46.08 17.472 30.656 39.808 58.112 65.984 81.28l-32.512 56.448a386 386 0 0 1-80.448-91.648m653.696-5.312a385.9 385.9 0 0 1-83.776 96.96l-32.512-56.384a322.9 322.9 0 0 0 68.48-85.76c15.552 14.08 31.488 29.12 47.808 45.184M465.984 445.248l11.136-63.104a323.6 323.6 0 0 0 69.76 0l11.136 63.104a388 388 0 0 1-92.032 0m-62.72-12.8A381.8 381.8 0 0 1 320 396.544l32-55.424a320 320 0 0 0 62.464 27.712l-11.2 63.488zm300.8-35.84a381.8 381.8 0 0 1-83.328 35.84l-11.2-63.552A320 320 0 0 0 672 341.184l32 55.424zm-520.768 364.8a385.9 385.9 0 0 1 83.968-97.28l32.512 56.32c-26.88 23.936-49.856 52.352-67.52 84.032-16-13.44-32.32-27.712-48.96-43.072m657.536.128a1443 1443 0 0 1-49.024 43.072 321.4 321.4 0 0 0-67.584-84.16l32.512-56.32c33.216 27.456 61.696 60.352 84.096 97.408M465.92 578.752a388 388 0 0 1 92.032 0l-11.136 63.104a323.6 323.6 0 0 0-69.76 0zm-62.72 12.8 11.2 63.552a320 320 0 0 0-62.464 27.712L320 627.392a381.8 381.8 0 0 1 83.264-35.84zm300.8 35.84-32 55.424a318.3 318.3 0 0 0-62.528-27.712l11.2-63.488c29.44 8.64 57.28 20.736 83.264 35.776z"
        })
      ]));
    }
  }), football_default = _sfc_main115;
  var _sfc_main116 = /* @__PURE__ */ defineComponent({
    name: "ForkSpoon",
    __name: "fork-spoon",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M256 410.304V96a32 32 0 0 1 64 0v314.304a96 96 0 0 0 64-90.56V96a32 32 0 0 1 64 0v223.744a160 160 0 0 1-128 156.8V928a32 32 0 1 1-64 0V476.544a160 160 0 0 1-128-156.8V96a32 32 0 0 1 64 0v223.744a96 96 0 0 0 64 90.56M672 572.48C581.184 552.128 512 446.848 512 320c0-141.44 85.952-256 192-256s192 114.56 192 256c0 126.848-69.184 232.128-160 252.48V928a32 32 0 1 1-64 0zM704 512c66.048 0 128-82.56 128-192s-61.952-192-128-192-128 82.56-128 192 61.952 192 128 192"
        })
      ]));
    }
  }), fork_spoon_default = _sfc_main116;
  var _sfc_main117 = /* @__PURE__ */ defineComponent({
    name: "Fries",
    __name: "fries",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M608 224v-64a32 32 0 0 0-64 0v336h26.88A64 64 0 0 0 608 484.096zm101.12 160A64 64 0 0 0 672 395.904V384h64V224a32 32 0 1 0-64 0v160zm74.88 0a92.928 92.928 0 0 1 91.328 110.08l-60.672 323.584A96 96 0 0 1 720.32 896H303.68a96 96 0 0 1-94.336-78.336L148.672 494.08A92.928 92.928 0 0 1 240 384h-16V224a96 96 0 0 1 188.608-25.28A95.74 95.74 0 0 1 480 197.44V160a96 96 0 0 1 188.608-25.28A96 96 0 0 1 800 224v160zM670.784 512a128 128 0 0 1-99.904 48H453.12a128 128 0 0 1-99.84-48H352v-1.536a128 128 0 0 1-9.984-14.976L314.88 448H240a28.928 28.928 0 0 0-28.48 34.304L241.088 640h541.824l29.568-157.696A28.928 28.928 0 0 0 784 448h-74.88l-27.136 47.488A132 132 0 0 1 672 510.464V512zM480 288a32 32 0 0 0-64 0v196.096A64 64 0 0 0 453.12 496H480zm-128 96V224a32 32 0 0 0-64 0v160zh-37.12A64 64 0 0 1 352 395.904zm-98.88 320 19.072 101.888A32 32 0 0 0 303.68 832h416.64a32 32 0 0 0 31.488-26.112L770.88 704z"
        })
      ]));
    }
  }), fries_default = _sfc_main117;
  var _sfc_main118 = /* @__PURE__ */ defineComponent({
    name: "FullScreen",
    __name: "full-screen",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m160 96.064 192 .192a32 32 0 0 1 0 64l-192-.192V352a32 32 0 0 1-64 0V96h64zm0 831.872V928H96V672a32 32 0 1 1 64 0v191.936l192-.192a32 32 0 1 1 0 64zM864 96.064V96h64v256a32 32 0 1 1-64 0V160.064l-192 .192a32 32 0 1 1 0-64zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64z"
        })
      ]));
    }
  }), full_screen_default = _sfc_main118;
  var _sfc_main119 = /* @__PURE__ */ defineComponent({
    name: "GobletFull",
    __name: "goblet-full",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M256 320h512c0-78.592-12.608-142.4-36.928-192h-434.24C269.504 192.384 256 256.256 256 320m503.936 64H264.064a256.128 256.128 0 0 0 495.872 0M544 638.4V896h96a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64h96V638.4A320 320 0 0 1 192 320c0-85.632 21.312-170.944 64-256h512c42.688 64.32 64 149.632 64 256a320 320 0 0 1-288 318.4"
        })
      ]));
    }
  }), goblet_full_default = _sfc_main119;
  var _sfc_main120 = /* @__PURE__ */ defineComponent({
    name: "GobletSquareFull",
    __name: "goblet-square-full",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M256 270.912c10.048 6.72 22.464 14.912 28.992 18.624a220.16 220.16 0 0 0 114.752 30.72c30.592 0 49.408-9.472 91.072-41.152l.64-.448c52.928-40.32 82.368-55.04 132.288-54.656 55.552.448 99.584 20.8 142.72 57.408l1.536 1.28V128H256zm.96 76.288C266.368 482.176 346.88 575.872 512 576c157.44.064 237.952-85.056 253.248-209.984a952 952 0 0 1-40.192-35.712c-32.704-27.776-63.36-41.92-101.888-42.24-31.552-.256-50.624 9.28-93.12 41.6l-.576.448c-52.096 39.616-81.024 54.208-129.792 54.208-54.784 0-100.48-13.376-142.784-37.056zM480 638.848C250.624 623.424 192 442.496 192 319.68V96a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32v224c0 122.816-58.624 303.68-288 318.912V896h96a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64h96z"
        })
      ]));
    }
  }), goblet_square_full_default = _sfc_main120;
  var _sfc_main121 = /* @__PURE__ */ defineComponent({
    name: "GobletSquare",
    __name: "goblet-square",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M544 638.912V896h96a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64h96V638.848C250.624 623.424 192 442.496 192 319.68V96a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32v224c0 122.816-58.624 303.68-288 318.912M256 319.68c0 149.568 80 256.192 256 256.256C688.128 576 768 469.568 768 320V128H256z"
        })
      ]));
    }
  }), goblet_square_default = _sfc_main121;
  var _sfc_main122 = /* @__PURE__ */ defineComponent({
    name: "Goblet",
    __name: "goblet",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M544 638.4V896h96a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64h96V638.4A320 320 0 0 1 192 320c0-85.632 21.312-170.944 64-256h512c42.688 64.32 64 149.632 64 256a320 320 0 0 1-288 318.4M256 320a256 256 0 1 0 512 0c0-78.592-12.608-142.4-36.928-192h-434.24C269.504 192.384 256 256.256 256 320"
        })
      ]));
    }
  }), goblet_default = _sfc_main122;
  var _sfc_main123 = /* @__PURE__ */ defineComponent({
    name: "GoldMedal",
    __name: "gold-medal",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        "xml:space": "preserve",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m772.13 452.84 53.86-351.81c1.32-10.01-1.17-18.68-7.49-26.02S804.35 64 795.01 64H228.99v-.01h-.06c-9.33 0-17.15 3.67-23.49 11.01s-8.83 16.01-7.49 26.02l53.87 351.89C213.54 505.73 193.59 568.09 192 640c2 90.67 33.17 166.17 93.5 226.5S421.33 957.99 512 960c90.67-2 166.17-33.17 226.5-93.5 60.33-60.34 91.49-135.83 93.5-226.5-1.59-71.94-21.56-134.32-59.87-187.16M640.01 128h117.02l-39.01 254.02c-20.75-10.64-40.74-19.73-59.94-27.28-5.92-3-11.95-5.8-18.08-8.41V128zM576 128v198.76c-13.18-2.58-26.74-4.43-40.67-5.55-8.07-.8-15.85-1.2-23.33-1.2-10.54 0-21.09.66-31.64 1.96a360 360 0 0 0-32.36 4.79V128zm-192 0h.04v218.3c-6.22 2.66-12.34 5.5-18.36 8.56-19.13 7.54-39.02 16.6-59.66 27.16L267.01 128zm308.99 692.99c-48 48-108.33 73-180.99 75.01-72.66-2.01-132.99-27.01-180.99-75.01S258.01 712.66 256 640c2.01-72.66 27.01-132.99 75.01-180.99 19.67-19.67 41.41-35.47 65.22-47.41 38.33-15.04 71.15-23.92 98.44-26.65 5.07-.41 10.2-.7 15.39-.88.63-.01 1.28-.03 1.91-.03.66 0 1.35.03 2.02.04 5.11.17 10.15.46 15.13.86 27.4 2.71 60.37 11.65 98.91 26.79 23.71 11.93 45.36 27.69 64.96 47.29 48 48 73 108.33 75.01 180.99-2.01 72.65-27.01 132.98-75.01 180.98"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M544 480H416v64h64v192h-64v64h192v-64h-64z"
        })
      ]));
    }
  }), gold_medal_default = _sfc_main123;
  var _sfc_main124 = /* @__PURE__ */ defineComponent({
    name: "GoodsFilled",
    __name: "goods-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M192 352h640l64 544H128zm128 224h64V448h-64zm320 0h64V448h-64zM384 288h-64a192 192 0 1 1 384 0h-64a128 128 0 1 0-256 0"
        })
      ]));
    }
  }), goods_filled_default = _sfc_main124;
  var _sfc_main125 = /* @__PURE__ */ defineComponent({
    name: "Goods",
    __name: "goods",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M320 288v-22.336C320 154.688 405.504 64 512 64s192 90.688 192 201.664v22.4h131.072a32 32 0 0 1 31.808 28.8l57.6 576a32 32 0 0 1-31.808 35.2H131.328a32 32 0 0 1-31.808-35.2l57.6-576a32 32 0 0 1 31.808-28.8H320zm64 0h256v-22.336C640 189.248 582.272 128 512 128s-128 61.248-128 137.664v22.4zm-64 64H217.92l-51.2 512h690.56l-51.264-512H704v96a32 32 0 1 1-64 0v-96H384v96a32 32 0 0 1-64 0z"
        })
      ]));
    }
  }), goods_default = _sfc_main125;
  var _sfc_main126 = /* @__PURE__ */ defineComponent({
    name: "Grape",
    __name: "grape",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M544 195.2a160 160 0 0 1 96 60.8 160 160 0 1 1 146.24 254.976 160 160 0 0 1-128 224 160 160 0 1 1-292.48 0 160 160 0 0 1-128-224A160 160 0 1 1 384 256a160 160 0 0 1 96-60.8V128h-64a32 32 0 0 1 0-64h192a32 32 0 0 1 0 64h-64zM512 448a96 96 0 1 0 0-192 96 96 0 0 0 0 192m-256 0a96 96 0 1 0 0-192 96 96 0 0 0 0 192m128 224a96 96 0 1 0 0-192 96 96 0 0 0 0 192m128 224a96 96 0 1 0 0-192 96 96 0 0 0 0 192m128-224a96 96 0 1 0 0-192 96 96 0 0 0 0 192m128-224a96 96 0 1 0 0-192 96 96 0 0 0 0 192"
        })
      ]));
    }
  }), grape_default = _sfc_main126;
  var _sfc_main127 = /* @__PURE__ */ defineComponent({
    name: "Grid",
    __name: "grid",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M640 384v256H384V384zm64 0h192v256H704zm-64 512H384V704h256zm64 0V704h192v192zm-64-768v192H384V128zm64 0h192v192H704zM320 384v256H128V384zm0 512H128V704h192zm0-768v192H128V128z"
        })
      ]));
    }
  }), grid_default = _sfc_main127;
  var _sfc_main128 = /* @__PURE__ */ defineComponent({
    name: "Guide",
    __name: "guide",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M640 608h-64V416h64zm0 160v160a32 32 0 0 1-32 32H416a32 32 0 0 1-32-32V768h64v128h128V768zM384 608V416h64v192zm256-352h-64V128H448v128h-64V96a32 32 0 0 1 32-32h192a32 32 0 0 1 32 32z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m220.8 256-71.232 80 71.168 80H768V256zm-14.4-64H800a32 32 0 0 1 32 32v224a32 32 0 0 1-32 32H206.4a32 32 0 0 1-23.936-10.752l-99.584-112a32 32 0 0 1 0-42.496l99.584-112A32 32 0 0 1 206.4 192m678.784 496-71.104 80H266.816V608h547.2zm-56.768-144H234.88a32 32 0 0 0-32 32v224a32 32 0 0 0 32 32h593.6a32 32 0 0 0 23.936-10.752l99.584-112a32 32 0 0 0 0-42.496l-99.584-112A32 32 0 0 0 828.48 544z"
        })
      ]));
    }
  }), guide_default = _sfc_main128;
  var _sfc_main129 = /* @__PURE__ */ defineComponent({
    name: "Handbag",
    __name: "handbag",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        "xml:space": "preserve",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M887.01 264.99c-6-5.99-13.67-8.99-23.01-8.99H704c-1.34-54.68-20.01-100.01-56-136s-81.32-54.66-136-56c-54.68 1.34-100.01 20.01-136 56s-54.66 81.32-56 136H160c-9.35 0-17.02 3-23.01 8.99-5.99 6-8.99 13.67-8.99 23.01v640c0 9.35 2.99 17.02 8.99 23.01S150.66 960 160 960h704c9.35 0 17.02-2.99 23.01-8.99S896 937.34 896 928V288c0-9.35-2.99-17.02-8.99-23.01M421.5 165.5c24.32-24.34 54.49-36.84 90.5-37.5 35.99.68 66.16 13.18 90.5 37.5s36.84 54.49 37.5 90.5H384c.68-35.99 13.18-66.16 37.5-90.5M832 896H192V320h128v128h64V320h256v128h64V320h128z"
        })
      ]));
    }
  }), handbag_default = _sfc_main129;
  var _sfc_main130 = /* @__PURE__ */ defineComponent({
    name: "Headset",
    __name: "headset",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M896 529.152V512a384 384 0 1 0-768 0v17.152A128 128 0 0 1 320 640v128a128 128 0 1 1-256 0V512a448 448 0 1 1 896 0v256a128 128 0 1 1-256 0V640a128 128 0 0 1 192-110.848M896 640a64 64 0 0 0-128 0v128a64 64 0 0 0 128 0zm-768 0v128a64 64 0 0 0 128 0V640a64 64 0 1 0-128 0"
        })
      ]));
    }
  }), headset_default = _sfc_main130;
  var _sfc_main131 = /* @__PURE__ */ defineComponent({
    name: "HelpFilled",
    __name: "help-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M926.784 480H701.312A192.51 192.51 0 0 0 544 322.688V97.216A416.064 416.064 0 0 1 926.784 480m0 64A416.064 416.064 0 0 1 544 926.784V701.312A192.51 192.51 0 0 0 701.312 544zM97.28 544h225.472A192.51 192.51 0 0 0 480 701.312v225.472A416.064 416.064 0 0 1 97.216 544zm0-64A416.064 416.064 0 0 1 480 97.216v225.472A192.51 192.51 0 0 0 322.688 480H97.216z"
        })
      ]));
    }
  }), help_filled_default = _sfc_main131;
  var _sfc_main132 = /* @__PURE__ */ defineComponent({
    name: "Help",
    __name: "help",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m759.936 805.248-90.944-91.008A254.9 254.9 0 0 1 512 768a254.9 254.9 0 0 1-156.992-53.76l-90.944 91.008A382.46 382.46 0 0 0 512 896c94.528 0 181.12-34.176 247.936-90.752m45.312-45.312A382.46 382.46 0 0 0 896 512c0-94.528-34.176-181.12-90.752-247.936l-91.008 90.944C747.904 398.4 768 452.864 768 512s-20.096 113.6-53.76 156.992zm-45.312-541.184A382.46 382.46 0 0 0 512 128c-94.528 0-181.12 34.176-247.936 90.752l90.944 91.008A254.9 254.9 0 0 1 512 256c59.136 0 113.6 20.096 156.992 53.76zm-541.184 45.312A382.46 382.46 0 0 0 128 512c0 94.528 34.176 181.12 90.752 247.936l91.008-90.944A254.9 254.9 0 0 1 256 512c0-59.136 20.096-113.6 53.76-156.992zm417.28 394.496a194.6 194.6 0 0 0 22.528-22.528C686.912 602.56 704 559.232 704 512a191.23 191.23 0 0 0-67.968-146.56A191.3 191.3 0 0 0 512 320a191.23 191.23 0 0 0-146.56 67.968C337.088 421.44 320 464.768 320 512a191.23 191.23 0 0 0 67.968 146.56C421.44 686.912 464.768 704 512 704c47.296 0 90.56-17.088 124.032-45.44M512 960a448 448 0 1 1 0-896 448 448 0 0 1 0 896"
        })
      ]));
    }
  }), help_default = _sfc_main132;
  var _sfc_main133 = /* @__PURE__ */ defineComponent({
    name: "Hide",
    __name: "hide",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M876.8 156.8c0-9.6-3.2-16-9.6-22.4s-12.8-9.6-22.4-9.6-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176S0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4s3.2 16 9.6 22.4 12.8 9.6 22.4 9.6 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4m-646.4 528Q115.2 579.2 76.8 512q43.2-72 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4m140.8-96Q352 555.2 352 512c0-44.8 16-83.2 48-112s67.2-48 112-48c28.8 0 54.4 6.4 73.6 19.2zM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6q-43.2 72-153.6 172.8c-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176S1024 528 1024 512s-48.001-73.6-134.401-176"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112s-67.2 48-112 48"
        })
      ]));
    }
  }), hide_default = _sfc_main133;
  var _sfc_main134 = /* @__PURE__ */ defineComponent({
    name: "Histogram",
    __name: "histogram",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M416 896V128h192v768zm-288 0V448h192v448zm576 0V320h192v576z"
        })
      ]));
    }
  }), histogram_default = _sfc_main134;
  var _sfc_main135 = /* @__PURE__ */ defineComponent({
    name: "HomeFilled",
    __name: "home-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 128 128 447.936V896h255.936V640H640v256h255.936V447.936z"
        })
      ]));
    }
  }), home_filled_default = _sfc_main135;
  var _sfc_main136 = /* @__PURE__ */ defineComponent({
    name: "HotWater",
    __name: "hot-water",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M273.067 477.867h477.866V409.6H273.067zm0 68.266v51.2A187.733 187.733 0 0 0 460.8 785.067h102.4a187.733 187.733 0 0 0 187.733-187.734v-51.2zm-34.134-204.8h546.134a34.133 34.133 0 0 1 34.133 34.134v221.866a256 256 0 0 1-256 256H460.8a256 256 0 0 1-256-256V375.467a34.133 34.133 0 0 1 34.133-34.134M512 34.133a34.133 34.133 0 0 1 34.133 34.134v170.666a34.133 34.133 0 0 1-68.266 0V68.267A34.133 34.133 0 0 1 512 34.133M375.467 102.4a34.133 34.133 0 0 1 34.133 34.133v102.4a34.133 34.133 0 0 1-68.267 0v-102.4a34.133 34.133 0 0 1 34.134-34.133m273.066 0a34.133 34.133 0 0 1 34.134 34.133v102.4a34.133 34.133 0 1 1-68.267 0v-102.4a34.133 34.133 0 0 1 34.133-34.133M170.667 921.668h682.666a34.133 34.133 0 1 1 0 68.267H170.667a34.133 34.133 0 1 1 0-68.267"
        })
      ]));
    }
  }), hot_water_default = _sfc_main136;
  var _sfc_main137 = /* @__PURE__ */ defineComponent({
    name: "House",
    __name: "house",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M192 413.952V896h640V413.952L512 147.328zM139.52 374.4l352-293.312a32 32 0 0 1 40.96 0l352 293.312A32 32 0 0 1 896 398.976V928a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V398.976a32 32 0 0 1 11.52-24.576"
        })
      ]));
    }
  }), house_default = _sfc_main137;
  var _sfc_main138 = /* @__PURE__ */ defineComponent({
    name: "IceCreamRound",
    __name: "ice-cream-round",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m308.352 489.344 226.304 226.304a32 32 0 0 0 45.248 0L783.552 512A192 192 0 1 0 512 240.448L308.352 444.16a32 32 0 0 0 0 45.248zm135.744 226.304L308.352 851.392a96 96 0 0 1-135.744-135.744l135.744-135.744-45.248-45.248a96 96 0 0 1 0-135.808L466.752 195.2A256 256 0 0 1 828.8 557.248L625.152 760.96a96 96 0 0 1-135.808 0l-45.248-45.248zM398.848 670.4 353.6 625.152 217.856 760.896a32 32 0 0 0 45.248 45.248zm248.96-384.64a32 32 0 0 1 0 45.248L466.624 512a32 32 0 1 1-45.184-45.248l180.992-181.056a32 32 0 0 1 45.248 0zm90.496 90.496a32 32 0 0 1 0 45.248L557.248 602.496A32 32 0 1 1 512 557.248l180.992-180.992a32 32 0 0 1 45.312 0"
        })
      ]));
    }
  }), ice_cream_round_default = _sfc_main138;
  var _sfc_main139 = /* @__PURE__ */ defineComponent({
    name: "IceCreamSquare",
    __name: "ice-cream-square",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M416 640h256a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32H352a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32zm192 64v160a96 96 0 0 1-192 0V704h-64a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96h320a96 96 0 0 1 96 96v448a96 96 0 0 1-96 96zm-64 0h-64v160a32 32 0 1 0 64 0z"
        })
      ]));
    }
  }), ice_cream_square_default = _sfc_main139;
  var _sfc_main140 = /* @__PURE__ */ defineComponent({
    name: "IceCream",
    __name: "ice-cream",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M128.64 448a208 208 0 0 1 193.536-191.552 224 224 0 0 1 445.248 15.488A208.13 208.13 0 0 1 894.784 448H896L548.8 983.68a32 32 0 0 1-53.248.704L128 448zm64.256 0h286.208a144 144 0 0 0-286.208 0m351.36 0h286.272a144 144 0 0 0-286.272 0m-294.848 64 271.808 396.608L778.24 512zM511.68 352.64a207.87 207.87 0 0 1 189.184-96.192 160 160 0 0 0-314.752 5.632c52.608 12.992 97.28 46.08 125.568 90.56"
        })
      ]));
    }
  }), ice_cream_default = _sfc_main140;
  var _sfc_main141 = /* @__PURE__ */ defineComponent({
    name: "IceDrink",
    __name: "ice-drink",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 448v128h239.68l16.064-128zm-64 0H256.256l16.064 128H448zm64-255.36V384h247.744A256.13 256.13 0 0 0 512 192.64m-64 8.064A256.45 256.45 0 0 0 264.256 384H448zm64-72.064A320.13 320.13 0 0 1 825.472 384H896a32 32 0 1 1 0 64h-64v1.92l-56.96 454.016A64 64 0 0 1 711.552 960H312.448a64 64 0 0 1-63.488-56.064L192 449.92V448h-64a32 32 0 0 1 0-64h70.528A320.38 320.38 0 0 1 448 135.04V96a96 96 0 0 1 96-96h128a32 32 0 1 1 0 64H544a32 32 0 0 0-32 32zM743.68 640H280.32l32.128 256h399.104z"
        })
      ]));
    }
  }), ice_drink_default = _sfc_main141;
  var _sfc_main142 = /* @__PURE__ */ defineComponent({
    name: "IceTea",
    __name: "ice-tea",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M197.696 259.648a320.128 320.128 0 0 1 628.608 0A96 96 0 0 1 896 352v64a96 96 0 0 1-71.616 92.864l-49.408 395.072A64 64 0 0 1 711.488 960H312.512a64 64 0 0 1-63.488-56.064l-49.408-395.072A96 96 0 0 1 128 416v-64a96 96 0 0 1 69.696-92.352M264.064 256h495.872a256.128 256.128 0 0 0-495.872 0m495.424 256H264.512l48 384h398.976zM224 448h576a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32H224a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32m160 192h64v64h-64zm192 64h64v64h-64zm-128 64h64v64h-64zm64-192h64v64h-64z"
        })
      ]));
    }
  }), ice_tea_default = _sfc_main142;
  var _sfc_main143 = /* @__PURE__ */ defineComponent({
    name: "InfoFilled",
    __name: "info-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.99 12.99 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"
        })
      ]));
    }
  }), info_filled_default = _sfc_main143;
  var _sfc_main144 = /* @__PURE__ */ defineComponent({
    name: "Iphone",
    __name: "iphone",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M224 768v96.064a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V768zm0-64h576V160a64 64 0 0 0-64-64H288a64 64 0 0 0-64 64zm32 288a96 96 0 0 1-96-96V128a96 96 0 0 1 96-96h512a96 96 0 0 1 96 96v768a96 96 0 0 1-96 96zm304-144a48 48 0 1 1-96 0 48 48 0 0 1 96 0"
        })
      ]));
    }
  }), iphone_default = _sfc_main144;
  var _sfc_main145 = /* @__PURE__ */ defineComponent({
    name: "Key",
    __name: "key",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M448 456.064V96a32 32 0 0 1 32-32.064L672 64a32 32 0 0 1 0 64H512v128h160a32 32 0 0 1 0 64H512v128a256 256 0 1 1-64 8.064M512 896a192 192 0 1 0 0-384 192 192 0 0 0 0 384"
        })
      ]));
    }
  }), key_default = _sfc_main145;
  var _sfc_main146 = /* @__PURE__ */ defineComponent({
    name: "KnifeFork",
    __name: "knife-fork",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M256 410.56V96a32 32 0 0 1 64 0v314.56A96 96 0 0 0 384 320V96a32 32 0 0 1 64 0v224a160 160 0 0 1-128 156.8V928a32 32 0 1 1-64 0V476.8A160 160 0 0 1 128 320V96a32 32 0 0 1 64 0v224a96 96 0 0 0 64 90.56m384-250.24V544h126.72c-3.328-78.72-12.928-147.968-28.608-207.744-14.336-54.528-46.848-113.344-98.112-175.872zM640 608v320a32 32 0 1 1-64 0V64h64c85.312 89.472 138.688 174.848 160 256s32 177.152 32 288z"
        })
      ]));
    }
  }), knife_fork_default = _sfc_main146;
  var _sfc_main147 = /* @__PURE__ */ defineComponent({
    name: "Lightning",
    __name: "lightning",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M288 671.36v64.128A239.81 239.81 0 0 1 63.744 496.192a240.32 240.32 0 0 1 199.488-236.8 256.128 256.128 0 0 1 487.872-30.976A256.064 256.064 0 0 1 736 734.016v-64.768a192 192 0 0 0 3.328-377.92l-35.2-6.592-12.8-33.408a192.064 192.064 0 0 0-365.952 23.232l-9.92 40.896-41.472 7.04a176.32 176.32 0 0 0-146.24 173.568c0 91.968 70.464 167.36 160.256 175.232z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M416 736a32 32 0 0 1-27.776-47.872l128-224a32 32 0 1 1 55.552 31.744L471.168 672H608a32 32 0 0 1 27.776 47.872l-128 224a32 32 0 1 1-55.68-31.744L552.96 736z"
        })
      ]));
    }
  }), lightning_default = _sfc_main147;
  var _sfc_main148 = /* @__PURE__ */ defineComponent({
    name: "Link",
    __name: "link",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M715.648 625.152 670.4 579.904l90.496-90.56c75.008-74.944 85.12-186.368 22.656-248.896-62.528-62.464-173.952-52.352-248.96 22.656L444.16 353.6l-45.248-45.248 90.496-90.496c100.032-99.968 251.968-110.08 339.456-22.656 87.488 87.488 77.312 239.424-22.656 339.456l-90.496 90.496zm-90.496 90.496-90.496 90.496C434.624 906.112 282.688 916.224 195.2 828.8c-87.488-87.488-77.312-239.424 22.656-339.456l90.496-90.496 45.248 45.248-90.496 90.56c-75.008 74.944-85.12 186.368-22.656 248.896 62.528 62.464 173.952 52.352 248.96-22.656l90.496-90.496zm0-362.048 45.248 45.248L398.848 670.4 353.6 625.152z"
        })
      ]));
    }
  }), link_default = _sfc_main148;
  var _sfc_main149 = /* @__PURE__ */ defineComponent({
    name: "List",
    __name: "list",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M704 192h160v736H160V192h160v64h384zM288 512h448v-64H288zm0 256h448v-64H288zm96-576V96h256v96z"
        })
      ]));
    }
  }), list_default = _sfc_main149;
  var _sfc_main150 = /* @__PURE__ */ defineComponent({
    name: "Loading",
    __name: "loading",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32m448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32m-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32M195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248m452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248M828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0m-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0"
        })
      ]));
    }
  }), loading_default = _sfc_main150;
  var _sfc_main151 = /* @__PURE__ */ defineComponent({
    name: "LocationFilled",
    __name: "location-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 928c23.936 0 117.504-68.352 192.064-153.152C803.456 661.888 864 535.808 864 416c0-189.632-155.84-320-352-320S160 226.368 160 416c0 120.32 60.544 246.4 159.936 359.232C394.432 859.84 488 928 512 928m0-435.2a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 140.8a204.8 204.8 0 1 1 0-409.6 204.8 204.8 0 0 1 0 409.6"
        })
      ]));
    }
  }), location_filled_default = _sfc_main151;
  var _sfc_main152 = /* @__PURE__ */ defineComponent({
    name: "LocationInformation",
    __name: "location-information",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M288 896h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416M512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 512a96 96 0 1 0 0-192 96 96 0 0 0 0 192m0 64a160 160 0 1 1 0-320 160 160 0 0 1 0 320"
        })
      ]));
    }
  }), location_information_default = _sfc_main152;
  var _sfc_main153 = /* @__PURE__ */ defineComponent({
    name: "Location",
    __name: "location",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416M512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 512a96 96 0 1 0 0-192 96 96 0 0 0 0 192m0 64a160 160 0 1 1 0-320 160 160 0 0 1 0 320"
        })
      ]));
    }
  }), location_default = _sfc_main153;
  var _sfc_main154 = /* @__PURE__ */ defineComponent({
    name: "Lock",
    __name: "lock",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M224 448a32 32 0 0 0-32 32v384a32 32 0 0 0 32 32h576a32 32 0 0 0 32-32V480a32 32 0 0 0-32-32zm0-64h576a96 96 0 0 1 96 96v384a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96V480a96 96 0 0 1 96-96"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 544a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V576a32 32 0 0 1 32-32m192-160v-64a192 192 0 1 0-384 0v64zM512 64a256 256 0 0 1 256 256v128H256V320A256 256 0 0 1 512 64"
        })
      ]));
    }
  }), lock_default = _sfc_main154;
  var _sfc_main155 = /* @__PURE__ */ defineComponent({
    name: "Lollipop",
    __name: "lollipop",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M513.28 448a64 64 0 1 1 76.544 49.728A96 96 0 0 0 768 448h64a160 160 0 0 1-320 0zm-126.976-29.696a256 256 0 1 0 43.52-180.48A256 256 0 0 1 832 448h-64a192 192 0 0 0-381.696-29.696m105.664 249.472L285.696 874.048a96 96 0 0 1-135.68-135.744l206.208-206.272a320 320 0 1 1 135.744 135.744m-54.464-36.032a322 322 0 0 1-45.248-45.248L195.2 783.552a32 32 0 1 0 45.248 45.248l197.056-197.12z"
        })
      ]));
    }
  }), lollipop_default = _sfc_main155;
  var _sfc_main156 = /* @__PURE__ */ defineComponent({
    name: "MagicStick",
    __name: "magic-stick",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 64h64v192h-64zm0 576h64v192h-64zM160 480v-64h192v64zm576 0v-64h192v64zM249.856 199.04l45.248-45.184L430.848 289.6 385.6 334.848 249.856 199.104zM657.152 606.4l45.248-45.248 135.744 135.744-45.248 45.248zM114.048 923.2 68.8 877.952l316.8-316.8 45.248 45.248zM702.4 334.848 657.152 289.6l135.744-135.744 45.248 45.248z"
        })
      ]));
    }
  }), magic_stick_default = _sfc_main156;
  var _sfc_main157 = /* @__PURE__ */ defineComponent({
    name: "Magnet",
    __name: "magnet",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M832 320V192H704v320a192 192 0 1 1-384 0V192H192v128h128v64H192v128a320 320 0 0 0 640 0V384H704v-64zM640 512V128h256v384a384 384 0 1 1-768 0V128h256v384a128 128 0 1 0 256 0"
        })
      ]));
    }
  }), magnet_default = _sfc_main157;
  var _sfc_main158 = /* @__PURE__ */ defineComponent({
    name: "Male",
    __name: "male",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M399.5 849.5a225 225 0 1 0 0-450 225 225 0 0 0 0 450m0 56.25a281.25 281.25 0 1 1 0-562.5 281.25 281.25 0 0 1 0 562.5m253.125-787.5h225q28.125 0 28.125 28.125T877.625 174.5h-225q-28.125 0-28.125-28.125t28.125-28.125"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M877.625 118.25q28.125 0 28.125 28.125v225q0 28.125-28.125 28.125T849.5 371.375v-225q0-28.125 28.125-28.125"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M604.813 458.9 565.1 419.131l292.613-292.668 39.825 39.824z"
        })
      ]));
    }
  }), male_default = _sfc_main158;
  var _sfc_main159 = /* @__PURE__ */ defineComponent({
    name: "Management",
    __name: "management",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M576 128v288l96-96 96 96V128h128v768H320V128zm-448 0h128v768H128z"
        })
      ]));
    }
  }), management_default = _sfc_main159;
  var _sfc_main160 = /* @__PURE__ */ defineComponent({
    name: "MapLocation",
    __name: "map-location",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416M512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 448a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256m345.6 192L960 960H672v-64H352v64H64l102.4-256zm-68.928 0H235.328l-76.8 192h706.944z"
        })
      ]));
    }
  }), map_location_default = _sfc_main160;
  var _sfc_main161 = /* @__PURE__ */ defineComponent({
    name: "Medal",
    __name: "medal",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 896a256 256 0 1 0 0-512 256 256 0 0 0 0 512m0 64a320 320 0 1 1 0-640 320 320 0 0 1 0 640"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M576 128H448v200a286.7 286.7 0 0 1 64-8c19.52 0 40.832 2.688 64 8zm64 0v219.648c24.448 9.088 50.56 20.416 78.4 33.92L757.44 128zm-256 0H266.624l39.04 253.568c27.84-13.504 53.888-24.832 78.336-33.92zM229.312 64h565.376a32 32 0 0 1 31.616 36.864L768 480c-113.792-64-199.104-96-256-96s-142.208 32-256 96l-58.304-379.136A32 32 0 0 1 229.312 64"
        })
      ]));
    }
  }), medal_default = _sfc_main161;
  var _sfc_main162 = /* @__PURE__ */ defineComponent({
    name: "Memo",
    __name: "memo",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        "xml:space": "preserve",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M480 320h192c21.33 0 32-10.67 32-32s-10.67-32-32-32H480c-21.33 0-32 10.67-32 32s10.67 32 32 32"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M887.01 72.99C881.01 67 873.34 64 864 64H160c-9.35 0-17.02 3-23.01 8.99C131 78.99 128 86.66 128 96v832c0 9.35 2.99 17.02 8.99 23.01S150.66 960 160 960h704c9.35 0 17.02-2.99 23.01-8.99S896 937.34 896 928V96c0-9.35-3-17.02-8.99-23.01M192 896V128h96v768zm640 0H352V128h480z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M480 512h192c21.33 0 32-10.67 32-32s-10.67-32-32-32H480c-21.33 0-32 10.67-32 32s10.67 32 32 32m0 192h192c21.33 0 32-10.67 32-32s-10.67-32-32-32H480c-21.33 0-32 10.67-32 32s10.67 32 32 32"
        })
      ]));
    }
  }), memo_default = _sfc_main162;
  var _sfc_main163 = /* @__PURE__ */ defineComponent({
    name: "Menu",
    __name: "menu",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M160 448a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32zm448 0a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32zM160 896a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32zm448 0a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32z"
        })
      ]));
    }
  }), menu_default = _sfc_main163;
  var _sfc_main164 = /* @__PURE__ */ defineComponent({
    name: "MessageBox",
    __name: "message-box",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M288 384h448v64H288zm96-128h256v64H384zM131.456 512H384v128h256V512h252.544L721.856 192H302.144zM896 576H704v128H320V576H128v256h768zM275.776 128h472.448a32 32 0 0 1 28.608 17.664l179.84 359.552A32 32 0 0 1 960 519.552V864a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V519.552a32 32 0 0 1 3.392-14.336l179.776-359.552A32 32 0 0 1 275.776 128"
        })
      ]));
    }
  }), message_box_default = _sfc_main164;
  var _sfc_main165 = /* @__PURE__ */ defineComponent({
    name: "Message",
    __name: "message",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M128 224v512a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V224zm0-64h768a64 64 0 0 1 64 64v512a128 128 0 0 1-128 128H192A128 128 0 0 1 64 736V224a64 64 0 0 1 64-64"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M904 224 656.512 506.88a192 192 0 0 1-289.024 0L120 224zm-698.944 0 210.56 240.704a128 128 0 0 0 192.704 0L818.944 224z"
        })
      ]));
    }
  }), message_default = _sfc_main165;
  var _sfc_main166 = /* @__PURE__ */ defineComponent({
    name: "Mic",
    __name: "mic",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M480 704h160a64 64 0 0 0 64-64v-32h-96a32 32 0 0 1 0-64h96v-96h-96a32 32 0 0 1 0-64h96v-96h-96a32 32 0 0 1 0-64h96v-32a64 64 0 0 0-64-64H384a64 64 0 0 0-64 64v32h96a32 32 0 0 1 0 64h-96v96h96a32 32 0 0 1 0 64h-96v96h96a32 32 0 0 1 0 64h-96v32a64 64 0 0 0 64 64zm64 64v128h192a32 32 0 1 1 0 64H288a32 32 0 1 1 0-64h192V768h-96a128 128 0 0 1-128-128V192A128 128 0 0 1 384 64h256a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128z"
        })
      ]));
    }
  }), mic_default = _sfc_main166;
  var _sfc_main167 = /* @__PURE__ */ defineComponent({
    name: "Microphone",
    __name: "microphone",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 128a128 128 0 0 0-128 128v256a128 128 0 1 0 256 0V256a128 128 0 0 0-128-128m0-64a192 192 0 0 1 192 192v256a192 192 0 1 1-384 0V256A192 192 0 0 1 512 64m-32 832v-64a288 288 0 0 1-288-288v-32a32 32 0 0 1 64 0v32a224 224 0 0 0 224 224h64a224 224 0 0 0 224-224v-32a32 32 0 1 1 64 0v32a288 288 0 0 1-288 288v64h64a32 32 0 1 1 0 64H416a32 32 0 1 1 0-64z"
        })
      ]));
    }
  }), microphone_default = _sfc_main167;
  var _sfc_main168 = /* @__PURE__ */ defineComponent({
    name: "MilkTea",
    __name: "milk-tea",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M416 128V96a96 96 0 0 1 96-96h128a32 32 0 1 1 0 64H512a32 32 0 0 0-32 32v32h320a96 96 0 0 1 11.712 191.296l-39.68 581.056A64 64 0 0 1 708.224 960H315.776a64 64 0 0 1-63.872-59.648l-39.616-581.056A96 96 0 0 1 224 128zM276.48 320l39.296 576h392.448l4.8-70.784a224.064 224.064 0 0 1 30.016-439.808L747.52 320zM224 256h576a32 32 0 1 0 0-64H224a32 32 0 0 0 0 64m493.44 503.872 21.12-309.12a160 160 0 0 0-21.12 309.12"
        })
      ]));
    }
  }), milk_tea_default = _sfc_main168;
  var _sfc_main169 = /* @__PURE__ */ defineComponent({
    name: "Minus",
    __name: "minus",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64"
        })
      ]));
    }
  }), minus_default = _sfc_main169;
  var _sfc_main170 = /* @__PURE__ */ defineComponent({
    name: "Money",
    __name: "money",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M256 640v192h640V384H768v-64h150.976c14.272 0 19.456 1.472 24.64 4.288a29.06 29.06 0 0 1 12.16 12.096c2.752 5.184 4.224 10.368 4.224 24.64v493.952c0 14.272-1.472 19.456-4.288 24.64a29.06 29.06 0 0 1-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H233.024c-14.272 0-19.456-1.472-24.64-4.288a29.06 29.06 0 0 1-12.16-12.096c-2.688-5.184-4.224-10.368-4.224-24.576V640z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M768 192H128v448h640zm64-22.976v493.952c0 14.272-1.472 19.456-4.288 24.64a29.06 29.06 0 0 1-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H105.024c-14.272 0-19.456-1.472-24.64-4.288a29.06 29.06 0 0 1-12.16-12.096C65.536 682.432 64 677.248 64 663.04V169.024c0-14.272 1.472-19.456 4.288-24.64a29.06 29.06 0 0 1 12.096-12.16C85.568 129.536 90.752 128 104.96 128h685.952c14.272 0 19.456 1.472 24.64 4.288a29.06 29.06 0 0 1 12.16 12.096c2.752 5.184 4.224 10.368 4.224 24.64z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M448 576a160 160 0 1 1 0-320 160 160 0 0 1 0 320m0-64a96 96 0 1 0 0-192 96 96 0 0 0 0 192"
        })
      ]));
    }
  }), money_default = _sfc_main170;
  var _sfc_main171 = /* @__PURE__ */ defineComponent({
    name: "Monitor",
    __name: "monitor",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M544 768v128h192a32 32 0 1 1 0 64H288a32 32 0 1 1 0-64h192V768H192A128 128 0 0 1 64 640V256a128 128 0 0 1 128-128h640a128 128 0 0 1 128 128v384a128 128 0 0 1-128 128zM192 192a64 64 0 0 0-64 64v384a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V256a64 64 0 0 0-64-64z"
        })
      ]));
    }
  }), monitor_default = _sfc_main171;
  var _sfc_main172 = /* @__PURE__ */ defineComponent({
    name: "MoonNight",
    __name: "moon-night",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M384 512a448 448 0 0 1 215.872-383.296A384 384 0 0 0 213.76 640h188.8A448.3 448.3 0 0 1 384 512M171.136 704a448 448 0 0 1 636.992-575.296A384 384 0 0 0 499.328 704h-328.32z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M32 640h960q32 0 32 32t-32 32H32q-32 0-32-32t32-32m128 128h384a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m160 127.68 224 .256a32 32 0 0 1 32 32V928a32 32 0 0 1-32 32l-224-.384a32 32 0 0 1-32-32v-.064a32 32 0 0 1 32-32z"
        })
      ]));
    }
  }), moon_night_default = _sfc_main172;
  var _sfc_main173 = /* @__PURE__ */ defineComponent({
    name: "Moon",
    __name: "moon",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M240.448 240.448a384 384 0 1 0 559.424 525.696 448 448 0 0 1-542.016-542.08 391 391 0 0 0-17.408 16.384m181.056 362.048a384 384 0 0 0 525.632 16.384A448 448 0 1 1 405.056 76.8a384 384 0 0 0 16.448 525.696"
        })
      ]));
    }
  }), moon_default = _sfc_main173;
  var _sfc_main174 = /* @__PURE__ */ defineComponent({
    name: "MoreFilled",
    __name: "more-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M176 416a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224"
        })
      ]));
    }
  }), more_filled_default = _sfc_main174;
  var _sfc_main175 = /* @__PURE__ */ defineComponent({
    name: "More",
    __name: "more",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M176 416a112 112 0 1 0 0 224 112 112 0 0 0 0-224m0 64a48 48 0 1 1 0 96 48 48 0 0 1 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96"
        })
      ]));
    }
  }), more_default = _sfc_main175;
  var _sfc_main176 = /* @__PURE__ */ defineComponent({
    name: "MostlyCloudy",
    __name: "mostly-cloudy",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M737.216 357.952 704 349.824l-11.776-32a192.064 192.064 0 0 0-367.424 23.04l-8.96 39.04-39.04 8.96A192.064 192.064 0 0 0 320 768h368a207.81 207.81 0 0 0 207.808-208 208.32 208.32 0 0 0-158.592-202.048m15.168-62.208A272.32 272.32 0 0 1 959.744 560a271.81 271.81 0 0 1-271.552 272H320a256 256 0 0 1-57.536-505.536 256.128 256.128 0 0 1 489.92-30.72"
        })
      ]));
    }
  }), mostly_cloudy_default = _sfc_main176;
  var _sfc_main177 = /* @__PURE__ */ defineComponent({
    name: "Mouse",
    __name: "mouse",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M438.144 256c-68.352 0-92.736 4.672-117.76 18.112q-30.144 16.128-46.272 46.272C260.672 345.408 256 369.792 256 438.144v275.712c0 68.352 4.672 92.736 18.112 117.76q16.128 30.144 46.272 46.272C345.408 891.328 369.792 896 438.144 896h147.712c68.352 0 92.736-4.672 117.76-18.112q30.144-16.128 46.272-46.272C763.328 806.592 768 782.208 768 713.856V438.144c0-68.352-4.672-92.736-18.112-117.76a110.46 110.46 0 0 0-46.272-46.272C678.592 260.672 654.208 256 585.856 256zm0-64h147.712c85.568 0 116.608 8.96 147.904 25.6 31.36 16.768 55.872 41.344 72.576 72.64C823.104 321.536 832 352.576 832 438.08v275.84c0 85.504-8.96 116.544-25.6 147.84a174.46 174.46 0 0 1-72.64 72.576C702.464 951.104 671.424 960 585.92 960H438.08c-85.504 0-116.544-8.96-147.84-25.6a174.46 174.46 0 0 1-72.64-72.704c-16.768-31.296-25.664-62.336-25.664-147.84v-275.84c0-85.504 8.96-116.544 25.6-147.84a174.46 174.46 0 0 1 72.768-72.576c31.232-16.704 62.272-25.6 147.776-25.6z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 320q32 0 32 32v128q0 32-32 32t-32-32V352q0-32 32-32m32-96a32 32 0 0 1-64 0v-64a32 32 0 0 0-32-32h-96a32 32 0 0 1 0-64h96a96 96 0 0 1 96 96z"
        })
      ]));
    }
  }), mouse_default = _sfc_main177;
  var _sfc_main178 = /* @__PURE__ */ defineComponent({
    name: "Mug",
    __name: "mug",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M736 800V160H160v640a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64m64-544h63.552a96 96 0 0 1 96 96v224a96 96 0 0 1-96 96H800v128a128 128 0 0 1-128 128H224A128 128 0 0 1 96 800V128a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32zm0 64v288h63.552a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32z"
        })
      ]));
    }
  }), mug_default = _sfc_main178;
  var _sfc_main179 = /* @__PURE__ */ defineComponent({
    name: "MuteNotification",
    __name: "mute-notification",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m241.216 832 63.616-64H768V448c0-42.368-10.24-82.304-28.48-117.504l46.912-47.232C815.36 331.392 832 387.84 832 448v320h96a32 32 0 1 1 0 64zm-90.24 0H96a32 32 0 1 1 0-64h96V448a320.13 320.13 0 0 1 256-313.6V128a64 64 0 1 1 128 0v6.4a319.55 319.55 0 0 1 171.648 97.088l-45.184 45.44A256 256 0 0 0 256 448v278.336L151.04 832zM448 896h128a64 64 0 0 1-128 0"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M150.72 859.072a32 32 0 0 1-45.44-45.056l704-708.544a32 32 0 0 1 45.44 45.056z"
        })
      ]));
    }
  }), mute_notification_default = _sfc_main179;
  var _sfc_main180 = /* @__PURE__ */ defineComponent({
    name: "Mute",
    __name: "mute",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m412.16 592.128-45.44 45.44A191.23 191.23 0 0 1 320 512V256a192 192 0 1 1 384 0v44.352l-64 64V256a128 128 0 1 0-256 0v256c0 30.336 10.56 58.24 28.16 80.128m51.968 38.592A128 128 0 0 0 640 512v-57.152l64-64V512a192 192 0 0 1-287.68 166.528zM314.88 779.968l46.144-46.08A223 223 0 0 0 480 768h64a224 224 0 0 0 224-224v-32a32 32 0 1 1 64 0v32a288 288 0 0 1-288 288v64h64a32 32 0 1 1 0 64H416a32 32 0 1 1 0-64h64v-64c-61.44 0-118.4-19.2-165.12-52.032M266.752 737.6A286.98 286.98 0 0 1 192 544v-32a32 32 0 0 1 64 0v32c0 56.832 21.184 108.8 56.064 148.288z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M150.72 859.072a32 32 0 0 1-45.44-45.056l704-708.544a32 32 0 0 1 45.44 45.056z"
        })
      ]));
    }
  }), mute_default = _sfc_main180;
  var _sfc_main181 = /* @__PURE__ */ defineComponent({
    name: "NoSmoking",
    __name: "no-smoking",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M440.256 576H256v128h56.256l-64 64H224a32 32 0 0 1-32-32V544a32 32 0 0 1 32-32h280.256zm143.488 128H704V583.744L775.744 512H928a32 32 0 0 1 32 32v192a32 32 0 0 1-32 32H519.744zM768 576v128h128V576zm-29.696-207.552 45.248 45.248-497.856 497.856-45.248-45.248zM256 64h64v320h-64zM128 192h64v192h-64zM64 512h64v256H64z"
        })
      ]));
    }
  }), no_smoking_default = _sfc_main181;
  var _sfc_main182 = /* @__PURE__ */ defineComponent({
    name: "Notebook",
    __name: "notebook",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M192 128v768h640V128zm-32-64h704a32 32 0 0 1 32 32v832a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M672 128h64v768h-64zM96 192h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32m0 192h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32m0 192h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32m0 192h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32"
        })
      ]));
    }
  }), notebook_default = _sfc_main182;
  var _sfc_main183 = /* @__PURE__ */ defineComponent({
    name: "Notification",
    __name: "notification",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 128v64H256a64 64 0 0 0-64 64v512a64 64 0 0 0 64 64h512a64 64 0 0 0 64-64V512h64v256a128 128 0 0 1-128 128H256a128 128 0 0 1-128-128V256a128 128 0 0 1 128-128z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M768 384a128 128 0 1 0 0-256 128 128 0 0 0 0 256m0 64a192 192 0 1 1 0-384 192 192 0 0 1 0 384"
        })
      ]));
    }
  }), notification_default = _sfc_main183;
  var _sfc_main184 = /* @__PURE__ */ defineComponent({
    name: "Odometer",
    __name: "odometer",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("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"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M192 512a320 320 0 1 1 640 0 32 32 0 1 1-64 0 256 256 0 1 0-512 0 32 32 0 0 1-64 0"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M570.432 627.84A96 96 0 1 1 509.568 608l60.992-187.776A32 32 0 1 1 631.424 440l-60.992 187.776zM502.08 734.464a32 32 0 1 0 19.84-60.928 32 32 0 0 0-19.84 60.928"
        })
      ]));
    }
  }), odometer_default = _sfc_main184;
  var _sfc_main185 = /* @__PURE__ */ defineComponent({
    name: "OfficeBuilding",
    __name: "office-building",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M192 128v704h384V128zm-32-64h448a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M256 256h256v64H256zm0 192h256v64H256zm0 192h256v64H256zm384-128h128v64H640zm0 128h128v64H640zM64 832h896v64H64z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M640 384v448h192V384zm-32-64h256a32 32 0 0 1 32 32v512a32 32 0 0 1-32 32H608a32 32 0 0 1-32-32V352a32 32 0 0 1 32-32"
        })
      ]));
    }
  }), office_building_default = _sfc_main185;
  var _sfc_main186 = /* @__PURE__ */ defineComponent({
    name: "Open",
    __name: "open",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M329.956 257.138a254.862 254.862 0 0 0 0 509.724h364.088a254.862 254.862 0 0 0 0-509.724zm0-72.818h364.088a327.68 327.68 0 1 1 0 655.36H329.956a327.68 327.68 0 1 1 0-655.36"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M694.044 621.227a109.227 109.227 0 1 0 0-218.454 109.227 109.227 0 0 0 0 218.454m0 72.817a182.044 182.044 0 1 1 0-364.088 182.044 182.044 0 0 1 0 364.088"
        })
      ]));
    }
  }), open_default = _sfc_main186;
  var _sfc_main187 = /* @__PURE__ */ defineComponent({
    name: "Operation",
    __name: "operation",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M389.44 768a96.064 96.064 0 0 1 181.12 0H896v64H570.56a96.064 96.064 0 0 1-181.12 0H128v-64zm192-288a96.064 96.064 0 0 1 181.12 0H896v64H762.56a96.064 96.064 0 0 1-181.12 0H128v-64zm-320-288a96.064 96.064 0 0 1 181.12 0H896v64H442.56a96.064 96.064 0 0 1-181.12 0H128v-64z"
        })
      ]));
    }
  }), operation_default = _sfc_main187;
  var _sfc_main188 = /* @__PURE__ */ defineComponent({
    name: "Opportunity",
    __name: "opportunity",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M384 960v-64h192.064v64zm448-544a350.66 350.66 0 0 1-128.32 271.424C665.344 719.04 640 763.776 640 813.504V832H320v-14.336c0-48-19.392-95.36-57.216-124.992a351.55 351.55 0 0 1-128.448-344.256c25.344-136.448 133.888-248.128 269.76-276.48A352.384 352.384 0 0 1 832 416m-544 32c0-132.288 75.904-224 192-224v-64c-154.432 0-256 122.752-256 288z"
        })
      ]));
    }
  }), opportunity_default = _sfc_main188;
  var _sfc_main189 = /* @__PURE__ */ defineComponent({
    name: "Orange",
    __name: "orange",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M544 894.72a382.34 382.34 0 0 0 215.936-89.472L577.024 622.272c-10.24 6.016-21.248 10.688-33.024 13.696v258.688zm261.248-134.784A382.34 382.34 0 0 0 894.656 544H635.968c-3.008 11.776-7.68 22.848-13.696 33.024zM894.656 480a382.34 382.34 0 0 0-89.408-215.936L622.272 446.976c6.016 10.24 10.688 21.248 13.696 33.024zm-134.72-261.248A382.34 382.34 0 0 0 544 129.344v258.688c11.776 3.008 22.848 7.68 33.024 13.696zM480 129.344a382.34 382.34 0 0 0-215.936 89.408l182.912 182.976c10.24-6.016 21.248-10.688 33.024-13.696zm-261.248 134.72A382.34 382.34 0 0 0 129.344 480h258.688c3.008-11.776 7.68-22.848 13.696-33.024zM129.344 544a382.34 382.34 0 0 0 89.408 215.936l182.976-182.912A127.2 127.2 0 0 1 388.032 544zm134.72 261.248A382.34 382.34 0 0 0 480 894.656V635.968a127.2 127.2 0 0 1-33.024-13.696zM512 960a448 448 0 1 1 0-896 448 448 0 0 1 0 896m0-384a64 64 0 1 0 0-128 64 64 0 0 0 0 128"
        })
      ]));
    }
  }), orange_default = _sfc_main189;
  var _sfc_main190 = /* @__PURE__ */ defineComponent({
    name: "Paperclip",
    __name: "paperclip",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M602.496 240.448A192 192 0 1 1 874.048 512l-316.8 316.8A256 256 0 0 1 195.2 466.752L602.496 59.456l45.248 45.248L240.448 512A192 192 0 0 0 512 783.552l316.8-316.8a128 128 0 1 0-181.056-181.056L353.6 579.904a32 32 0 1 0 45.248 45.248l294.144-294.144 45.312 45.248L444.096 670.4a96 96 0 1 1-135.744-135.744z"
        })
      ]));
    }
  }), paperclip_default = _sfc_main190;
  var _sfc_main191 = /* @__PURE__ */ defineComponent({
    name: "PartlyCloudy",
    __name: "partly-cloudy",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M598.4 895.872H328.192a256 256 0 0 1-34.496-510.528A352 352 0 1 1 598.4 895.872m-271.36-64h272.256a288 288 0 1 0-248.512-417.664L335.04 445.44l-34.816 3.584a192 192 0 0 0 26.88 382.848z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M139.84 501.888a256 256 0 1 1 417.856-277.12c-17.728 2.176-38.208 8.448-61.504 18.816A192 192 0 1 0 189.12 460.48a6004 6004 0 0 0-49.28 41.408"
        })
      ]));
    }
  }), partly_cloudy_default = _sfc_main191;
  var _sfc_main192 = /* @__PURE__ */ defineComponent({
    name: "Pear",
    __name: "pear",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M542.336 258.816a443 443 0 0 0-9.024 25.088 32 32 0 1 1-60.8-20.032l1.088-3.328a162.69 162.69 0 0 0-122.048 131.392l-17.088 102.72-20.736 15.36C256.192 552.704 224 610.88 224 672c0 120.576 126.4 224 288 224s288-103.424 288-224c0-61.12-32.192-119.296-89.728-161.92l-20.736-15.424-17.088-102.72a162.69 162.69 0 0 0-130.112-133.12m-40.128-66.56c7.936-15.552 16.576-30.08 25.92-43.776 23.296-33.92 49.408-59.776 78.528-77.12a32 32 0 1 1 32.704 55.04c-20.544 12.224-40.064 31.552-58.432 58.304a317 317 0 0 0-9.792 15.104 226.69 226.69 0 0 1 164.48 181.568l12.8 77.248C819.456 511.36 864 587.392 864 672c0 159.04-157.568 288-352 288S160 831.04 160 672c0-84.608 44.608-160.64 115.584-213.376l12.8-77.248a226.624 226.624 0 0 1 213.76-189.184z"
        })
      ]));
    }
  }), pear_default = _sfc_main192;
  var _sfc_main193 = /* @__PURE__ */ defineComponent({
    name: "PhoneFilled",
    __name: "phone-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M199.232 125.568 90.624 379.008a32 32 0 0 0 6.784 35.2l512.384 512.384a32 32 0 0 0 35.2 6.784l253.44-108.608a32 32 0 0 0 10.048-52.032L769.6 633.92a32 32 0 0 0-36.928-5.952l-130.176 65.088-271.488-271.552 65.024-130.176a32 32 0 0 0-5.952-36.928L251.2 115.52a32 32 0 0 0-51.968 10.048"
        })
      ]));
    }
  }), phone_filled_default = _sfc_main193;
  var _sfc_main194 = /* @__PURE__ */ defineComponent({
    name: "Phone",
    __name: "phone",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M79.36 432.256 591.744 944.64a32 32 0 0 0 35.2 6.784l253.44-108.544a32 32 0 0 0 9.984-52.032l-153.856-153.92a32 32 0 0 0-36.928-6.016l-69.888 34.944L358.08 394.24l35.008-69.888a32 32 0 0 0-5.952-36.928L233.152 133.568a32 32 0 0 0-52.032 10.048L72.512 397.056a32 32 0 0 0 6.784 35.2zm60.48-29.952 81.536-190.08L325.568 316.48l-24.64 49.216-20.608 41.216 32.576 32.64 271.552 271.552 32.64 32.64 41.216-20.672 49.28-24.576 104.192 104.128-190.08 81.472zM512 320v-64a256 256 0 0 1 256 256h-64a192 192 0 0 0-192-192m0-192V64a448 448 0 0 1 448 448h-64a384 384 0 0 0-384-384"
        })
      ]));
    }
  }), phone_default = _sfc_main194;
  var _sfc_main195 = /* @__PURE__ */ defineComponent({
    name: "PictureFilled",
    __name: "picture-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M96 896a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h832a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32zm315.52-228.48-68.928-68.928a32 32 0 0 0-45.248 0L128 768.064h778.688l-242.112-290.56a32 32 0 0 0-49.216 0L458.752 665.408a32 32 0 0 1-47.232 2.112M256 384a96 96 0 1 0 192.064-.064A96 96 0 0 0 256 384"
        })
      ]));
    }
  }), picture_filled_default = _sfc_main195;
  var _sfc_main196 = /* @__PURE__ */ defineComponent({
    name: "PictureRounded",
    __name: "picture-rounded",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 128a384 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"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M640 288q64 0 64 64t-64 64-64-64 64-64M214.656 790.656l-45.312-45.312 185.664-185.6a96 96 0 0 1 123.712-10.24l138.24 98.688a32 32 0 0 0 39.872-2.176L906.688 422.4l42.624 47.744L699.52 693.696a96 96 0 0 1-119.808 6.592l-138.24-98.752a32 32 0 0 0-41.152 3.456l-185.664 185.6z"
        })
      ]));
    }
  }), picture_rounded_default = _sfc_main196;
  var _sfc_main197 = /* @__PURE__ */ defineComponent({
    name: "Picture",
    __name: "picture",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M160 160v704h704V160zm-32-64h768a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H128a32 32 0 0 1-32-32V128a32 32 0 0 1 32-32"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M384 288q64 0 64 64t-64 64-64-64 64-64M185.408 876.992l-50.816-38.912L350.72 556.032a96 96 0 0 1 134.592-17.856l1.856 1.472 122.88 99.136a32 32 0 0 0 44.992-4.864l216-269.888 49.92 39.936-215.808 269.824-.256.32a96 96 0 0 1-135.04 14.464l-122.88-99.072-.64-.512a32 32 0 0 0-44.8 5.952z"
        })
      ]));
    }
  }), picture_default = _sfc_main197;
  var _sfc_main198 = /* @__PURE__ */ defineComponent({
    name: "PieChart",
    __name: "pie-chart",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M448 68.48v64.832A384.128 384.128 0 0 0 512 896a384.13 384.13 0 0 0 378.688-320h64.768A448.128 448.128 0 0 1 64 512 448.13 448.13 0 0 1 448 68.48"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M576 97.28V448h350.72A384.064 384.064 0 0 0 576 97.28M512 64V33.152A448 448 0 0 1 990.848 512H512z"
        })
      ]));
    }
  }), pie_chart_default = _sfc_main198;
  var _sfc_main199 = /* @__PURE__ */ defineComponent({
    name: "Place",
    __name: "place",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 512a192 192 0 1 0 0-384 192 192 0 0 0 0 384m0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 512a32 32 0 0 1 32 32v256a32 32 0 1 1-64 0V544a32 32 0 0 1 32-32"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M384 649.088v64.96C269.76 732.352 192 771.904 192 800c0 37.696 139.904 96 320 96s320-58.304 320-96c0-28.16-77.76-67.648-192-85.952v-64.96C789.12 671.04 896 730.368 896 800c0 88.32-171.904 160-384 160s-384-71.68-384-160c0-69.696 106.88-128.96 256-150.912"
        })
      ]));
    }
  }), place_default = _sfc_main199;
  var _sfc_main200 = /* @__PURE__ */ defineComponent({
    name: "Platform",
    __name: "platform",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M448 832v-64h128v64h192v64H256v-64zM128 704V128h768v576z"
        })
      ]));
    }
  }), platform_default = _sfc_main200;
  var _sfc_main201 = /* @__PURE__ */ defineComponent({
    name: "Plus",
    __name: "plus",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("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"
        })
      ]));
    }
  }), plus_default = _sfc_main201;
  var _sfc_main202 = /* @__PURE__ */ defineComponent({
    name: "Pointer",
    __name: "pointer",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M511.552 128c-35.584 0-64.384 28.8-64.384 64.448v516.48L274.048 570.88a94.27 94.27 0 0 0-112.896-3.456 44.416 44.416 0 0 0-8.96 62.208L332.8 870.4A64 64 0 0 0 384 896h512V575.232a64 64 0 0 0-45.632-61.312l-205.952-61.76A96 96 0 0 1 576 360.192V192.448C576 156.8 547.2 128 511.552 128M359.04 556.8l24.128 19.2V192.448a128.448 128.448 0 1 1 256.832 0v167.744a32 32 0 0 0 22.784 30.656l206.016 61.76A128 128 0 0 1 960 575.232V896a64 64 0 0 1-64 64H384a128 128 0 0 1-102.4-51.2L101.056 668.032A108.416 108.416 0 0 1 128 512.512a158.27 158.27 0 0 1 185.984 8.32z"
        })
      ]));
    }
  }), pointer_default = _sfc_main202;
  var _sfc_main203 = /* @__PURE__ */ defineComponent({
    name: "Position",
    __name: "position",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m249.6 417.088 319.744 43.072 39.168 310.272L845.12 178.88zm-129.024 47.168a32 32 0 0 1-7.68-61.44l777.792-311.04a32 32 0 0 1 41.6 41.6l-310.336 775.68a32 32 0 0 1-61.44-7.808L512 516.992z"
        })
      ]));
    }
  }), position_default = _sfc_main203;
  var _sfc_main204 = /* @__PURE__ */ defineComponent({
    name: "Postcard",
    __name: "postcard",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M160 224a32 32 0 0 0-32 32v512a32 32 0 0 0 32 32h704a32 32 0 0 0 32-32V256a32 32 0 0 0-32-32zm0-64h704a96 96 0 0 1 96 96v512a96 96 0 0 1-96 96H160a96 96 0 0 1-96-96V256a96 96 0 0 1 96-96"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M704 320a64 64 0 1 1 0 128 64 64 0 0 1 0-128M288 448h256q32 0 32 32t-32 32H288q-32 0-32-32t32-32m0 128h256q32 0 32 32t-32 32H288q-32 0-32-32t32-32"
        })
      ]));
    }
  }), postcard_default = _sfc_main204;
  var _sfc_main205 = /* @__PURE__ */ defineComponent({
    name: "Pouring",
    __name: "pouring",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m739.328 291.328-35.2-6.592-12.8-33.408a192.064 192.064 0 0 0-365.952 23.232l-9.92 40.896-41.472 7.04a176.32 176.32 0 0 0-146.24 173.568c0 97.28 78.72 175.936 175.808 175.936h400a192 192 0 0 0 35.776-380.672M959.552 480a256 256 0 0 1-256 256h-400A239.81 239.81 0 0 1 63.744 496.192a240.32 240.32 0 0 1 199.488-236.8 256.128 256.128 0 0 1 487.872-30.976A256.064 256.064 0 0 1 959.552 480M224 800a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32m192 0a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32m192 0a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32m192 0a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32"
        })
      ]));
    }
  }), pouring_default = _sfc_main205;
  var _sfc_main206 = /* @__PURE__ */ defineComponent({
    name: "Present",
    __name: "present",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M480 896V640H192v-64h288V320H192v576zm64 0h288V320H544v256h288v64H544zM128 256h768v672a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M96 256h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M416 256a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M608 256a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256"
        })
      ]));
    }
  }), present_default = _sfc_main206;
  var _sfc_main207 = /* @__PURE__ */ defineComponent({
    name: "PriceTag",
    __name: "price-tag",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M224 318.336V896h576V318.336L552.512 115.84a64 64 0 0 0-81.024 0zM593.024 66.304l259.2 212.096A32 32 0 0 1 864 303.168V928a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V303.168a32 32 0 0 1 11.712-24.768l259.2-212.096a128 128 0 0 1 162.112 0"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 448a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256"
        })
      ]));
    }
  }), price_tag_default = _sfc_main207;
  var _sfc_main208 = /* @__PURE__ */ defineComponent({
    name: "Printer",
    __name: "printer",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M256 768H105.024c-14.272 0-19.456-1.472-24.64-4.288a29.06 29.06 0 0 1-12.16-12.096C65.536 746.432 64 741.248 64 727.04V379.072c0-42.816 4.48-58.304 12.8-73.984 8.384-15.616 20.672-27.904 36.288-36.288 15.68-8.32 31.168-12.8 73.984-12.8H256V64h512v192h68.928c42.816 0 58.304 4.48 73.984 12.8 15.616 8.384 27.904 20.672 36.288 36.288 8.32 15.68 12.8 31.168 12.8 73.984v347.904c0 14.272-1.472 19.456-4.288 24.64a29.06 29.06 0 0 1-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H768v192H256zm64-192v320h384V576zm-64 128V512h512v192h128V379.072c0-29.376-1.408-36.48-5.248-43.776a23.3 23.3 0 0 0-10.048-10.048c-7.232-3.84-14.4-5.248-43.776-5.248H187.072c-29.376 0-36.48 1.408-43.776 5.248a23.3 23.3 0 0 0-10.048 10.048c-3.84 7.232-5.248 14.4-5.248 43.776V704zm64-448h384V128H320zm-64 128h64v64h-64zm128 0h64v64h-64z"
        })
      ]));
    }
  }), printer_default = _sfc_main208;
  var _sfc_main209 = /* @__PURE__ */ defineComponent({
    name: "Promotion",
    __name: "promotion",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m64 448 832-320-128 704-446.08-243.328L832 192 242.816 545.472zm256 512V657.024L512 768z"
        })
      ]));
    }
  }), promotion_default = _sfc_main209;
  var _sfc_main210 = /* @__PURE__ */ defineComponent({
    name: "QuartzWatch",
    __name: "quartz-watch",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        "xml:space": "preserve",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M422.02 602.01v-.03c-6.68-5.99-14.35-8.83-23.01-8.51q-13.005.48-22.5 10.02c-6.33 6.36-9.5 13.7-9.5 22.02s3 15.82 8.99 22.5c8.68 8.68 19.02 11.35 31.01 8s19.49-10.85 22.5-22.5.51-22.15-7.49-31.49zM384 512c0-9.35-3-17.02-8.99-23.01-6-5.99-13.66-8.99-23.01-8.99s-17.02 3-23.01 8.99c-5.99 6-8.99 13.66-8.99 23.01s3 17.02 8.99 23.01c6 5.99 13.66 8.99 23.01 8.99s17.02-3 23.01-8.99c5.99-6 8.99-13.67 8.99-23.01m6.53-82.49c11.65 3.01 22.15.51 31.49-7.49h.04c5.99-6.68 8.83-14.34 8.51-23.01s-3.66-16.16-10.02-22.5c-6.36-6.33-13.7-9.5-22.02-9.5s-15.82 3-22.5 8.99c-8.68 8.69-11.35 19.02-8 31.01q5.025 17.985 22.5 22.5m242.94 0q17.505-4.545 22.02-22.02c3.01-11.65.51-22.15-7.49-31.49h.01c-6.68-5.99-14.18-8.99-22.5-8.99s-15.66 3.16-22.02 9.5q-9.54 9.51-10.02 22.5c-.32 8.66 2.52 16.33 8.51 23.01 9.32 8.02 19.82 10.52 31.49 7.49M512 640c-9.35 0-17.02 3-23.01 8.99-5.99 6-8.99 13.66-8.99 23.01s3 17.02 8.99 23.01c6 5.99 13.67 8.99 23.01 8.99 9.35 0 17.02-3 23.01-8.99 5.99-6 8.99-13.66 8.99-23.01s-3-17.02-8.99-23.01c-6-5.99-13.66-8.99-23.01-8.99m183.01-151.01c-6-5.99-13.66-8.99-23.01-8.99s-17.02 3-23.01 8.99c-5.99 6-8.99 13.66-8.99 23.01s3 17.02 8.99 23.01c6 5.99 13.66 8.99 23.01 8.99s17.02-3 23.01-8.99c5.99-6 8.99-13.67 8.99-23.01 0-9.35-3-17.02-8.99-23.01"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M832 512c-2-90.67-33.17-166.17-93.5-226.5-20.43-20.42-42.6-37.49-66.5-51.23V64H352v170.26c-23.9 13.74-46.07 30.81-66.5 51.24-60.33 60.33-91.49 135.83-93.5 226.5 2 90.67 33.17 166.17 93.5 226.5 20.43 20.43 42.6 37.5 66.5 51.24V960h320V789.74c23.9-13.74 46.07-30.81 66.5-51.24 60.33-60.34 91.49-135.83 93.5-226.5M416 128h192v78.69c-29.85-9.03-61.85-13.93-96-14.69-34.15.75-66.15 5.65-96 14.68zm192 768H416v-78.68c29.85 9.03 61.85 13.93 96 14.68 34.15-.75 66.15-5.65 96-14.68zm-96-128c-72.66-2.01-132.99-27.01-180.99-75.01S258.01 584.66 256 512c2.01-72.66 27.01-132.99 75.01-180.99S439.34 258.01 512 256c72.66 2.01 132.99 27.01 180.99 75.01S765.99 439.34 768 512c-2.01 72.66-27.01 132.99-75.01 180.99S584.66 765.99 512 768"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 320c-9.35 0-17.02 3-23.01 8.99-5.99 6-8.99 13.66-8.99 23.01s3 17.02 8.99 23.01c6 5.99 13.67 8.99 23.01 8.99 9.35 0 17.02-3 23.01-8.99 5.99-6 8.99-13.66 8.99-23.01s-3-17.02-8.99-23.01c-6-5.99-13.66-8.99-23.01-8.99m112.99 273.5c-8.66-.32-16.33 2.52-23.01 8.51-7.98 9.32-10.48 19.82-7.49 31.49s10.49 19.17 22.5 22.5 22.35.66 31.01-8v.04c5.99-6.68 8.99-14.18 8.99-22.5s-3.16-15.66-9.5-22.02-13.84-9.7-22.5-10.02"
        })
      ]));
    }
  }), quartz_watch_default = _sfc_main210;
  var _sfc_main211 = /* @__PURE__ */ defineComponent({
    name: "QuestionFilled",
    __name: "question-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592q0-64.416-42.24-101.376c-28.16-25.344-65.472-37.312-111.232-37.312m-12.672 406.208a54.27 54.27 0 0 0-38.72 14.784 49.4 49.4 0 0 0-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.85 54.85 0 0 0 523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0 0 16.192-38.72 51.97 51.97 0 0 0-15.488-38.016 55.94 55.94 0 0 0-39.424-14.784"
        })
      ]));
    }
  }), question_filled_default = _sfc_main211;
  var _sfc_main212 = /* @__PURE__ */ defineComponent({
    name: "Rank",
    __name: "rank",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m186.496 544 41.408 41.344a32 32 0 1 1-45.248 45.312l-96-96a32 32 0 0 1 0-45.312l96-96a32 32 0 1 1 45.248 45.312L186.496 480h290.816V186.432l-41.472 41.472a32 32 0 1 1-45.248-45.184l96-96.128a32 32 0 0 1 45.312 0l96 96.064a32 32 0 0 1-45.248 45.184l-41.344-41.28V480H832l-41.344-41.344a32 32 0 0 1 45.248-45.312l96 96a32 32 0 0 1 0 45.312l-96 96a32 32 0 0 1-45.248-45.312L832 544H541.312v293.44l41.344-41.28a32 32 0 1 1 45.248 45.248l-96 96a32 32 0 0 1-45.312 0l-96-96a32 32 0 1 1 45.312-45.248l41.408 41.408V544z"
        })
      ]));
    }
  }), rank_default = _sfc_main212;
  var _sfc_main213 = /* @__PURE__ */ defineComponent({
    name: "ReadingLamp",
    __name: "reading-lamp",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M352 896h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32m-44.672-768-99.52 448h608.384l-99.52-448zm-25.6-64h460.608a32 32 0 0 1 31.232 25.088l113.792 512A32 32 0 0 1 856.128 640H167.872a32 32 0 0 1-31.232-38.912l113.792-512A32 32 0 0 1 281.664 64z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M672 576q32 0 32 32v128q0 32-32 32t-32-32V608q0-32 32-32m-192-.064h64V960h-64z"
        })
      ]));
    }
  }), reading_lamp_default = _sfc_main213;
  var _sfc_main214 = /* @__PURE__ */ defineComponent({
    name: "Reading",
    __name: "reading",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m512 863.36 384-54.848v-638.72L525.568 222.72a96 96 0 0 1-27.136 0L128 169.792v638.72zM137.024 106.432l370.432 52.928a32 32 0 0 0 9.088 0l370.432-52.928A64 64 0 0 1 960 169.792v638.72a64 64 0 0 1-54.976 63.36l-388.48 55.488a32 32 0 0 1-9.088 0l-388.48-55.488A64 64 0 0 1 64 808.512v-638.72a64 64 0 0 1 73.024-63.36"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M480 192h64v704h-64z"
        })
      ]));
    }
  }), reading_default = _sfc_main214;
  var _sfc_main215 = /* @__PURE__ */ defineComponent({
    name: "RefreshLeft",
    __name: "refresh-left",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("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"
        })
      ]));
    }
  }), refresh_left_default = _sfc_main215;
  var _sfc_main216 = /* @__PURE__ */ defineComponent({
    name: "RefreshRight",
    __name: "refresh-right",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M784.512 230.272v-50.56a32 32 0 1 1 64 0v149.056a32 32 0 0 1-32 32H667.52a32 32 0 1 1 0-64h92.992A320 320 0 1 0 524.8 833.152a320 320 0 0 0 320-320h64a384 384 0 0 1-384 384 384 384 0 0 1-384-384 384 384 0 0 1 643.712-282.88"
        })
      ]));
    }
  }), refresh_right_default = _sfc_main216;
  var _sfc_main217 = /* @__PURE__ */ defineComponent({
    name: "Refresh",
    __name: "refresh",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M771.776 794.88A384 384 0 0 1 128 512h64a320 320 0 0 0 555.712 216.448H654.72a32 32 0 1 1 0-64h149.056a32 32 0 0 1 32 32v148.928a32 32 0 1 1-64 0v-50.56zM276.288 295.616h92.992a32 32 0 0 1 0 64H220.16a32 32 0 0 1-32-32V178.56a32 32 0 0 1 64 0v50.56A384 384 0 0 1 896.128 512h-64a320 320 0 0 0-555.776-216.384z"
        })
      ]));
    }
  }), refresh_default = _sfc_main217;
  var _sfc_main218 = /* @__PURE__ */ defineComponent({
    name: "Refrigerator",
    __name: "refrigerator",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M256 448h512V160a32 32 0 0 0-32-32H288a32 32 0 0 0-32 32zm0 64v352a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V512zm32-448h448a96 96 0 0 1 96 96v704a96 96 0 0 1-96 96H288a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96m32 224h64v96h-64zm0 288h64v96h-64z"
        })
      ]));
    }
  }), refrigerator_default = _sfc_main218;
  var _sfc_main219 = /* @__PURE__ */ defineComponent({
    name: "RemoveFilled",
    __name: "remove-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896M288 512a38.4 38.4 0 0 0 38.4 38.4h371.2a38.4 38.4 0 0 0 0-76.8H326.4A38.4 38.4 0 0 0 288 512"
        })
      ]));
    }
  }), remove_filled_default = _sfc_main219;
  var _sfc_main220 = /* @__PURE__ */ defineComponent({
    name: "Remove",
    __name: "remove",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M352 480h320a32 32 0 1 1 0 64H352a32 32 0 0 1 0-64"
        }),
        createBaseVNode("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"
        })
      ]));
    }
  }), remove_default = _sfc_main220;
  var _sfc_main221 = /* @__PURE__ */ defineComponent({
    name: "Right",
    __name: "right",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M754.752 480H160a32 32 0 1 0 0 64h594.752L521.344 777.344a32 32 0 0 0 45.312 45.312l288-288a32 32 0 0 0 0-45.312l-288-288a32 32 0 1 0-45.312 45.312z"
        })
      ]));
    }
  }), right_default = _sfc_main221;
  var _sfc_main222 = /* @__PURE__ */ defineComponent({
    name: "ScaleToOriginal",
    __name: "scale-to-original",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M813.176 180.706a60.235 60.235 0 0 1 60.236 60.235v481.883a60.235 60.235 0 0 1-60.236 60.235H210.824a60.235 60.235 0 0 1-60.236-60.235V240.94a60.235 60.235 0 0 1 60.236-60.235h602.352zm0-60.235H210.824A120.47 120.47 0 0 0 90.353 240.94v481.883a120.47 120.47 0 0 0 120.47 120.47h602.353a120.47 120.47 0 0 0 120.471-120.47V240.94a120.47 120.47 0 0 0-120.47-120.47zm-120.47 180.705a30.12 30.12 0 0 0-30.118 30.118v301.177a30.118 30.118 0 0 0 60.236 0V331.294a30.12 30.12 0 0 0-30.118-30.118m-361.412 0a30.12 30.12 0 0 0-30.118 30.118v301.177a30.118 30.118 0 1 0 60.236 0V331.294a30.12 30.12 0 0 0-30.118-30.118M512 361.412a30.12 30.12 0 0 0-30.118 30.117v30.118a30.118 30.118 0 0 0 60.236 0V391.53A30.12 30.12 0 0 0 512 361.412M512 512a30.12 30.12 0 0 0-30.118 30.118v30.117a30.118 30.118 0 0 0 60.236 0v-30.117A30.12 30.12 0 0 0 512 512"
        })
      ]));
    }
  }), scale_to_original_default = _sfc_main222;
  var _sfc_main223 = /* @__PURE__ */ defineComponent({
    name: "School",
    __name: "school",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M224 128v704h576V128zm-32-64h640a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M64 832h896v64H64zm256-640h128v96H320z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M384 832h256v-64a128 128 0 1 0-256 0zm128-256a192 192 0 0 1 192 192v128H320V768a192 192 0 0 1 192-192M320 384h128v96H320zm256-192h128v96H576zm0 192h128v96H576z"
        })
      ]));
    }
  }), school_default = _sfc_main223;
  var _sfc_main224 = /* @__PURE__ */ defineComponent({
    name: "Scissor",
    __name: "scissor",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m512.064 578.368-106.88 152.768a160 160 0 1 1-23.36-78.208L472.96 522.56 196.864 128.256a32 32 0 1 1 52.48-36.736l393.024 561.344a160 160 0 1 1-23.36 78.208l-106.88-152.704zm54.4-189.248 208.384-297.6a32 32 0 0 1 52.48 36.736l-221.76 316.672-39.04-55.808zm-376.32 425.856a96 96 0 1 0 110.144-157.248 96 96 0 0 0-110.08 157.248zm643.84 0a96 96 0 1 0-110.08-157.248 96 96 0 0 0 110.08 157.248"
        })
      ]));
    }
  }), scissor_default = _sfc_main224;
  var _sfc_main225 = /* @__PURE__ */ defineComponent({
    name: "Search",
    __name: "search",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704"
        })
      ]));
    }
  }), search_default = _sfc_main225;
  var _sfc_main226 = /* @__PURE__ */ defineComponent({
    name: "Select",
    __name: "select",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M77.248 415.04a64 64 0 0 1 90.496 0l226.304 226.304L846.528 188.8a64 64 0 1 1 90.56 90.496l-543.04 543.04-316.8-316.8a64 64 0 0 1 0-90.496"
        })
      ]));
    }
  }), select_default = _sfc_main226;
  var _sfc_main227 = /* @__PURE__ */ defineComponent({
    name: "Sell",
    __name: "sell",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M704 288h131.072a32 32 0 0 1 31.808 28.8L886.4 512h-64.384l-16-160H704v96a32 32 0 1 1-64 0v-96H384v96a32 32 0 0 1-64 0v-96H217.92l-51.2 512H512v64H131.328a32 32 0 0 1-31.808-35.2l57.6-576a32 32 0 0 1 31.808-28.8H320v-22.336C320 154.688 405.504 64 512 64s192 90.688 192 201.664v22.4zm-64 0v-22.336C640 189.248 582.272 128 512 128s-128 61.248-128 137.664v22.4h256zm201.408 483.84L768 698.496V928a32 32 0 1 1-64 0V698.496l-73.344 73.344a32 32 0 1 1-45.248-45.248l128-128a32 32 0 0 1 45.248 0l128 128a32 32 0 1 1-45.248 45.248"
        })
      ]));
    }
  }), sell_default = _sfc_main227;
  var _sfc_main228 = /* @__PURE__ */ defineComponent({
    name: "SemiSelect",
    __name: "semi-select",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M128 448h768q64 0 64 64t-64 64H128q-64 0-64-64t64-64"
        })
      ]));
    }
  }), semi_select_default = _sfc_main228;
  var _sfc_main229 = /* @__PURE__ */ defineComponent({
    name: "Service",
    __name: "service",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M864 409.6a192 192 0 0 1-37.888 349.44A256.064 256.064 0 0 1 576 960h-96a32 32 0 1 1 0-64h96a192.06 192.06 0 0 0 181.12-128H736a32 32 0 0 1-32-32V416a32 32 0 0 1 32-32h32c10.368 0 20.544.832 30.528 2.432a288 288 0 0 0-573.056 0A193 193 0 0 1 256 384h32a32 32 0 0 1 32 32v320a32 32 0 0 1-32 32h-32a192 192 0 0 1-96-358.4 352 352 0 0 1 704 0M256 448a128 128 0 1 0 0 256zm640 128a128 128 0 0 0-128-128v256a128 128 0 0 0 128-128"
        })
      ]));
    }
  }), service_default = _sfc_main229;
  var _sfc_main230 = /* @__PURE__ */ defineComponent({
    name: "SetUp",
    __name: "set-up",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M224 160a64 64 0 0 0-64 64v576a64 64 0 0 0 64 64h576a64 64 0 0 0 64-64V224a64 64 0 0 0-64-64zm0-64h576a128 128 0 0 1 128 128v576a128 128 0 0 1-128 128H224A128 128 0 0 1 96 800V224A128 128 0 0 1 224 96"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M384 416a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M480 320h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32m160 416a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M288 640h256q32 0 32 32t-32 32H288q-32 0-32-32t32-32"
        })
      ]));
    }
  }), set_up_default = _sfc_main230;
  var _sfc_main231 = /* @__PURE__ */ defineComponent({
    name: "Setting",
    __name: "setting",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M600.704 64a32 32 0 0 1 30.464 22.208l35.2 109.376c14.784 7.232 28.928 15.36 42.432 24.512l112.384-24.192a32 32 0 0 1 34.432 15.36L944.32 364.8a32 32 0 0 1-4.032 37.504l-77.12 85.12a357 357 0 0 1 0 49.024l77.12 85.248a32 32 0 0 1 4.032 37.504l-88.704 153.6a32 32 0 0 1-34.432 15.296L708.8 803.904c-13.44 9.088-27.648 17.28-42.368 24.512l-35.264 109.376A32 32 0 0 1 600.704 960H423.296a32 32 0 0 1-30.464-22.208L357.696 828.48a352 352 0 0 1-42.56-24.64l-112.32 24.256a32 32 0 0 1-34.432-15.36L79.68 659.2a32 32 0 0 1 4.032-37.504l77.12-85.248a357 357 0 0 1 0-48.896l-77.12-85.248A32 32 0 0 1 79.68 364.8l88.704-153.6a32 32 0 0 1 34.432-15.296l112.32 24.256c13.568-9.152 27.776-17.408 42.56-24.64l35.2-109.312A32 32 0 0 1 423.232 64H600.64zm-23.424 64H446.72l-36.352 113.088-24.512 11.968a294 294 0 0 0-34.816 20.096l-22.656 15.36-116.224-25.088-65.28 113.152 79.68 88.192-1.92 27.136a293 293 0 0 0 0 40.192l1.92 27.136-79.808 88.192 65.344 113.152 116.224-25.024 22.656 15.296a294 294 0 0 0 34.816 20.096l24.512 11.968L446.72 896h130.688l36.48-113.152 24.448-11.904a288 288 0 0 0 34.752-20.096l22.592-15.296 116.288 25.024 65.28-113.152-79.744-88.192 1.92-27.136a293 293 0 0 0 0-40.256l-1.92-27.136 79.808-88.128-65.344-113.152-116.288 24.96-22.592-15.232a288 288 0 0 0-34.752-20.096l-24.448-11.904L577.344 128zM512 320a192 192 0 1 1 0 384 192 192 0 0 1 0-384m0 64a128 128 0 1 0 0 256 128 128 0 0 0 0-256"
        })
      ]));
    }
  }), setting_default = _sfc_main231;
  var _sfc_main232 = /* @__PURE__ */ defineComponent({
    name: "Share",
    __name: "share",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m679.872 348.8-301.76 188.608a127.8 127.8 0 0 1 5.12 52.16l279.936 104.96a128 128 0 1 1-22.464 59.904l-279.872-104.96a128 128 0 1 1-16.64-166.272l301.696-188.608a128 128 0 1 1 33.92 54.272z"
        })
      ]));
    }
  }), share_default = _sfc_main232;
  var _sfc_main233 = /* @__PURE__ */ defineComponent({
    name: "Ship",
    __name: "ship",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 386.88V448h405.568a32 32 0 0 1 30.72 40.768l-76.48 267.968A192 192 0 0 1 687.168 896H336.832a192 192 0 0 1-184.64-139.264L75.648 488.768A32 32 0 0 1 106.368 448H448V117.888a32 32 0 0 1 47.36-28.096l13.888 7.616L512 96v2.88l231.68 126.4a32 32 0 0 1-2.048 57.216zm0-70.272 144.768-65.792L512 171.84zM512 512H148.864l18.24 64H856.96l18.24-64zM185.408 640l28.352 99.2A128 128 0 0 0 336.832 832h350.336a128 128 0 0 0 123.072-92.8l28.352-99.2z"
        })
      ]));
    }
  }), ship_default = _sfc_main233;
  var _sfc_main234 = /* @__PURE__ */ defineComponent({
    name: "Shop",
    __name: "shop",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M704 704h64v192H256V704h64v64h384zm188.544-152.192C894.528 559.616 896 567.616 896 576a96 96 0 1 1-192 0 96 96 0 1 1-192 0 96 96 0 1 1-192 0 96 96 0 1 1-192 0c0-8.384 1.408-16.384 3.392-24.192L192 128h640z"
        })
      ]));
    }
  }), shop_default = _sfc_main234;
  var _sfc_main235 = /* @__PURE__ */ defineComponent({
    name: "ShoppingBag",
    __name: "shopping-bag",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M704 320v96a32 32 0 0 1-32 32h-32V320H384v128h-32a32 32 0 0 1-32-32v-96H192v576h640V320zm-384-64a192 192 0 1 1 384 0h160a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V288a32 32 0 0 1 32-32zm64 0h256a128 128 0 1 0-256 0"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M192 704h640v64H192z"
        })
      ]));
    }
  }), shopping_bag_default = _sfc_main235;
  var _sfc_main236 = /* @__PURE__ */ defineComponent({
    name: "ShoppingCartFull",
    __name: "shopping-cart-full",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M432 928a48 48 0 1 1 0-96 48 48 0 0 1 0 96m320 0a48 48 0 1 1 0-96 48 48 0 0 1 0 96M96 128a32 32 0 0 1 0-64h160a32 32 0 0 1 31.36 25.728L320.64 256H928a32 32 0 0 1 31.296 38.72l-96 448A32 32 0 0 1 832 768H384a32 32 0 0 1-31.36-25.728L229.76 128zm314.24 576h395.904l82.304-384H333.44z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M699.648 256 608 145.984 516.352 256zm-140.8-151.04a64 64 0 0 1 98.304 0L836.352 320H379.648z"
        })
      ]));
    }
  }), shopping_cart_full_default = _sfc_main236;
  var _sfc_main237 = /* @__PURE__ */ defineComponent({
    name: "ShoppingCart",
    __name: "shopping-cart",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M432 928a48 48 0 1 1 0-96 48 48 0 0 1 0 96m320 0a48 48 0 1 1 0-96 48 48 0 0 1 0 96M96 128a32 32 0 0 1 0-64h160a32 32 0 0 1 31.36 25.728L320.64 256H928a32 32 0 0 1 31.296 38.72l-96 448A32 32 0 0 1 832 768H384a32 32 0 0 1-31.36-25.728L229.76 128zm314.24 576h395.904l82.304-384H333.44z"
        })
      ]));
    }
  }), shopping_cart_default = _sfc_main237;
  var _sfc_main238 = /* @__PURE__ */ defineComponent({
    name: "ShoppingTrolley",
    __name: "shopping-trolley",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        "xml:space": "preserve",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M368 833c-13.3 0-24.5 4.5-33.5 13.5S321 866.7 321 880s4.5 24.5 13.5 33.5 20.2 13.8 33.5 14.5c13.3-.7 24.5-5.5 33.5-14.5S415 893.3 415 880s-4.5-24.5-13.5-33.5S381.3 833 368 833m439-193c7.4 0 13.8-2.2 19.5-6.5S836 623.3 838 616l112-448c2-10-.2-19.2-6.5-27.5S929 128 919 128H96c-9.3 0-17 3-23 9s-9 13.7-9 23 3 17 9 23 13.7 9 23 9h96v576h672c9.3 0 17-3 23-9s9-13.7 9-23-3-17-9-23-13.7-9-23-9H256v-64zM256 192h622l-96 384H256zm432 641c-13.3 0-24.5 4.5-33.5 13.5S641 866.7 641 880s4.5 24.5 13.5 33.5 20.2 13.8 33.5 14.5c13.3-.7 24.5-5.5 33.5-14.5S735 893.3 735 880s-4.5-24.5-13.5-33.5S701.3 833 688 833"
        })
      ]));
    }
  }), shopping_trolley_default = _sfc_main238;
  var _sfc_main239 = /* @__PURE__ */ defineComponent({
    name: "Smoking",
    __name: "smoking",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M256 576v128h640V576zm-32-64h704a32 32 0 0 1 32 32v192a32 32 0 0 1-32 32H224a32 32 0 0 1-32-32V544a32 32 0 0 1 32-32"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M704 576h64v128h-64zM256 64h64v320h-64zM128 192h64v192h-64zM64 512h64v256H64z"
        })
      ]));
    }
  }), smoking_default = _sfc_main239;
  var _sfc_main240 = /* @__PURE__ */ defineComponent({
    name: "Soccer",
    __name: "soccer",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M418.496 871.04 152.256 604.8c-16.512 94.016-2.368 178.624 42.944 224 44.928 44.928 129.344 58.752 223.296 42.24m72.32-18.176a573.06 573.06 0 0 0 224.832-137.216 573.1 573.1 0 0 0 137.216-224.832L533.888 171.84a578.56 578.56 0 0 0-227.52 138.496A567.7 567.7 0 0 0 170.432 532.48zM871.04 418.496c16.512-93.952 2.688-178.368-42.24-223.296-44.544-44.544-128.704-58.048-222.592-41.536zM149.952 874.048c-112.96-112.96-88.832-408.96 111.168-608.96C461.056 65.152 760.96 36.928 874.048 149.952c113.024 113.024 86.784 411.008-113.152 610.944s-497.92 226.112-610.944 113.152m452.544-497.792 22.656-22.656a32 32 0 0 1 45.248 45.248l-22.656 22.656 45.248 45.248A32 32 0 1 1 647.744 512l-45.248-45.248L557.248 512l45.248 45.248a32 32 0 1 1-45.248 45.248L512 557.248l-45.248 45.248L512 647.744a32 32 0 1 1-45.248 45.248l-45.248-45.248-22.656 22.656a32 32 0 1 1-45.248-45.248l22.656-22.656-45.248-45.248A32 32 0 1 1 376.256 512l45.248 45.248L466.752 512l-45.248-45.248a32 32 0 1 1 45.248-45.248L512 466.752l45.248-45.248L512 376.256a32 32 0 0 1 45.248-45.248z"
        })
      ]));
    }
  }), soccer_default = _sfc_main240;
  var _sfc_main241 = /* @__PURE__ */ defineComponent({
    name: "SoldOut",
    __name: "sold-out",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M704 288h131.072a32 32 0 0 1 31.808 28.8L886.4 512h-64.384l-16-160H704v96a32 32 0 1 1-64 0v-96H384v96a32 32 0 0 1-64 0v-96H217.92l-51.2 512H512v64H131.328a32 32 0 0 1-31.808-35.2l57.6-576a32 32 0 0 1 31.808-28.8H320v-22.336C320 154.688 405.504 64 512 64s192 90.688 192 201.664v22.4zm-64 0v-22.336C640 189.248 582.272 128 512 128s-128 61.248-128 137.664v22.4h256zm201.408 476.16a32 32 0 1 1 45.248 45.184l-128 128a32 32 0 0 1-45.248 0l-128-128a32 32 0 1 1 45.248-45.248L704 837.504V608a32 32 0 1 1 64 0v229.504l73.408-73.408z"
        })
      ]));
    }
  }), sold_out_default = _sfc_main241;
  var _sfc_main242 = /* @__PURE__ */ defineComponent({
    name: "SortDown",
    __name: "sort-down",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M576 96v709.568L333.312 562.816A32 32 0 1 0 288 608l297.408 297.344A32 32 0 0 0 640 882.688V96a32 32 0 0 0-64 0"
        })
      ]));
    }
  }), sort_down_default = _sfc_main242;
  var _sfc_main243 = /* @__PURE__ */ defineComponent({
    name: "SortUp",
    __name: "sort-up",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M384 141.248V928a32 32 0 1 0 64 0V218.56l242.688 242.688A32 32 0 1 0 736 416L438.592 118.656A32 32 0 0 0 384 141.248"
        })
      ]));
    }
  }), sort_up_default = _sfc_main243;
  var _sfc_main244 = /* @__PURE__ */ defineComponent({
    name: "Sort",
    __name: "sort",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M384 96a32 32 0 0 1 64 0v786.752a32 32 0 0 1-54.592 22.656L95.936 608a32 32 0 0 1 0-45.312h.128a32 32 0 0 1 45.184 0L384 805.632zm192 45.248a32 32 0 0 1 54.592-22.592L928.064 416a32 32 0 0 1 0 45.312h-.128a32 32 0 0 1-45.184 0L640 218.496V928a32 32 0 1 1-64 0z"
        })
      ]));
    }
  }), sort_default = _sfc_main244;
  var _sfc_main245 = /* @__PURE__ */ defineComponent({
    name: "Stamp",
    __name: "stamp",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M624 475.968V640h144a128 128 0 0 1 128 128H128a128 128 0 0 1 128-128h144V475.968a192 192 0 1 1 224 0M128 896v-64h768v64z"
        })
      ]));
    }
  }), stamp_default = _sfc_main245;
  var _sfc_main246 = /* @__PURE__ */ defineComponent({
    name: "StarFilled",
    __name: "star-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M313.6 924.48a70.4 70.4 0 0 1-74.152-5.365 70.4 70.4 0 0 1-27.992-68.875l37.888-220.928L88.96 472.96a70.4 70.4 0 0 1 3.788-104.225A70.4 70.4 0 0 1 128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 0 1 100.246-28.595 70.4 70.4 0 0 1 25.962 28.595l99.2 200.96 221.824 32.256a70.4 70.4 0 0 1 39.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 0 1-102.144 74.24L512 820.096l-198.4 104.32z"
        })
      ]));
    }
  }), star_filled_default = _sfc_main246;
  var _sfc_main247 = /* @__PURE__ */ defineComponent({
    name: "Star",
    __name: "star",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m512 747.84 228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72zM313.6 924.48a70.4 70.4 0 0 1-102.144-74.24l37.888-220.928L88.96 472.96A70.4 70.4 0 0 1 128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 0 1 126.208 0l99.2 200.96 221.824 32.256a70.4 70.4 0 0 1 39.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 0 1-102.144 74.24L512 820.096l-198.4 104.32z"
        })
      ]));
    }
  }), star_default = _sfc_main247;
  var _sfc_main248 = /* @__PURE__ */ defineComponent({
    name: "Stopwatch",
    __name: "stopwatch",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("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"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M672 234.88c-39.168 174.464-80 298.624-122.688 372.48-64 110.848-202.624 30.848-138.624-80C453.376 453.44 540.48 355.968 672 234.816z"
        })
      ]));
    }
  }), stopwatch_default = _sfc_main248;
  var _sfc_main249 = /* @__PURE__ */ defineComponent({
    name: "SuccessFilled",
    __name: "success-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.27 38.27 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"
        })
      ]));
    }
  }), success_filled_default = _sfc_main249;
  var _sfc_main250 = /* @__PURE__ */ defineComponent({
    name: "Sugar",
    __name: "sugar",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m801.728 349.184 4.48 4.48a128 128 0 0 1 0 180.992L534.656 806.144a128 128 0 0 1-181.056 0l-4.48-4.48-19.392 109.696a64 64 0 0 1-108.288 34.176L78.464 802.56a64 64 0 0 1 34.176-108.288l109.76-19.328-4.544-4.544a128 128 0 0 1 0-181.056l271.488-271.488a128 128 0 0 1 181.056 0l4.48 4.48 19.392-109.504a64 64 0 0 1 108.352-34.048l142.592 143.04a64 64 0 0 1-34.24 108.16zm-548.8 198.72h447.168v2.24l60.8-60.8a63.8 63.8 0 0 0 18.752-44.416h-426.88l-89.664 89.728a64 64 0 0 0-10.24 13.248zm0 64q4.128 7.104 10.176 13.248l135.744 135.744a64 64 0 0 0 90.496 0L638.4 611.904zm490.048-230.976L625.152 263.104a64 64 0 0 0-90.496 0L416.768 380.928zM123.712 757.312l142.976 142.976 24.32-137.6a25.6 25.6 0 0 0-29.696-29.632zm633.6-633.344-24.32 137.472a25.6 25.6 0 0 0 29.632 29.632l137.28-24.064-142.656-143.04z"
        })
      ]));
    }
  }), sugar_default = _sfc_main250;
  var _sfc_main251 = /* @__PURE__ */ defineComponent({
    name: "SuitcaseLine",
    __name: "suitcase-line",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        "xml:space": "preserve",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M922.5 229.5c-24.32-24.34-54.49-36.84-90.5-37.5H704v-64c-.68-17.98-7.02-32.98-19.01-44.99S658.01 64.66 640 64H384c-17.98.68-32.98 7.02-44.99 19.01S320.66 110 320 128v64H192c-35.99.68-66.16 13.18-90.5 37.5S64.66 283.99 64 320v448c.68 35.99 13.18 66.16 37.5 90.5s54.49 36.84 90.5 37.5h640c35.99-.68 66.16-13.18 90.5-37.5s36.84-54.49 37.5-90.5V320c-.68-35.99-13.18-66.16-37.5-90.5M384 128h256v64H384zM256 832h-64c-17.98-.68-32.98-7.02-44.99-19.01S128.66 786.01 128 768V448h128zm448 0H320V448h384zm192-64c-.68 17.98-7.02 32.98-19.01 44.99S850.01 831.34 832 832h-64V448h128zm0-384H128v-64c.69-17.98 7.02-32.98 19.01-44.99S173.99 256.66 192 256h640c17.98.69 32.98 7.02 44.99 19.01S895.34 301.99 896 320z"
        })
      ]));
    }
  }), suitcase_line_default = _sfc_main251;
  var _sfc_main252 = /* @__PURE__ */ defineComponent({
    name: "Suitcase",
    __name: "suitcase",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M128 384h768v-64a64 64 0 0 0-64-64H192a64 64 0 0 0-64 64zm0 64v320a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V448zm64-256h640a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H192A128 128 0 0 1 64 768V320a128 128 0 0 1 128-128"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M384 128v64h256v-64zm0-64h256a64 64 0 0 1 64 64v64a64 64 0 0 1-64 64H384a64 64 0 0 1-64-64v-64a64 64 0 0 1 64-64"
        })
      ]));
    }
  }), suitcase_default = _sfc_main252;
  var _sfc_main253 = /* @__PURE__ */ defineComponent({
    name: "Sunny",
    __name: "sunny",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 704a192 192 0 1 0 0-384 192 192 0 0 0 0 384m0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512m0-704a32 32 0 0 1 32 32v64a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 768a32 32 0 0 1 32 32v64a32 32 0 1 1-64 0v-64a32 32 0 0 1 32-32M195.2 195.2a32 32 0 0 1 45.248 0l45.248 45.248a32 32 0 1 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248m543.104 543.104a32 32 0 0 1 45.248 0l45.248 45.248a32 32 0 0 1-45.248 45.248l-45.248-45.248a32 32 0 0 1 0-45.248M64 512a32 32 0 0 1 32-32h64a32 32 0 0 1 0 64H96a32 32 0 0 1-32-32m768 0a32 32 0 0 1 32-32h64a32 32 0 1 1 0 64h-64a32 32 0 0 1-32-32M195.2 828.8a32 32 0 0 1 0-45.248l45.248-45.248a32 32 0 0 1 45.248 45.248L240.448 828.8a32 32 0 0 1-45.248 0m543.104-543.104a32 32 0 0 1 0-45.248l45.248-45.248a32 32 0 0 1 45.248 45.248l-45.248 45.248a32 32 0 0 1-45.248 0"
        })
      ]));
    }
  }), sunny_default = _sfc_main253;
  var _sfc_main254 = /* @__PURE__ */ defineComponent({
    name: "Sunrise",
    __name: "sunrise",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M32 768h960a32 32 0 1 1 0 64H32a32 32 0 1 1 0-64m129.408-96a352 352 0 0 1 701.184 0h-64.32a288 288 0 0 0-572.544 0zM512 128a32 32 0 0 1 32 32v96a32 32 0 0 1-64 0v-96a32 32 0 0 1 32-32m407.296 168.704a32 32 0 0 1 0 45.248l-67.84 67.84a32 32 0 1 1-45.248-45.248l67.84-67.84a32 32 0 0 1 45.248 0m-814.592 0a32 32 0 0 1 45.248 0l67.84 67.84a32 32 0 1 1-45.248 45.248l-67.84-67.84a32 32 0 0 1 0-45.248"
        })
      ]));
    }
  }), sunrise_default = _sfc_main254;
  var _sfc_main255 = /* @__PURE__ */ defineComponent({
    name: "Sunset",
    __name: "sunset",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M82.56 640a448 448 0 1 1 858.88 0h-67.2a384 384 0 1 0-724.288 0zM32 704h960q32 0 32 32t-32 32H32q-32 0-32-32t32-32m256 128h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32"
        })
      ]));
    }
  }), sunset_default = _sfc_main255;
  var _sfc_main256 = /* @__PURE__ */ defineComponent({
    name: "SwitchButton",
    __name: "switch-button",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M352 159.872V230.4a352 352 0 1 0 320 0v-70.528A416.128 416.128 0 0 1 512 960a416 416 0 0 1-160-800.128"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 64q32 0 32 32v320q0 32-32 32t-32-32V96q0-32 32-32"
        })
      ]));
    }
  }), switch_button_default = _sfc_main256;
  var _sfc_main257 = /* @__PURE__ */ defineComponent({
    name: "SwitchFilled",
    __name: "switch-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        "xml:space": "preserve",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M247.47 358.4v.04c.07 19.17 7.72 37.53 21.27 51.09s31.92 21.2 51.09 21.27c39.86 0 72.41-32.6 72.41-72.4s-32.6-72.36-72.41-72.36-72.36 32.55-72.36 72.36"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M492.38 128H324.7c-52.16 0-102.19 20.73-139.08 57.61a196.66 196.66 0 0 0-57.61 139.08V698.7c-.01 25.84 5.08 51.42 14.96 75.29s24.36 45.56 42.63 63.83 39.95 32.76 63.82 42.65a196.7 196.7 0 0 0 75.28 14.98h167.68c3.03 0 5.46-2.43 5.46-5.42V133.42c.6-2.99-1.83-5.42-5.46-5.42m-56.11 705.88H324.7c-17.76.13-35.36-3.33-51.75-10.18s-31.22-16.94-43.61-29.67c-25.3-25.35-39.81-59.1-39.81-95.32V324.69c-.13-17.75 3.33-35.35 10.17-51.74a131.7 131.7 0 0 1 29.64-43.62c25.39-25.3 59.14-39.81 95.36-39.81h111.57zm402.12-647.67a196.66 196.66 0 0 0-139.08-57.61H580.48c-3.03 0-4.82 2.43-4.82 4.82v757.16c-.6 2.99 1.79 5.42 5.42 5.42h118.23a196.7 196.7 0 0 0 139.08-57.61A196.66 196.66 0 0 0 896 699.31V325.29a196.7 196.7 0 0 0-57.61-139.08m-111.3 441.92c-42.83 0-77.82-34.99-77.82-77.82s34.98-77.82 77.82-77.82c42.83 0 77.82 34.99 77.82 77.82s-34.99 77.82-77.82 77.82"
        })
      ]));
    }
  }), switch_filled_default = _sfc_main257;
  var _sfc_main258 = /* @__PURE__ */ defineComponent({
    name: "Switch",
    __name: "switch",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M118.656 438.656a32 32 0 0 1 0-45.248L416 96l4.48-3.776A32 32 0 0 1 461.248 96l3.712 4.48a32.064 32.064 0 0 1-3.712 40.832L218.56 384H928a32 32 0 1 1 0 64H141.248a32 32 0 0 1-22.592-9.344M64 608a32 32 0 0 1 32-32h786.752a32 32 0 0 1 22.656 54.592L608 928l-4.48 3.776a32.064 32.064 0 0 1-40.832-49.024L805.632 640H96a32 32 0 0 1-32-32"
        })
      ]));
    }
  }), switch_default = _sfc_main258;
  var _sfc_main259 = /* @__PURE__ */ defineComponent({
    name: "TakeawayBox",
    __name: "takeaway-box",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M832 384H192v448h640zM96 320h832V128H96zm800 64v480a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V384H64a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32h896a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32zM416 512h192a32 32 0 0 1 0 64H416a32 32 0 0 1 0-64"
        })
      ]));
    }
  }), takeaway_box_default = _sfc_main259;
  var _sfc_main260 = /* @__PURE__ */ defineComponent({
    name: "Ticket",
    __name: "ticket",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M640 832H64V640a128 128 0 1 0 0-256V192h576v160h64V192h256v192a128 128 0 1 0 0 256v192H704V672h-64zm0-416v192h64V416z"
        })
      ]));
    }
  }), ticket_default = _sfc_main260;
  var _sfc_main261 = /* @__PURE__ */ defineComponent({
    name: "Tickets",
    __name: "tickets",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M192 128v768h640V128zm-32-64h704a32 32 0 0 1 32 32v832a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m160 448h384v64H320zm0-192h192v64H320zm0 384h384v64H320z"
        })
      ]));
    }
  }), tickets_default = _sfc_main261;
  var _sfc_main262 = /* @__PURE__ */ defineComponent({
    name: "Timer",
    __name: "timer",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 896a320 320 0 1 0 0-640 320 320 0 0 0 0 640m0 64a384 384 0 1 1 0-768 384 384 0 0 1 0 768"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 320a32 32 0 0 1 32 32l-.512 224a32 32 0 1 1-64 0L480 352a32 32 0 0 1 32-32"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M448 576a64 64 0 1 0 128 0 64 64 0 1 0-128 0m96-448v128h-64V128h-96a32 32 0 0 1 0-64h256a32 32 0 1 1 0 64z"
        })
      ]));
    }
  }), timer_default = _sfc_main262;
  var _sfc_main263 = /* @__PURE__ */ defineComponent({
    name: "ToiletPaper",
    __name: "toilet-paper",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M595.2 128H320a192 192 0 0 0-192 192v576h384V352c0-90.496 32.448-171.2 83.2-224M736 64c123.712 0 224 128.96 224 288S859.712 640 736 640H576v320H64V320A256 256 0 0 1 320 64zM576 352v224h160c84.352 0 160-97.28 160-224s-75.648-224-160-224-160 97.28-160 224"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M736 448c-35.328 0-64-43.008-64-96s28.672-96 64-96 64 43.008 64 96-28.672 96-64 96"
        })
      ]));
    }
  }), toilet_paper_default = _sfc_main263;
  var _sfc_main264 = /* @__PURE__ */ defineComponent({
    name: "Tools",
    __name: "tools",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M764.416 254.72a351.7 351.7 0 0 1 86.336 149.184H960v192.064H850.752a351.7 351.7 0 0 1-86.336 149.312l54.72 94.72-166.272 96-54.592-94.72a352.64 352.64 0 0 1-172.48 0L371.136 936l-166.272-96 54.72-94.72a351.7 351.7 0 0 1-86.336-149.312H64v-192h109.248a351.7 351.7 0 0 1 86.336-149.312L204.8 160l166.208-96h.192l54.656 94.592a352.64 352.64 0 0 1 172.48 0L652.8 64h.128L819.2 160l-54.72 94.72zM704 499.968a192 192 0 1 0-384 0 192 192 0 0 0 384 0"
        })
      ]));
    }
  }), tools_default = _sfc_main264;
  var _sfc_main265 = /* @__PURE__ */ defineComponent({
    name: "TopLeft",
    __name: "top-left",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M256 256h416a32 32 0 1 0 0-64H224a32 32 0 0 0-32 32v448a32 32 0 0 0 64 0z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M246.656 201.344a32 32 0 0 0-45.312 45.312l544 544a32 32 0 0 0 45.312-45.312z"
        })
      ]));
    }
  }), top_left_default = _sfc_main265;
  var _sfc_main266 = /* @__PURE__ */ defineComponent({
    name: "TopRight",
    __name: "top-right",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M768 256H353.6a32 32 0 1 1 0-64H800a32 32 0 0 1 32 32v448a32 32 0 0 1-64 0z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M777.344 201.344a32 32 0 0 1 45.312 45.312l-544 544a32 32 0 0 1-45.312-45.312z"
        })
      ]));
    }
  }), top_right_default = _sfc_main266;
  var _sfc_main267 = /* @__PURE__ */ defineComponent({
    name: "Top",
    __name: "top",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M572.235 205.282v600.365a30.118 30.118 0 1 1-60.235 0V205.282L292.382 438.633a28.913 28.913 0 0 1-42.646 0 33.43 33.43 0 0 1 0-45.236l271.058-288.045a28.913 28.913 0 0 1 42.647 0L834.5 393.397a33.43 33.43 0 0 1 0 45.176 28.913 28.913 0 0 1-42.647 0l-219.618-233.23z"
        })
      ]));
    }
  }), top_default = _sfc_main267;
  var _sfc_main268 = /* @__PURE__ */ defineComponent({
    name: "TrendCharts",
    __name: "trend-charts",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M128 896V128h768v768zm291.712-327.296 128 102.4 180.16-201.792-47.744-42.624-139.84 156.608-128-102.4-180.16 201.792 47.744 42.624zM816 352a48 48 0 1 0-96 0 48 48 0 0 0 96 0"
        })
      ]));
    }
  }), trend_charts_default = _sfc_main268;
  var _sfc_main269 = /* @__PURE__ */ defineComponent({
    name: "TrophyBase",
    __name: "trophy-base",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        "xml:space": "preserve",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M918.4 201.6c-6.4-6.4-12.8-9.6-22.4-9.6H768V96c0-9.6-3.2-16-9.6-22.4S745.6 64 736 64H288c-9.6 0-16 3.2-22.4 9.6S256 86.4 256 96v96H128c-9.6 0-16 3.2-22.4 9.6S96 217.6 96 224c3.2 108.8 25.6 185.6 64 224 34.4 34.4 77.56 55.65 127.65 61.99 10.91 20.44 24.78 39.25 41.95 56.41 40.86 40.86 91 65.47 150.4 71.9V768h-96c-9.6 0-16 3.2-22.4 9.6S352 790.4 352 800s3.2 16 9.6 22.4 12.8 9.6 22.4 9.6h256c9.6 0 16-3.2 22.4-9.6s9.6-12.8 9.6-22.4-3.2-16-9.6-22.4-12.8-9.6-22.4-9.6h-96V637.26c59.4-7.71 109.54-30.01 150.4-70.86 17.2-17.2 31.51-36.06 42.81-56.55 48.93-6.51 90.02-27.7 126.79-61.85 38.4-38.4 60.8-112 64-224 0-6.4-3.2-16-9.6-22.4M256 438.4c-19.2-6.4-35.2-19.2-51.2-35.2-22.4-22.4-35.2-70.4-41.6-147.2H256zm390.4 80C608 553.6 566.4 576 512 576s-99.2-19.2-134.4-57.6S320 438.4 320 384V128h384v256q0 81.6-57.6 134.4m172.8-115.2c-16 16-32 25.6-51.2 35.2V256h92.8c-6.4 76.8-19.2 124.8-41.6 147.2M768 896H256c-9.6 0-16 3.2-22.4 9.6S224 918.4 224 928s3.2 16 9.6 22.4 12.8 9.6 22.4 9.6h512c9.6 0 16-3.2 22.4-9.6s9.6-12.8 9.6-22.4-3.2-16-9.6-22.4-12.8-9.6-22.4-9.6"
        })
      ]));
    }
  }), trophy_base_default = _sfc_main269;
  var _sfc_main270 = /* @__PURE__ */ defineComponent({
    name: "Trophy",
    __name: "trophy",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M480 896V702.08A256.26 256.26 0 0 1 264.064 512h-32.64a96 96 0 0 1-91.968-68.416L93.632 290.88a76.8 76.8 0 0 1 73.6-98.88H256V96a32 32 0 0 1 32-32h448a32 32 0 0 1 32 32v96h88.768a76.8 76.8 0 0 1 73.6 98.88L884.48 443.52A96 96 0 0 1 792.576 512h-32.64A256.26 256.26 0 0 1 544 702.08V896h128a32 32 0 1 1 0 64H352a32 32 0 1 1 0-64zm224-448V128H320v320a192 192 0 1 0 384 0m64 0h24.576a32 32 0 0 0 30.656-22.784l45.824-152.768A12.8 12.8 0 0 0 856.768 256H768zm-512 0V256h-88.768a12.8 12.8 0 0 0-12.288 16.448l45.824 152.768A32 32 0 0 0 231.424 448z"
        })
      ]));
    }
  }), trophy_default = _sfc_main270;
  var _sfc_main271 = /* @__PURE__ */ defineComponent({
    name: "TurnOff",
    __name: "turn-off",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M329.956 257.138a254.862 254.862 0 0 0 0 509.724h364.088a254.862 254.862 0 0 0 0-509.724zm0-72.818h364.088a327.68 327.68 0 1 1 0 655.36H329.956a327.68 327.68 0 1 1 0-655.36"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M329.956 621.227a109.227 109.227 0 1 0 0-218.454 109.227 109.227 0 0 0 0 218.454m0 72.817a182.044 182.044 0 1 1 0-364.088 182.044 182.044 0 0 1 0 364.088"
        })
      ]));
    }
  }), turn_off_default = _sfc_main271;
  var _sfc_main272 = /* @__PURE__ */ defineComponent({
    name: "Umbrella",
    __name: "umbrella",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M320 768a32 32 0 1 1 64 0 64 64 0 0 0 128 0V512H64a448 448 0 1 1 896 0H576v256a128 128 0 1 1-256 0m570.688-320a384.128 384.128 0 0 0-757.376 0z"
        })
      ]));
    }
  }), umbrella_default = _sfc_main272;
  var _sfc_main273 = /* @__PURE__ */ defineComponent({
    name: "Unlock",
    __name: "unlock",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M224 448a32 32 0 0 0-32 32v384a32 32 0 0 0 32 32h576a32 32 0 0 0 32-32V480a32 32 0 0 0-32-32zm0-64h576a96 96 0 0 1 96 96v384a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96V480a96 96 0 0 1 96-96"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 544a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V576a32 32 0 0 1 32-32m178.304-295.296A192.064 192.064 0 0 0 320 320v64h352l96 38.4V448H256V320a256 256 0 0 1 493.76-95.104z"
        })
      ]));
    }
  }), unlock_default = _sfc_main273;
  var _sfc_main274 = /* @__PURE__ */ defineComponent({
    name: "UploadFilled",
    __name: "upload-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M544 864V672h128L512 480 352 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"
        })
      ]));
    }
  }), upload_filled_default = _sfc_main274;
  var _sfc_main275 = /* @__PURE__ */ defineComponent({
    name: "Upload",
    __name: "upload",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m384-578.304V704h-64V247.296L237.248 490.048 192 444.8 508.8 128l316.8 316.8-45.312 45.248z"
        })
      ]));
    }
  }), upload_default = _sfc_main275;
  var _sfc_main276 = /* @__PURE__ */ defineComponent({
    name: "UserFilled",
    __name: "user-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M288 320a224 224 0 1 0 448 0 224 224 0 1 0-448 0m544 608H160a32 32 0 0 1-32-32v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 0 1-32 32z"
        })
      ]));
    }
  }), user_filled_default = _sfc_main276;
  var _sfc_main277 = /* @__PURE__ */ defineComponent({
    name: "User",
    __name: "user",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 512a192 192 0 1 0 0-384 192 192 0 0 0 0 384m0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512m320 320v-96a96 96 0 0 0-96-96H288a96 96 0 0 0-96 96v96a32 32 0 1 1-64 0v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 1 1-64 0"
        })
      ]));
    }
  }), user_default = _sfc_main277;
  var _sfc_main278 = /* @__PURE__ */ defineComponent({
    name: "Van",
    __name: "van",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M128.896 736H96a32 32 0 0 1-32-32V224a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32v96h164.544a32 32 0 0 1 31.616 27.136l54.144 352A32 32 0 0 1 922.688 736h-91.52a144 144 0 1 1-286.272 0H415.104a144 144 0 1 1-286.272 0zm23.36-64a143.872 143.872 0 0 1 239.488 0H568.32c17.088-25.6 42.24-45.376 71.744-55.808V256H128v416zm655.488 0h77.632l-19.648-128H704v64.896A144 144 0 0 1 807.744 672m48.128-192-14.72-96H704v96zM688 832a80 80 0 1 0 0-160 80 80 0 0 0 0 160m-416 0a80 80 0 1 0 0-160 80 80 0 0 0 0 160"
        })
      ]));
    }
  }), van_default = _sfc_main278;
  var _sfc_main279 = /* @__PURE__ */ defineComponent({
    name: "VideoCameraFilled",
    __name: "video-camera-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m768 576 192-64v320l-192-64v96a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V480a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32zM192 768v64h384v-64zm192-480a160 160 0 0 1 320 0 160 160 0 0 1-320 0m64 0a96 96 0 1 0 192.064-.064A96 96 0 0 0 448 288m-320 32a128 128 0 1 1 256.064.064A128 128 0 0 1 128 320m64 0a64 64 0 1 0 128 0 64 64 0 0 0-128 0"
        })
      ]));
    }
  }), video_camera_filled_default = _sfc_main279;
  var _sfc_main280 = /* @__PURE__ */ defineComponent({
    name: "VideoCamera",
    __name: "video-camera",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M704 768V256H128v512zm64-416 192-96v512l-192-96v128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V224a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32zm0 71.552v176.896l128 64V359.552zM192 320h192v64H192z"
        })
      ]));
    }
  }), video_camera_default = _sfc_main280;
  var _sfc_main281 = /* @__PURE__ */ defineComponent({
    name: "VideoPause",
    __name: "video-pause",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 832a384 384 0 0 0 0-768 384 384 0 0 0 0 768m-96-544q32 0 32 32v256q0 32-32 32t-32-32V384q0-32 32-32m192 0q32 0 32 32v256q0 32-32 32t-32-32V384q0-32 32-32"
        })
      ]));
    }
  }), video_pause_default = _sfc_main281;
  var _sfc_main282 = /* @__PURE__ */ defineComponent({
    name: "VideoPlay",
    __name: "video-play",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 832a384 384 0 0 0 0-768 384 384 0 0 0 0 768m-48-247.616L668.608 512 464 375.616zm10.624-342.656 249.472 166.336a48 48 0 0 1 0 79.872L474.624 718.272A48 48 0 0 1 400 678.336V345.6a48 48 0 0 1 74.624-39.936z"
        })
      ]));
    }
  }), video_play_default = _sfc_main282;
  var _sfc_main283 = /* @__PURE__ */ defineComponent({
    name: "View",
    __name: "view",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352m0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288m0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.19 160.19 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160"
        })
      ]));
    }
  }), view_default = _sfc_main283;
  var _sfc_main284 = /* @__PURE__ */ defineComponent({
    name: "WalletFilled",
    __name: "wallet-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M688 512a112 112 0 1 0 0 224h208v160H128V352h768v160zm32 160h-32a48 48 0 0 1 0-96h32a48 48 0 0 1 0 96m-80-544 128 160H384z"
        })
      ]));
    }
  }), wallet_filled_default = _sfc_main284;
  var _sfc_main285 = /* @__PURE__ */ defineComponent({
    name: "Wallet",
    __name: "wallet",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M640 288h-64V128H128v704h384v32a32 32 0 0 0 32 32H96a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32h512a32 32 0 0 1 32 32z"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M128 320v512h768V320zm-32-64h832a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V288a32 32 0 0 1 32-32"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M704 640a64 64 0 1 1 0-128 64 64 0 0 1 0 128"
        })
      ]));
    }
  }), wallet_default = _sfc_main285;
  var _sfc_main286 = /* @__PURE__ */ defineComponent({
    name: "WarnTriangleFilled",
    __name: "warn-triangle-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        "xml:space": "preserve",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M928.99 755.83 574.6 203.25c-12.89-20.16-36.76-32.58-62.6-32.58s-49.71 12.43-62.6 32.58L95.01 755.83c-12.91 20.12-12.9 44.91.01 65.03 12.92 20.12 36.78 32.51 62.59 32.49h708.78c25.82.01 49.68-12.37 62.59-32.49s12.92-44.91.01-65.03M554.67 768h-85.33v-85.33h85.33zm0-426.67v298.66h-85.33V341.32z"
        })
      ]));
    }
  }), warn_triangle_filled_default = _sfc_main286;
  var _sfc_main287 = /* @__PURE__ */ defineComponent({
    name: "WarningFilled",
    __name: "warning-filled",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.43 58.43 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.43 58.43 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"
        })
      ]));
    }
  }), warning_filled_default = _sfc_main287;
  var _sfc_main288 = /* @__PURE__ */ defineComponent({
    name: "Warning",
    __name: "warning",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 832a384 384 0 0 0 0-768 384 384 0 0 0 0 768m48-176a48 48 0 1 1-96 0 48 48 0 0 1 96 0m-48-464a32 32 0 0 1 32 32v288a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32"
        })
      ]));
    }
  }), warning_default = _sfc_main288;
  var _sfc_main289 = /* @__PURE__ */ defineComponent({
    name: "Watch",
    __name: "watch",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M512 768a256 256 0 1 0 0-512 256 256 0 0 0 0 512m0 64a320 320 0 1 1 0-640 320 320 0 0 1 0 640"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M480 352a32 32 0 0 1 32 32v160a32 32 0 0 1-64 0V384a32 32 0 0 1 32-32"
        }),
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M480 512h128q32 0 32 32t-32 32H480q-32 0-32-32t32-32m128-256V128H416v128h-64V64h320v192zM416 768v128h192V768h64v192H352V768z"
        })
      ]));
    }
  }), watch_default = _sfc_main289;
  var _sfc_main290 = /* @__PURE__ */ defineComponent({
    name: "Watermelon",
    __name: "watermelon",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "m683.072 600.32-43.648 162.816-61.824-16.512 53.248-198.528L576 493.248l-158.4 158.4-45.248-45.248 158.4-158.4-55.616-55.616-198.528 53.248-16.512-61.824 162.816-43.648L282.752 200A384 384 0 0 0 824 741.248zm231.552 141.056a448 448 0 1 1-632-632z"
        })
      ]));
    }
  }), watermelon_default = _sfc_main290;
  var _sfc_main291 = /* @__PURE__ */ defineComponent({
    name: "WindPower",
    __name: "wind-power",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("path", {
          fill: "currentColor",
          d: "M160 64q32 0 32 32v832q0 32-32 32t-32-32V96q0-32 32-32m416 354.624 128-11.584V168.96l-128-11.52v261.12zm-64 5.824V151.552L320 134.08V160h-64V64l616.704 56.064A96 96 0 0 1 960 215.68v144.64a96 96 0 0 1-87.296 95.616L256 512V224h64v217.92zm256-23.232 98.88-8.96A32 32 0 0 0 896 360.32V215.68a32 32 0 0 0-29.12-31.872l-98.88-8.96z"
        })
      ]));
    }
  }), wind_power_default = _sfc_main291;
  var _sfc_main292 = /* @__PURE__ */ defineComponent({
    name: "ZoomIn",
    __name: "zoom-in",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("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"
        })
      ]));
    }
  }), zoom_in_default = _sfc_main292;
  var _sfc_main293 = /* @__PURE__ */ defineComponent({
    name: "ZoomOut",
    __name: "zoom-out",
    setup(__props) {
      return (_ctx, _cache) => (openBlock(), createElementBlock("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 1024 1024"
      }, [
        createBaseVNode("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"
        })
      ]));
    }
  }), zoom_out_default = _sfc_main293;
  const ElementPlusIconsVue = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
    __proto__: null,
    AddLocation: add_location_default,
    Aim: aim_default,
    AlarmClock: alarm_clock_default,
    Apple: apple_default,
    ArrowDown: arrow_down_default,
    ArrowDownBold: arrow_down_bold_default,
    ArrowLeft: arrow_left_default,
    ArrowLeftBold: arrow_left_bold_default,
    ArrowRight: arrow_right_default,
    ArrowRightBold: arrow_right_bold_default,
    ArrowUp: arrow_up_default,
    ArrowUpBold: arrow_up_bold_default,
    Avatar: avatar_default,
    Back: back_default,
    Baseball: baseball_default,
    Basketball: basketball_default,
    Bell: bell_default,
    BellFilled: bell_filled_default,
    Bicycle: bicycle_default,
    Bottom: bottom_default,
    BottomLeft: bottom_left_default,
    BottomRight: bottom_right_default,
    Bowl: bowl_default,
    Box: box_default,
    Briefcase: briefcase_default,
    Brush: brush_default,
    BrushFilled: brush_filled_default,
    Burger: burger_default,
    Calendar: calendar_default,
    Camera: camera_default,
    CameraFilled: camera_filled_default,
    CaretBottom: caret_bottom_default,
    CaretLeft: caret_left_default,
    CaretRight: caret_right_default,
    CaretTop: caret_top_default,
    Cellphone: cellphone_default,
    ChatDotRound: chat_dot_round_default,
    ChatDotSquare: chat_dot_square_default,
    ChatLineRound: chat_line_round_default,
    ChatLineSquare: chat_line_square_default,
    ChatRound: chat_round_default,
    ChatSquare: chat_square_default,
    Check: check_default,
    Checked: checked_default,
    Cherry: cherry_default,
    Chicken: chicken_default,
    ChromeFilled: chrome_filled_default,
    CircleCheck: circle_check_default,
    CircleCheckFilled: circle_check_filled_default,
    CircleClose: circle_close_default,
    CircleCloseFilled: circle_close_filled_default,
    CirclePlus: circle_plus_default,
    CirclePlusFilled: circle_plus_filled_default,
    Clock: clock_default,
    Close: close_default,
    CloseBold: close_bold_default,
    Cloudy: cloudy_default,
    Coffee: coffee_default,
    CoffeeCup: coffee_cup_default,
    Coin: coin_default,
    ColdDrink: cold_drink_default,
    Collection: collection_default,
    CollectionTag: collection_tag_default,
    Comment: comment_default,
    Compass: compass_default,
    Connection: connection_default,
    Coordinate: coordinate_default,
    CopyDocument: copy_document_default,
    Cpu: cpu_default,
    CreditCard: credit_card_default,
    Crop: crop_default,
    DArrowLeft: d_arrow_left_default,
    DArrowRight: d_arrow_right_default,
    DCaret: d_caret_default,
    DataAnalysis: data_analysis_default,
    DataBoard: data_board_default,
    DataLine: data_line_default,
    Delete: delete_default,
    DeleteFilled: delete_filled_default,
    DeleteLocation: delete_location_default,
    Dessert: dessert_default,
    Discount: discount_default,
    Dish: dish_default,
    DishDot: dish_dot_default,
    Document: document_default,
    DocumentAdd: document_add_default,
    DocumentChecked: document_checked_default,
    DocumentCopy: document_copy_default,
    DocumentDelete: document_delete_default,
    DocumentRemove: document_remove_default,
    Download: download_default,
    Drizzling: drizzling_default,
    Edit: edit_default,
    EditPen: edit_pen_default,
    Eleme: eleme_default,
    ElemeFilled: eleme_filled_default,
    ElementPlus: element_plus_default,
    Expand: expand_default,
    Failed: failed_default,
    Female: female_default,
    Files: files_default,
    Film: film_default,
    Filter: filter_default,
    Finished: finished_default,
    FirstAidKit: first_aid_kit_default,
    Flag: flag_default,
    Fold: fold_default,
    Folder: folder_default,
    FolderAdd: folder_add_default,
    FolderChecked: folder_checked_default,
    FolderDelete: folder_delete_default,
    FolderOpened: folder_opened_default,
    FolderRemove: folder_remove_default,
    Food: food_default,
    Football: football_default,
    ForkSpoon: fork_spoon_default,
    Fries: fries_default,
    FullScreen: full_screen_default,
    Goblet: goblet_default,
    GobletFull: goblet_full_default,
    GobletSquare: goblet_square_default,
    GobletSquareFull: goblet_square_full_default,
    GoldMedal: gold_medal_default,
    Goods: goods_default,
    GoodsFilled: goods_filled_default,
    Grape: grape_default,
    Grid: grid_default,
    Guide: guide_default,
    Handbag: handbag_default,
    Headset: headset_default,
    Help: help_default,
    HelpFilled: help_filled_default,
    Hide: hide_default,
    Histogram: histogram_default,
    HomeFilled: home_filled_default,
    HotWater: hot_water_default,
    House: house_default,
    IceCream: ice_cream_default,
    IceCreamRound: ice_cream_round_default,
    IceCreamSquare: ice_cream_square_default,
    IceDrink: ice_drink_default,
    IceTea: ice_tea_default,
    InfoFilled: info_filled_default,
    Iphone: iphone_default,
    Key: key_default,
    KnifeFork: knife_fork_default,
    Lightning: lightning_default,
    Link: link_default,
    List: list_default,
    Loading: loading_default,
    Location: location_default,
    LocationFilled: location_filled_default,
    LocationInformation: location_information_default,
    Lock: lock_default,
    Lollipop: lollipop_default,
    MagicStick: magic_stick_default,
    Magnet: magnet_default,
    Male: male_default,
    Management: management_default,
    MapLocation: map_location_default,
    Medal: medal_default,
    Memo: memo_default,
    Menu: menu_default,
    Message: message_default,
    MessageBox: message_box_default,
    Mic: mic_default,
    Microphone: microphone_default,
    MilkTea: milk_tea_default,
    Minus: minus_default,
    Money: money_default,
    Monitor: monitor_default,
    Moon: moon_default,
    MoonNight: moon_night_default,
    More: more_default,
    MoreFilled: more_filled_default,
    MostlyCloudy: mostly_cloudy_default,
    Mouse: mouse_default,
    Mug: mug_default,
    Mute: mute_default,
    MuteNotification: mute_notification_default,
    NoSmoking: no_smoking_default,
    Notebook: notebook_default,
    Notification: notification_default,
    Odometer: odometer_default,
    OfficeBuilding: office_building_default,
    Open: open_default,
    Operation: operation_default,
    Opportunity: opportunity_default,
    Orange: orange_default,
    Paperclip: paperclip_default,
    PartlyCloudy: partly_cloudy_default,
    Pear: pear_default,
    Phone: phone_default,
    PhoneFilled: phone_filled_default,
    Picture: picture_default,
    PictureFilled: picture_filled_default,
    PictureRounded: picture_rounded_default,
    PieChart: pie_chart_default,
    Place: place_default,
    Platform: platform_default,
    Plus: plus_default,
    Pointer: pointer_default,
    Position: position_default,
    Postcard: postcard_default,
    Pouring: pouring_default,
    Present: present_default,
    PriceTag: price_tag_default,
    Printer: printer_default,
    Promotion: promotion_default,
    QuartzWatch: quartz_watch_default,
    QuestionFilled: question_filled_default,
    Rank: rank_default,
    Reading: reading_default,
    ReadingLamp: reading_lamp_default,
    Refresh: refresh_default,
    RefreshLeft: refresh_left_default,
    RefreshRight: refresh_right_default,
    Refrigerator: refrigerator_default,
    Remove: remove_default,
    RemoveFilled: remove_filled_default,
    Right: right_default,
    ScaleToOriginal: scale_to_original_default,
    School: school_default,
    Scissor: scissor_default,
    Search: search_default,
    Select: select_default,
    Sell: sell_default,
    SemiSelect: semi_select_default,
    Service: service_default,
    SetUp: set_up_default,
    Setting: setting_default,
    Share: share_default,
    Ship: ship_default,
    Shop: shop_default,
    ShoppingBag: shopping_bag_default,
    ShoppingCart: shopping_cart_default,
    ShoppingCartFull: shopping_cart_full_default,
    ShoppingTrolley: shopping_trolley_default,
    Smoking: smoking_default,
    Soccer: soccer_default,
    SoldOut: sold_out_default,
    Sort: sort_default,
    SortDown: sort_down_default,
    SortUp: sort_up_default,
    Stamp: stamp_default,
    Star: star_default,
    StarFilled: star_filled_default,
    Stopwatch: stopwatch_default,
    SuccessFilled: success_filled_default,
    Sugar: sugar_default,
    Suitcase: suitcase_default,
    SuitcaseLine: suitcase_line_default,
    Sunny: sunny_default,
    Sunrise: sunrise_default,
    Sunset: sunset_default,
    Switch: switch_default,
    SwitchButton: switch_button_default,
    SwitchFilled: switch_filled_default,
    TakeawayBox: takeaway_box_default,
    Ticket: ticket_default,
    Tickets: tickets_default,
    Timer: timer_default,
    ToiletPaper: toilet_paper_default,
    Tools: tools_default,
    Top: top_default,
    TopLeft: top_left_default,
    TopRight: top_right_default,
    TrendCharts: trend_charts_default,
    Trophy: trophy_default,
    TrophyBase: trophy_base_default,
    TurnOff: turn_off_default,
    Umbrella: umbrella_default,
    Unlock: unlock_default,
    Upload: upload_default,
    UploadFilled: upload_filled_default,
    User: user_default,
    UserFilled: user_filled_default,
    Van: van_default,
    VideoCamera: video_camera_default,
    VideoCameraFilled: video_camera_filled_default,
    VideoPause: video_pause_default,
    VideoPlay: video_play_default,
    View: view_default,
    Wallet: wallet_default,
    WalletFilled: wallet_filled_default,
    WarnTriangleFilled: warn_triangle_filled_default,
    Warning: warning_default,
    WarningFilled: warning_filled_default,
    Watch: watch_default,
    Watermelon: watermelon_default,
    WindPower: wind_power_default,
    ZoomIn: zoom_in_default,
    ZoomOut: zoom_out_default
  }, Symbol.toStringTag, { value: "Module" }));
  const iconPropType = definePropType([
    String,
    Object,
    Function
  ]);
  const CloseComponents = {
    Close: close_default
  };
  const TypeComponents = {
    Close: close_default,
    SuccessFilled: success_filled_default,
    InfoFilled: info_filled_default,
    WarningFilled: warning_filled_default,
    CircleCloseFilled: circle_close_filled_default
  };
  const TypeComponentsMap = {
    primary: info_filled_default,
    success: success_filled_default,
    warning: warning_filled_default,
    error: circle_close_filled_default,
    info: info_filled_default
  };
  const ValidateComponentsMap = {
    validating: loading_default,
    success: circle_check_default,
    error: circle_close_default
  };
  const alertEffects = ["light", "dark"];
  const alertProps = buildProps({
    /**
     * @description alert title.
     */
    title: {
      type: String,
      default: ""
    },
    description: {
      type: String,
      default: ""
    },
    /**
     * @description alert type.
     */
    type: {
      type: String,
      values: keysOf(TypeComponentsMap),
      default: "info"
    },
    /**
     * @description whether alert can be dismissed.
     */
    closable: {
      type: Boolean,
      default: true
    },
    /**
     * @description text for replacing x button
     */
    closeText: {
      type: String,
      default: ""
    },
    /**
     * @description whether show icon
     */
    showIcon: Boolean,
    /**
     * @description should content be placed in center.
     */
    center: Boolean,
    effect: {
      type: String,
      values: alertEffects,
      default: "light"
    }
  });
  const alertEmits = {
    close: (evt) => evt instanceof MouseEvent
  };
  const iconProps = buildProps({
    /**
     * @description SVG icon size, size x size
     */
    size: {
      type: definePropType([Number, String])
    },
    /**
     * @description SVG tag's fill attribute
     */
    color: {
      type: String
    }
  });
  var _sfc_main$3l = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElIcon",
      inheritAttrs: false
    },
    __name: "icon",
    props: iconProps,
    setup(__props) {
      const props2 = __props;
      const ns = useNamespace("icon");
      const style = computed(() => {
        const { size, color } = props2;
        const fontSize = addUnit(size);
        if (!fontSize && !color) return {};
        return {
          fontSize,
          "--color": color
        };
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "i",
          mergeProps({
            class: unref(ns).b(),
            style: style.value
          }, _ctx.$attrs),
          [
            renderSlot(_ctx.$slots, "default")
          ],
          16
          /* FULL_PROPS */
        );
      };
    }
  });
  const ElIcon = withInstall(_sfc_main$3l);
  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 || {});
  function isFragment(node) {
    return isVNode(node) && node.type === Fragment;
  }
  function isComment(node) {
    return isVNode(node) && node.type === Comment;
  }
  function isValidElementNode(node) {
    return isVNode(node) && !isFragment(node) && !isComment(node);
  }
  const getNormalizedProps = (node) => {
    if (!isVNode(node)) {
      return {};
    }
    const raw = node.props || {};
    const type = (isVNode(node.type) ? node.type.props : void 0) || {};
    const props2 = {};
    Object.keys(type).forEach((key) => {
      if (hasOwn(type[key], "default")) {
        props2[key] = type[key].default;
      }
    });
    Object.keys(raw).forEach((key) => {
      props2[camelize(key)] = raw[key];
    });
    return props2;
  };
  const flattedChildren = (children) => {
    const vNodes = isArray$1(children) ? children : [children];
    const result = [];
    vNodes.forEach((child) => {
      var _a;
      if (isArray$1(child)) {
        result.push(...flattedChildren(child));
      } else if (isVNode(child) && ((_a = child.component) == null ? void 0 : _a.subTree)) {
        result.push(child, ...flattedChildren(child.component.subTree));
      } else if (isVNode(child) && isArray$1(child.children)) {
        result.push(...flattedChildren(child.children));
      } else if (isVNode(child) && child.shapeFlag === 2) {
        result.push(...flattedChildren(child.type()));
      } else {
        result.push(child);
      }
    });
    return result;
  };
  var _sfc_main$3k = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElAlert"
    },
    __name: "alert",
    props: alertProps,
    emits: alertEmits,
    setup(__props, { emit: __emit }) {
      const { Close } = TypeComponents;
      const props2 = __props;
      const emit2 = __emit;
      const slots = useSlots();
      const ns = useNamespace("alert");
      const visible = ref(true);
      const iconComponent = computed(() => TypeComponentsMap[props2.type]);
      const hasDesc = computed(() => {
        var _a;
        if (props2.description) return true;
        const slotContent = (_a = slots.default) == null ? void 0 : _a.call(slots);
        if (!slotContent) return false;
        const children = flattedChildren(slotContent);
        return children.some((child) => !isComment(child));
      });
      const close2 = (evt) => {
        visible.value = false;
        emit2("close", evt);
      };
      return (_ctx, _cache) => {
        return openBlock(), createBlock(Transition, {
          name: unref(ns).b("fade"),
          persisted: ""
        }, {
          default: withCtx(() => [
            withDirectives(createBaseVNode(
              "div",
              {
                class: normalizeClass([unref(ns).b(), unref(ns).m(__props.type), unref(ns).is("center", __props.center), unref(ns).is(__props.effect)]),
                role: "alert"
              },
              [
                __props.showIcon && (_ctx.$slots.icon || iconComponent.value) ? (openBlock(), createBlock(unref(ElIcon), {
                  key: 0,
                  class: normalizeClass([unref(ns).e("icon"), unref(ns).is("big", hasDesc.value)])
                }, {
                  default: withCtx(() => [
                    renderSlot(_ctx.$slots, "icon", {}, () => [
                      (openBlock(), createBlock(resolveDynamicComponent(iconComponent.value)))
                    ])
                  ]),
                  _: 3
                  /* FORWARDED */
                }, 8, ["class"])) : createCommentVNode("v-if", true),
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass(unref(ns).e("content"))
                  },
                  [
                    __props.title || _ctx.$slots.title ? (openBlock(), createElementBlock(
                      "span",
                      {
                        key: 0,
                        class: normalizeClass([unref(ns).e("title"), { "with-description": hasDesc.value }])
                      },
                      [
                        renderSlot(_ctx.$slots, "title", {}, () => [
                          createTextVNode(
                            toDisplayString(__props.title),
                            1
                            /* TEXT */
                          )
                        ])
                      ],
                      2
                      /* CLASS */
                    )) : createCommentVNode("v-if", true),
                    hasDesc.value ? (openBlock(), createElementBlock(
                      "p",
                      {
                        key: 1,
                        class: normalizeClass(unref(ns).e("description"))
                      },
                      [
                        renderSlot(_ctx.$slots, "default", {}, () => [
                          createTextVNode(
                            toDisplayString(__props.description),
                            1
                            /* TEXT */
                          )
                        ])
                      ],
                      2
                      /* CLASS */
                    )) : createCommentVNode("v-if", true),
                    __props.closable ? (openBlock(), createElementBlock(
                      Fragment,
                      { key: 2 },
                      [
                        __props.closeText ? (openBlock(), createElementBlock(
                          "div",
                          {
                            key: 0,
                            class: normalizeClass([unref(ns).e("close-btn"), unref(ns).is("customed")]),
                            onClick: close2
                          },
                          toDisplayString(__props.closeText),
                          3
                          /* TEXT, CLASS */
                        )) : (openBlock(), createBlock(unref(ElIcon), {
                          key: 1,
                          class: normalizeClass(unref(ns).e("close-btn")),
                          onClick: close2
                        }, {
                          default: withCtx(() => [
                            createVNode(unref(Close))
                          ]),
                          _: 1
                          /* STABLE */
                        }, 8, ["class"]))
                      ],
                      64
                      /* STABLE_FRAGMENT */
                    )) : createCommentVNode("v-if", true)
                  ],
                  2
                  /* CLASS */
                )
              ],
              2
              /* CLASS */
            ), [
              [vShow, visible.value]
            ])
          ]),
          _: 3
          /* FORWARDED */
        }, 8, ["name"]);
      };
    }
  });
  const ElAlert = withInstall(_sfc_main$3k);
  var L = "top", W = "bottom", T$1 = "right", P$1 = "left", me = "auto", Q = [L, W, T$1, P$1], Y$1 = "start", Z = "end", Ye = "clippingParents", je = "viewport", ee = "popper", Ge = "reference", De = Q.reduce(function(e, t) {
    return e.concat([t + "-" + Y$1, t + "-" + Z]);
  }, []), Ee = [].concat(Q, [me]).reduce(function(e, t) {
    return e.concat([t, t + "-" + Y$1, t + "-" + Z]);
  }, []), Je = "beforeRead", Ke = "read", Qe = "afterRead", Ze = "beforeMain", et = "main", tt = "afterMain", nt = "beforeWrite", rt = "write", ot = "afterWrite", it = [Je, Ke, Qe, Ze, et, tt, nt, rt, ot];
  function V(e) {
    return e ? (e.nodeName || "").toLowerCase() : null;
  }
  function B(e) {
    if (e == null) return window;
    if (e.toString() !== "[object Window]") {
      var t = e.ownerDocument;
      return t && t.defaultView || window;
    }
    return e;
  }
  function G(e) {
    var t = B(e).Element;
    return e instanceof t || e instanceof Element;
  }
  function R(e) {
    var t = B(e).HTMLElement;
    return e instanceof t || e instanceof HTMLElement;
  }
  function Ae(e) {
    if (typeof ShadowRoot == "undefined") return false;
    var t = B(e).ShadowRoot;
    return e instanceof t || e instanceof ShadowRoot;
  }
  function Tt(e) {
    var t = e.state;
    Object.keys(t.elements).forEach(function(n) {
      var r = t.styles[n] || {}, o2 = t.attributes[n] || {}, a2 = t.elements[n];
      !R(a2) || !V(a2) || (Object.assign(a2.style, r), Object.keys(o2).forEach(function(c2) {
        var s2 = o2[c2];
        s2 === false ? a2.removeAttribute(c2) : a2.setAttribute(c2, s2 === true ? "" : s2);
      }));
    });
  }
  function Bt(e) {
    var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} };
    return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function() {
      Object.keys(t.elements).forEach(function(r) {
        var o2 = t.elements[r], a2 = t.attributes[r] || {}, c2 = Object.keys(t.styles.hasOwnProperty(r) ? t.styles[r] : n[r]), s2 = c2.reduce(function(i, f2) {
          return i[f2] = "", i;
        }, {});
        !R(o2) || !V(o2) || (Object.assign(o2.style, s2), Object.keys(a2).forEach(function(i) {
          o2.removeAttribute(i);
        }));
      });
    };
  }
  var ke = { name: "applyStyles", enabled: true, phase: "write", fn: Tt, effect: Bt, requires: ["computeStyles"] };
  function C(e) {
    return e.split("-")[0];
  }
  var J = Math.max, ve = Math.min, te = Math.round;
  function Le() {
    var e = navigator.userAgentData;
    return e != null && e.brands && Array.isArray(e.brands) ? e.brands.map(function(t) {
      return t.brand + "/" + t.version;
    }).join(" ") : navigator.userAgent;
  }
  function at() {
    return !/^((?!chrome|android).)*safari/i.test(Le());
  }
  function ne(e, t, n) {
    t === void 0 && (t = false), n === void 0 && (n = false);
    var r = e.getBoundingClientRect(), o2 = 1, a2 = 1;
    t && R(e) && (o2 = e.offsetWidth > 0 && te(r.width) / e.offsetWidth || 1, a2 = e.offsetHeight > 0 && te(r.height) / e.offsetHeight || 1);
    var c2 = G(e) ? B(e) : window, s2 = c2.visualViewport, i = !at() && n, f2 = (r.left + (i && s2 ? s2.offsetLeft : 0)) / o2, u2 = (r.top + (i && s2 ? s2.offsetTop : 0)) / a2, m2 = r.width / o2, h2 = r.height / a2;
    return { width: m2, height: h2, top: u2, right: f2 + m2, bottom: u2 + h2, left: f2, x: f2, y: u2 };
  }
  function Pe(e) {
    var t = ne(e), n = e.offsetWidth, r = e.offsetHeight;
    return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r };
  }
  function st(e, t) {
    var n = t.getRootNode && t.getRootNode();
    if (e.contains(t)) return true;
    if (n && Ae(n)) {
      var r = t;
      do {
        if (r && e.isSameNode(r)) return true;
        r = r.parentNode || r.host;
      } while (r);
    }
    return false;
  }
  function I$1(e) {
    return B(e).getComputedStyle(e);
  }
  function Rt(e) {
    return ["table", "td", "th"].indexOf(V(e)) >= 0;
  }
  function N$1(e) {
    return ((G(e) ? e.ownerDocument : e.document) || window.document).documentElement;
  }
  function ye(e) {
    return V(e) === "html" ? e : e.assignedSlot || e.parentNode || (Ae(e) ? e.host : null) || N$1(e);
  }
  function ft(e) {
    return !R(e) || I$1(e).position === "fixed" ? null : e.offsetParent;
  }
  function Ht(e) {
    var t = /firefox/i.test(Le()), n = /Trident/i.test(Le());
    if (n && R(e)) {
      var r = I$1(e);
      if (r.position === "fixed") return null;
    }
    var o2 = ye(e);
    for (Ae(o2) && (o2 = o2.host); R(o2) && ["html", "body"].indexOf(V(o2)) < 0; ) {
      var a2 = I$1(o2);
      if (a2.transform !== "none" || a2.perspective !== "none" || a2.contain === "paint" || ["transform", "perspective"].indexOf(a2.willChange) !== -1 || t && a2.willChange === "filter" || t && a2.filter && a2.filter !== "none") return o2;
      o2 = o2.parentNode;
    }
    return null;
  }
  function se(e) {
    for (var t = B(e), n = ft(e); n && Rt(n) && I$1(n).position === "static"; ) n = ft(n);
    return n && (V(n) === "html" || V(n) === "body" && I$1(n).position === "static") ? t : n || Ht(e) || t;
  }
  function Me(e) {
    return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y";
  }
  function fe(e, t, n) {
    return J(e, ve(t, n));
  }
  function St(e, t, n) {
    var r = fe(e, t, n);
    return r > n ? n : r;
  }
  function ct() {
    return { top: 0, right: 0, bottom: 0, left: 0 };
  }
  function ut(e) {
    return Object.assign({}, ct(), e);
  }
  function pt(e, t) {
    return t.reduce(function(n, r) {
      return n[r] = e, n;
    }, {});
  }
  var Vt = function(e, t) {
    return e = typeof e == "function" ? e(Object.assign({}, t.rects, { placement: t.placement })) : e, ut(typeof e != "number" ? e : pt(e, Q));
  };
  function Ct(e) {
    var t, n = e.state, r = e.name, o2 = e.options, a2 = n.elements.arrow, c2 = n.modifiersData.popperOffsets, s2 = C(n.placement), i = Me(s2), f2 = [P$1, T$1].indexOf(s2) >= 0, u2 = f2 ? "height" : "width";
    if (!(!a2 || !c2)) {
      var m2 = Vt(o2.padding, n), h2 = Pe(a2), l2 = i === "y" ? L : P$1, g = i === "y" ? W : T$1, p2 = n.rects.reference[u2] + n.rects.reference[i] - c2[i] - n.rects.popper[u2], y = c2[i] - n.rects.reference[i], b2 = se(a2), x2 = b2 ? i === "y" ? b2.clientHeight || 0 : b2.clientWidth || 0 : 0, O2 = p2 / 2 - y / 2, d2 = m2[l2], v2 = x2 - h2[u2] - m2[g], w2 = x2 / 2 - h2[u2] / 2 + O2, $ = fe(d2, w2, v2), j = i;
      n.modifiersData[r] = (t = {}, t[j] = $, t.centerOffset = $ - w2, t);
    }
  }
  function qt(e) {
    var t = e.state, n = e.options, r = n.element, o2 = r === void 0 ? "[data-popper-arrow]" : r;
    o2 != null && (typeof o2 == "string" && (o2 = t.elements.popper.querySelector(o2), !o2) || st(t.elements.popper, o2) && (t.elements.arrow = o2));
  }
  var lt = { name: "arrow", enabled: true, phase: "main", fn: Ct, effect: qt, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] };
  function re(e) {
    return e.split("-")[1];
  }
  var It = { top: "auto", right: "auto", bottom: "auto", left: "auto" };
  function Nt(e, t) {
    var n = e.x, r = e.y, o2 = t.devicePixelRatio || 1;
    return { x: te(n * o2) / o2 || 0, y: te(r * o2) / o2 || 0 };
  }
  function dt(e) {
    var t, n = e.popper, r = e.popperRect, o2 = e.placement, a2 = e.variation, c2 = e.offsets, s2 = e.position, i = e.gpuAcceleration, f2 = e.adaptive, u2 = e.roundOffsets, m2 = e.isFixed, h2 = c2.x, l2 = h2 === void 0 ? 0 : h2, g = c2.y, p2 = g === void 0 ? 0 : g, y = typeof u2 == "function" ? u2({ x: l2, y: p2 }) : { x: l2, y: p2 };
    l2 = y.x, p2 = y.y;
    var b2 = c2.hasOwnProperty("x"), x2 = c2.hasOwnProperty("y"), O2 = P$1, d2 = L, v2 = window;
    if (f2) {
      var w2 = se(n), $ = "clientHeight", j = "clientWidth";
      if (w2 === B(n) && (w2 = N$1(n), I$1(w2).position !== "static" && s2 === "absolute" && ($ = "scrollHeight", j = "scrollWidth")), w2 = w2, o2 === L || (o2 === P$1 || o2 === T$1) && a2 === Z) {
        d2 = W;
        var D2 = m2 && w2 === v2 && v2.visualViewport ? v2.visualViewport.height : w2[$];
        p2 -= D2 - r.height, p2 *= i ? 1 : -1;
      }
      if (o2 === P$1 || (o2 === L || o2 === W) && a2 === Z) {
        O2 = T$1;
        var E2 = m2 && w2 === v2 && v2.visualViewport ? v2.visualViewport.width : w2[j];
        l2 -= E2 - r.width, l2 *= i ? 1 : -1;
      }
    }
    var A2 = Object.assign({ position: s2 }, f2 && It), H = u2 === true ? Nt({ x: l2, y: p2 }, B(n)) : { x: l2, y: p2 };
    if (l2 = H.x, p2 = H.y, i) {
      var k;
      return Object.assign({}, A2, (k = {}, k[d2] = x2 ? "0" : "", k[O2] = b2 ? "0" : "", k.transform = (v2.devicePixelRatio || 1) <= 1 ? "translate(" + l2 + "px, " + p2 + "px)" : "translate3d(" + l2 + "px, " + p2 + "px, 0)", k));
    }
    return Object.assign({}, A2, (t = {}, t[d2] = x2 ? p2 + "px" : "", t[O2] = b2 ? l2 + "px" : "", t.transform = "", t));
  }
  function Ft(e) {
    var t = e.state, n = e.options, r = n.gpuAcceleration, o2 = r === void 0 ? true : r, a2 = n.adaptive, c2 = a2 === void 0 ? true : a2, s2 = n.roundOffsets, i = s2 === void 0 ? true : s2, f2 = { placement: C(t.placement), variation: re(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o2, isFixed: t.options.strategy === "fixed" };
    t.modifiersData.popperOffsets != null && (t.styles.popper = Object.assign({}, t.styles.popper, dt(Object.assign({}, f2, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: c2, roundOffsets: i })))), t.modifiersData.arrow != null && (t.styles.arrow = Object.assign({}, t.styles.arrow, dt(Object.assign({}, f2, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: false, roundOffsets: i })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement });
  }
  var We = { name: "computeStyles", enabled: true, phase: "beforeWrite", fn: Ft, data: {} }, ge = { passive: true };
  function Ut(e) {
    var t = e.state, n = e.instance, r = e.options, o2 = r.scroll, a2 = o2 === void 0 ? true : o2, c2 = r.resize, s2 = c2 === void 0 ? true : c2, i = B(t.elements.popper), f2 = [].concat(t.scrollParents.reference, t.scrollParents.popper);
    return a2 && f2.forEach(function(u2) {
      u2.addEventListener("scroll", n.update, ge);
    }), s2 && i.addEventListener("resize", n.update, ge), function() {
      a2 && f2.forEach(function(u2) {
        u2.removeEventListener("scroll", n.update, ge);
      }), s2 && i.removeEventListener("resize", n.update, ge);
    };
  }
  var Te = { name: "eventListeners", enabled: true, phase: "write", fn: function() {
  }, effect: Ut, data: {} }, _t = { left: "right", right: "left", bottom: "top", top: "bottom" };
  function be(e) {
    return e.replace(/left|right|bottom|top/g, function(t) {
      return _t[t];
    });
  }
  var zt = { start: "end", end: "start" };
  function ht(e) {
    return e.replace(/start|end/g, function(t) {
      return zt[t];
    });
  }
  function Be(e) {
    var t = B(e), n = t.pageXOffset, r = t.pageYOffset;
    return { scrollLeft: n, scrollTop: r };
  }
  function Re(e) {
    return ne(N$1(e)).left + Be(e).scrollLeft;
  }
  function Xt(e, t) {
    var n = B(e), r = N$1(e), o2 = n.visualViewport, a2 = r.clientWidth, c2 = r.clientHeight, s2 = 0, i = 0;
    if (o2) {
      a2 = o2.width, c2 = o2.height;
      var f2 = at();
      (f2 || !f2 && t === "fixed") && (s2 = o2.offsetLeft, i = o2.offsetTop);
    }
    return { width: a2, height: c2, x: s2 + Re(e), y: i };
  }
  function Yt(e) {
    var t, n = N$1(e), r = Be(e), o2 = (t = e.ownerDocument) == null ? void 0 : t.body, a2 = J(n.scrollWidth, n.clientWidth, o2 ? o2.scrollWidth : 0, o2 ? o2.clientWidth : 0), c2 = J(n.scrollHeight, n.clientHeight, o2 ? o2.scrollHeight : 0, o2 ? o2.clientHeight : 0), s2 = -r.scrollLeft + Re(e), i = -r.scrollTop;
    return I$1(o2 || n).direction === "rtl" && (s2 += J(n.clientWidth, o2 ? o2.clientWidth : 0) - a2), { width: a2, height: c2, x: s2, y: i };
  }
  function He(e) {
    var t = I$1(e), n = t.overflow, r = t.overflowX, o2 = t.overflowY;
    return /auto|scroll|overlay|hidden/.test(n + o2 + r);
  }
  function mt(e) {
    return ["html", "body", "#document"].indexOf(V(e)) >= 0 ? e.ownerDocument.body : R(e) && He(e) ? e : mt(ye(e));
  }
  function ce(e, t) {
    var n;
    t === void 0 && (t = []);
    var r = mt(e), o2 = r === ((n = e.ownerDocument) == null ? void 0 : n.body), a2 = B(r), c2 = o2 ? [a2].concat(a2.visualViewport || [], He(r) ? r : []) : r, s2 = t.concat(c2);
    return o2 ? s2 : s2.concat(ce(ye(c2)));
  }
  function Se(e) {
    return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height });
  }
  function Gt(e, t) {
    var n = ne(e, false, t === "fixed");
    return n.top = n.top + e.clientTop, n.left = n.left + e.clientLeft, n.bottom = n.top + e.clientHeight, n.right = n.left + e.clientWidth, n.width = e.clientWidth, n.height = e.clientHeight, n.x = n.left, n.y = n.top, n;
  }
  function vt(e, t, n) {
    return t === je ? Se(Xt(e, n)) : G(t) ? Gt(t, n) : Se(Yt(N$1(e)));
  }
  function Jt(e) {
    var t = ce(ye(e)), n = ["absolute", "fixed"].indexOf(I$1(e).position) >= 0, r = n && R(e) ? se(e) : e;
    return G(r) ? t.filter(function(o2) {
      return G(o2) && st(o2, r) && V(o2) !== "body";
    }) : [];
  }
  function Kt(e, t, n, r) {
    var o2 = t === "clippingParents" ? Jt(e) : [].concat(t), a2 = [].concat(o2, [n]), c2 = a2[0], s2 = a2.reduce(function(i, f2) {
      var u2 = vt(e, f2, r);
      return i.top = J(u2.top, i.top), i.right = ve(u2.right, i.right), i.bottom = ve(u2.bottom, i.bottom), i.left = J(u2.left, i.left), i;
    }, vt(e, c2, r));
    return s2.width = s2.right - s2.left, s2.height = s2.bottom - s2.top, s2.x = s2.left, s2.y = s2.top, s2;
  }
  function yt(e) {
    var t = e.reference, n = e.element, r = e.placement, o2 = r ? C(r) : null, a2 = r ? re(r) : null, c2 = t.x + t.width / 2 - n.width / 2, s2 = t.y + t.height / 2 - n.height / 2, i;
    switch (o2) {
      case L:
        i = { x: c2, y: t.y - n.height };
        break;
      case W:
        i = { x: c2, y: t.y + t.height };
        break;
      case T$1:
        i = { x: t.x + t.width, y: s2 };
        break;
      case P$1:
        i = { x: t.x - n.width, y: s2 };
        break;
      default:
        i = { x: t.x, y: t.y };
    }
    var f2 = o2 ? Me(o2) : null;
    if (f2 != null) {
      var u2 = f2 === "y" ? "height" : "width";
      switch (a2) {
        case Y$1:
          i[f2] = i[f2] - (t[u2] / 2 - n[u2] / 2);
          break;
        case Z:
          i[f2] = i[f2] + (t[u2] / 2 - n[u2] / 2);
          break;
      }
    }
    return i;
  }
  function oe(e, t) {
    t === void 0 && (t = {});
    var n = t, r = n.placement, o2 = r === void 0 ? e.placement : r, a2 = n.strategy, c2 = a2 === void 0 ? e.strategy : a2, s2 = n.boundary, i = s2 === void 0 ? Ye : s2, f2 = n.rootBoundary, u2 = f2 === void 0 ? je : f2, m2 = n.elementContext, h2 = m2 === void 0 ? ee : m2, l2 = n.altBoundary, g = l2 === void 0 ? false : l2, p2 = n.padding, y = p2 === void 0 ? 0 : p2, b2 = ut(typeof y != "number" ? y : pt(y, Q)), x2 = h2 === ee ? Ge : ee, O2 = e.rects.popper, d2 = e.elements[g ? x2 : h2], v2 = Kt(G(d2) ? d2 : d2.contextElement || N$1(e.elements.popper), i, u2, c2), w2 = ne(e.elements.reference), $ = yt({ reference: w2, element: O2, placement: o2 }), j = Se(Object.assign({}, O2, $)), D2 = h2 === ee ? j : w2, E2 = { top: v2.top - D2.top + b2.top, bottom: D2.bottom - v2.bottom + b2.bottom, left: v2.left - D2.left + b2.left, right: D2.right - v2.right + b2.right }, A2 = e.modifiersData.offset;
    if (h2 === ee && A2) {
      var H = A2[o2];
      Object.keys(E2).forEach(function(k) {
        var F2 = [T$1, W].indexOf(k) >= 0 ? 1 : -1, U2 = [L, W].indexOf(k) >= 0 ? "y" : "x";
        E2[k] += H[U2] * F2;
      });
    }
    return E2;
  }
  function Qt(e, t) {
    t === void 0 && (t = {});
    var n = t, r = n.placement, o2 = n.boundary, a2 = n.rootBoundary, c2 = n.padding, s2 = n.flipVariations, i = n.allowedAutoPlacements, f2 = i === void 0 ? Ee : i, u2 = re(r), m2 = u2 ? s2 ? De : De.filter(function(g) {
      return re(g) === u2;
    }) : Q, h2 = m2.filter(function(g) {
      return f2.indexOf(g) >= 0;
    });
    h2.length === 0 && (h2 = m2);
    var l2 = h2.reduce(function(g, p2) {
      return g[p2] = oe(e, { placement: p2, boundary: o2, rootBoundary: a2, padding: c2 })[C(p2)], g;
    }, {});
    return Object.keys(l2).sort(function(g, p2) {
      return l2[g] - l2[p2];
    });
  }
  function Zt(e) {
    if (C(e) === me) return [];
    var t = be(e);
    return [ht(e), t, ht(t)];
  }
  function en(e) {
    var t = e.state, n = e.options, r = e.name;
    if (!t.modifiersData[r]._skip) {
      for (var o2 = n.mainAxis, a2 = o2 === void 0 ? true : o2, c2 = n.altAxis, s2 = c2 === void 0 ? true : c2, i = n.fallbackPlacements, f2 = n.padding, u2 = n.boundary, m2 = n.rootBoundary, h2 = n.altBoundary, l2 = n.flipVariations, g = l2 === void 0 ? true : l2, p2 = n.allowedAutoPlacements, y = t.options.placement, b2 = C(y), x2 = b2 === y, O2 = i || (x2 || !g ? [be(y)] : Zt(y)), d2 = [y].concat(O2).reduce(function(z, q) {
        return z.concat(C(q) === me ? Qt(t, { placement: q, boundary: u2, rootBoundary: m2, padding: f2, flipVariations: g, allowedAutoPlacements: p2 }) : q);
      }, []), v2 = t.rects.reference, w2 = t.rects.popper, $ = /* @__PURE__ */ new Map(), j = true, D2 = d2[0], E2 = 0; E2 < d2.length; E2++) {
        var A2 = d2[E2], H = C(A2), k = re(A2) === Y$1, F2 = [L, W].indexOf(H) >= 0, U2 = F2 ? "width" : "height", M2 = oe(t, { placement: A2, boundary: u2, rootBoundary: m2, altBoundary: h2, padding: f2 }), S2 = F2 ? k ? T$1 : P$1 : k ? W : L;
        v2[U2] > w2[U2] && (S2 = be(S2));
        var ue = be(S2), _2 = [];
        if (a2 && _2.push(M2[H] <= 0), s2 && _2.push(M2[S2] <= 0, M2[ue] <= 0), _2.every(function(z) {
          return z;
        })) {
          D2 = A2, j = false;
          break;
        }
        $.set(A2, _2);
      }
      if (j) for (var pe = g ? 3 : 1, xe = function(z) {
        var q = d2.find(function(de2) {
          var ae = $.get(de2);
          if (ae) return ae.slice(0, z).every(function(K) {
            return K;
          });
        });
        if (q) return D2 = q, "break";
      }, ie = pe; ie > 0; ie--) {
        var le = xe(ie);
        if (le === "break") break;
      }
      t.placement !== D2 && (t.modifiersData[r]._skip = true, t.placement = D2, t.reset = true);
    }
  }
  var gt = { name: "flip", enabled: true, phase: "main", fn: en, requiresIfExists: ["offset"], data: { _skip: false } };
  function bt(e, t, n) {
    return n === void 0 && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x };
  }
  function wt(e) {
    return [L, T$1, W, P$1].some(function(t) {
      return e[t] >= 0;
    });
  }
  function tn(e) {
    var t = e.state, n = e.name, r = t.rects.reference, o2 = t.rects.popper, a2 = t.modifiersData.preventOverflow, c2 = oe(t, { elementContext: "reference" }), s2 = oe(t, { altBoundary: true }), i = bt(c2, r), f2 = bt(s2, o2, a2), u2 = wt(i), m2 = wt(f2);
    t.modifiersData[n] = { referenceClippingOffsets: i, popperEscapeOffsets: f2, isReferenceHidden: u2, hasPopperEscaped: m2 }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": u2, "data-popper-escaped": m2 });
  }
  var xt = { name: "hide", enabled: true, phase: "main", requiresIfExists: ["preventOverflow"], fn: tn };
  function nn(e, t, n) {
    var r = C(e), o2 = [P$1, L].indexOf(r) >= 0 ? -1 : 1, a2 = typeof n == "function" ? n(Object.assign({}, t, { placement: e })) : n, c2 = a2[0], s2 = a2[1];
    return c2 = c2 || 0, s2 = (s2 || 0) * o2, [P$1, T$1].indexOf(r) >= 0 ? { x: s2, y: c2 } : { x: c2, y: s2 };
  }
  function rn(e) {
    var t = e.state, n = e.options, r = e.name, o2 = n.offset, a2 = o2 === void 0 ? [0, 0] : o2, c2 = Ee.reduce(function(u2, m2) {
      return u2[m2] = nn(m2, t.rects, a2), u2;
    }, {}), s2 = c2[t.placement], i = s2.x, f2 = s2.y;
    t.modifiersData.popperOffsets != null && (t.modifiersData.popperOffsets.x += i, t.modifiersData.popperOffsets.y += f2), t.modifiersData[r] = c2;
  }
  var Ot = { name: "offset", enabled: true, phase: "main", requires: ["popperOffsets"], fn: rn };
  function on(e) {
    var t = e.state, n = e.name;
    t.modifiersData[n] = yt({ reference: t.rects.reference, element: t.rects.popper, placement: t.placement });
  }
  var Ve = { name: "popperOffsets", enabled: true, phase: "read", fn: on, data: {} };
  function an(e) {
    return e === "x" ? "y" : "x";
  }
  function sn(e) {
    var t = e.state, n = e.options, r = e.name, o2 = n.mainAxis, a2 = o2 === void 0 ? true : o2, c2 = n.altAxis, s2 = c2 === void 0 ? false : c2, i = n.boundary, f2 = n.rootBoundary, u2 = n.altBoundary, m2 = n.padding, h2 = n.tether, l2 = h2 === void 0 ? true : h2, g = n.tetherOffset, p2 = g === void 0 ? 0 : g, y = oe(t, { boundary: i, rootBoundary: f2, padding: m2, altBoundary: u2 }), b2 = C(t.placement), x2 = re(t.placement), O2 = !x2, d2 = Me(b2), v2 = an(d2), w2 = t.modifiersData.popperOffsets, $ = t.rects.reference, j = t.rects.popper, D2 = typeof p2 == "function" ? p2(Object.assign({}, t.rects, { placement: t.placement })) : p2, E2 = typeof D2 == "number" ? { mainAxis: D2, altAxis: D2 } : Object.assign({ mainAxis: 0, altAxis: 0 }, D2), A2 = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, H = { x: 0, y: 0 };
    if (w2) {
      if (a2) {
        var k, F2 = d2 === "y" ? L : P$1, U2 = d2 === "y" ? W : T$1, M2 = d2 === "y" ? "height" : "width", S2 = w2[d2], ue = S2 + y[F2], _2 = S2 - y[U2], pe = l2 ? -j[M2] / 2 : 0, xe = x2 === Y$1 ? $[M2] : j[M2], ie = x2 === Y$1 ? -j[M2] : -$[M2], le = t.elements.arrow, z = l2 && le ? Pe(le) : { width: 0, height: 0 }, q = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : ct(), de2 = q[F2], ae = q[U2], K = fe(0, $[M2], z[M2]), Et = O2 ? $[M2] / 2 - pe - K - de2 - E2.mainAxis : xe - K - de2 - E2.mainAxis, At = O2 ? -$[M2] / 2 + pe + K + ae + E2.mainAxis : ie + K + ae + E2.mainAxis, Oe = t.elements.arrow && se(t.elements.arrow), kt = Oe ? d2 === "y" ? Oe.clientTop || 0 : Oe.clientLeft || 0 : 0, Ce = (k = A2 == null ? void 0 : A2[d2]) != null ? k : 0, Lt = S2 + Et - Ce - kt, Pt = S2 + At - Ce, qe = fe(l2 ? ve(ue, Lt) : ue, S2, l2 ? J(_2, Pt) : _2);
        w2[d2] = qe, H[d2] = qe - S2;
      }
      if (s2) {
        var Ie, Mt = d2 === "x" ? L : P$1, Wt = d2 === "x" ? W : T$1, X2 = w2[v2], he = v2 === "y" ? "height" : "width", Ne = X2 + y[Mt], Fe = X2 - y[Wt], $e = [L, P$1].indexOf(b2) !== -1, Ue = (Ie = A2 == null ? void 0 : A2[v2]) != null ? Ie : 0, _e = $e ? Ne : X2 - $[he] - j[he] - Ue + E2.altAxis, ze = $e ? X2 + $[he] + j[he] - Ue - E2.altAxis : Fe, Xe = l2 && $e ? St(_e, X2, ze) : fe(l2 ? _e : Ne, X2, l2 ? ze : Fe);
        w2[v2] = Xe, H[v2] = Xe - X2;
      }
      t.modifiersData[r] = H;
    }
  }
  var $t = { name: "preventOverflow", enabled: true, phase: "main", fn: sn, requiresIfExists: ["offset"] };
  function fn(e) {
    return { scrollLeft: e.scrollLeft, scrollTop: e.scrollTop };
  }
  function cn(e) {
    return e === B(e) || !R(e) ? Be(e) : fn(e);
  }
  function un(e) {
    var t = e.getBoundingClientRect(), n = te(t.width) / e.offsetWidth || 1, r = te(t.height) / e.offsetHeight || 1;
    return n !== 1 || r !== 1;
  }
  function pn(e, t, n) {
    n === void 0 && (n = false);
    var r = R(t), o2 = R(t) && un(t), a2 = N$1(t), c2 = ne(e, o2, n), s2 = { scrollLeft: 0, scrollTop: 0 }, i = { x: 0, y: 0 };
    return (r || !r && !n) && ((V(t) !== "body" || He(a2)) && (s2 = cn(t)), R(t) ? (i = ne(t, true), i.x += t.clientLeft, i.y += t.clientTop) : a2 && (i.x = Re(a2))), { x: c2.left + s2.scrollLeft - i.x, y: c2.top + s2.scrollTop - i.y, width: c2.width, height: c2.height };
  }
  function ln(e) {
    var t = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Set(), r = [];
    e.forEach(function(a2) {
      t.set(a2.name, a2);
    });
    function o2(a2) {
      n.add(a2.name);
      var c2 = [].concat(a2.requires || [], a2.requiresIfExists || []);
      c2.forEach(function(s2) {
        if (!n.has(s2)) {
          var i = t.get(s2);
          i && o2(i);
        }
      }), r.push(a2);
    }
    return e.forEach(function(a2) {
      n.has(a2.name) || o2(a2);
    }), r;
  }
  function dn(e) {
    var t = ln(e);
    return it.reduce(function(n, r) {
      return n.concat(t.filter(function(o2) {
        return o2.phase === r;
      }));
    }, []);
  }
  function hn(e) {
    var t;
    return function() {
      return t || (t = new Promise(function(n) {
        Promise.resolve().then(function() {
          t = void 0, n(e());
        });
      })), t;
    };
  }
  function mn(e) {
    var t = e.reduce(function(n, r) {
      var o2 = n[r.name];
      return n[r.name] = o2 ? Object.assign({}, o2, r, { options: Object.assign({}, o2.options, r.options), data: Object.assign({}, o2.data, r.data) }) : r, n;
    }, {});
    return Object.keys(t).map(function(n) {
      return t[n];
    });
  }
  var jt = { placement: "bottom", modifiers: [], strategy: "absolute" };
  function Dt() {
    for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
    return !t.some(function(r) {
      return !(r && typeof r.getBoundingClientRect == "function");
    });
  }
  function we(e) {
    e === void 0 && (e = {});
    var t = e, n = t.defaultModifiers, r = n === void 0 ? [] : n, o2 = t.defaultOptions, a2 = o2 === void 0 ? jt : o2;
    return function(c2, s2, i) {
      i === void 0 && (i = a2);
      var f2 = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, jt, a2), modifiersData: {}, elements: { reference: c2, popper: s2 }, attributes: {}, styles: {} }, u2 = [], m2 = false, h2 = { state: f2, setOptions: function(p2) {
        var y = typeof p2 == "function" ? p2(f2.options) : p2;
        g(), f2.options = Object.assign({}, a2, f2.options, y), f2.scrollParents = { reference: G(c2) ? ce(c2) : c2.contextElement ? ce(c2.contextElement) : [], popper: ce(s2) };
        var b2 = dn(mn([].concat(r, f2.options.modifiers)));
        return f2.orderedModifiers = b2.filter(function(x2) {
          return x2.enabled;
        }), l2(), h2.update();
      }, forceUpdate: function() {
        if (!m2) {
          var p2 = f2.elements, y = p2.reference, b2 = p2.popper;
          if (Dt(y, b2)) {
            f2.rects = { reference: pn(y, se(b2), f2.options.strategy === "fixed"), popper: Pe(b2) }, f2.reset = false, f2.placement = f2.options.placement, f2.orderedModifiers.forEach(function(j) {
              return f2.modifiersData[j.name] = Object.assign({}, j.data);
            });
            for (var x2 = 0; x2 < f2.orderedModifiers.length; x2++) {
              if (f2.reset === true) {
                f2.reset = false, x2 = -1;
                continue;
              }
              var O2 = f2.orderedModifiers[x2], d2 = O2.fn, v2 = O2.options, w2 = v2 === void 0 ? {} : v2, $ = O2.name;
              typeof d2 == "function" && (f2 = d2({ state: f2, options: w2, name: $, instance: h2 }) || f2);
            }
          }
        }
      }, update: hn(function() {
        return new Promise(function(p2) {
          h2.forceUpdate(), p2(f2);
        });
      }), destroy: function() {
        g(), m2 = true;
      } };
      if (!Dt(c2, s2)) return h2;
      h2.setOptions(i).then(function(p2) {
        !m2 && i.onFirstUpdate && i.onFirstUpdate(p2);
      });
      function l2() {
        f2.orderedModifiers.forEach(function(p2) {
          var y = p2.name, b2 = p2.options, x2 = b2 === void 0 ? {} : b2, O2 = p2.effect;
          if (typeof O2 == "function") {
            var d2 = O2({ state: f2, name: y, instance: h2, options: x2 }), v2 = function() {
            };
            u2.push(d2 || v2);
          }
        });
      }
      function g() {
        u2.forEach(function(p2) {
          return p2();
        }), u2 = [];
      }
      return h2;
    };
  }
  we();
  var yn = [Te, Ve, We, ke];
  we({ defaultModifiers: yn });
  var bn = [Te, Ve, We, ke, Ot, gt, $t, lt, xt], wn = we({ defaultModifiers: bn });
  const popperArrowProps = buildProps({
    arrowOffset: {
      type: Number,
      default: 5
    }
  });
  const ariaProps = buildProps({
    /**
     * @description native `aria-label` attribute
     */
    ariaLabel: String,
    /**
     * @description native `aria-orientation` attribute
     */
    ariaOrientation: {
      type: String,
      values: ["horizontal", "vertical", "undefined"]
    },
    /**
     * @description native `aria-controls` attribute
     */
    ariaControls: String
  });
  const useAriaProps = (arias) => {
    return pick(ariaProps, arias);
  };
  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
    },
    /**
     * @description offset of the Tooltip
     */
    offset: {
      type: Number,
      default: 12
    },
    /**
     * @description position of Tooltip
     */
    placement: {
      type: String,
      values: Ee,
      default: "bottom"
    },
    /**
     * @description [popper.js](https://popper.js.org/docs/v2/) parameters
     */
    popperOptions: {
      type: definePropType(Object),
      default: () => ({})
    },
    strategy: {
      type: String,
      values: POSITIONING_STRATEGIES,
      default: "absolute"
    }
  });
  const popperContentProps = buildProps({
    ...popperCoreConfigProps,
    ...popperArrowProps,
    id: String,
    style: {
      type: definePropType([String, Array, Object])
    },
    className: {
      type: definePropType([String, Array, Object])
    },
    effect: {
      type: definePropType(String),
      default: "dark"
    },
    visible: Boolean,
    enterable: {
      type: Boolean,
      default: true
    },
    pure: Boolean,
    focusOnShow: Boolean,
    trapping: Boolean,
    popperClass: {
      type: definePropType([String, Array, Object])
    },
    popperStyle: {
      type: definePropType([String, Array, Object])
    },
    referenceEl: {
      type: definePropType(Object)
    },
    triggerTargetEl: {
      type: definePropType(Object)
    },
    stopPopperMouseEvent: {
      type: Boolean,
      default: true
    },
    virtualTriggering: Boolean,
    zIndex: Number,
    ...useAriaProps(["ariaLabel"]),
    loop: Boolean
  });
  const popperContentEmits = {
    mouseenter: (evt) => evt instanceof MouseEvent,
    mouseleave: (evt) => evt instanceof MouseEvent,
    focus: () => true,
    blur: () => true,
    close: () => true
  };
  function useTimeout() {
    let timeoutHandle;
    const registerTimeout = (fn2, delay) => {
      cancelTimeout();
      timeoutHandle = window.setTimeout(fn2, delay);
    };
    const cancelTimeout = () => window.clearTimeout(timeoutHandle);
    tryOnScopeDispose(() => cancelTimeout());
    return {
      registerTimeout,
      cancelTimeout
    };
  }
  const useDelayedToggleProps = buildProps({
    /**
     * @description delay of appearance, in millisecond, not valid in controlled mode
     */
    showAfter: {
      type: Number,
      default: 0
    },
    /**
     * @description delay of disappear, in millisecond, not valid in controlled mode
     */
    hideAfter: {
      type: Number,
      default: 200
    },
    /**
     * @description disappear automatically, in millisecond, not valid in controlled mode
     */
    autoClose: {
      type: Number,
      default: 0
    }
  });
  const useDelayedToggle = ({
    showAfter,
    hideAfter,
    autoClose,
    open,
    close: close2
  }) => {
    const { registerTimeout } = useTimeout();
    const {
      registerTimeout: registerTimeoutForAutoClose,
      cancelTimeout: cancelTimeoutForAutoClose
    } = useTimeout();
    const onOpen = (event, delay = unref(showAfter)) => {
      registerTimeout(() => {
        open(event);
        const _autoClose = unref(autoClose);
        if (isNumber(_autoClose) && _autoClose > 0) {
          registerTimeoutForAutoClose(() => {
            close2(event);
          }, _autoClose);
        }
      }, delay);
    };
    const onClose = (event, delay = unref(hideAfter)) => {
      cancelTimeoutForAutoClose();
      registerTimeout(() => {
        close2(event);
      }, delay);
    };
    return {
      onOpen,
      onClose
    };
  };
  const useTooltipContentProps = buildProps({
    ...useDelayedToggleProps,
    ...popperContentProps,
    /**
     * @description which element the tooltip CONTENT appends to
     */
    appendTo: {
      type: teleportProps.to.type
    },
    /**
     * @description display content, can be overridden by `slot#content`
     */
    content: {
      type: String,
      default: ""
    },
    /**
     * @description whether `content` is treated as HTML string
     */
    rawContent: Boolean,
    /**
     * @description when tooltip inactive and `persistent` is `false` , popconfirm will be destroyed
     */
    persistent: Boolean,
    // because model toggle prop is generated dynamically
    // so the typing cannot be evaluated by typescript as type:
    // [name]: { type: Boolean, default: null }
    // so we need to declare that again for type checking.
    /**
     * @description visibility of Tooltip
     */
    visible: {
      type: definePropType(Boolean),
      default: null
    },
    /**
     * @description animation name
     */
    transition: String,
    /**
     * @description whether tooltip content is teleported, if `true` it will be teleported to where `append-to` sets
     */
    teleported: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether Tooltip is disabled
     */
    disabled: Boolean,
    ...useAriaProps(["ariaLabel"])
  });
  const mutable = (val) => val;
  const inputProps = buildProps({
    /**
     * @description native input id
     */
    id: {
      type: String,
      default: void 0
    },
    /**
     * @description input box size
     */
    size: useSizeProp,
    /**
     * @description whether to disable
     */
    disabled: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description binding value
     */
    modelValue: {
      type: definePropType([
        String,
        Number,
        Object
      ]),
      default: ""
    },
    /**
     * @description v-model modifiers, reference [Vue modifiers](https://vuejs.org/guide/essentials/forms.html#modifiers)
     */
    modelModifiers: {
      type: definePropType(Object),
      default: () => ({})
    },
    /**
     * @description same as `maxlength` in native input
     */
    maxlength: {
      type: [String, Number]
    },
    /**
     * @description same as `minlength` in native input
     */
    minlength: {
      type: [String, Number]
    },
    /**
     * @description type of input, see more in [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types)
     */
    type: {
      type: definePropType(String),
      default: "text"
    },
    /**
     * @description control the resizability
     */
    resize: {
      type: String,
      values: ["none", "both", "horizontal", "vertical"]
    },
    /**
     * @description whether textarea has an adaptive height
     */
    autosize: {
      type: definePropType([Boolean, Object]),
      default: false
    },
    /**
     * @description native input autocomplete
     */
    autocomplete: {
      type: definePropType(String),
      default: "off"
    },
    /**
     * @description format content
     */
    formatter: {
      type: Function
    },
    /**
     * @description parse content
     */
    parser: {
      type: Function
    },
    /**
     * @description placeholder
     */
    placeholder: {
      type: String
    },
    /**
     * @description native input form
     */
    form: {
      type: String
    },
    /**
     * @description native input readonly
     */
    readonly: Boolean,
    /**
     * @description whether to show clear button
     */
    clearable: Boolean,
    /**
     * @description custom clear icon component
     */
    clearIcon: {
      type: iconPropType,
      default: circle_close_default
    },
    /**
     * @description toggleable password input
     */
    showPassword: Boolean,
    /**
     * @description word count
     */
    showWordLimit: Boolean,
    /**
     * @description word count position, valid when `show-word-limit` is true
     */
    wordLimitPosition: {
      type: String,
      values: ["inside", "outside"],
      default: "inside"
    },
    /**
     * @description suffix icon
     */
    suffixIcon: {
      type: iconPropType
    },
    /**
     * @description prefix icon
     */
    prefixIcon: {
      type: iconPropType
    },
    /**
     * @description container role, internal properties provided for use by the picker component
     */
    containerRole: {
      type: String,
      default: void 0
    },
    /**
     * @description input tabindex
     */
    tabindex: {
      type: [String, Number],
      default: 0
    },
    /**
     * @description whether to trigger form validation
     */
    validateEvent: {
      type: Boolean,
      default: true
    },
    /**
     * @description input or textarea element style
     */
    inputStyle: {
      type: definePropType([Object, Array, String]),
      default: () => mutable({})
    },
    /**
     * @description native input autofocus
     */
    autofocus: Boolean,
    rows: {
      type: Number,
      default: 2
    },
    ...useAriaProps(["ariaLabel"]),
    /**
     * @description native input mode for virtual keyboards
     */
    inputmode: {
      type: definePropType(String),
      default: void 0
    },
    /**
     * @description same as `name` in native input
     */
    name: String
  });
  const inputEmits = {
    [UPDATE_MODEL_EVENT]: (value) => isString(value),
    input: (value) => isString(value),
    change: (value, evt) => isString(value) && (evt instanceof Event || evt === void 0),
    focus: (evt) => evt instanceof FocusEvent,
    blur: (evt) => evt instanceof FocusEvent,
    clear: () => true,
    mouseleave: (evt) => evt instanceof MouseEvent,
    mouseenter: (evt) => evt instanceof MouseEvent,
    // NOTE: when autofill by browser, the keydown event is instanceof Event, not KeyboardEvent
    // relative bug report https://github.com/element-plus/element-plus/issues/6665
    keydown: (evt) => evt instanceof Event,
    compositionstart: (evt) => evt instanceof CompositionEvent,
    compositionupdate: (evt) => evt instanceof CompositionEvent,
    compositionend: (evt) => evt instanceof CompositionEvent
  };
  ({
    clearIcon: markRaw(circle_close_default)
  });
  const autocompleteProps = buildProps({
    ...inputProps,
    /**
     * @description key name of the input suggestion object for display
     */
    valueKey: {
      type: String,
      default: "value"
    },
    /**
     * @description binding value
     */
    modelValue: {
      type: [String, Number],
      default: ""
    },
    /**
     * @description debounce delay when typing, in milliseconds
     */
    debounce: {
      type: Number,
      default: 300
    },
    /**
     * @description placement of the popup menu
     */
    placement: {
      type: definePropType(String),
      values: [
        "top",
        "top-start",
        "top-end",
        "bottom",
        "bottom-start",
        "bottom-end"
      ],
      default: "bottom-start"
    },
    /**
     * @description a method to fetch input suggestions. When suggestions are ready, invoke `callback(data:[])` to return them to Autocomplete
     */
    fetchSuggestions: {
      type: definePropType([Function, Array]),
      default: NOOP
    },
    /**
     * @description custom class name for autocomplete's dropdown
     */
    popperClass: useTooltipContentProps.popperClass,
    /**
     * @description custom style for autocomplete's dropdown
     */
    popperStyle: useTooltipContentProps.popperStyle,
    /**
     * @description whether show suggestions when input focus
     */
    triggerOnFocus: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether to emit a `select` event on enter when there is no autocomplete match
     */
    selectWhenUnmatched: Boolean,
    /**
     * @description whether to hide the loading icon in remote search
     */
    hideLoading: Boolean,
    /**
     * @description whether select dropdown is teleported to the body
     */
    teleported: useTooltipContentProps.teleported,
    /**
     * @description which select dropdown appends to
     */
    appendTo: useTooltipContentProps.appendTo,
    /**
     * @description whether to highlight first item in remote search suggestions by default
     */
    highlightFirstItem: Boolean,
    /**
     * @description whether the width of the dropdown is the same as the input
     */
    fitInputWidth: Boolean,
    /**
     * @description whether keyboard navigation loops from end to start
     */
    loopNavigation: {
      type: Boolean,
      default: true
    }
  });
  const autocompleteEmits = {
    [UPDATE_MODEL_EVENT]: (value) => isString(value) || isNumber(value),
    [INPUT_EVENT]: (value) => isString(value) || isNumber(value),
    [CHANGE_EVENT]: (value) => isString(value) || isNumber(value),
    focus: (evt) => evt instanceof FocusEvent,
    blur: (evt) => evt instanceof FocusEvent,
    clear: () => true,
    select: (item) => isObject$2(item)
  };
  const isFirefox = () => isClient && /firefox/i.test(window.navigator.userAgent);
  const isAndroid = () => isClient && /android/i.test(window.navigator.userAgent);
  let hiddenTextarea = void 0;
  const HIDDEN_STYLE = {
    height: "0",
    visibility: "hidden",
    overflow: isFirefox() ? "" : "hidden",
    position: "absolute",
    "z-index": "-1000",
    top: "0",
    right: "0"
  };
  const CONTEXT_STYLE = [
    "letter-spacing",
    "line-height",
    "padding-top",
    "padding-bottom",
    "font-family",
    "font-weight",
    "font-size",
    "text-rendering",
    "text-transform",
    "width",
    "text-indent",
    "padding-left",
    "padding-right",
    "border-width",
    "box-sizing",
    "word-break"
  ];
  const looseToNumber = (val) => {
    const n = Number.parseFloat(val);
    return Number.isNaN(n) ? val : n;
  };
  function calculateNodeStyling(targetElement) {
    const style = window.getComputedStyle(targetElement);
    const boxSizing = style.getPropertyValue("box-sizing");
    const paddingSize = Number.parseFloat(style.getPropertyValue("padding-bottom")) + Number.parseFloat(style.getPropertyValue("padding-top"));
    const borderSize = Number.parseFloat(style.getPropertyValue("border-bottom-width")) + Number.parseFloat(style.getPropertyValue("border-top-width"));
    const contextStyle = CONTEXT_STYLE.map((name) => [
      name,
      style.getPropertyValue(name)
    ]);
    return { contextStyle, paddingSize, borderSize, boxSizing };
  }
  function calcTextareaHeight(targetElement, minRows = 1, maxRows) {
    var _a, _b;
    if (!hiddenTextarea) {
      hiddenTextarea = document.createElement("textarea");
      ((_a = targetElement.parentNode) != null ? _a : document.body).appendChild(hiddenTextarea);
    }
    const { paddingSize, borderSize, boxSizing, contextStyle } = calculateNodeStyling(targetElement);
    contextStyle.forEach(
      ([key, value]) => hiddenTextarea == null ? void 0 : hiddenTextarea.style.setProperty(key, value)
    );
    Object.entries(HIDDEN_STYLE).forEach(
      ([key, value]) => hiddenTextarea == null ? void 0 : hiddenTextarea.style.setProperty(key, value, "important")
    );
    hiddenTextarea.value = targetElement.value || targetElement.placeholder || "";
    let height = hiddenTextarea.scrollHeight;
    const result = {};
    if (boxSizing === "border-box") {
      height = height + borderSize;
    } else if (boxSizing === "content-box") {
      height = height - paddingSize;
    }
    hiddenTextarea.value = "";
    const singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;
    if (isNumber(minRows)) {
      let minHeight = singleRowHeight * minRows;
      if (boxSizing === "border-box") {
        minHeight = minHeight + paddingSize + borderSize;
      }
      height = Math.max(minHeight, height);
      result.minHeight = `${minHeight}px`;
    }
    if (isNumber(maxRows)) {
      let maxHeight = singleRowHeight * maxRows;
      if (boxSizing === "border-box") {
        maxHeight = maxHeight + paddingSize + borderSize;
      }
      height = Math.min(maxHeight, height);
    }
    result.height = `${height}px`;
    (_b = hiddenTextarea.parentNode) == null ? void 0 : _b.removeChild(hiddenTextarea);
    hiddenTextarea = void 0;
    return result;
  }
  const DEFAULT_EXCLUDE_KEYS = ["class", "style"];
  const LISTENER_PREFIX = /^on[A-Z]/;
  const useAttrs = (params = {}) => {
    const { excludeListeners = false, excludeKeys } = params;
    const allExcludeKeys = computed(() => {
      return ((excludeKeys == null ? void 0 : excludeKeys.value) || []).concat(DEFAULT_EXCLUDE_KEYS);
    });
    const instance = getCurrentInstance();
    if (!instance) {
      return computed(() => ({}));
    }
    return computed(
      () => {
        var _a;
        return fromPairs(
          Object.entries((_a = instance.proxy) == null ? void 0 : _a.$attrs).filter(
            ([key]) => !allExcludeKeys.value.includes(key) && !(excludeListeners && LISTENER_PREFIX.test(key))
          )
        );
      }
    );
  };
  const useProp = (name) => {
    const vm = getCurrentInstance();
    return computed(() => {
      var _a, _b;
      return (_b = (_a = vm == null ? void 0 : vm.proxy) == null ? void 0 : _a.$props) == null ? void 0 : _b[name];
    });
  };
  const formContextKey = /* @__PURE__ */ Symbol("formContextKey");
  const formItemContextKey = /* @__PURE__ */ Symbol("formItemContextKey");
  const useFormSize = (fallback, ignore = {}) => {
    const emptyRef = ref(void 0);
    const size = ignore.prop ? emptyRef : useProp("size");
    const globalConfig2 = ignore.global ? emptyRef : useGlobalSize();
    const form = ignore.form ? { size: void 0 } : inject(formContextKey, void 0);
    const formItem = ignore.formItem ? { size: void 0 } : inject(formItemContextKey, void 0);
    return computed(
      () => size.value || 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 = inject(formContextKey, void 0);
    return computed(() => {
      var _a, _b, _c;
      return (_c = (_b = (_a = disabled.value) != null ? _a : unref(fallback)) != null ? _b : form == null ? void 0 : form.disabled) != null ? _c : false;
    });
  };
  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 isHTMLElement$1 = (e) => {
    if (typeof Element === "undefined") return false;
    return e instanceof Element;
  };
  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.tabIndex < 0 || element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true") {
      return false;
    }
    switch (element.nodeName) {
      case "A": {
        return !!element.href && element.rel !== "ignore";
      }
      case "INPUT": {
        return !(element.type === "hidden" || element.type === "file");
      }
      case "BUTTON":
      case "SELECT":
      case "TEXTAREA": {
        return true;
      }
      default: {
        return false;
      }
    }
  };
  const triggerEvent = function(elm, name, ...opts) {
    let eventName;
    if (name.includes("mouse") || name.includes("click")) {
      eventName = "MouseEvents";
    } else if (name.includes("key")) {
      eventName = "KeyboardEvent";
    } else {
      eventName = "HTMLEvents";
    }
    const evt = document.createEvent(eventName);
    evt.initEvent(name, ...opts);
    elm.dispatchEvent(evt);
    return elm;
  };
  const isLeaf = (el) => !el.getAttribute("aria-owns");
  const getSibling = (el, distance, elClass) => {
    const { parentNode } = el;
    if (!parentNode) return null;
    const siblings = parentNode.querySelectorAll(elClass);
    const index = Array.prototype.indexOf.call(siblings, el);
    return siblings[index + distance] || null;
  };
  const focusElement = (el, options) => {
    if (!el || !el.focus) return;
    let cleanup = false;
    if (isHTMLElement$1(el) && !isFocusable(el) && !el.getAttribute("tabindex")) {
      el.setAttribute("tabindex", "-1");
      cleanup = true;
    }
    el.focus(options);
    if (isHTMLElement$1(el) && cleanup) {
      el.removeAttribute("tabindex");
    }
  };
  const focusNode = (el) => {
    if (!el) return;
    focusElement(el);
    !isLeaf(el) && el.click();
  };
  function useFocusController(target, {
    disabled,
    beforeFocus,
    afterFocus,
    beforeBlur,
    afterBlur
  } = {}) {
    const instance = getCurrentInstance();
    const { emit: emit2 } = instance;
    const wrapperRef = shallowRef();
    const isFocused = ref(false);
    const handleFocus = (event) => {
      const cancelFocus = isFunction$1(beforeFocus) ? beforeFocus(event) : false;
      if (unref(disabled) || isFocused.value || cancelFocus) return;
      isFocused.value = true;
      emit2("focus", event);
      afterFocus == null ? void 0 : afterFocus();
    };
    const handleBlur = (event) => {
      var _a;
      const cancelBlur = isFunction$1(beforeBlur) ? beforeBlur(event) : false;
      if (unref(disabled) || event.relatedTarget && ((_a = wrapperRef.value) == null ? void 0 : _a.contains(event.relatedTarget)) || cancelBlur)
        return;
      isFocused.value = false;
      emit2("blur", event);
      afterBlur == null ? void 0 : afterBlur();
    };
    const handleClick = (event) => {
      var _a, _b;
      if (unref(disabled) || isFocusable(event.target) || ((_a = wrapperRef.value) == null ? void 0 : _a.contains(document.activeElement)) && wrapperRef.value !== document.activeElement)
        return;
      (_b = target.value) == null ? void 0 : _b.focus();
    };
    watch([wrapperRef, () => unref(disabled)], ([el, disabled2]) => {
      if (!el) return;
      if (disabled2) {
        el.removeAttribute("tabindex");
      } else {
        el.setAttribute("tabindex", "-1");
      }
    });
    useEventListener(wrapperRef, "focus", handleFocus, true);
    useEventListener(wrapperRef, "blur", handleBlur, true);
    useEventListener(wrapperRef, "click", handleClick, true);
    return {
      isFocused,
      /** Avoid using wrapperRef and handleFocus/handleBlur together */
      wrapperRef,
      handleFocus,
      handleBlur
    };
  }
  const defaultIdInjection = {
    prefix: Math.floor(Math.random() * 1e4),
    current: 0
  };
  const ID_INJECTION_KEY = /* @__PURE__ */ Symbol("elIdInjection");
  const useIdInjection = () => {
    return getCurrentInstance() ? inject(ID_INJECTION_KEY, defaultIdInjection) : defaultIdInjection;
  };
  const useId = (deterministicId) => {
    const idInjection = useIdInjection();
    const namespace = useGetDerivedNamespace();
    const idRef = computedEager(
      () => unref(deterministicId) || `${namespace.value}-id-${idInjection.prefix}-${idInjection.current++}`
    );
    return idRef;
  };
  const useFormItem = () => {
    const form = inject(formContextKey, void 0);
    const formItem = inject(formItemContextKey, void 0);
    return {
      form,
      formItem
    };
  };
  const useFormItemInputId = (props2, {
    formItemContext,
    disableIdGeneration,
    disableIdManagement
  }) => {
    if (!disableIdGeneration) {
      disableIdGeneration = ref(false);
    }
    if (!disableIdManagement) {
      disableIdManagement = ref(false);
    }
    const instance = getCurrentInstance();
    const inLabel = () => {
      let parent2 = instance == null ? void 0 : instance.parent;
      while (parent2) {
        if (parent2.type.name === "ElFormItem") {
          return false;
        }
        if (parent2.type.name === "ElLabelWrap") {
          return true;
        }
        parent2 = parent2.parent;
      }
      return false;
    };
    const inputId = ref();
    let idUnwatch = void 0;
    const isLabeledByFormItem = computed(() => {
      var _a;
      return !!(!(props2.label || props2.ariaLabel) && formItemContext && formItemContext.inputIds && ((_a = formItemContext.inputIds) == null ? void 0 : _a.length) <= 1);
    });
    onMounted(() => {
      idUnwatch = watch(
        [toRef(props2, "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) && !inLabel()) {
              inputId.value && formItemContext.removeInputId(inputId.value);
              if (!(disableIdManagement == null ? void 0 : disableIdManagement.value) && !disableIdGeneration2 && newId) {
                formItemContext.addInputId(newId);
              }
            }
            inputId.value = newId;
          }
        },
        { immediate: true }
      );
    });
    onUnmounted(() => {
      idUnwatch && idUnwatch();
      if (formItemContext == null ? void 0 : formItemContext.removeInputId) {
        inputId.value && formItemContext.removeInputId(inputId.value);
      }
    });
    return {
      isLabeledByFormItem,
      inputId
    };
  };
  const isKorean = (text) => /([\uAC00-\uD7AF\u3130-\u318F])+/gi.test(text);
  function useComposition({
    afterComposition,
    emit: emit2
  }) {
    const isComposing = ref(false);
    const handleCompositionStart = (event) => {
      emit2 == null ? void 0 : emit2("compositionstart", event);
      isComposing.value = true;
    };
    const handleCompositionUpdate = (event) => {
      var _a;
      emit2 == null ? void 0 : emit2("compositionupdate", event);
      const text = (_a = event.target) == null ? void 0 : _a.value;
      const lastCharacter = text[text.length - 1] || "";
      isComposing.value = !isKorean(lastCharacter);
    };
    const handleCompositionEnd = (event) => {
      emit2 == null ? void 0 : emit2("compositionend", event);
      if (isComposing.value) {
        isComposing.value = false;
        nextTick(() => afterComposition(event));
      }
    };
    const handleComposition = (event) => {
      event.type === "compositionend" ? handleCompositionEnd(event) : handleCompositionUpdate(event);
    };
    return {
      isComposing,
      handleComposition,
      handleCompositionStart,
      handleCompositionUpdate,
      handleCompositionEnd
    };
  }
  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 _hoisted_1$23 = ["id", "name", "minlength", "maxlength", "type", "disabled", "readonly", "autocomplete", "tabindex", "aria-label", "placeholder", "form", "autofocus", "role", "inputmode"];
  const _hoisted_2$1v = ["id", "name", "minlength", "maxlength", "tabindex", "disabled", "readonly", "autocomplete", "aria-label", "placeholder", "form", "autofocus", "rows", "role"];
  const COMPONENT_NAME$n = "ElInput";
  var _sfc_main$3j = /* @__PURE__ */ defineComponent({
    ...{
      name: COMPONENT_NAME$n,
      inheritAttrs: false
    },
    __name: "input",
    props: inputProps,
    emits: inputEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const rawAttrs = useAttrs$1();
      const attrs = useAttrs();
      const slots = useSlots();
      const containerKls = computed(() => [
        props2.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 || props2.prefixIcon,
          [nsInput.m("suffix")]: slots.suffix || props2.suffixIcon || props2.clearable || props2.showPassword,
          [nsInput.bm("suffix", "password-clear")]: showClear.value && showPwdVisible.value,
          [nsInput.b("hidden")]: props2.type === "hidden"
        },
        rawAttrs.class
      ]);
      const wrapperKls = computed(() => [
        nsInput.e("wrapper"),
        nsInput.is("focus", isFocused.value)
      ]);
      const { form: elForm, formItem: elFormItem } = useFormItem();
      const { inputId } = useFormItemInputId(props2, {
        formItemContext: elFormItem
      });
      const inputSize = useFormSize();
      const inputDisabled = useFormDisabled();
      const nsInput = useNamespace("input");
      const nsTextarea = useNamespace("textarea");
      const input = shallowRef();
      const textarea = shallowRef();
      const hovering = ref(false);
      const passwordVisible = ref(false);
      const countStyle = ref();
      const textareaCalcStyle = shallowRef(props2.inputStyle);
      const _ref = computed(() => input.value || textarea.value);
      const { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(
        _ref,
        {
          disabled: inputDisabled,
          afterBlur() {
            var _a;
            if (props2.validateEvent) {
              (_a = elFormItem == null ? void 0 : elFormItem.validate) == null ? void 0 : _a.call(elFormItem, "blur").catch((err) => debugWarn());
            }
          }
        }
      );
      const needStatusIcon = computed(() => {
        var _a;
        return (_a = elForm == null ? void 0 : elForm.statusIcon) != null ? _a : false;
      });
      const validateState = computed(() => (elFormItem == null ? void 0 : elFormItem.validateState) || "");
      const validateIcon = computed(
        () => validateState.value && ValidateComponentsMap[validateState.value]
      );
      const passwordIcon = computed(
        () => passwordVisible.value ? view_default : hide_default
      );
      const containerStyle = computed(() => [
        rawAttrs.style
      ]);
      const textareaStyle = computed(() => [
        props2.inputStyle,
        textareaCalcStyle.value,
        { resize: props2.resize }
      ]);
      const nativeInputValue = computed(
        () => isNil(props2.modelValue) ? "" : String(props2.modelValue)
      );
      const showClear = computed(
        () => props2.clearable && !inputDisabled.value && !props2.readonly && !!nativeInputValue.value && (isFocused.value || hovering.value)
      );
      const showPwdVisible = computed(
        () => props2.showPassword && !inputDisabled.value && !!nativeInputValue.value
      );
      const isWordLimitVisible = computed(
        () => props2.showWordLimit && !!props2.maxlength && (props2.type === "text" || props2.type === "textarea") && !inputDisabled.value && !props2.readonly && !props2.showPassword
      );
      const textLength = computed(() => nativeInputValue.value.length);
      const inputExceed = computed(
        () => (
          // show exceed style if length of initial value greater then maxlength
          !!isWordLimitVisible.value && textLength.value > Number(props2.maxlength)
        )
      );
      const suffixVisible = computed(
        () => !!slots.suffix || !!props2.suffixIcon || showClear.value || props2.showPassword || isWordLimitVisible.value || !!validateState.value && needStatusIcon.value
      );
      const hasModelModifiers = computed(
        () => !!Object.keys(props2.modelModifiers).length
      );
      const [recordCursor, setCursor] = useCursor(input);
      useResizeObserver(textarea, (entries) => {
        onceInitSizeTextarea();
        if (!isWordLimitVisible.value || props2.resize !== "both" && props2.resize !== "horizontal")
          return;
        const entry = entries[0];
        const { width } = entry.contentRect;
        countStyle.value = {
          /** right: 100% - width + padding(22) - right(10) */
          right: `calc(100% - ${width + 22 - 10}px)`
        };
      });
      const resizeTextarea = () => {
        const { type, autosize } = props2;
        if (!isClient || type !== "textarea" || !textarea.value) return;
        if (autosize) {
          const minRows = isObject$2(autosize) ? autosize.minRows : void 0;
          const maxRows = isObject$2(autosize) ? autosize.maxRows : void 0;
          const textareaStyle2 = calcTextareaHeight(textarea.value, minRows, maxRows);
          textareaCalcStyle.value = {
            overflowY: "hidden",
            ...textareaStyle2
          };
          nextTick(() => {
            textarea.value.offsetHeight;
            textareaCalcStyle.value = textareaStyle2;
          });
        } else {
          textareaCalcStyle.value = {
            minHeight: calcTextareaHeight(textarea.value).minHeight
          };
        }
      };
      const createOnceInitResize = (resizeTextarea2) => {
        let isInit = false;
        return () => {
          var _a;
          if (isInit || !props2.autosize) return;
          const isElHidden = ((_a = textarea.value) == null ? void 0 : _a.offsetParent) === null;
          if (!isElHidden) {
            setTimeout(resizeTextarea2);
            isInit = true;
          }
        };
      };
      const onceInitSizeTextarea = createOnceInitResize(resizeTextarea);
      const setNativeInputValue = () => {
        const input2 = _ref.value;
        const formatterValue = props2.formatter ? props2.formatter(nativeInputValue.value) : nativeInputValue.value;
        if (!input2 || input2.value === formatterValue || props2.type === "file") return;
        input2.value = formatterValue;
      };
      const formatValue = (value) => {
        const { trim, number } = props2.modelModifiers;
        if (trim) {
          value = value.trim();
        }
        if (number) {
          value = `${looseToNumber(value)}`;
        }
        if (props2.formatter && props2.parser) {
          value = props2.parser(value);
        }
        return value;
      };
      const handleInput = async (event) => {
        if (isComposing.value) return;
        const { lazy } = props2.modelModifiers;
        let { value } = event.target;
        if (lazy) {
          emit2(INPUT_EVENT, value);
          return;
        }
        value = formatValue(value);
        if (String(value) === nativeInputValue.value) {
          if (props2.formatter) {
            setNativeInputValue();
          }
          return;
        }
        recordCursor();
        emit2(UPDATE_MODEL_EVENT, value);
        emit2(INPUT_EVENT, value);
        await nextTick();
        if (props2.formatter && props2.parser || !hasModelModifiers.value) {
          setNativeInputValue();
        }
        setCursor();
      };
      const handleChange = async (event) => {
        let { value } = event.target;
        value = formatValue(value);
        if (props2.modelModifiers.lazy) {
          emit2(UPDATE_MODEL_EVENT, value);
        }
        emit2(CHANGE_EVENT, value, event);
        await nextTick();
        setNativeInputValue();
      };
      const {
        isComposing,
        handleCompositionStart,
        handleCompositionUpdate,
        handleCompositionEnd
      } = useComposition({ emit: emit2, afterComposition: handleInput });
      const handlePasswordVisible = () => {
        passwordVisible.value = !passwordVisible.value;
      };
      const focus = () => {
        var _a;
        return (_a = _ref.value) == null ? void 0 : _a.focus();
      };
      const blur = () => {
        var _a;
        return (_a = _ref.value) == null ? void 0 : _a.blur();
      };
      const handleMouseLeave = (evt) => {
        hovering.value = false;
        emit2("mouseleave", evt);
      };
      const handleMouseEnter = (evt) => {
        hovering.value = true;
        emit2("mouseenter", evt);
      };
      const handleKeydown = (evt) => {
        emit2("keydown", evt);
      };
      const select = () => {
        var _a;
        (_a = _ref.value) == null ? void 0 : _a.select();
      };
      const clear = () => {
        emit2(UPDATE_MODEL_EVENT, "");
        emit2(CHANGE_EVENT, "");
        emit2("clear");
        emit2(INPUT_EVENT, "");
      };
      watch(
        () => props2.modelValue,
        () => {
          var _a;
          nextTick(() => resizeTextarea());
          if (props2.validateEvent) {
            (_a = elFormItem == null ? void 0 : elFormItem.validate) == null ? void 0 : _a.call(elFormItem, "change").catch((err) => debugWarn());
          }
        }
      );
      watch(nativeInputValue, (newValue) => {
        if (!_ref.value) {
          return;
        }
        const { trim, number } = props2.modelModifiers;
        const elValue = _ref.value.value;
        const displayValue = (number || props2.type === "number") && !/^0\d/.test(elValue) ? `${looseToNumber(elValue)}` : elValue;
        if (displayValue === newValue) {
          return;
        }
        if (document.activeElement === _ref.value && _ref.value.type !== "range") {
          if (trim && displayValue.trim() === newValue) {
            return;
          }
        }
        setNativeInputValue();
      });
      watch(
        () => props2.type,
        async () => {
          await nextTick();
          setNativeInputValue();
          resizeTextarea();
        }
      );
      onMounted(() => {
        if (!props2.formatter && props2.parser) ;
        setNativeInputValue();
        nextTick(resizeTextarea);
      });
      __expose({
        /** @description HTML input element */
        input,
        /** @description HTML textarea element */
        textarea,
        /** @description HTML element, input or textarea */
        ref: _ref,
        /** @description style of textarea. */
        textareaStyle,
        /** @description from props (used on unit test) */
        autosize: toRef(props2, "autosize"),
        /** @description is input composing */
        isComposing,
        /** @description HTML input element native method */
        focus,
        /** @description HTML input element native method */
        blur,
        /** @description HTML input element native method */
        select,
        /** @description clear input value */
        clear,
        /** @description resize textarea. */
        resizeTextarea
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass([
              containerKls.value,
              {
                [unref(nsInput).bm("group", "append")]: _ctx.$slots.append,
                [unref(nsInput).bm("group", "prepend")]: _ctx.$slots.prepend
              }
            ]),
            style: normalizeStyle(containerStyle.value),
            onMouseenter: handleMouseEnter,
            onMouseleave: handleMouseLeave
          },
          [
            createCommentVNode(" input "),
            __props.type !== "textarea" ? (openBlock(), createElementBlock(
              Fragment,
              { key: 0 },
              [
                createCommentVNode(" prepend slot "),
                _ctx.$slots.prepend ? (openBlock(), createElementBlock(
                  "div",
                  {
                    key: 0,
                    class: normalizeClass(unref(nsInput).be("group", "prepend"))
                  },
                  [
                    renderSlot(_ctx.$slots, "prepend")
                  ],
                  2
                  /* CLASS */
                )) : createCommentVNode("v-if", true),
                createBaseVNode(
                  "div",
                  {
                    ref_key: "wrapperRef",
                    ref: wrapperRef,
                    class: normalizeClass(wrapperKls.value)
                  },
                  [
                    createCommentVNode(" prefix slot "),
                    _ctx.$slots.prefix || __props.prefixIcon ? (openBlock(), createElementBlock(
                      "span",
                      {
                        key: 0,
                        class: normalizeClass(unref(nsInput).e("prefix"))
                      },
                      [
                        createBaseVNode(
                          "span",
                          {
                            class: normalizeClass(unref(nsInput).e("prefix-inner"))
                          },
                          [
                            renderSlot(_ctx.$slots, "prefix"),
                            __props.prefixIcon ? (openBlock(), createBlock(unref(ElIcon), {
                              key: 0,
                              class: normalizeClass(unref(nsInput).e("icon"))
                            }, {
                              default: withCtx(() => [
                                (openBlock(), createBlock(resolveDynamicComponent(__props.prefixIcon)))
                              ]),
                              _: 1
                              /* STABLE */
                            }, 8, ["class"])) : createCommentVNode("v-if", true)
                          ],
                          2
                          /* CLASS */
                        )
                      ],
                      2
                      /* CLASS */
                    )) : createCommentVNode("v-if", true),
                    createBaseVNode("input", mergeProps({
                      id: unref(inputId),
                      ref_key: "input",
                      ref: input,
                      class: unref(nsInput).e("inner")
                    }, unref(attrs), {
                      name: __props.name,
                      minlength: __props.minlength,
                      maxlength: __props.maxlength,
                      type: __props.showPassword ? passwordVisible.value ? "text" : "password" : __props.type,
                      disabled: unref(inputDisabled),
                      readonly: __props.readonly,
                      autocomplete: __props.autocomplete,
                      tabindex: __props.tabindex,
                      "aria-label": __props.ariaLabel,
                      placeholder: __props.placeholder,
                      style: __props.inputStyle,
                      form: __props.form,
                      autofocus: __props.autofocus,
                      role: __props.containerRole,
                      inputmode: __props.inputmode,
                      onCompositionstart: _cache[0] || (_cache[0] = //@ts-ignore
                      (...args) => unref(handleCompositionStart) && unref(handleCompositionStart)(...args)),
                      onCompositionupdate: _cache[1] || (_cache[1] = //@ts-ignore
                      (...args) => unref(handleCompositionUpdate) && unref(handleCompositionUpdate)(...args)),
                      onCompositionend: _cache[2] || (_cache[2] = //@ts-ignore
                      (...args) => unref(handleCompositionEnd) && unref(handleCompositionEnd)(...args)),
                      onInput: handleInput,
                      onChange: handleChange,
                      onKeydown: handleKeydown
                    }), null, 16, _hoisted_1$23),
                    createCommentVNode(" suffix slot "),
                    suffixVisible.value ? (openBlock(), createElementBlock(
                      "span",
                      {
                        key: 1,
                        class: normalizeClass(unref(nsInput).e("suffix"))
                      },
                      [
                        createBaseVNode(
                          "span",
                          {
                            class: normalizeClass(unref(nsInput).e("suffix-inner"))
                          },
                          [
                            !showClear.value || !showPwdVisible.value || !isWordLimitVisible.value ? (openBlock(), createElementBlock(
                              Fragment,
                              { key: 0 },
                              [
                                renderSlot(_ctx.$slots, "suffix"),
                                __props.suffixIcon ? (openBlock(), createBlock(unref(ElIcon), {
                                  key: 0,
                                  class: normalizeClass(unref(nsInput).e("icon"))
                                }, {
                                  default: withCtx(() => [
                                    (openBlock(), createBlock(resolveDynamicComponent(__props.suffixIcon)))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                }, 8, ["class"])) : createCommentVNode("v-if", true)
                              ],
                              64
                              /* STABLE_FRAGMENT */
                            )) : createCommentVNode("v-if", true),
                            showClear.value ? (openBlock(), createBlock(unref(ElIcon), {
                              key: 1,
                              class: normalizeClass([unref(nsInput).e("icon"), unref(nsInput).e("clear")]),
                              onMousedown: withModifiers(unref(NOOP), ["prevent"]),
                              onClick: clear
                            }, {
                              default: withCtx(() => [
                                (openBlock(), createBlock(resolveDynamicComponent(__props.clearIcon)))
                              ]),
                              _: 1
                              /* STABLE */
                            }, 8, ["class", "onMousedown"])) : createCommentVNode("v-if", true),
                            showPwdVisible.value ? (openBlock(), createBlock(unref(ElIcon), {
                              key: 2,
                              class: normalizeClass([unref(nsInput).e("icon"), unref(nsInput).e("password")]),
                              onClick: handlePasswordVisible,
                              onMousedown: withModifiers(unref(NOOP), ["prevent"]),
                              onMouseup: withModifiers(unref(NOOP), ["prevent"])
                            }, {
                              default: withCtx(() => [
                                (openBlock(), createBlock(resolveDynamicComponent(passwordIcon.value)))
                              ]),
                              _: 1
                              /* STABLE */
                            }, 8, ["class", "onMousedown", "onMouseup"])) : createCommentVNode("v-if", true),
                            isWordLimitVisible.value ? (openBlock(), createElementBlock(
                              "span",
                              {
                                key: 3,
                                class: normalizeClass([
                                  unref(nsInput).e("count"),
                                  unref(nsInput).is("outside", __props.wordLimitPosition === "outside")
                                ])
                              },
                              [
                                createBaseVNode(
                                  "span",
                                  {
                                    class: normalizeClass(unref(nsInput).e("count-inner"))
                                  },
                                  toDisplayString(textLength.value) + " / " + toDisplayString(__props.maxlength),
                                  3
                                  /* TEXT, CLASS */
                                )
                              ],
                              2
                              /* CLASS */
                            )) : createCommentVNode("v-if", true),
                            validateState.value && validateIcon.value && needStatusIcon.value ? (openBlock(), createBlock(unref(ElIcon), {
                              key: 4,
                              class: normalizeClass([
                                unref(nsInput).e("icon"),
                                unref(nsInput).e("validateIcon"),
                                unref(nsInput).is("loading", validateState.value === "validating")
                              ])
                            }, {
                              default: withCtx(() => [
                                (openBlock(), createBlock(resolveDynamicComponent(validateIcon.value)))
                              ]),
                              _: 1
                              /* STABLE */
                            }, 8, ["class"])) : createCommentVNode("v-if", true)
                          ],
                          2
                          /* CLASS */
                        )
                      ],
                      2
                      /* CLASS */
                    )) : createCommentVNode("v-if", true)
                  ],
                  2
                  /* CLASS */
                ),
                createCommentVNode(" append slot "),
                _ctx.$slots.append ? (openBlock(), createElementBlock(
                  "div",
                  {
                    key: 1,
                    class: normalizeClass(unref(nsInput).be("group", "append"))
                  },
                  [
                    renderSlot(_ctx.$slots, "append")
                  ],
                  2
                  /* CLASS */
                )) : createCommentVNode("v-if", true)
              ],
              64
              /* STABLE_FRAGMENT */
            )) : (openBlock(), createElementBlock(
              Fragment,
              { key: 1 },
              [
                createCommentVNode(" textarea "),
                createBaseVNode("textarea", mergeProps({
                  id: unref(inputId),
                  ref_key: "textarea",
                  ref: textarea,
                  class: [unref(nsTextarea).e("inner"), unref(nsInput).is("focus", unref(isFocused))]
                }, unref(attrs), {
                  name: __props.name,
                  minlength: __props.minlength,
                  maxlength: __props.maxlength,
                  tabindex: __props.tabindex,
                  disabled: unref(inputDisabled),
                  readonly: __props.readonly,
                  autocomplete: __props.autocomplete,
                  style: textareaStyle.value,
                  "aria-label": __props.ariaLabel,
                  placeholder: __props.placeholder,
                  form: __props.form,
                  autofocus: __props.autofocus,
                  rows: __props.rows,
                  role: __props.containerRole,
                  onCompositionstart: _cache[3] || (_cache[3] = //@ts-ignore
                  (...args) => unref(handleCompositionStart) && unref(handleCompositionStart)(...args)),
                  onCompositionupdate: _cache[4] || (_cache[4] = //@ts-ignore
                  (...args) => unref(handleCompositionUpdate) && unref(handleCompositionUpdate)(...args)),
                  onCompositionend: _cache[5] || (_cache[5] = //@ts-ignore
                  (...args) => unref(handleCompositionEnd) && unref(handleCompositionEnd)(...args)),
                  onInput: handleInput,
                  onFocus: _cache[6] || (_cache[6] = //@ts-ignore
                  (...args) => unref(handleFocus) && unref(handleFocus)(...args)),
                  onBlur: _cache[7] || (_cache[7] = //@ts-ignore
                  (...args) => unref(handleBlur) && unref(handleBlur)(...args)),
                  onChange: handleChange,
                  onKeydown: handleKeydown
                }), null, 16, _hoisted_2$1v),
                isWordLimitVisible.value ? (openBlock(), createElementBlock(
                  "span",
                  {
                    key: 0,
                    style: normalizeStyle(countStyle.value),
                    class: normalizeClass([
                      unref(nsInput).e("count"),
                      unref(nsInput).is("outside", __props.wordLimitPosition === "outside")
                    ])
                  },
                  toDisplayString(textLength.value) + " / " + toDisplayString(__props.maxlength),
                  7
                  /* TEXT, CLASS, STYLE */
                )) : createCommentVNode("v-if", true)
              ],
              64
              /* STABLE_FRAGMENT */
            ))
          ],
          38
          /* CLASS, STYLE, NEED_HYDRATION */
        );
      };
    }
  });
  const ElInput = withInstall(_sfc_main$3j);
  const scrollbarProps = buildProps({
    /**
     * @description trigger distance(px)
     */
    distance: {
      type: Number,
      default: 0
    },
    /**
     * @description height of scrollbar
     */
    height: {
      type: [String, Number],
      default: ""
    },
    /**
     * @description max height of scrollbar
     */
    maxHeight: {
      type: [String, Number],
      default: ""
    },
    /**
     * @description whether to use the native scrollbar
     */
    native: Boolean,
    /**
     * @description style of wrap
     */
    wrapStyle: {
      type: definePropType([String, Object, Array]),
      default: ""
    },
    /**
     * @description class of wrap
     */
    wrapClass: {
      type: [String, Array],
      default: ""
    },
    /**
     * @description class of view
     */
    viewClass: {
      type: [String, Array],
      default: ""
    },
    /**
     * @description style of view
     */
    viewStyle: {
      type: [String, Array, Object],
      default: ""
    },
    /**
     * @description do not respond to container size changes, if the container size does not change, it is better to set it to optimize performance
     */
    noresize: Boolean,
    // 如果 container 尺寸不会发生变化，最好设置它可以优化性能
    /**
     * @description element tag of the view
     */
    tag: {
      type: String,
      default: "div"
    },
    /**
     * @description always show
     */
    always: Boolean,
    /**
     * @description minimum size of scrollbar
     */
    minSize: {
      type: Number,
      default: 20
    },
    /**
     * @description Wrap tabindex
     */
    tabindex: {
      type: [String, Number],
      default: void 0
    },
    /**
     * @description id of view
     */
    id: String,
    /**
     * @description role of view
     */
    role: String,
    ...useAriaProps(["ariaLabel", "ariaOrientation"])
  });
  const scrollbarEmits = {
    "end-reached": (direction2) => ["left", "right", "top", "bottom"].includes(direction2),
    scroll: ({
      scrollTop,
      scrollLeft
    }) => [scrollTop, scrollLeft].every(isNumber)
  };
  const barProps = buildProps({
    always: {
      type: Boolean,
      default: true
    },
    minSize: {
      type: Number,
      required: true
    }
  });
  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$1 = ({
    move,
    size,
    bar
  }) => ({
    [bar.size]: size,
    transform: `translate${bar.axis}(${move}%)`
  });
  const thumbProps = buildProps({
    vertical: Boolean,
    size: String,
    move: Number,
    ratio: {
      type: Number,
      required: true
    },
    always: Boolean
  });
  const scrollbarContextKey = /* @__PURE__ */ Symbol(
    "scrollbarContextKey"
  );
  const COMPONENT_NAME$m = "Thumb";
  var _sfc_main$3i = /* @__PURE__ */ defineComponent({
    __name: "thumb",
    props: thumbProps,
    setup(__props) {
      const props2 = __props;
      const scrollbar = inject(scrollbarContextKey);
      const ns = useNamespace("scrollbar");
      if (!scrollbar) throwError(COMPONENT_NAME$m, "can not inject scrollbar context");
      const instance = ref();
      const thumb = ref();
      const thumbState = ref({});
      const visible = ref(false);
      let cursorDown = false;
      let cursorLeave = false;
      let baseScrollHeight = 0;
      let baseScrollWidth = 0;
      let originalOnSelectStart = isClient ? document.onselectstart : null;
      const bar = computed(() => BAR_MAP[props2.vertical ? "vertical" : "horizontal"]);
      const thumbStyle = computed(
        () => renderThumbStyle$1({
          size: props2.size,
          move: props2.move,
          bar: bar.value
        })
      );
      const offsetRatio = computed(
        () => (
          // offsetRatioX = original width of thumb / current width of thumb / ratioX
          // offsetRatioY = original height of thumb / current height of thumb / ratioY
          // instance height = wrap height - GAP
          instance.value[bar.value.offset] ** 2 / scrollbar.wrapElement[bar.value.scrollSize] / props2.ratio / thumb.value[bar.value.offset]
        )
      );
      const clickThumbHandler = (e) => {
        var _a;
        e.stopPropagation();
        if (e.ctrlKey || [1, 2].includes(e.button)) return;
        (_a = window.getSelection()) == null ? void 0 : _a.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 offset2 = Math.abs(
          e.target.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]
        );
        const thumbHalf = thumb.value[bar.value.offset] / 2;
        const thumbPositionPercentage = (offset2 - 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;
        baseScrollHeight = scrollbar.wrapElement.scrollHeight;
        baseScrollWidth = scrollbar.wrapElement.scrollWidth;
        document.addEventListener("mousemove", mouseMoveDocumentHandler);
        document.addEventListener("mouseup", mouseUpDocumentHandler);
        originalOnSelectStart = document.onselectstart;
        document.onselectstart = () => false;
      };
      const mouseMoveDocumentHandler = (e) => {
        if (!instance.value || !thumb.value) return;
        if (cursorDown === false) return;
        const prevPage = thumbState.value[bar.value.axis];
        if (!prevPage) return;
        const offset2 = (instance.value.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]) * -1;
        const thumbClickPosition = thumb.value[bar.value.offset] - prevPage;
        const thumbPositionPercentage = (offset2 - thumbClickPosition) * 100 * offsetRatio.value / instance.value[bar.value.offset];
        if (bar.value.scroll === "scrollLeft") {
          scrollbar.wrapElement[bar.value.scroll] = thumbPositionPercentage * baseScrollWidth / 100;
        } else {
          scrollbar.wrapElement[bar.value.scroll] = thumbPositionPercentage * baseScrollHeight / 100;
        }
      };
      const mouseUpDocumentHandler = () => {
        cursorDown = false;
        thumbState.value[bar.value.axis] = 0;
        document.removeEventListener("mousemove", mouseMoveDocumentHandler);
        document.removeEventListener("mouseup", mouseUpDocumentHandler);
        restoreOnselectstart();
        if (cursorLeave) visible.value = false;
      };
      const mouseMoveScrollbarHandler = () => {
        cursorLeave = false;
        visible.value = !!props2.size;
      };
      const mouseLeaveScrollbarHandler = () => {
        cursorLeave = true;
        visible.value = cursorDown;
      };
      onBeforeUnmount(() => {
        restoreOnselectstart();
        document.removeEventListener("mouseup", mouseUpDocumentHandler);
      });
      const restoreOnselectstart = () => {
        if (document.onselectstart !== originalOnSelectStart)
          document.onselectstart = originalOnSelectStart;
      };
      useEventListener(
        toRef(scrollbar, "scrollbarElement"),
        "mousemove",
        mouseMoveScrollbarHandler
      );
      useEventListener(
        toRef(scrollbar, "scrollbarElement"),
        "mouseleave",
        mouseLeaveScrollbarHandler
      );
      return (_ctx, _cache) => {
        return openBlock(), createBlock(Transition, {
          name: unref(ns).b("fade"),
          persisted: ""
        }, {
          default: withCtx(() => [
            withDirectives(createBaseVNode(
              "div",
              {
                ref_key: "instance",
                ref: instance,
                class: normalizeClass([unref(ns).e("bar"), unref(ns).is(bar.value.key)]),
                onMousedown: clickTrackHandler,
                onClick: _cache[0] || (_cache[0] = withModifiers(() => {
                }, ["stop"]))
              },
              [
                createBaseVNode(
                  "div",
                  {
                    ref_key: "thumb",
                    ref: thumb,
                    class: normalizeClass(unref(ns).e("thumb")),
                    style: normalizeStyle(thumbStyle.value),
                    onMousedown: clickThumbHandler
                  },
                  null,
                  38
                  /* CLASS, STYLE, NEED_HYDRATION */
                )
              ],
              34
              /* CLASS, NEED_HYDRATION */
            ), [
              [vShow, __props.always || visible.value]
            ])
          ]),
          _: 1
          /* STABLE */
        }, 8, ["name"]);
      };
    }
  });
  var _sfc_main$3h = /* @__PURE__ */ defineComponent({
    __name: "bar",
    props: barProps,
    setup(__props, { expose: __expose }) {
      const props2 = __props;
      const scrollbar = inject(scrollbarContextKey);
      const moveX = ref(0);
      const moveY = ref(0);
      const sizeWidth = ref("");
      const sizeHeight = ref("");
      const ratioY = ref(1);
      const ratioX = ref(1);
      const handleScroll2 = (wrap) => {
        if (wrap) {
          const offsetHeight = wrap.offsetHeight - GAP;
          const offsetWidth = wrap.offsetWidth - GAP;
          moveY.value = wrap.scrollTop * 100 / offsetHeight * ratioY.value;
          moveX.value = wrap.scrollLeft * 100 / offsetWidth * ratioX.value;
        }
      };
      const update = () => {
        const wrap = scrollbar == null ? void 0 : scrollbar.wrapElement;
        if (!wrap) return;
        const offsetHeight = wrap.offsetHeight - GAP;
        const offsetWidth = wrap.offsetWidth - GAP;
        const originalHeight = offsetHeight ** 2 / wrap.scrollHeight;
        const originalWidth = offsetWidth ** 2 / wrap.scrollWidth;
        const height = Math.max(originalHeight, props2.minSize);
        const width = Math.max(originalWidth, props2.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: handleScroll2,
        update
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          Fragment,
          null,
          [
            createVNode(_sfc_main$3i, {
              move: moveX.value,
              ratio: ratioX.value,
              size: sizeWidth.value,
              always: __props.always
            }, null, 8, ["move", "ratio", "size", "always"]),
            createVNode(_sfc_main$3i, {
              move: moveY.value,
              ratio: ratioY.value,
              size: sizeHeight.value,
              vertical: "",
              always: __props.always
            }, null, 8, ["move", "ratio", "size", "always"])
          ],
          64
          /* STABLE_FRAGMENT */
        );
      };
    }
  });
  const _hoisted_1$22 = ["tabindex"];
  const COMPONENT_NAME$l = "ElScrollbar";
  var _sfc_main$3g = /* @__PURE__ */ defineComponent({
    ...{
      name: COMPONENT_NAME$l
    },
    __name: "scrollbar",
    props: scrollbarProps,
    emits: scrollbarEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const ns = useNamespace("scrollbar");
      let stopResizeObserver = void 0;
      let stopWrapResizeObserver = void 0;
      let stopResizeListener = void 0;
      let wrapScrollTop = 0;
      let wrapScrollLeft = 0;
      let direction2 = "";
      const distanceScrollState = {
        bottom: false,
        top: false,
        right: false,
        left: false
      };
      const scrollbarRef = ref();
      const wrapRef = ref();
      const resizeRef = ref();
      const barRef = ref();
      const wrapStyle = computed(() => {
        const style = {};
        const height = addUnit(props2.height);
        const maxHeight = addUnit(props2.maxHeight);
        if (height) style.height = height;
        if (maxHeight) style.maxHeight = maxHeight;
        return [props2.wrapStyle, style];
      });
      const wrapKls = computed(() => {
        return [
          props2.wrapClass,
          ns.e("wrap"),
          { [ns.em("wrap", "hidden-default")]: !props2.native }
        ];
      });
      const resizeKls = computed(() => {
        return [ns.e("view"), props2.viewClass];
      });
      const shouldSkipDirection = (direction22) => {
        var _a;
        return (_a = distanceScrollState[direction22]) != null ? _a : false;
      };
      const DIRECTION_PAIRS = {
        top: "bottom",
        bottom: "top",
        left: "right",
        right: "left"
      };
      const updateTriggerStatus = (arrivedStates) => {
        const oppositeDirection = DIRECTION_PAIRS[direction2];
        if (!oppositeDirection) return;
        const arrived = arrivedStates[direction2];
        const oppositeArrived = arrivedStates[oppositeDirection];
        if (arrived && !distanceScrollState[direction2]) {
          distanceScrollState[direction2] = true;
        }
        if (!oppositeArrived && distanceScrollState[oppositeDirection]) {
          distanceScrollState[oppositeDirection] = false;
        }
      };
      const handleScroll2 = () => {
        var _a;
        if (wrapRef.value) {
          (_a = barRef.value) == null ? void 0 : _a.handleScroll(wrapRef.value);
          const prevTop = wrapScrollTop;
          const prevLeft = wrapScrollLeft;
          wrapScrollTop = wrapRef.value.scrollTop;
          wrapScrollLeft = wrapRef.value.scrollLeft;
          const arrivedStates = {
            bottom: wrapScrollTop + wrapRef.value.clientHeight >= wrapRef.value.scrollHeight - props2.distance,
            top: wrapScrollTop <= props2.distance && prevTop !== 0,
            right: wrapScrollLeft + wrapRef.value.clientWidth >= wrapRef.value.scrollWidth - props2.distance && prevLeft !== wrapScrollLeft,
            left: wrapScrollLeft <= props2.distance && prevLeft !== 0
          };
          emit2("scroll", {
            scrollTop: wrapScrollTop,
            scrollLeft: wrapScrollLeft
          });
          if (prevTop !== wrapScrollTop) {
            direction2 = wrapScrollTop > prevTop ? "bottom" : "top";
          }
          if (prevLeft !== wrapScrollLeft) {
            direction2 = wrapScrollLeft > prevLeft ? "right" : "left";
          }
          if (props2.distance > 0) {
            if (shouldSkipDirection(direction2)) {
              return;
            }
            updateTriggerStatus(arrivedStates);
          }
          if (arrivedStates[direction2]) emit2("end-reached", direction2);
        }
      };
      function scrollTo(arg1, arg2) {
        if (isObject$2(arg1)) {
          wrapRef.value.scrollTo(arg1);
        } else if (isNumber(arg1) && isNumber(arg2)) {
          wrapRef.value.scrollTo(arg1, arg2);
        }
      }
      const setScrollTop = (value) => {
        if (!isNumber(value)) {
          return;
        }
        wrapRef.value.scrollTop = value;
      };
      const setScrollLeft = (value) => {
        if (!isNumber(value)) {
          return;
        }
        wrapRef.value.scrollLeft = value;
      };
      const update = () => {
        var _a;
        (_a = barRef.value) == null ? void 0 : _a.update();
        distanceScrollState[direction2] = false;
      };
      watch(
        () => props2.noresize,
        (noresize) => {
          if (noresize) {
            stopResizeObserver == null ? void 0 : stopResizeObserver();
            stopWrapResizeObserver == null ? void 0 : stopWrapResizeObserver();
            stopResizeListener == null ? void 0 : stopResizeListener();
          } else {
            ({ stop: stopResizeObserver } = useResizeObserver(resizeRef, update));
            ({ stop: stopWrapResizeObserver } = useResizeObserver(wrapRef, update));
            stopResizeListener = useEventListener("resize", update);
          }
        },
        { immediate: true }
      );
      watch(
        () => [props2.maxHeight, props2.height],
        () => {
          if (!props2.native)
            nextTick(() => {
              var _a;
              update();
              if (wrapRef.value) {
                (_a = barRef.value) == null ? void 0 : _a.handleScroll(wrapRef.value);
              }
            });
        }
      );
      provide(
        scrollbarContextKey,
        reactive({
          scrollbarElement: scrollbarRef,
          wrapElement: wrapRef
        })
      );
      onActivated(() => {
        if (wrapRef.value) {
          wrapRef.value.scrollTop = wrapScrollTop;
          wrapRef.value.scrollLeft = wrapScrollLeft;
        }
      });
      onMounted(() => {
        if (!props2.native)
          nextTick(() => {
            update();
          });
      });
      onUpdated(() => update());
      __expose({
        /** @description scrollbar wrap ref */
        wrapRef,
        /** @description update scrollbar state manually */
        update,
        /** @description scrolls to a particular set of coordinates */
        scrollTo,
        /** @description set distance to scroll top */
        setScrollTop,
        /** @description set distance to scroll left */
        setScrollLeft,
        /** @description handle scroll event */
        handleScroll: handleScroll2
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            ref_key: "scrollbarRef",
            ref: scrollbarRef,
            class: normalizeClass(unref(ns).b())
          },
          [
            createBaseVNode("div", {
              ref_key: "wrapRef",
              ref: wrapRef,
              class: normalizeClass(wrapKls.value),
              style: normalizeStyle(wrapStyle.value),
              tabindex: __props.tabindex,
              onScroll: handleScroll2
            }, [
              (openBlock(), createBlock(resolveDynamicComponent(__props.tag), {
                id: __props.id,
                ref_key: "resizeRef",
                ref: resizeRef,
                class: normalizeClass(resizeKls.value),
                style: normalizeStyle(__props.viewStyle),
                role: __props.role,
                "aria-label": __props.ariaLabel,
                "aria-orientation": __props.ariaOrientation
              }, {
                default: withCtx(() => [
                  renderSlot(_ctx.$slots, "default")
                ]),
                _: 3
                /* FORWARDED */
              }, 8, ["id", "class", "style", "role", "aria-label", "aria-orientation"]))
            ], 46, _hoisted_1$22),
            !__props.native ? (openBlock(), createBlock(_sfc_main$3h, {
              key: 0,
              ref_key: "barRef",
              ref: barRef,
              always: __props.always,
              "min-size": __props.minSize
            }, null, 8, ["always", "min-size"])) : createCommentVNode("v-if", true)
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const ElScrollbar = withInstall(_sfc_main$3g);
  const popperTriggerProps = buildProps({
    /** @description Indicates the reference element to which the popper is attached */
    virtualRef: {
      type: definePropType(Object)
    },
    /** @description Indicates whether virtual triggering is enabled */
    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 EVENT_CODE = {
    tab: "Tab",
    enter: "Enter",
    space: "Space",
    left: "ArrowLeft",
    // 37
    up: "ArrowUp",
    // 38
    right: "ArrowRight",
    // 39
    down: "ArrowDown",
    // 40
    esc: "Escape",
    delete: "Delete",
    backspace: "Backspace",
    numpadEnter: "NumpadEnter",
    pageUp: "PageUp",
    pageDown: "PageDown",
    home: "Home",
    end: "End"
  };
  const useTooltipTriggerProps = buildProps({
    ...popperTriggerProps,
    /**
     * @description whether Tooltip is disabled
     */
    disabled: Boolean,
    /**
     * @description How should the tooltip be triggered (to show), not valid in controlled mode
     */
    trigger: {
      type: definePropType([String, Array]),
      default: "hover"
    },
    /**
     * @description When you click the mouse to focus on the trigger element, you can define a set of keyboard codes to control the display of tooltip through the keyboard, not valid in controlled mode
     */
    triggerKeys: {
      type: definePropType(Array),
      default: () => [EVENT_CODE.enter, EVENT_CODE.numpadEnter, EVENT_CODE.space]
    },
    /**
     * @description when triggering tooltips through hover, whether to focus the trigger element, which improves accessibility
     */
    focusOnTarget: Boolean
  });
  const _prop = buildProp({
    type: definePropType(Boolean),
    default: null
  });
  const _event = buildProp({
    type: definePropType(Function)
  });
  const createModelToggleComposable = (name) => {
    const updateEventKey = `update:${name}`;
    const updateEventKeyRaw2 = `onUpdate:${name}`;
    const useModelToggleEmits2 = [updateEventKey];
    const useModelToggleProps2 = {
      [name]: _prop,
      [updateEventKeyRaw2]: _event
    };
    const useModelToggle2 = ({
      indicator,
      toggleReason,
      shouldHideWhenRouteChanges,
      shouldProceed,
      onShow,
      onHide
    }) => {
      const instance = getCurrentInstance();
      const { emit: emit2 } = instance;
      const props2 = instance.props;
      const hasUpdateHandler = computed(
        () => isFunction$1(props2[updateEventKeyRaw2])
      );
      const isModelBindingAbsent = computed(() => props2[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 (props2.disabled === true || isFunction$1(shouldProceed) && !shouldProceed())
          return;
        const shouldEmit = hasUpdateHandler.value && isClient;
        if (shouldEmit) {
          emit2(updateEventKey, true);
        }
        if (isModelBindingAbsent.value || !shouldEmit) {
          doShow(event);
        }
      };
      const hide = (event) => {
        if (props2.disabled === true || !isClient) return;
        const shouldEmit = hasUpdateHandler.value && isClient;
        if (shouldEmit) {
          emit2(updateEventKey, false);
        }
        if (isModelBindingAbsent.value || !shouldEmit) {
          doHide(event);
        }
      };
      const onChange = (val) => {
        if (!isBoolean(val)) return;
        if (props2.disabled && val) {
          if (hasUpdateHandler.value) {
            emit2(updateEventKey, false);
          }
        } else if (indicator.value !== val) {
          if (val) {
            doShow();
          } else {
            doHide();
          }
        }
      };
      const toggle = () => {
        if (indicator.value) {
          hide();
        } else {
          show();
        }
      };
      watch(() => props2[name], onChange);
      if (shouldHideWhenRouteChanges && instance.appContext.config.globalProperties.$route !== void 0) {
        watch(
          () => ({
            ...instance.proxy.$route
          }),
          () => {
            if (shouldHideWhenRouteChanges.value && indicator.value) {
              hide();
            }
          }
        );
      }
      onMounted(() => {
        onChange(props2[name]);
      });
      return {
        hide,
        show,
        toggle,
        hasUpdateHandler
      };
    };
    return {
      useModelToggle: useModelToggle2,
      useModelToggleProps: useModelToggleProps2,
      useModelToggleEmits: useModelToggleEmits2
    };
  };
  const roleTypes = [
    "dialog",
    "grid",
    "group",
    "listbox",
    "menu",
    "navigation",
    "tooltip",
    "tree"
  ];
  const popperProps = buildProps({
    role: {
      type: String,
      values: roleTypes,
      default: "tooltip"
    }
  });
  const {
    useModelToggleProps: useTooltipModelToggleProps,
    useModelToggleEmits: useTooltipModelToggleEmits,
    useModelToggle: useTooltipModelToggle
  } = createModelToggleComposable("visible");
  const useTooltipProps = buildProps({
    ...popperProps,
    ...useTooltipModelToggleProps,
    ...useTooltipContentProps,
    ...useTooltipTriggerProps,
    ...popperArrowProps,
    /**
     * @description whether the tooltip content has an arrow
     */
    showArrow: {
      type: Boolean,
      default: true
    }
  });
  const tooltipEmits = [
    ...useTooltipModelToggleEmits,
    "before-show",
    "before-hide",
    "show",
    "hide",
    "open",
    "close"
  ];
  const POPPER_INJECTION_KEY = /* @__PURE__ */ Symbol("popper");
  const POPPER_CONTENT_INJECTION_KEY = /* @__PURE__ */ Symbol("popperContent");
  var _sfc_main$3f = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElPopper",
      inheritAttrs: false
    },
    __name: "popper",
    props: popperProps,
    setup(__props, { expose: __expose }) {
      const props2 = __props;
      const triggerRef2 = ref();
      const popperInstanceRef = ref();
      const contentRef = ref();
      const referenceRef = ref();
      const role = computed(() => props2.role);
      const popperProvides = {
        /**
         * @description trigger element
         */
        triggerRef: triggerRef2,
        /**
         * @description popperjs instance
         */
        popperInstanceRef,
        /**
         * @description popper content element
         */
        contentRef,
        /**
         * @description popper reference element
         */
        referenceRef,
        /**
         * @description role determines how aria attributes are distributed
         */
        role
      };
      __expose(popperProvides);
      provide(POPPER_INJECTION_KEY, popperProvides);
      return (_ctx, _cache) => {
        return renderSlot(_ctx.$slots, "default");
      };
    }
  });
  var _sfc_main$3e = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElPopperArrow",
      inheritAttrs: false
    },
    __name: "arrow",
    setup(__props, { expose: __expose }) {
      const ns = useNamespace("popper");
      const { arrowRef, arrowStyle } = inject(
        POPPER_CONTENT_INJECTION_KEY,
        void 0
      );
      onBeforeUnmount(() => {
        arrowRef.value = void 0;
      });
      __expose({
        /**
         * @description Arrow element
         */
        arrowRef
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "span",
          {
            ref_key: "arrowRef",
            ref: arrowRef,
            class: normalizeClass(unref(ns).e("arrow")),
            style: normalizeStyle(unref(arrowStyle)),
            "data-popper-arrow": ""
          },
          null,
          6
          /* CLASS, STYLE */
        );
      };
    }
  });
  const FORWARD_REF_INJECTION_KEY = /* @__PURE__ */ Symbol("elForwardRef");
  const useForwardRef = (forwardRef) => {
    const setForwardRef = ((el) => {
      forwardRef.value = el;
    });
    provide(FORWARD_REF_INJECTION_KEY, {
      setForwardRef
    });
  };
  const useForwardRefDirective = (setForwardRef) => {
    return {
      mounted(el) {
        setForwardRef(el);
      },
      updated(el) {
        setForwardRef(el);
      },
      unmounted() {
        setForwardRef(null);
      }
    };
  };
  const NAME = "ElOnlyChild";
  const OnlyChild = /* @__PURE__ */ defineComponent({
    name: NAME,
    setup(_2, {
      slots,
      attrs
    }) {
      var _a;
      const forwardRefInjection = inject(FORWARD_REF_INJECTION_KEY);
      const forwardRefDirective = useForwardRefDirective((_a = forwardRefInjection == null ? void 0 : forwardRefInjection.setForwardRef) != null ? _a : NOOP);
      return () => {
        var _a2;
        const defaultSlot = (_a2 = slots.default) == null ? void 0 : _a2.call(slots, attrs);
        if (!defaultSlot) return null;
        const [firstLegitNode, length] = findFirstLegitChild(defaultSlot);
        if (!firstLegitNode) {
          return null;
        }
        return withDirectives(cloneVNode(firstLegitNode, attrs), [[forwardRefDirective]]);
      };
    }
  });
  function findFirstLegitChild(node) {
    if (!node) return [null, 0];
    const children = node;
    const len = children.filter((c2) => c2.type !== Comment).length;
    for (const child of children) {
      if (isObject$2(child)) {
        switch (child.type) {
          case Comment:
            continue;
          case Text:
          case "svg":
            return [wrapTextContent(child), len];
          case Fragment:
            return findFirstLegitChild(child.children);
          default:
            return [child, len];
        }
      }
      return [wrapTextContent(child), len];
    }
    return [null, 0];
  }
  function wrapTextContent(s2) {
    const ns = useNamespace("only-child");
    return createVNode("span", {
      "class": ns.e("content")
    }, [s2]);
  }
  var _sfc_main$3d = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElPopperTrigger",
      inheritAttrs: false
    },
    __name: "trigger",
    props: popperTriggerProps,
    setup(__props, { expose: __expose }) {
      const props2 = __props;
      const { role, triggerRef: triggerRef2 } = inject(POPPER_INJECTION_KEY, void 0);
      useForwardRef(triggerRef2);
      const ariaControls = computed(() => {
        return ariaHaspopup.value ? props2.id : void 0;
      });
      const ariaDescribedby = computed(() => {
        if (role && role.value === "tooltip") {
          return props2.open && props2.id ? props2.id : void 0;
        }
        return void 0;
      });
      const ariaHaspopup = computed(() => {
        if (role && role.value !== "tooltip") {
          return role.value;
        }
        return void 0;
      });
      const ariaExpanded = computed(() => {
        return ariaHaspopup.value ? `${props2.open}` : void 0;
      });
      let virtualTriggerAriaStopWatch = void 0;
      const TRIGGER_ELE_EVENTS = [
        "onMouseenter",
        "onMouseleave",
        "onClick",
        "onKeydown",
        "onFocus",
        "onBlur",
        "onContextmenu"
      ];
      onMounted(() => {
        watch(
          () => props2.virtualRef,
          (virtualEl) => {
            if (virtualEl) {
              triggerRef2.value = unrefElement(virtualEl);
            }
          },
          {
            immediate: true
          }
        );
        watch(
          triggerRef2,
          (el, prevEl) => {
            virtualTriggerAriaStopWatch == null ? void 0 : virtualTriggerAriaStopWatch();
            virtualTriggerAriaStopWatch = void 0;
            if (isElement$1(prevEl)) {
              TRIGGER_ELE_EVENTS.forEach((eventName) => {
                const handler = props2[eventName];
                if (handler) {
                  prevEl.removeEventListener(
                    eventName.slice(2).toLowerCase(),
                    handler,
                    ["onFocus", "onBlur"].includes(eventName)
                  );
                }
              });
            }
            if (isElement$1(el)) {
              TRIGGER_ELE_EVENTS.forEach((eventName) => {
                const handler = props2[eventName];
                if (handler) {
                  el.addEventListener(
                    eventName.slice(2).toLowerCase(),
                    handler,
                    ["onFocus", "onBlur"].includes(eventName)
                  );
                }
              });
              if (isFocusable(el)) {
                virtualTriggerAriaStopWatch = watch(
                  [ariaControls, ariaDescribedby, ariaHaspopup, ariaExpanded],
                  (watches) => {
                    [
                      "aria-controls",
                      "aria-describedby",
                      "aria-haspopup",
                      "aria-expanded"
                    ].forEach((key, idx) => {
                      isNil(watches[idx]) ? el.removeAttribute(key) : el.setAttribute(key, watches[idx]);
                    });
                  },
                  { immediate: true }
                );
              }
            }
            if (isElement$1(prevEl) && isFocusable(prevEl)) {
              [
                "aria-controls",
                "aria-describedby",
                "aria-haspopup",
                "aria-expanded"
              ].forEach((key) => prevEl.removeAttribute(key));
            }
          },
          {
            immediate: true
          }
        );
      });
      onBeforeUnmount(() => {
        virtualTriggerAriaStopWatch == null ? void 0 : virtualTriggerAriaStopWatch();
        virtualTriggerAriaStopWatch = void 0;
        if (triggerRef2.value && isElement$1(triggerRef2.value)) {
          const el = triggerRef2.value;
          TRIGGER_ELE_EVENTS.forEach((eventName) => {
            const handler = props2[eventName];
            if (handler) {
              el.removeEventListener(
                eventName.slice(2).toLowerCase(),
                handler,
                ["onFocus", "onBlur"].includes(eventName)
              );
            }
          });
          triggerRef2.value = void 0;
        }
      });
      __expose({
        /**
         * @description trigger element
         */
        triggerRef: triggerRef2
      });
      return (_ctx, _cache) => {
        return !__props.virtualTriggering ? (openBlock(), createBlock(unref(OnlyChild), mergeProps({ key: 0 }, _ctx.$attrs, {
          "aria-controls": ariaControls.value,
          "aria-describedby": ariaDescribedby.value,
          "aria-expanded": ariaExpanded.value,
          "aria-haspopup": ariaHaspopup.value
        }), {
          default: withCtx(() => [
            renderSlot(_ctx.$slots, "default")
          ]),
          _: 3
          /* FORWARDED */
        }, 16, ["aria-controls", "aria-describedby", "aria-expanded", "aria-haspopup"])) : createCommentVNode("v-if", true);
      };
    }
  });
  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 = /* @__PURE__ */ Symbol("elFocusTrap");
  const focusReason = ref();
  const lastUserFocusTimestamp = ref(0);
  const lastAutomatedFocusTimestamp = 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 first = getVisibleElement(focusable, container);
    const last2 = getVisibleElement(focusable.reverse(), container);
    return [first, last2];
  };
  const isSelectable = (element) => {
    return element instanceof HTMLInputElement && "select" in element;
  };
  const tryFocus = (element, shouldSelect) => {
    if (element) {
      const prevFocusedElement = document.activeElement;
      focusElement(element, { preventScroll: true });
      lastAutomatedFocusTimestamp.value = window.performance.now();
      if (element !== prevFocusedElement && isSelectable(element) && shouldSelect) {
        element.select();
      }
    }
  };
  function removeFromStack(list, item) {
    const copy = [...list];
    const idx = list.indexOf(item);
    if (idx !== -1) {
      copy.splice(idx, 1);
    }
    return copy;
  }
  const createFocusableStack = () => {
    let stack2 = [];
    const push = (layer) => {
      const currentLayer = stack2[0];
      if (currentLayer && layer !== currentLayer) {
        currentLayer.pause();
      }
      stack2 = removeFromStack(stack2, layer);
      stack2.unshift(layer);
    };
    const remove2 = (layer) => {
      var _a, _b;
      stack2 = removeFromStack(stack2, layer);
      (_b = (_a = stack2[0]) == null ? void 0 : _a.resume) == null ? void 0 : _b.call(_a);
    };
    return {
      push,
      remove: remove2
    };
  };
  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 = () => {
    onMounted(() => {
      if (focusReasonUserCount === 0) {
        document.addEventListener("mousedown", notifyFocusReasonPointer);
        document.addEventListener("touchstart", notifyFocusReasonPointer);
        document.addEventListener("keydown", notifyFocusReasonKeydown);
      }
      focusReasonUserCount++;
    });
    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 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;
  };
  const whenMouse = (handler) => {
    return (e) => e.pointerType === "mouse" ? handler(e) : void 0;
  };
  const getEventCode = (event) => {
    if (event.code && event.code !== "Unidentified") return event.code;
    const key = getEventKey(event);
    if (key) {
      if (Object.values(EVENT_CODE).includes(key)) return key;
      switch (key) {
        case " ":
          return EVENT_CODE.space;
        default:
          return "";
      }
    }
    return "";
  };
  const getEventKey = (event) => {
    let key = event.key && event.key !== "Unidentified" ? event.key : "";
    if (!key && event.type === "keyup" && isAndroid()) {
      const target = event.target;
      key = target.value.charAt(target.selectionStart - 1);
    }
    return key;
  };
  let registeredEscapeHandlers = [];
  const cachedHandler = (event) => {
    const code = getEventCode(event);
    if (code === EVENT_CODE.esc) {
      registeredEscapeHandlers.forEach(
        (registeredHandler) => registeredHandler(event)
      );
    }
  };
  const useEscapeKeydown = (handler) => {
    onMounted(() => {
      if (registeredEscapeHandlers.length === 0) {
        document.addEventListener("keydown", cachedHandler);
      }
      if (isClient) registeredEscapeHandlers.push(handler);
    });
    onBeforeUnmount(() => {
      registeredEscapeHandlers = registeredEscapeHandlers.filter(
        (registeredHandler) => registeredHandler !== handler
      );
      if (registeredEscapeHandlers.length === 0) {
        if (isClient) document.removeEventListener("keydown", cachedHandler);
      }
    });
  };
  var _sfc_main$3c = /* @__PURE__ */ 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(props2, { emit: emit2 }) {
      const forwardRef = ref();
      let lastFocusBeforeTrapped;
      let lastFocusAfterTrapped;
      const { focusReason: focusReason2 } = useFocusReason();
      useEscapeKeydown((event) => {
        if (props2.trapped && !focusLayer.paused) {
          emit2("release-requested", event);
        }
      });
      const focusLayer = {
        paused: false,
        pause() {
          this.paused = true;
        },
        resume() {
          this.paused = false;
        }
      };
      const onKeydown = (e) => {
        if (!props2.loop && !props2.trapped) return;
        if (focusLayer.paused) return;
        const { altKey, ctrlKey, metaKey, currentTarget, shiftKey } = e;
        const { loop } = props2;
        const code = getEventCode(e);
        const isTabbing = code === EVENT_CODE.tab && !altKey && !ctrlKey && !metaKey;
        const currentFocusingEl = document.activeElement;
        if (isTabbing && currentFocusingEl) {
          const container = currentTarget;
          const [first, last2] = getEdges(container);
          const isTabbable = first && last2;
          if (!isTabbable) {
            if (currentFocusingEl === container) {
              const focusoutPreventedEvent = createFocusOutPreventedEvent({
                focusReason: focusReason2.value
              });
              emit2("focusout-prevented", focusoutPreventedEvent);
              if (!focusoutPreventedEvent.defaultPrevented) {
                e.preventDefault();
              }
            }
          } else {
            if (!shiftKey && currentFocusingEl === last2) {
              const focusoutPreventedEvent = createFocusOutPreventedEvent({
                focusReason: focusReason2.value
              });
              emit2("focusout-prevented", focusoutPreventedEvent);
              if (!focusoutPreventedEvent.defaultPrevented) {
                e.preventDefault();
                if (loop) tryFocus(first, true);
              }
            } else if (shiftKey && [first, container].includes(currentFocusingEl)) {
              const focusoutPreventedEvent = createFocusOutPreventedEvent({
                focusReason: focusReason2.value
              });
              emit2("focusout-prevented", focusoutPreventedEvent);
              if (!focusoutPreventedEvent.defaultPrevented) {
                e.preventDefault();
                if (loop) tryFocus(last2, true);
              }
            }
          }
        }
      };
      provide(FOCUS_TRAP_INJECTION_KEY, {
        focusTrapRef: forwardRef,
        onKeydown
      });
      watch(
        () => props2.focusTrapEl,
        (focusTrapEl) => {
          if (focusTrapEl) {
            forwardRef.value = focusTrapEl;
          }
        },
        { immediate: true }
      );
      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) => {
        emit2(ON_TRAP_FOCUS_EVT, e);
      };
      const releaseOnFocus = (e) => emit2(ON_RELEASE_FOCUS_EVT, e);
      const onFocusIn = (e) => {
        const trapContainer = unref(forwardRef);
        if (!trapContainer) return;
        const target = e.target;
        const relatedTarget = e.relatedTarget;
        const isFocusedInTrap = target && trapContainer.contains(target);
        if (!props2.trapped) {
          const isPrevFocusedInTrap = relatedTarget && trapContainer.contains(relatedTarget);
          if (!isPrevFocusedInTrap) {
            lastFocusBeforeTrapped = relatedTarget;
          }
        }
        if (isFocusedInTrap) emit2("focusin", e);
        if (focusLayer.paused) return;
        if (props2.trapped) {
          if (isFocusedInTrap) {
            lastFocusAfterTrapped = target;
          } else {
            tryFocus(lastFocusAfterTrapped, true);
          }
        }
      };
      const onFocusOut = (e) => {
        const trapContainer = unref(forwardRef);
        if (focusLayer.paused || !trapContainer) return;
        if (props2.trapped) {
          const relatedTarget = e.relatedTarget;
          if (!isNil(relatedTarget) && !trapContainer.contains(relatedTarget)) {
            setTimeout(() => {
              if (!focusLayer.paused && props2.trapped) {
                const focusoutPreventedEvent = createFocusOutPreventedEvent({
                  focusReason: focusReason2.value
                });
                emit2("focusout-prevented", focusoutPreventedEvent);
                if (!focusoutPreventedEvent.defaultPrevented) {
                  tryFocus(lastFocusAfterTrapped, true);
                }
              }
            }, 0);
          }
        } else {
          const target = e.target;
          const isFocusedInTrap = target && trapContainer.contains(target);
          if (!isFocusedInTrap) emit2("focusout", e);
        }
      };
      async function startTrap() {
        await nextTick();
        const trapContainer = 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) {
              nextTick(() => {
                let focusStartEl = props2.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 = 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);
          lastFocusBeforeTrapped = null;
          lastFocusAfterTrapped = null;
        }
      }
      onMounted(() => {
        if (props2.trapped) {
          startTrap();
        }
        watch(
          () => props2.trapped,
          (trapped) => {
            if (trapped) {
              startTrap();
            } else {
              stopTrap();
            }
          }
        );
      });
      onBeforeUnmount(() => {
        if (props2.trapped) {
          stopTrap();
        }
        if (forwardRef.value) {
          forwardRef.value.removeEventListener("keydown", onKeydown);
          forwardRef.value.removeEventListener("focusin", onFocusIn);
          forwardRef.value.removeEventListener("focusout", onFocusOut);
          forwardRef.value = void 0;
        }
        lastFocusBeforeTrapped = null;
        lastFocusAfterTrapped = null;
      });
      return {
        onKeydown
      };
    }
  });
  var _export_sfc$1 = (sfc, props2) => {
    const target = sfc.__vccOpts || sfc;
    for (const [key, val] of props2) {
      target[key] = val;
    }
    return target;
  };
  function _sfc_render$m(_ctx, _cache, $props, $setup, $data, $options) {
    return renderSlot(_ctx.$slots, "default", { handleKeydown: _ctx.onKeydown });
  }
  var ElFocusTrap = /* @__PURE__ */ _export_sfc$1(_sfc_main$3c, [["render", _sfc_render$m]]);
  const usePopperContentFocusTrap = (props2, emit2) => {
    const trapped = ref(false);
    const focusStartRef = ref();
    const onFocusAfterTrapped = () => {
      emit2("focus");
    };
    const onFocusAfterReleased = (event) => {
      var _a;
      if (((_a = event.detail) == null ? void 0 : _a.focusReason) !== "pointer") {
        focusStartRef.value = "first";
        emit2("blur");
      }
    };
    const onFocusInTrap = (event) => {
      if (props2.visible && !trapped.value) {
        if (event.target) {
          focusStartRef.value = event.target;
        }
        trapped.value = true;
      }
    };
    const onFocusoutPrevented = (event) => {
      if (!props2.trapping) {
        if (event.detail.focusReason === "pointer") {
          event.preventDefault();
        }
        trapped.value = false;
      }
    };
    const onReleaseRequested = () => {
      trapped.value = false;
      emit2("close");
    };
    onBeforeUnmount(() => {
      focusStartRef.value = void 0;
    });
    return {
      focusStartRef,
      trapped,
      onFocusAfterReleased,
      onFocusAfterTrapped,
      onFocusInTrap,
      onFocusoutPrevented,
      onReleaseRequested
    };
  };
  const buildPopperOptions = (props2, modifiers = []) => {
    const { placement, strategy, popperOptions } = props2;
    const options = {
      placement,
      strategy,
      ...popperOptions,
      modifiers: [...genModifiers(props2), ...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: offset2, gpuAcceleration, fallbackPlacements } = options;
    return [
      {
        name: "offset",
        options: {
          offset: [0, offset2 != null ? offset2 : 12]
        }
      },
      {
        name: "preventOverflow",
        options: {
          padding: {
            top: 0,
            bottom: 0,
            left: 0,
            right: 0
          }
        }
      },
      {
        name: "flip",
        options: {
          padding: 5,
          fallbackPlacements
        }
      },
      {
        name: "computeStyles",
        options: {
          gpuAcceleration
        }
      }
    ];
  }
  function deriveExtraModifiers(options, modifiers) {
    if (modifiers) {
      options.modifiers = [...options.modifiers, ...modifiers != null ? modifiers : []];
    }
  }
  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 = computed(() => {
      const { onFirstUpdate, placement, strategy, modifiers } = unref(opts);
      return {
        onFirstUpdate,
        placement: placement || "bottom",
        strategy: strategy || "absolute",
        modifiers: [
          ...modifiers || [],
          stateUpdater,
          { name: "applyStyles", enabled: false }
        ]
      };
    });
    const instanceRef = shallowRef();
    const states = ref({
      styles: {
        popper: {
          position: unref(options).strategy,
          left: "0",
          top: "0"
        },
        arrow: {
          position: "absolute"
        }
      },
      attributes: {}
    });
    const destroy = () => {
      if (!instanceRef.value) return;
      instanceRef.value.destroy();
      instanceRef.value = void 0;
    };
    watch(
      options,
      (newOptions) => {
        const instance = unref(instanceRef);
        if (instance) {
          instance.setOptions(newOptions);
        }
      },
      {
        deep: true
      }
    );
    watch(
      [referenceElementRef, popperElementRef],
      ([referenceElement, popperElement]) => {
        destroy();
        if (!referenceElement || !popperElement) return;
        instanceRef.value = wn(
          referenceElement,
          popperElement,
          unref(options)
        );
      }
    );
    onBeforeUnmount(() => {
      destroy();
    });
    return {
      state: computed(() => {
        var _a;
        return { ...((_a = unref(instanceRef)) == null ? void 0 : _a.state) || {} };
      }),
      styles: computed(() => unref(states).styles),
      attributes: computed(() => unref(states).attributes),
      update: () => {
        var _a;
        return (_a = unref(instanceRef)) == null ? void 0 : _a.update();
      },
      forceUpdate: () => {
        var _a;
        return (_a = unref(instanceRef)) == null ? void 0 : _a.forceUpdate();
      },
      // Preventing end users from modifying the instance.
      instanceRef: computed(() => unref(instanceRef))
    };
  };
  function deriveState(state) {
    const elements = Object.keys(state.elements);
    const styles = fromPairs(
      elements.map(
        (element) => [element, state.styles[element] || {}]
      )
    );
    const attributes2 = fromPairs(
      elements.map(
        (element) => [element, state.attributes[element]]
      )
    );
    return {
      styles,
      attributes: attributes2
    };
  }
  const DEFAULT_ARROW_OFFSET = 0;
  const usePopperContent = (props2) => {
    const { popperInstanceRef, contentRef, triggerRef: triggerRef2, role } = inject(
      POPPER_INJECTION_KEY,
      void 0
    );
    const arrowRef = ref();
    const arrowOffset = computed(() => props2.arrowOffset);
    const eventListenerModifier = computed(() => {
      return {
        name: "eventListeners",
        enabled: !!props2.visible
      };
    });
    const arrowModifier = computed(() => {
      var _a;
      const arrowEl = unref(arrowRef);
      const offset2 = (_a = unref(arrowOffset)) != null ? _a : DEFAULT_ARROW_OFFSET;
      return {
        name: "arrow",
        enabled: !isUndefined$1(arrowEl),
        options: {
          element: arrowEl,
          padding: offset2
        }
      };
    });
    const options = computed(() => {
      return {
        onFirstUpdate: () => {
          update();
        },
        ...buildPopperOptions(props2, [
          unref(arrowModifier),
          unref(eventListenerModifier)
        ])
      };
    });
    const computedReference = computed(
      () => unwrapMeasurableEl(props2.referenceEl) || unref(triggerRef2)
    );
    const { attributes: attributes2, state, styles, update, forceUpdate, instanceRef } = usePopper(computedReference, contentRef, options);
    watch(instanceRef, (instance) => popperInstanceRef.value = instance, {
      flush: "sync"
    });
    onMounted(() => {
      watch(
        () => {
          var _a, _b;
          return (_b = (_a = unref(computedReference)) == null ? void 0 : _a.getBoundingClientRect) == null ? void 0 : _b.call(_a);
        },
        () => {
          update();
        }
      );
    });
    onBeforeUnmount(() => {
      popperInstanceRef.value = void 0;
    });
    return {
      attributes: attributes2,
      arrowRef,
      contentRef,
      instanceRef,
      state,
      styles,
      role,
      forceUpdate,
      update
    };
  };
  const usePopperContentDOM = (props2, {
    attributes: attributes2,
    styles,
    role
  }) => {
    const { nextZIndex } = useZIndex();
    const ns = useNamespace("popper");
    const contentAttrs = computed(() => unref(attributes2).popper);
    const contentZIndex = ref(
      isNumber(props2.zIndex) ? props2.zIndex : nextZIndex()
    );
    const contentClass = computed(() => [
      ns.b(),
      ns.is("pure", props2.pure),
      ns.is(props2.effect),
      props2.popperClass
    ]);
    const contentStyle = computed(() => {
      return [
        { zIndex: unref(contentZIndex) },
        unref(styles).popper,
        props2.popperStyle || {}
      ];
    });
    const ariaModal = computed(
      () => role.value === "dialog" ? "false" : void 0
    );
    const arrowStyle = computed(
      () => unref(styles).arrow || {}
    );
    const updateZIndex = () => {
      contentZIndex.value = isNumber(props2.zIndex) ? props2.zIndex : nextZIndex();
    };
    return {
      ariaModal,
      arrowStyle,
      contentAttrs,
      contentClass,
      contentStyle,
      contentZIndex,
      updateZIndex
    };
  };
  var _sfc_main$3b = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElPopperContent"
    },
    __name: "content",
    props: popperContentProps,
    emits: popperContentEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const emit2 = __emit;
      const props2 = __props;
      const {
        focusStartRef,
        trapped,
        onFocusAfterReleased,
        onFocusAfterTrapped,
        onFocusInTrap,
        onFocusoutPrevented,
        onReleaseRequested
      } = usePopperContentFocusTrap(props2, emit2);
      const { attributes: attributes2, arrowRef, contentRef, styles, instanceRef, role, update } = usePopperContent(props2);
      const {
        ariaModal,
        arrowStyle,
        contentAttrs,
        contentClass,
        contentStyle,
        updateZIndex
      } = usePopperContentDOM(props2, {
        styles,
        attributes: attributes2,
        role
      });
      const formItemContext = inject(formItemContextKey, void 0);
      provide(POPPER_CONTENT_INJECTION_KEY, {
        arrowStyle,
        arrowRef
      });
      if (formItemContext) {
        provide(formItemContextKey, {
          ...formItemContext,
          addInputId: NOOP,
          removeInputId: NOOP
        });
      }
      let triggerTargetAriaStopWatch = void 0;
      const updatePopper = (shouldUpdateZIndex = true) => {
        update();
        shouldUpdateZIndex && updateZIndex();
      };
      const togglePopperAlive = () => {
        updatePopper(false);
        if (props2.visible && props2.focusOnShow) {
          trapped.value = true;
        } else if (props2.visible === false) {
          trapped.value = false;
        }
      };
      onMounted(() => {
        watch(
          () => props2.triggerTargetEl,
          (triggerTargetEl, prevTriggerTargetEl) => {
            triggerTargetAriaStopWatch == null ? void 0 : triggerTargetAriaStopWatch();
            triggerTargetAriaStopWatch = void 0;
            const el = unref(triggerTargetEl || contentRef.value);
            const prevEl = unref(prevTriggerTargetEl || contentRef.value);
            if (isElement$1(el)) {
              triggerTargetAriaStopWatch = watch(
                [role, () => props2.ariaLabel, ariaModal, () => props2.id],
                (watches) => {
                  ["role", "aria-label", "aria-modal", "id"].forEach((key, idx) => {
                    isNil(watches[idx]) ? el.removeAttribute(key) : el.setAttribute(key, watches[idx]);
                  });
                },
                { immediate: true }
              );
            }
            if (prevEl !== el && isElement$1(prevEl)) {
              ["role", "aria-label", "aria-modal", "id"].forEach((key) => {
                prevEl.removeAttribute(key);
              });
            }
          },
          { immediate: true }
        );
        watch(() => props2.visible, togglePopperAlive, { immediate: true });
      });
      onBeforeUnmount(() => {
        triggerTargetAriaStopWatch == null ? void 0 : triggerTargetAriaStopWatch();
        triggerTargetAriaStopWatch = void 0;
        contentRef.value = void 0;
      });
      __expose({
        /**
         * @description popper content element
         */
        popperContentRef: contentRef,
        /**
         * @description popperjs instance
         */
        popperInstanceRef: instanceRef,
        /**
         * @description method for updating popper
         */
        updatePopper,
        /**
         * @description content style
         */
        contentStyle
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          mergeProps({
            ref_key: "contentRef",
            ref: contentRef
          }, unref(contentAttrs), {
            style: unref(contentStyle),
            class: unref(contentClass),
            tabindex: "-1",
            onMouseenter: _cache[0] || (_cache[0] = (e) => _ctx.$emit("mouseenter", e)),
            onMouseleave: _cache[1] || (_cache[1] = (e) => _ctx.$emit("mouseleave", e))
          }),
          [
            createVNode(unref(ElFocusTrap), {
              loop: __props.loop,
              trapped: unref(trapped),
              "trap-on-focus-in": true,
              "focus-trap-el": unref(contentRef),
              "focus-start-el": unref(focusStartRef),
              onFocusAfterTrapped: unref(onFocusAfterTrapped),
              onFocusAfterReleased: unref(onFocusAfterReleased),
              onFocusin: unref(onFocusInTrap),
              onFocusoutPrevented: unref(onFocusoutPrevented),
              onReleaseRequested: unref(onReleaseRequested)
            }, {
              default: withCtx(() => [
                renderSlot(_ctx.$slots, "default")
              ]),
              _: 3
              /* FORWARDED */
            }, 8, ["loop", "trapped", "focus-trap-el", "focus-start-el", "onFocusAfterTrapped", "onFocusAfterReleased", "onFocusin", "onFocusoutPrevented", "onReleaseRequested"])
          ],
          16
          /* FULL_PROPS */
        );
      };
    }
  });
  const ElPopper = withInstall(_sfc_main$3f);
  const TOOLTIP_INJECTION_KEY = /* @__PURE__ */ Symbol("elTooltip");
  const isTriggerType = (trigger2, type) => {
    if (isArray$1(trigger2)) {
      return trigger2.includes(type);
    }
    return trigger2 === type;
  };
  const whenTrigger = (trigger2, type, handler) => {
    return (e) => {
      isTriggerType(unref(trigger2), type) && handler(e);
    };
  };
  var _sfc_main$3a = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElTooltipTrigger"
    },
    __name: "trigger",
    props: useTooltipTriggerProps,
    setup(__props, { expose: __expose }) {
      const props2 = __props;
      const ns = useNamespace("tooltip");
      const { controlled, id, open, onOpen, onClose, onToggle } = inject(
        TOOLTIP_INJECTION_KEY,
        void 0
      );
      const triggerRef2 = ref(null);
      const stopWhenControlledOrDisabled = () => {
        if (unref(controlled) || props2.disabled) {
          return true;
        }
      };
      const trigger2 = toRef(props2, "trigger");
      const onMouseenter = composeEventHandlers(
        stopWhenControlledOrDisabled,
        whenTrigger(trigger2, "hover", (e) => {
          onOpen(e);
          if (props2.focusOnTarget && e.target) {
            nextTick(() => {
              focusElement(e.target, { preventScroll: true });
            });
          }
        })
      );
      const onMouseleave = composeEventHandlers(
        stopWhenControlledOrDisabled,
        whenTrigger(trigger2, "hover", onClose)
      );
      const onClick = composeEventHandlers(
        stopWhenControlledOrDisabled,
        whenTrigger(trigger2, "click", (e) => {
          if (e.button === 0) {
            onToggle(e);
          }
        })
      );
      const onFocus = composeEventHandlers(
        stopWhenControlledOrDisabled,
        whenTrigger(trigger2, "focus", onOpen)
      );
      const onBlur = composeEventHandlers(
        stopWhenControlledOrDisabled,
        whenTrigger(trigger2, "focus", onClose)
      );
      const onContextMenu = composeEventHandlers(
        stopWhenControlledOrDisabled,
        whenTrigger(trigger2, "contextmenu", (e) => {
          e.preventDefault();
          onToggle(e);
        })
      );
      const onKeydown = composeEventHandlers(
        stopWhenControlledOrDisabled,
        (e) => {
          const code = getEventCode(e);
          if (props2.triggerKeys.includes(code)) {
            e.preventDefault();
            onToggle(e);
          }
        }
      );
      __expose({
        /**
         * @description trigger element
         */
        triggerRef: triggerRef2
      });
      return (_ctx, _cache) => {
        return openBlock(), createBlock(unref(_sfc_main$3d), {
          id: unref(id),
          "virtual-ref": __props.virtualRef,
          open: unref(open),
          "virtual-triggering": __props.virtualTriggering,
          class: normalizeClass(unref(ns).e("trigger")),
          onBlur: unref(onBlur),
          onClick: unref(onClick),
          onContextmenu: unref(onContextMenu),
          onFocus: unref(onFocus),
          onMouseenter: unref(onMouseenter),
          onMouseleave: unref(onMouseleave),
          onKeydown: unref(onKeydown)
        }, {
          default: withCtx(() => [
            renderSlot(_ctx.$slots, "default")
          ]),
          _: 3
          /* FORWARDED */
        }, 8, ["id", "virtual-ref", "open", "virtual-triggering", "class", "onBlur", "onClick", "onContextmenu", "onFocus", "onMouseenter", "onMouseleave", "onKeydown"]);
      };
    }
  });
  const usePopperContainerId = () => {
    const namespace = useGetDerivedNamespace();
    const idInjection = useIdInjection();
    const id = computed(() => {
      return `${namespace.value}-popper-container-${idInjection.prefix}`;
    });
    const selector = 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();
    onBeforeMount(() => {
      if (!isClient) return;
      if (!document.body.querySelector(selector.value)) {
        createContainer(id.value);
      }
    });
    return {
      id,
      selector
    };
  };
  const unique = (arr) => [...new Set(arr)];
  const extractFirst = (arr) => {
    return isArray$1(arr) ? arr[0] : arr;
  };
  const castArray = (arr) => {
    if (!arr && arr !== 0) return [];
    return isArray$1(arr) ? arr : [arr];
  };
  var _sfc_main$39 = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElTooltipContent",
      inheritAttrs: false
    },
    __name: "content",
    props: useTooltipContentProps,
    setup(__props, { expose: __expose }) {
      const props2 = __props;
      const { selector } = usePopperContainerId();
      const ns = useNamespace("tooltip");
      const contentRef = ref();
      const popperContentRef = computedEager(() => {
        var _a;
        return (_a = contentRef.value) == null ? void 0 : _a.popperContentRef;
      });
      let stopHandle;
      const {
        controlled,
        id,
        open,
        trigger: trigger2,
        onClose,
        onOpen,
        onShow,
        onHide,
        onBeforeShow,
        onBeforeHide
      } = inject(TOOLTIP_INJECTION_KEY, void 0);
      const transitionClass = computed(() => {
        return props2.transition || `${ns.namespace.value}-fade-in-linear`;
      });
      const persistentRef = computed(() => {
        return props2.persistent;
      });
      onBeforeUnmount(() => {
        stopHandle == null ? void 0 : stopHandle();
      });
      const shouldRender = computed(() => {
        return unref(persistentRef) ? true : unref(open);
      });
      const shouldShow = computed(() => {
        return props2.disabled ? false : unref(open);
      });
      const appendTo = computed(() => {
        return props2.appendTo || selector.value;
      });
      const contentStyle = computed(() => {
        var _a;
        return (_a = props2.style) != null ? _a : {};
      });
      const ariaHidden = ref(true);
      const onTransitionLeave = () => {
        onHide();
        isFocusInsideContent() && focusElement(document.body, { preventScroll: true });
        ariaHidden.value = true;
      };
      const stopWhenControlled = () => {
        if (unref(controlled)) return true;
      };
      const onContentEnter = composeEventHandlers(stopWhenControlled, () => {
        if (props2.enterable && isTriggerType(unref(trigger2), "hover")) {
          onOpen();
        }
      });
      const onContentLeave = composeEventHandlers(stopWhenControlled, () => {
        if (isTriggerType(unref(trigger2), "hover")) {
          onClose();
        }
      });
      const onBeforeEnter = () => {
        var _a, _b;
        (_b = (_a = contentRef.value) == null ? void 0 : _a.updatePopper) == null ? void 0 : _b.call(_a);
        onBeforeShow == null ? void 0 : onBeforeShow();
      };
      const onBeforeLeave = () => {
        onBeforeHide == null ? void 0 : onBeforeHide();
      };
      const onAfterShow = () => {
        onShow();
      };
      const onBlur = () => {
        if (!props2.virtualTriggering) {
          onClose();
        }
      };
      const isFocusInsideContent = (event) => {
        var _a;
        const popperContent = (_a = contentRef.value) == null ? void 0 : _a.popperContentRef;
        const activeElement = (event == null ? void 0 : event.relatedTarget) || document.activeElement;
        return popperContent == null ? void 0 : popperContent.contains(activeElement);
      };
      watch(
        () => unref(open),
        (val) => {
          if (!val) {
            stopHandle == null ? void 0 : stopHandle();
          } else {
            ariaHidden.value = false;
            stopHandle = onClickOutside(
              popperContentRef,
              () => {
                if (unref(controlled)) return;
                const needClose = castArray(unref(trigger2)).every((item) => {
                  return item !== "hover" && item !== "focus";
                });
                if (needClose) {
                  onClose();
                }
              },
              { detectIframe: true }
            );
          }
        },
        {
          flush: "post"
        }
      );
      watch(
        () => props2.content,
        () => {
          var _a, _b;
          (_b = (_a = contentRef.value) == null ? void 0 : _a.updatePopper) == null ? void 0 : _b.call(_a);
        }
      );
      __expose({
        /**
         * @description el-popper-content component instance
         */
        contentRef,
        /**
         * @description validate current focus event is trigger inside el-popper-content
         */
        isFocusInsideContent
      });
      return (_ctx, _cache) => {
        return openBlock(), createBlock(unref(ElTeleport), {
          disabled: !__props.teleported,
          to: appendTo.value
        }, {
          default: withCtx(() => [
            shouldRender.value || !ariaHidden.value ? (openBlock(), createBlock(Transition, {
              key: 0,
              name: transitionClass.value,
              appear: !persistentRef.value,
              onAfterLeave: onTransitionLeave,
              onBeforeEnter,
              onAfterEnter: onAfterShow,
              onBeforeLeave,
              persisted: ""
            }, {
              default: withCtx(() => [
                withDirectives(createVNode(unref(_sfc_main$3b), mergeProps({
                  id: unref(id),
                  ref_key: "contentRef",
                  ref: contentRef
                }, _ctx.$attrs, {
                  "aria-label": __props.ariaLabel,
                  "aria-hidden": ariaHidden.value,
                  "boundaries-padding": __props.boundariesPadding,
                  "fallback-placements": __props.fallbackPlacements,
                  "gpu-acceleration": __props.gpuAcceleration,
                  offset: __props.offset,
                  placement: __props.placement,
                  "popper-options": __props.popperOptions,
                  "arrow-offset": __props.arrowOffset,
                  strategy: __props.strategy,
                  effect: __props.effect,
                  enterable: __props.enterable,
                  pure: __props.pure,
                  "popper-class": __props.popperClass,
                  "popper-style": [__props.popperStyle, contentStyle.value],
                  "reference-el": __props.referenceEl,
                  "trigger-target-el": __props.triggerTargetEl,
                  visible: shouldShow.value,
                  "z-index": __props.zIndex,
                  loop: __props.loop,
                  onMouseenter: unref(onContentEnter),
                  onMouseleave: unref(onContentLeave),
                  onBlur,
                  onClose: unref(onClose)
                }), {
                  default: withCtx(() => [
                    renderSlot(_ctx.$slots, "default")
                  ]),
                  _: 3
                  /* FORWARDED */
                }, 16, ["id", "aria-label", "aria-hidden", "boundaries-padding", "fallback-placements", "gpu-acceleration", "offset", "placement", "popper-options", "arrow-offset", "strategy", "effect", "enterable", "pure", "popper-class", "popper-style", "reference-el", "trigger-target-el", "visible", "z-index", "loop", "onMouseenter", "onMouseleave", "onClose"]), [
                  [vShow, shouldShow.value]
                ])
              ]),
              _: 3
              /* FORWARDED */
            }, 8, ["name", "appear"])) : createCommentVNode("v-if", true)
          ]),
          _: 3
          /* FORWARDED */
        }, 8, ["disabled", "to"]);
      };
    }
  });
  const _hoisted_1$21 = ["innerHTML"];
  const _hoisted_2$1u = { key: 1 };
  var _sfc_main$38 = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElTooltip"
    },
    __name: "tooltip",
    props: useTooltipProps,
    emits: tooltipEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      usePopperContainer();
      const ns = useNamespace("tooltip");
      const id = useId();
      const popperRef = ref();
      const contentRef = ref();
      const updatePopper = () => {
        var _a;
        const popperComponent = unref(popperRef);
        if (popperComponent) {
          (_a = popperComponent.popperInstanceRef) == null ? void 0 : _a.update();
        }
      };
      const open = ref(false);
      const toggleReason = ref();
      const { show, hide, hasUpdateHandler } = useTooltipModelToggle({
        indicator: open,
        toggleReason
      });
      const { onOpen, onClose } = useDelayedToggle({
        showAfter: toRef(props2, "showAfter"),
        hideAfter: toRef(props2, "hideAfter"),
        autoClose: toRef(props2, "autoClose"),
        open: show,
        close: hide
      });
      const controlled = computed(
        () => isBoolean(props2.visible) && !hasUpdateHandler.value
      );
      const kls = computed(() => {
        return [ns.b(), props2.popperClass];
      });
      provide(TOOLTIP_INJECTION_KEY, {
        controlled,
        id,
        open: readonly(open),
        trigger: toRef(props2, "trigger"),
        onOpen,
        onClose,
        onToggle: (event) => {
          if (unref(open)) {
            onClose(event);
          } else {
            onOpen(event);
          }
        },
        onShow: () => {
          emit2("show", toggleReason.value);
        },
        onHide: () => {
          emit2("hide", toggleReason.value);
        },
        onBeforeShow: () => {
          emit2("before-show", toggleReason.value);
        },
        onBeforeHide: () => {
          emit2("before-hide", toggleReason.value);
        },
        updatePopper
      });
      watch(
        () => props2.disabled,
        (disabled) => {
          if (disabled && open.value) {
            open.value = false;
          }
        }
      );
      const isFocusInsideContent = (event) => {
        var _a;
        return (_a = contentRef.value) == null ? void 0 : _a.isFocusInsideContent(event);
      };
      onDeactivated(() => open.value && hide());
      onBeforeUnmount(() => {
        toggleReason.value = void 0;
      });
      __expose({
        /**
         * @description el-popper component instance
         */
        popperRef,
        /**
         * @description el-tooltip-content component instance
         */
        contentRef,
        /**
         * @description validate current focus event is trigger inside el-tooltip-content
         */
        isFocusInsideContent,
        /**
         * @description update el-popper component instance
         */
        updatePopper,
        /**
         * @description expose onOpen function to mange el-tooltip open state
         */
        onOpen,
        /**
         * @description expose onClose function to manage el-tooltip close state
         */
        onClose,
        /**
         * @description expose hide function
         */
        hide
      });
      return (_ctx, _cache) => {
        return openBlock(), createBlock(unref(ElPopper), {
          ref_key: "popperRef",
          ref: popperRef,
          role: __props.role
        }, {
          default: withCtx(() => [
            createVNode(_sfc_main$3a, {
              disabled: __props.disabled,
              trigger: __props.trigger,
              "trigger-keys": __props.triggerKeys,
              "virtual-ref": __props.virtualRef,
              "virtual-triggering": __props.virtualTriggering,
              "focus-on-target": __props.focusOnTarget
            }, {
              default: withCtx(() => [
                _ctx.$slots.default ? renderSlot(_ctx.$slots, "default", { key: 0 }) : createCommentVNode("v-if", true)
              ]),
              _: 3
              /* FORWARDED */
            }, 8, ["disabled", "trigger", "trigger-keys", "virtual-ref", "virtual-triggering", "focus-on-target"]),
            createVNode(_sfc_main$39, {
              ref_key: "contentRef",
              ref: contentRef,
              "aria-label": __props.ariaLabel,
              "boundaries-padding": __props.boundariesPadding,
              content: __props.content,
              disabled: __props.disabled,
              effect: __props.effect,
              enterable: __props.enterable,
              "fallback-placements": __props.fallbackPlacements,
              "hide-after": __props.hideAfter,
              "gpu-acceleration": __props.gpuAcceleration,
              offset: __props.offset,
              persistent: __props.persistent,
              "popper-class": kls.value,
              "popper-style": __props.popperStyle,
              placement: __props.placement,
              "popper-options": __props.popperOptions,
              "arrow-offset": __props.arrowOffset,
              pure: __props.pure,
              "raw-content": __props.rawContent,
              "reference-el": __props.referenceEl,
              "trigger-target-el": __props.triggerTargetEl,
              "show-after": __props.showAfter,
              strategy: __props.strategy,
              teleported: __props.teleported,
              transition: __props.transition,
              "virtual-triggering": __props.virtualTriggering,
              "z-index": __props.zIndex,
              "append-to": __props.appendTo,
              loop: __props.loop
            }, {
              default: withCtx(() => [
                renderSlot(_ctx.$slots, "content", {}, () => [
                  __props.rawContent ? (openBlock(), createElementBlock("span", {
                    key: 0,
                    innerHTML: __props.content
                  }, null, 8, _hoisted_1$21)) : (openBlock(), createElementBlock(
                    "span",
                    _hoisted_2$1u,
                    toDisplayString(__props.content),
                    1
                    /* TEXT */
                  ))
                ]),
                __props.showArrow ? (openBlock(), createBlock(unref(_sfc_main$3e), { key: 0 })) : createCommentVNode("v-if", true)
              ]),
              _: 3
              /* FORWARDED */
            }, 8, ["aria-label", "boundaries-padding", "content", "disabled", "effect", "enterable", "fallback-placements", "hide-after", "gpu-acceleration", "offset", "persistent", "popper-class", "popper-style", "placement", "popper-options", "arrow-offset", "pure", "raw-content", "reference-el", "trigger-target-el", "show-after", "strategy", "teleported", "transition", "virtual-triggering", "z-index", "append-to", "loop"])
          ]),
          _: 3
          /* FORWARDED */
        }, 8, ["role"]);
      };
    }
  });
  const ElTooltip = withInstall(_sfc_main$38);
  const _hoisted_1$20 = ["aria-expanded", "aria-owns"];
  const _hoisted_2$1t = { key: 0 };
  const _hoisted_3$12 = ["id", "aria-selected", "onClick"];
  const COMPONENT_NAME$k = "ElAutocomplete";
  var _sfc_main$37 = /* @__PURE__ */ defineComponent({
    ...{
      name: COMPONENT_NAME$k,
      inheritAttrs: false
    },
    __name: "autocomplete",
    props: autocompleteProps,
    emits: autocompleteEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const passInputProps = computed(() => pick(props2, Object.keys(inputProps)));
      const rawAttrs = useAttrs$1();
      const disabled = useFormDisabled();
      const ns = useNamespace("autocomplete");
      const inputRef = ref();
      const regionRef = ref();
      const popperRef = ref();
      const listboxRef = ref();
      let readonly2 = false;
      let ignoreFocusEvent = false;
      const suggestions = ref([]);
      const highlightedIndex = ref(-1);
      const dropdownWidth = ref("");
      const activated = ref(false);
      const suggestionDisabled = ref(false);
      const loading = ref(false);
      const listboxId = useId();
      const styles = computed(() => rawAttrs.style);
      const suggestionVisible = computed(() => {
        const isValidData = suggestions.value.length > 0;
        return (isValidData || loading.value) && activated.value;
      });
      const suggestionLoading = computed(() => !props2.hideLoading && loading.value);
      const refInput = computed(() => {
        if (inputRef.value) {
          return Array.from(
            inputRef.value.$el.querySelectorAll("input")
          );
        }
        return [];
      });
      const onSuggestionShow = () => {
        if (suggestionVisible.value) {
          dropdownWidth.value = `${inputRef.value.$el.offsetWidth}px`;
        }
      };
      const onHide = () => {
        highlightedIndex.value = -1;
      };
      const getData = async (queryString) => {
        if (suggestionDisabled.value) return;
        const cb = (suggestionList) => {
          loading.value = false;
          if (suggestionDisabled.value) return;
          if (isArray$1(suggestionList)) {
            suggestions.value = suggestionList;
            highlightedIndex.value = props2.highlightFirstItem ? 0 : -1;
          } else {
            throwError(COMPONENT_NAME$k, "autocomplete suggestions must be an array");
          }
        };
        loading.value = true;
        if (isArray$1(props2.fetchSuggestions)) {
          cb(props2.fetchSuggestions);
        } else {
          const result = await props2.fetchSuggestions(queryString, cb);
          if (isArray$1(result)) cb(result);
        }
      };
      const debounce2 = computed(() => props2.debounce);
      const debouncedGetData = useDebounceFn(getData, debounce2);
      const handleInput = (value) => {
        const valuePresented = !!value;
        emit2(INPUT_EVENT, value);
        emit2(UPDATE_MODEL_EVENT, value);
        suggestionDisabled.value = false;
        activated.value || (activated.value = valuePresented);
        if (!props2.triggerOnFocus && !value) {
          suggestionDisabled.value = true;
          suggestions.value = [];
          return;
        }
        debouncedGetData(value);
      };
      const handleMouseDown = (event) => {
        var _a;
        if (disabled.value) return;
        if (((_a = event.target) == null ? void 0 : _a.tagName) !== "INPUT" || refInput.value.includes(document.activeElement)) {
          activated.value = true;
        }
      };
      const handleChange = (value) => {
        emit2(CHANGE_EVENT, value);
      };
      const handleFocus = (evt) => {
        var _a;
        if (!ignoreFocusEvent) {
          activated.value = true;
          emit2("focus", evt);
          const queryString = (_a = props2.modelValue) != null ? _a : "";
          if (props2.triggerOnFocus && !readonly2) {
            debouncedGetData(String(queryString));
          }
        } else {
          ignoreFocusEvent = false;
        }
      };
      const handleBlur = (evt) => {
        setTimeout(() => {
          var _a;
          if ((_a = popperRef.value) == null ? void 0 : _a.isFocusInsideContent()) {
            ignoreFocusEvent = true;
            return;
          }
          activated.value && close2();
          emit2("blur", evt);
        });
      };
      const handleClear = () => {
        activated.value = false;
        emit2(UPDATE_MODEL_EVENT, "");
        emit2("clear");
      };
      const handleKeyEnter = async () => {
        var _a;
        if ((_a = inputRef.value) == null ? void 0 : _a.isComposing) {
          return;
        }
        if (suggestionVisible.value && highlightedIndex.value >= 0 && highlightedIndex.value < suggestions.value.length) {
          handleSelect(suggestions.value[highlightedIndex.value]);
        } else {
          if (props2.selectWhenUnmatched) {
            emit2("select", { value: props2.modelValue });
            suggestions.value = [];
            highlightedIndex.value = -1;
          }
          activated.value = true;
          debouncedGetData(String(props2.modelValue));
        }
      };
      const handleKeyEscape = (evt) => {
        if (suggestionVisible.value) {
          evt.preventDefault();
          evt.stopPropagation();
          close2();
        }
      };
      const close2 = () => {
        activated.value = false;
      };
      const focus = () => {
        var _a;
        (_a = inputRef.value) == null ? void 0 : _a.focus();
      };
      const blur = () => {
        var _a;
        (_a = inputRef.value) == null ? void 0 : _a.blur();
      };
      const handleSelect = async (item) => {
        emit2(INPUT_EVENT, item[props2.valueKey]);
        emit2(UPDATE_MODEL_EVENT, item[props2.valueKey]);
        emit2("select", item);
        suggestions.value = [];
        highlightedIndex.value = -1;
      };
      const highlight = (index) => {
        var _a, _b;
        if (!suggestionVisible.value || loading.value) return;
        if (index < 0) {
          if (!props2.loopNavigation) {
            highlightedIndex.value = -1;
            return;
          }
          index = suggestions.value.length - 1;
        }
        if (index >= suggestions.value.length) {
          index = props2.loopNavigation ? 0 : suggestions.value.length - 1;
        }
        const [suggestion, suggestionList] = getSuggestionContext();
        const highlightItem = suggestionList[index];
        const scrollTop = suggestion.scrollTop;
        const { offsetTop, scrollHeight } = highlightItem;
        if (offsetTop + scrollHeight > scrollTop + suggestion.clientHeight) {
          suggestion.scrollTop = offsetTop + scrollHeight - suggestion.clientHeight;
        }
        if (offsetTop < scrollTop) {
          suggestion.scrollTop = offsetTop;
        }
        highlightedIndex.value = index;
        (_b = (_a = inputRef.value) == null ? void 0 : _a.ref) == null ? void 0 : _b.setAttribute(
          "aria-activedescendant",
          `${listboxId.value}-item-${highlightedIndex.value}`
        );
      };
      const getSuggestionContext = () => {
        const suggestion = regionRef.value.querySelector(
          `.${ns.be("suggestion", "wrap")}`
        );
        const suggestionList = suggestion.querySelectorAll(
          `.${ns.be("suggestion", "list")} li`
        );
        return [suggestion, suggestionList];
      };
      const stopHandle = onClickOutside(listboxRef, () => {
        var _a;
        if ((_a = popperRef.value) == null ? void 0 : _a.isFocusInsideContent()) return;
        suggestionVisible.value && close2();
      });
      const handleKeydown = (e) => {
        const code = getEventCode(e);
        switch (code) {
          case EVENT_CODE.up:
            e.preventDefault();
            highlight(highlightedIndex.value - 1);
            break;
          case EVENT_CODE.down:
            e.preventDefault();
            highlight(highlightedIndex.value + 1);
            break;
          case EVENT_CODE.enter:
          case EVENT_CODE.numpadEnter:
            e.preventDefault();
            handleKeyEnter();
            break;
          case EVENT_CODE.tab:
            close2();
            break;
          case EVENT_CODE.esc:
            handleKeyEscape(e);
            break;
          case EVENT_CODE.home:
            e.preventDefault();
            highlight(0);
            break;
          case EVENT_CODE.end:
            e.preventDefault();
            highlight(suggestions.value.length - 1);
            break;
          case EVENT_CODE.pageUp:
            e.preventDefault();
            highlight(Math.max(0, highlightedIndex.value - 10));
            break;
          case EVENT_CODE.pageDown:
            e.preventDefault();
            highlight(
              Math.min(suggestions.value.length - 1, highlightedIndex.value + 10)
            );
            break;
        }
      };
      onBeforeUnmount(() => {
        stopHandle == null ? void 0 : stopHandle();
      });
      onMounted(() => {
        var _a;
        const inputElement = (_a = inputRef.value) == null ? void 0 : _a.ref;
        if (!inputElement) return;
        [
          { key: "role", value: "textbox" },
          { key: "aria-autocomplete", value: "list" },
          { key: "aria-controls", value: listboxId.value },
          {
            key: "aria-activedescendant",
            value: `${listboxId.value}-item-${highlightedIndex.value}`
          }
        ].forEach(({ key, value }) => inputElement.setAttribute(key, value));
        readonly2 = inputElement.hasAttribute("readonly");
      });
      __expose({
        /** @description the index of the currently highlighted item */
        highlightedIndex,
        /** @description autocomplete whether activated */
        activated,
        /** @description remote search loading status */
        loading,
        /** @description el-input component instance */
        inputRef,
        /** @description el-tooltip component instance */
        popperRef,
        /** @description fetch suggestions result */
        suggestions,
        /** @description triggers when a suggestion is clicked */
        handleSelect,
        /** @description handle keyboard enter event */
        handleKeyEnter,
        /** @description focus the input element */
        focus,
        /** @description blur the input element */
        blur,
        /** @description close suggestion */
        close: close2,
        /** @description highlight an item in a suggestion */
        highlight,
        /** @description loading suggestion list */
        getData
      });
      return (_ctx, _cache) => {
        return openBlock(), createBlock(unref(ElTooltip), {
          ref_key: "popperRef",
          ref: popperRef,
          visible: suggestionVisible.value,
          placement: __props.placement,
          "fallback-placements": ["bottom-start", "top-start"],
          "popper-class": [unref(ns).e("popper"), __props.popperClass],
          "popper-style": __props.popperStyle,
          teleported: __props.teleported,
          "append-to": __props.appendTo,
          "gpu-acceleration": false,
          pure: "",
          "manual-mode": "",
          effect: "light",
          trigger: "click",
          transition: `${unref(ns).namespace.value}-zoom-in-top`,
          persistent: "",
          role: "listbox",
          onBeforeShow: onSuggestionShow,
          onHide
        }, {
          content: withCtx(() => [
            createBaseVNode(
              "div",
              {
                ref_key: "regionRef",
                ref: regionRef,
                class: normalizeClass([unref(ns).b("suggestion"), unref(ns).is("loading", suggestionLoading.value)]),
                style: normalizeStyle({
                  [__props.fitInputWidth ? "width" : "minWidth"]: dropdownWidth.value,
                  outline: "none"
                }),
                role: "region"
              },
              [
                _ctx.$slots.header ? (openBlock(), createElementBlock(
                  "div",
                  {
                    key: 0,
                    class: normalizeClass(unref(ns).be("suggestion", "header")),
                    onClick: _cache[0] || (_cache[0] = withModifiers(() => {
                    }, ["stop"]))
                  },
                  [
                    renderSlot(_ctx.$slots, "header")
                  ],
                  2
                  /* CLASS */
                )) : createCommentVNode("v-if", true),
                createVNode(unref(ElScrollbar), {
                  id: unref(listboxId),
                  tag: "ul",
                  "wrap-class": unref(ns).be("suggestion", "wrap"),
                  "view-class": unref(ns).be("suggestion", "list"),
                  role: "listbox"
                }, {
                  default: withCtx(() => [
                    suggestionLoading.value ? (openBlock(), createElementBlock("li", _hoisted_2$1t, [
                      renderSlot(_ctx.$slots, "loading", {}, () => [
                        createVNode(unref(ElIcon), {
                          class: normalizeClass(unref(ns).is("loading"))
                        }, {
                          default: withCtx(() => [
                            createVNode(unref(loading_default))
                          ]),
                          _: 1
                          /* STABLE */
                        }, 8, ["class"])
                      ])
                    ])) : (openBlock(true), createElementBlock(
                      Fragment,
                      { key: 1 },
                      renderList(suggestions.value, (item, index) => {
                        return openBlock(), createElementBlock("li", {
                          id: `${unref(listboxId)}-item-${index}`,
                          key: index,
                          class: normalizeClass({ highlighted: highlightedIndex.value === index }),
                          role: "option",
                          "aria-selected": highlightedIndex.value === index,
                          onClick: ($event) => handleSelect(item)
                        }, [
                          renderSlot(_ctx.$slots, "default", { item }, () => [
                            createTextVNode(
                              toDisplayString(item[__props.valueKey]),
                              1
                              /* TEXT */
                            )
                          ])
                        ], 10, _hoisted_3$12);
                      }),
                      128
                      /* KEYED_FRAGMENT */
                    ))
                  ]),
                  _: 3
                  /* FORWARDED */
                }, 8, ["id", "wrap-class", "view-class"]),
                _ctx.$slots.footer ? (openBlock(), createElementBlock(
                  "div",
                  {
                    key: 1,
                    class: normalizeClass(unref(ns).be("suggestion", "footer")),
                    onClick: _cache[1] || (_cache[1] = withModifiers(() => {
                    }, ["stop"]))
                  },
                  [
                    renderSlot(_ctx.$slots, "footer")
                  ],
                  2
                  /* CLASS */
                )) : createCommentVNode("v-if", true)
              ],
              6
              /* CLASS, STYLE */
            )
          ]),
          default: withCtx(() => [
            createBaseVNode("div", {
              ref_key: "listboxRef",
              ref: listboxRef,
              class: normalizeClass([unref(ns).b(), _ctx.$attrs.class]),
              style: normalizeStyle(styles.value),
              role: "combobox",
              "aria-haspopup": "listbox",
              "aria-expanded": suggestionVisible.value,
              "aria-owns": unref(listboxId)
            }, [
              createVNode(unref(ElInput), mergeProps({
                ref_key: "inputRef",
                ref: inputRef
              }, mergeProps(passInputProps.value, _ctx.$attrs), {
                "model-value": __props.modelValue,
                disabled: unref(disabled),
                onInput: handleInput,
                onChange: handleChange,
                onFocus: handleFocus,
                onBlur: handleBlur,
                onClear: handleClear,
                onKeydown: handleKeydown,
                onMousedown: handleMouseDown
              }), createSlots({
                _: 2
                /* DYNAMIC */
              }, [
                _ctx.$slots.prepend ? {
                  name: "prepend",
                  fn: withCtx(() => [
                    renderSlot(_ctx.$slots, "prepend")
                  ]),
                  key: "0"
                } : void 0,
                _ctx.$slots.append ? {
                  name: "append",
                  fn: withCtx(() => [
                    renderSlot(_ctx.$slots, "append")
                  ]),
                  key: "1"
                } : void 0,
                _ctx.$slots.prefix ? {
                  name: "prefix",
                  fn: withCtx(() => [
                    renderSlot(_ctx.$slots, "prefix")
                  ]),
                  key: "2"
                } : void 0,
                _ctx.$slots.suffix ? {
                  name: "suffix",
                  fn: withCtx(() => [
                    renderSlot(_ctx.$slots, "suffix")
                  ]),
                  key: "3"
                } : void 0
              ]), 1040, ["model-value", "disabled"])
            ], 14, _hoisted_1$20)
          ]),
          _: 3
          /* FORWARDED */
        }, 8, ["visible", "placement", "popper-class", "popper-style", "teleported", "append-to", "transition"]);
      };
    }
  });
  const ElAutocomplete = withInstall(_sfc_main$37);
  const avatarProps = buildProps({
    /**
     * @description avatar size.
     */
    size: {
      type: [Number, String],
      values: componentSizes,
      validator: (val) => isNumber(val)
    },
    /**
     * @description avatar shape.
     */
    shape: {
      type: String,
      values: ["circle", "square"]
    },
    /**
     * @description representation type to icon, more info on icon component.
     */
    icon: {
      type: iconPropType
    },
    /**
     * @description the source of the image for an image avatar.
     */
    src: {
      type: String,
      default: ""
    },
    /**
     * @description native attribute `alt` of image avatar.
     */
    alt: String,
    /**
     * @description native attribute srcset of image avatar.
     */
    srcSet: String,
    /**
     * @description set how the image fit its container for an image avatar.
     */
    fit: {
      type: definePropType(String),
      default: "cover"
    }
  });
  const avatarEmits = {
    error: (evt) => evt instanceof Event
  };
  const avatarGroupContextKey = /* @__PURE__ */ Symbol(
    "avatarGroupContextKey"
  );
  const _hoisted_1$1$ = ["src", "alt", "srcset"];
  var _sfc_main$36 = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElAvatar"
    },
    __name: "avatar",
    props: avatarProps,
    emits: avatarEmits,
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const avatarGroupContext = inject(avatarGroupContextKey, void 0);
      const ns = useNamespace("avatar");
      const hasLoadError = ref(false);
      const size = computed(() => {
        var _a;
        return (_a = props2.size) != null ? _a : avatarGroupContext == null ? void 0 : avatarGroupContext.size;
      });
      const shape = computed(
        () => {
          var _a, _b;
          return (_b = (_a = props2.shape) != null ? _a : avatarGroupContext == null ? void 0 : avatarGroupContext.shape) != null ? _b : "circle";
        }
      );
      const avatarClass = computed(() => {
        const { icon } = props2;
        const classList = [ns.b()];
        if (isString(size.value)) classList.push(ns.m(size.value));
        if (icon) classList.push(ns.m("icon"));
        if (shape.value) classList.push(ns.m(shape.value));
        return classList;
      });
      const sizeStyle = computed(() => {
        return isNumber(size.value) ? ns.cssVarBlock({
          size: addUnit(size.value)
        }) : void 0;
      });
      const fitStyle = computed(() => ({
        objectFit: props2.fit
      }));
      watch(
        () => [props2.src, props2.srcSet],
        () => hasLoadError.value = false
      );
      function handleError2(e) {
        hasLoadError.value = true;
        emit2("error", e);
      }
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "span",
          {
            class: normalizeClass(avatarClass.value),
            style: normalizeStyle(sizeStyle.value)
          },
          [
            (__props.src || __props.srcSet) && !hasLoadError.value ? (openBlock(), createElementBlock("img", {
              key: 0,
              src: __props.src,
              alt: __props.alt,
              srcset: __props.srcSet,
              style: normalizeStyle(fitStyle.value),
              onError: handleError2
            }, null, 44, _hoisted_1$1$)) : __props.icon ? (openBlock(), createBlock(unref(ElIcon), { key: 1 }, {
              default: withCtx(() => [
                (openBlock(), createBlock(resolveDynamicComponent(__props.icon)))
              ]),
              _: 1
              /* STABLE */
            })) : renderSlot(_ctx.$slots, "default", { key: 2 })
          ],
          6
          /* CLASS, STYLE */
        );
      };
    }
  });
  const avatarGroupProps = {
    /**
     * @description control the size of avatars in this avatar-group
     */
    size: {
      type: definePropType([Number, String]),
      values: componentSizes,
      validator: (val) => isNumber(val)
    },
    /**
     * @description control the shape of avatars in this avatar-group
     */
    shape: {
      type: definePropType(String),
      values: ["circle", "square"]
    },
    /**
     * @description whether to collapse avatars
     */
    collapseAvatars: Boolean,
    /**
     * @description whether show all collapsed avatars when mouse hover text of the collapse-avatar. To use this, `collapse-avatars` must be true
     */
    collapseAvatarsTooltip: Boolean,
    /**
     * @description the max avatars number to be shown. To use this, `collapse-avatars` must be true
     */
    maxCollapseAvatars: {
      type: Number,
      default: 1
    },
    /**
     * @description tooltip theme, built-in theme: `dark` / `light`
     */
    effect: {
      type: definePropType(String),
      default: "light"
    },
    /**
     * @description placement of tooltip
     */
    placement: {
      type: definePropType(String),
      values: Ee,
      default: "top"
    },
    /**
     * @description custom class name for tooltip
     */
    popperClass: useTooltipContentProps.popperClass,
    /**
     * @description custom style for tooltip
     */
    popperStyle: useTooltipContentProps.popperStyle,
    /**
     * @description custom class name for the collapse-avatar
     */
    collapseClass: String,
    /**
     * @description custom style for the collapse-avatar
     */
    collapseStyle: {
      type: definePropType([String, Array, Object])
    }
  };
  var AvatarGroup = /* @__PURE__ */ defineComponent({
    name: "ElAvatarGroup",
    props: avatarGroupProps,
    setup(props2, {
      slots
    }) {
      const ns = useNamespace("avatar-group");
      provide(avatarGroupContextKey, reactive({
        size: toRef(props2, "size"),
        shape: toRef(props2, "shape")
      }));
      return () => {
        var _a, _b;
        const avatars = flattedChildren((_b = (_a = slots.default) == null ? void 0 : _a.call(slots)) != null ? _b : []);
        let visibleAvatars = avatars;
        const showCollapseAvatar = props2.collapseAvatars && avatars.length > props2.maxCollapseAvatars;
        if (showCollapseAvatar) {
          visibleAvatars = avatars.slice(0, props2.maxCollapseAvatars);
          const hiddenAvatars = avatars.slice(props2.maxCollapseAvatars);
          visibleAvatars.push(createVNode(ElTooltip, {
            "popperClass": props2.popperClass,
            "popperStyle": props2.popperStyle,
            "placement": props2.placement,
            "effect": props2.effect,
            "disabled": !props2.collapseAvatarsTooltip
          }, {
            default: () => createVNode(_sfc_main$36, {
              "size": props2.size,
              "shape": props2.shape,
              "class": props2.collapseClass,
              "style": props2.collapseStyle
            }, {
              default: () => [createTextVNode("+ "), hiddenAvatars.length]
            }),
            content: () => createVNode("div", {
              "class": ns.e("collapse-avatars")
            }, [hiddenAvatars.map((node, idx) => {
              var _a2;
              return isVNode(node) ? cloneVNode(node, {
                key: (_a2 = node.key) != null ? _a2 : idx
              }) : node;
            })])
          }));
        }
        return createVNode("div", {
          "class": ns.b()
        }, [visibleAvatars]);
      };
    }
  });
  const ElAvatar = withInstall(_sfc_main$36, {
    AvatarGroup
  });
  const ElAvatarGroup = withNoopInstall(AvatarGroup);
  const backtopProps = {
    /**
     * @description the button will not show until the scroll height reaches this value.
     */
    visibilityHeight: {
      type: Number,
      default: 200
    },
    /**
     * @description the target to trigger scroll.
     */
    target: {
      type: String,
      default: ""
    },
    /**
     * @description right distance.
     */
    right: {
      type: Number,
      default: 40
    },
    /**
     * @description bottom distance.
     */
    bottom: {
      type: Number,
      default: 40
    }
  };
  const backtopEmits = {
    click: (evt) => evt instanceof MouseEvent
  };
  const useBackTop = (props2, emit2, componentName2) => {
    const el = shallowRef();
    const container = shallowRef();
    const visible = ref(false);
    const handleScroll2 = () => {
      if (el.value) visible.value = el.value.scrollTop >= props2.visibilityHeight;
    };
    const handleClick = (event) => {
      var _a;
      (_a = el.value) == null ? void 0 : _a.scrollTo({ top: 0, behavior: "smooth" });
      emit2("click", event);
    };
    const handleScrollThrottled = useThrottleFn(handleScroll2, 300, true);
    useEventListener(container, "scroll", handleScrollThrottled);
    onMounted(() => {
      var _a;
      container.value = document;
      el.value = document.documentElement;
      if (props2.target) {
        el.value = (_a = document.querySelector(props2.target)) != null ? _a : void 0;
        if (!el.value) {
          throwError(componentName2, `target does not exist: ${props2.target}`);
        }
        container.value = el.value;
      }
      handleScroll2();
    });
    return {
      visible,
      handleClick
    };
  };
  const COMPONENT_NAME$j = "ElBacktop";
  var _sfc_main$35 = /* @__PURE__ */ defineComponent({
    ...{
      name: COMPONENT_NAME$j
    },
    __name: "backtop",
    props: backtopProps,
    emits: backtopEmits,
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const ns = useNamespace("backtop");
      const { handleClick, visible } = useBackTop(props2, emit2, COMPONENT_NAME$j);
      const backTopStyle = computed(() => ({
        right: `${props2.right}px`,
        bottom: `${props2.bottom}px`
      }));
      return (_ctx, _cache) => {
        return openBlock(), createBlock(Transition, {
          name: `${unref(ns).namespace.value}-fade-in`
        }, {
          default: withCtx(() => [
            unref(visible) ? (openBlock(), createElementBlock(
              "div",
              {
                key: 0,
                style: normalizeStyle(backTopStyle.value),
                class: normalizeClass(unref(ns).b()),
                onClick: _cache[0] || (_cache[0] = withModifiers(
                  //@ts-ignore
                  (...args) => unref(handleClick) && unref(handleClick)(...args),
                  ["stop"]
                ))
              },
              [
                renderSlot(_ctx.$slots, "default", {}, () => [
                  createVNode(unref(ElIcon), {
                    class: normalizeClass(unref(ns).e("icon"))
                  }, {
                    default: withCtx(() => [
                      createVNode(unref(caret_top_default))
                    ]),
                    _: 1
                    /* STABLE */
                  }, 8, ["class"])
                ])
              ],
              6
              /* CLASS, STYLE */
            )) : createCommentVNode("v-if", true)
          ]),
          _: 3
          /* FORWARDED */
        }, 8, ["name"]);
      };
    }
  });
  const ElBacktop = withInstall(_sfc_main$35);
  const badgeProps = buildProps({
    /**
     * @description display value.
     */
    value: {
      type: [String, Number],
      default: ""
    },
    /**
     * @description maximum value, shows `{max}+` when exceeded. Only works if value is a number.
     */
    max: {
      type: Number,
      default: 99
    },
    /**
     * @description if a little dot is displayed.
     */
    isDot: Boolean,
    /**
     * @description hidden badge.
     */
    hidden: Boolean,
    /**
     * @description badge type.
     */
    type: {
      type: String,
      values: ["primary", "success", "warning", "info", "danger"],
      default: "danger"
    },
    /**
     * @description whether to show badge when value is zero.
     */
    showZero: {
      type: Boolean,
      default: true
    },
    /**
     * @description customize dot background color
     */
    color: String,
    /**
     * @description CSS style of badge
     */
    badgeStyle: {
      type: definePropType([String, Object, Array])
    },
    /**
     * @description set offset of the badge
     */
    offset: {
      type: definePropType(Array),
      default: () => [0, 0]
    },
    /**
     * @description custom class name of badge
     */
    badgeClass: {
      type: String
    }
  });
  var _sfc_main$34 = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElBadge"
    },
    __name: "badge",
    props: badgeProps,
    setup(__props, { expose: __expose }) {
      const props2 = __props;
      const ns = useNamespace("badge");
      const content = computed(() => {
        if (props2.isDot) return "";
        if (isNumber(props2.value) && isNumber(props2.max)) {
          return props2.max < props2.value ? `${props2.max}+` : `${props2.value}`;
        }
        return `${props2.value}`;
      });
      const style = computed(() => {
        var _a;
        return [
          {
            backgroundColor: props2.color,
            marginRight: addUnit(-props2.offset[0]),
            marginTop: addUnit(props2.offset[1])
          },
          (_a = props2.badgeStyle) != null ? _a : {}
        ];
      });
      __expose({
        /** @description badge content */
        content
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass(unref(ns).b())
          },
          [
            renderSlot(_ctx.$slots, "default"),
            createVNode(Transition, {
              name: `${unref(ns).namespace.value}-zoom-in-center`,
              persisted: ""
            }, {
              default: withCtx(() => [
                withDirectives(createBaseVNode(
                  "sup",
                  {
                    class: normalizeClass([
                      unref(ns).e("content"),
                      unref(ns).em("content", __props.type),
                      unref(ns).is("fixed", !!_ctx.$slots.default),
                      unref(ns).is("dot", __props.isDot),
                      unref(ns).is("hide-zero", !__props.showZero && __props.value === 0),
                      __props.badgeClass
                    ]),
                    style: normalizeStyle(style.value)
                  },
                  [
                    renderSlot(_ctx.$slots, "content", { value: content.value }, () => [
                      createTextVNode(
                        toDisplayString(content.value),
                        1
                        /* TEXT */
                      )
                    ])
                  ],
                  6
                  /* CLASS, STYLE */
                ), [
                  [vShow, !__props.hidden && (content.value || __props.isDot || _ctx.$slots.content)]
                ])
              ]),
              _: 3
              /* FORWARDED */
            }, 8, ["name"])
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const ElBadge = withInstall(_sfc_main$34);
  const breadcrumbProps = buildProps({
    /**
     * @description separator character
     */
    separator: {
      type: String,
      default: "/"
    },
    /**
     * @description icon component of icon separator
     */
    separatorIcon: {
      type: iconPropType
    }
  });
  const breadcrumbKey = /* @__PURE__ */ Symbol("breadcrumbKey");
  const _hoisted_1$1_ = ["aria-label"];
  var _sfc_main$33 = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElBreadcrumb"
    },
    __name: "breadcrumb",
    props: breadcrumbProps,
    setup(__props) {
      const { t } = useLocale();
      const props2 = __props;
      const ns = useNamespace("breadcrumb");
      const breadcrumb = ref();
      provide(breadcrumbKey, props2);
      onMounted(() => {
        const items = breadcrumb.value.querySelectorAll(`.${ns.e("item")}`);
        if (items.length) {
          items[items.length - 1].setAttribute("aria-current", "page");
        }
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock("div", {
          ref_key: "breadcrumb",
          ref: breadcrumb,
          class: normalizeClass(unref(ns).b()),
          "aria-label": unref(t)("el.breadcrumb.label"),
          role: "navigation"
        }, [
          renderSlot(_ctx.$slots, "default")
        ], 10, _hoisted_1$1_);
      };
    }
  });
  const breadcrumbItemProps = buildProps({
    /**
     * @description target route of the link, same as `to` of `vue-router`
     */
    to: {
      type: definePropType([String, Object]),
      default: ""
    },
    /**
     * @description if `true`, the navigation will not leave a history record
     */
    replace: Boolean
  });
  var _sfc_main$32 = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElBreadcrumbItem"
    },
    __name: "breadcrumb-item",
    props: breadcrumbItemProps,
    setup(__props) {
      const props2 = __props;
      const instance = getCurrentInstance();
      const breadcrumbContext = inject(breadcrumbKey, void 0);
      const ns = useNamespace("breadcrumb");
      const router = instance.appContext.config.globalProperties.$router;
      const onClick = () => {
        if (!props2.to || !router) return;
        props2.replace ? router.replace(props2.to) : router.push(props2.to);
      };
      return (_ctx, _cache) => {
        var _a, _b;
        return openBlock(), createElementBlock(
          "span",
          {
            class: normalizeClass(unref(ns).e("item"))
          },
          [
            createBaseVNode(
              "span",
              {
                class: normalizeClass([unref(ns).e("inner"), unref(ns).is("link", !!__props.to)]),
                role: "link",
                onClick
              },
              [
                renderSlot(_ctx.$slots, "default")
              ],
              2
              /* CLASS */
            ),
            ((_a = unref(breadcrumbContext)) == null ? void 0 : _a.separatorIcon) ? (openBlock(), createBlock(unref(ElIcon), {
              key: 0,
              class: normalizeClass(unref(ns).e("separator"))
            }, {
              default: withCtx(() => [
                (openBlock(), createBlock(resolveDynamicComponent(unref(breadcrumbContext).separatorIcon)))
              ]),
              _: 1
              /* STABLE */
            }, 8, ["class"])) : (openBlock(), createElementBlock(
              "span",
              {
                key: 1,
                class: normalizeClass(unref(ns).e("separator")),
                role: "presentation"
              },
              toDisplayString((_b = unref(breadcrumbContext)) == null ? void 0 : _b.separator),
              3
              /* TEXT, CLASS */
            ))
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const ElBreadcrumb = withInstall(_sfc_main$33, {
    BreadcrumbItem: _sfc_main$32
  });
  const ElBreadcrumbItem = withNoopInstall(_sfc_main$32);
  const buttonTypes = [
    "default",
    "primary",
    "success",
    "warning",
    "info",
    "danger",
    /**
     * @deprecated
     * Text type will be deprecated in the next major version (3.0.0)
     */
    "text",
    ""
  ];
  const buttonNativeTypes = ["button", "submit", "reset"];
  const buttonProps = buildProps({
    /**
     * @description button size
     */
    size: useSizeProp,
    /**
     * @description disable the button
     */
    disabled: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description button type
     */
    type: {
      type: String,
      values: buttonTypes,
      default: ""
    },
    /**
     * @description icon component
     */
    icon: {
      type: iconPropType
    },
    /**
     * @description native button type
     */
    nativeType: {
      type: String,
      values: buttonNativeTypes,
      default: "button"
    },
    /**
     * @description determine whether it's loading
     */
    loading: Boolean,
    /**
     * @description customize loading icon component
     */
    loadingIcon: {
      type: iconPropType,
      default: () => loading_default
    },
    /**
     * @description determine whether it's a plain button
     */
    plain: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description determine whether it's a text button
     */
    text: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description determine whether it's a link button
     */
    link: Boolean,
    /**
     * @description determine whether the text button background color is always on
     */
    bg: Boolean,
    /**
     * @description native button autofocus
     */
    autofocus: Boolean,
    /**
     * @description determine whether it's a round button
     */
    round: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description determine whether it's a circle button
     */
    circle: Boolean,
    /**
     * @description custom button color, automatically calculate `hover` and `active` color
     */
    color: String,
    /**
     * @description dark mode, which automatically converts `color` to dark mode colors
     */
    dark: Boolean,
    /**
     * @description automatically insert a space between two chinese characters
     */
    autoInsertSpace: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description custom element tag
     */
    tag: {
      type: definePropType([String, Object]),
      default: "button"
    }
  });
  const buttonEmits = {
    click: (evt) => evt instanceof MouseEvent
  };
  const buttonGroupContextKey = /* @__PURE__ */ Symbol(
    "buttonGroupContextKey"
  );
  const useDeprecated = ({ from, replacement, scope, version: version2, ref: ref2, type = "API" }, condition) => {
    watch(
      () => unref(condition),
      (val) => {
      },
      {
        immediate: true
      }
    );
  };
  const useButton = (props2, emit2) => {
    useDeprecated(
      {
        from: "type.text",
        replacement: "link",
        version: "3.0.0",
        scope: "props",
        ref: "https://element-plus.org/en-US/component/button.html#button-attributes"
      },
      computed(() => props2.type === "text")
    );
    const buttonGroupContext = inject(buttonGroupContextKey, void 0);
    const globalConfig2 = useGlobalConfig("button");
    const { form } = useFormItem();
    const _size = useFormSize(computed(() => buttonGroupContext == null ? void 0 : buttonGroupContext.size));
    const _disabled = useFormDisabled();
    const _ref = ref();
    const slots = useSlots();
    const _type = computed(
      () => {
        var _a;
        return props2.type || (buttonGroupContext == null ? void 0 : buttonGroupContext.type) || ((_a = globalConfig2.value) == null ? void 0 : _a.type) || "";
      }
    );
    const autoInsertSpace = computed(
      () => {
        var _a, _b, _c;
        return (_c = (_b = props2.autoInsertSpace) != null ? _b : (_a = globalConfig2.value) == null ? void 0 : _a.autoInsertSpace) != null ? _c : false;
      }
    );
    const _plain = computed(
      () => {
        var _a, _b, _c;
        return (_c = (_b = props2.plain) != null ? _b : (_a = globalConfig2.value) == null ? void 0 : _a.plain) != null ? _c : false;
      }
    );
    const _round = computed(
      () => {
        var _a, _b, _c;
        return (_c = (_b = props2.round) != null ? _b : (_a = globalConfig2.value) == null ? void 0 : _a.round) != null ? _c : false;
      }
    );
    const _text = computed(() => {
      var _a, _b, _c;
      return (_c = (_b = props2.text) != null ? _b : (_a = globalConfig2.value) == null ? void 0 : _a.text) != null ? _c : false;
    });
    const _props = computed(() => {
      if (props2.tag === "button") {
        return {
          ariaDisabled: _disabled.value || props2.loading,
          disabled: _disabled.value || props2.loading,
          autofocus: props2.autofocus,
          type: props2.nativeType
        };
      }
      return {};
    });
    const shouldAddSpace = computed(() => {
      var _a;
      const defaultSlot = (_a = slots.default) == null ? void 0 : _a.call(slots);
      if (autoInsertSpace.value && (defaultSlot == null ? void 0 : defaultSlot.length) === 1) {
        const slot = defaultSlot[0];
        if ((slot == null ? void 0 : slot.type) === Text) {
          const text = slot.children;
          return new RegExp("^\\p{Unified_Ideograph}{2}$", "u").test(text.trim());
        }
      }
      return false;
    });
    const handleClick = (evt) => {
      if (_disabled.value || props2.loading) {
        evt.stopPropagation();
        return;
      }
      if (props2.nativeType === "reset") {
        form == null ? void 0 : form.resetFields();
      }
      emit2("click", evt);
    };
    return {
      _disabled,
      _size,
      _type,
      _ref,
      _props,
      _plain,
      _round,
      _text,
      shouldAddSpace,
      handleClick
    };
  };
  function bound01(n, max2) {
    if (isOnePointZero(n)) {
      n = "100%";
    }
    var isPercent = isPercentage(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(n) {
    return typeof n === "string" && n.indexOf(".") !== -1 && parseFloat(n) === 1;
  }
  function isPercentage(n) {
    return typeof n === "string" && n.indexOf("%") !== -1;
  }
  function boundAlpha(a2) {
    a2 = parseFloat(a2);
    if (isNaN(a2) || a2 < 0 || a2 > 1) {
      a2 = 1;
    }
    return a2;
  }
  function convertToPercentage(n) {
    if (n <= 1) {
      return "".concat(Number(n) * 100, "%");
    }
    return n;
  }
  function pad2(c2) {
    return c2.length === 1 ? "0" + c2 : String(c2);
  }
  function rgbToRgb(r, g, b2) {
    return {
      r: bound01(r, 255) * 255,
      g: bound01(g, 255) * 255,
      b: bound01(b2, 255) * 255
    };
  }
  function rgbToHsl(r, g, b2) {
    r = bound01(r, 255);
    g = bound01(g, 255);
    b2 = bound01(b2, 255);
    var max2 = Math.max(r, g, b2);
    var min2 = Math.min(r, g, b2);
    var h2 = 0;
    var s2 = 0;
    var l2 = (max2 + min2) / 2;
    if (max2 === min2) {
      s2 = 0;
      h2 = 0;
    } else {
      var d2 = max2 - min2;
      s2 = l2 > 0.5 ? d2 / (2 - max2 - min2) : d2 / (max2 + min2);
      switch (max2) {
        case r:
          h2 = (g - b2) / d2 + (g < b2 ? 6 : 0);
          break;
        case g:
          h2 = (b2 - r) / d2 + 2;
          break;
        case b2:
          h2 = (r - g) / d2 + 4;
          break;
      }
      h2 /= 6;
    }
    return { h: h2, s: s2, l: l2 };
  }
  function hue2rgb(p2, q, t) {
    if (t < 0) {
      t += 1;
    }
    if (t > 1) {
      t -= 1;
    }
    if (t < 1 / 6) {
      return p2 + (q - p2) * (6 * t);
    }
    if (t < 1 / 2) {
      return q;
    }
    if (t < 2 / 3) {
      return p2 + (q - p2) * (2 / 3 - t) * 6;
    }
    return p2;
  }
  function hslToRgb(h2, s2, l2) {
    var r;
    var g;
    var b2;
    h2 = bound01(h2, 360);
    s2 = bound01(s2, 100);
    l2 = bound01(l2, 100);
    if (s2 === 0) {
      g = l2;
      b2 = l2;
      r = l2;
    } else {
      var q = l2 < 0.5 ? l2 * (1 + s2) : l2 + s2 - l2 * s2;
      var p2 = 2 * l2 - q;
      r = hue2rgb(p2, q, h2 + 1 / 3);
      g = hue2rgb(p2, q, h2);
      b2 = hue2rgb(p2, q, h2 - 1 / 3);
    }
    return { r: r * 255, g: g * 255, b: b2 * 255 };
  }
  function rgbToHsv(r, g, b2) {
    r = bound01(r, 255);
    g = bound01(g, 255);
    b2 = bound01(b2, 255);
    var max2 = Math.max(r, g, b2);
    var min2 = Math.min(r, g, b2);
    var h2 = 0;
    var v2 = max2;
    var d2 = max2 - min2;
    var s2 = max2 === 0 ? 0 : d2 / max2;
    if (max2 === min2) {
      h2 = 0;
    } else {
      switch (max2) {
        case r:
          h2 = (g - b2) / d2 + (g < b2 ? 6 : 0);
          break;
        case g:
          h2 = (b2 - r) / d2 + 2;
          break;
        case b2:
          h2 = (r - g) / d2 + 4;
          break;
      }
      h2 /= 6;
    }
    return { h: h2, s: s2, v: v2 };
  }
  function hsvToRgb(h2, s2, v2) {
    h2 = bound01(h2, 360) * 6;
    s2 = bound01(s2, 100);
    v2 = bound01(v2, 100);
    var i = Math.floor(h2);
    var f2 = h2 - i;
    var p2 = v2 * (1 - s2);
    var q = v2 * (1 - f2 * s2);
    var t = v2 * (1 - (1 - f2) * s2);
    var mod = i % 6;
    var r = [v2, q, p2, p2, t, v2][mod];
    var g = [t, v2, v2, q, p2, p2][mod];
    var b2 = [p2, p2, t, v2, v2, q][mod];
    return { r: r * 255, g: g * 255, b: b2 * 255 };
  }
  function rgbToHex(r, g, b2, allow3Char) {
    var hex = [
      pad2(Math.round(r).toString(16)),
      pad2(Math.round(g).toString(16)),
      pad2(Math.round(b2).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, b2, a2, allow4Char) {
    var hex = [
      pad2(Math.round(r).toString(16)),
      pad2(Math.round(g).toString(16)),
      pad2(Math.round(b2).toString(16)),
      pad2(convertDecimalToHex(a2))
    ];
    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(d2) {
    return Math.round(parseFloat(d2) * 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 a2 = 1;
    var s2 = null;
    var v2 = null;
    var l2 = null;
    var ok = false;
    var format2 = 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;
        format2 = String(color.r).substr(-1) === "%" ? "prgb" : "rgb";
      } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {
        s2 = convertToPercentage(color.s);
        v2 = convertToPercentage(color.v);
        rgb = hsvToRgb(color.h, s2, v2);
        ok = true;
        format2 = "hsv";
      } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {
        s2 = convertToPercentage(color.s);
        l2 = convertToPercentage(color.l);
        rgb = hslToRgb(color.h, s2, l2);
        ok = true;
        format2 = "hsl";
      }
      if (Object.prototype.hasOwnProperty.call(color, "a")) {
        a2 = color.a;
      }
    }
    a2 = boundAlpha(a2);
    return {
      ok,
      format: color.format || format2,
      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: a2
    };
  }
  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 _a;
        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 = (_a = opts.format) !== null && _a !== void 0 ? _a : 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 s2 = this.toHsl().s;
        return s2 === 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 s2 = Math.round(hsv.s * 100);
        var v2 = Math.round(hsv.v * 100);
        return this.a === 1 ? "hsv(".concat(h2, ", ").concat(s2, "%, ").concat(v2, "%)") : "hsva(".concat(h2, ", ").concat(s2, "%, ").concat(v2, "%, ").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 s2 = Math.round(hsl.s * 100);
        var l2 = Math.round(hsl.l * 100);
        return this.a === 1 ? "hsl(".concat(h2, ", ").concat(s2, "%, ").concat(l2, "%)") : "hsla(".concat(h2, ", ").concat(s2, "%, ").concat(l2, "%, ").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 b2 = Math.round(this.b);
        return this.a === 1 ? "rgb(".concat(r, ", ").concat(g, ", ").concat(b2, ")") : "rgba(".concat(r, ", ").concat(g, ", ").concat(b2, ", ").concat(this.roundA, ")");
      };
      TinyColor2.prototype.toPercentageRgb = function() {
        var fmt = function(x2) {
          return "".concat(Math.round(bound01(x2, 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(x2) {
          return Math.round(bound01(x2, 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, _a = Object.entries(names); _i < _a.length; _i++) {
          var _b = _a[_i], key = _b[0], value = _b[1];
          if (hex === value) {
            return key;
          }
        }
        return false;
      };
      TinyColor2.prototype.toString = function(format2) {
        var formatSet = Boolean(format2);
        format2 = format2 !== null && format2 !== void 0 ? format2 : this.format;
        var formattedString = false;
        var hasAlpha = this.a < 1 && this.a >= 0;
        var needsAlphaFormat = !formatSet && hasAlpha && (format2.startsWith("hex") || format2 === "name");
        if (needsAlphaFormat) {
          if (format2 === "name" && this.a === 0) {
            return this.toName();
          }
          return this.toRgbString();
        }
        if (format2 === "rgb") {
          formattedString = this.toRgbString();
        }
        if (format2 === "prgb") {
          formattedString = this.toPercentageRgbString();
        }
        if (format2 === "hex" || format2 === "hex6") {
          formattedString = this.toHexString();
        }
        if (format2 === "hex3") {
          formattedString = this.toHexString(true);
        }
        if (format2 === "hex4") {
          formattedString = this.toHex8String(true);
        }
        if (format2 === "hex8") {
          formattedString = this.toHex8String();
        }
        if (format2 === "name") {
          formattedString = this.toName();
        }
        if (format2 === "hsl") {
          formattedString = this.toHslString();
        }
        if (format2 === "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 p2 = amount / 100;
        var rgba = {
          r: (rgb2.r - rgb1.r) * p2 + rgb1.r,
          g: (rgb2.g - rgb1.g) * p2 + rgb1.g,
          b: (rgb2.b - rgb1.b) * p2 + rgb1.b,
          a: (rgb2.a - rgb1.a) * p2 + 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 s2 = hsv.s;
        var v2 = hsv.v;
        var res = [];
        var modification = 1 / results;
        while (results--) {
          res.push(new TinyColor2({ h: h2, s: s2, v: v2 }));
          v2 = (v2 + 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 result = [this];
        var increment = 360 / n;
        for (var i = 1; i < n; i++) {
          result.push(new TinyColor2({ h: (h2 + i * increment) % 360, s: hsl.s, l: hsl.l }));
        }
        return result;
      };
      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(props2) {
    const _disabled = useFormDisabled();
    const ns = useNamespace("button");
    return computed(() => {
      let styles = {};
      let buttonColor = props2.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 = props2.dark ? color.tint(20).toString() : darken(color, 20);
        if (props2.plain) {
          styles = ns.cssVarBlock({
            "bg-color": props2.dark ? darken(color, 90) : color.tint(90).toString(),
            "text-color": buttonColor,
            "border-color": props2.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")] = props2.dark ? darken(color, 90) : color.tint(90).toString();
            styles[ns.cssVarBlockName("disabled-text-color")] = props2.dark ? darken(color, 50) : color.tint(50).toString();
            styles[ns.cssVarBlockName("disabled-border-color")] = props2.dark ? darken(color, 80) : color.tint(80).toString();
          }
        } else {
          const hoverBgColor = props2.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 = props2.dark ? darken(color, 50) : color.tint(50).toString();
            styles[ns.cssVarBlockName("disabled-bg-color")] = disabledButtonColor;
            styles[ns.cssVarBlockName("disabled-text-color")] = props2.dark ? "rgba(255, 255, 255, 0.5)" : `var(${ns.cssVarName("color-white")})`;
            styles[ns.cssVarBlockName("disabled-border-color")] = disabledButtonColor;
          }
        }
      }
      return styles;
    });
  }
  var _sfc_main$31 = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElButton"
    },
    __name: "button",
    props: buttonProps,
    emits: buttonEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const buttonStyle = useButtonCustomStyle(props2);
      const ns = useNamespace("button");
      const {
        _ref,
        _size,
        _type,
        _disabled,
        _props,
        _plain,
        _round,
        _text,
        shouldAddSpace,
        handleClick
      } = useButton(props2, emit2);
      const buttonKls = computed(() => [
        ns.b(),
        ns.m(_type.value),
        ns.m(_size.value),
        ns.is("disabled", _disabled.value),
        ns.is("loading", props2.loading),
        ns.is("plain", _plain.value),
        ns.is("round", _round.value),
        ns.is("circle", props2.circle),
        ns.is("text", _text.value),
        ns.is("link", props2.link),
        ns.is("has-bg", props2.bg)
      ]);
      __expose({
        /** @description button html element */
        ref: _ref,
        /** @description button size */
        size: _size,
        /** @description button type */
        type: _type,
        /** @description button disabled */
        disabled: _disabled,
        /** @description whether adding space */
        shouldAddSpace
      });
      return (_ctx, _cache) => {
        return openBlock(), createBlock(resolveDynamicComponent(__props.tag), mergeProps({
          ref_key: "_ref",
          ref: _ref
        }, unref(_props), {
          class: buttonKls.value,
          style: unref(buttonStyle),
          onClick: unref(handleClick)
        }), {
          default: withCtx(() => [
            __props.loading ? (openBlock(), createElementBlock(
              Fragment,
              { key: 0 },
              [
                _ctx.$slots.loading ? renderSlot(_ctx.$slots, "loading", { key: 0 }) : (openBlock(), createBlock(unref(ElIcon), {
                  key: 1,
                  class: normalizeClass(unref(ns).is("loading"))
                }, {
                  default: withCtx(() => [
                    (openBlock(), createBlock(resolveDynamicComponent(__props.loadingIcon)))
                  ]),
                  _: 1
                  /* STABLE */
                }, 8, ["class"]))
              ],
              64
              /* STABLE_FRAGMENT */
            )) : __props.icon || _ctx.$slots.icon ? (openBlock(), createBlock(unref(ElIcon), { key: 1 }, {
              default: withCtx(() => [
                __props.icon ? (openBlock(), createBlock(resolveDynamicComponent(__props.icon), { key: 0 })) : renderSlot(_ctx.$slots, "icon", { key: 1 })
              ]),
              _: 3
              /* FORWARDED */
            })) : createCommentVNode("v-if", true),
            _ctx.$slots.default ? (openBlock(), createElementBlock(
              "span",
              {
                key: 2,
                class: normalizeClass({ [unref(ns).em("text", "expand")]: unref(shouldAddSpace) })
              },
              [
                renderSlot(_ctx.$slots, "default")
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true)
          ]),
          _: 3
          /* FORWARDED */
        }, 16, ["class", "style", "onClick"]);
      };
    }
  });
  const buttonGroupProps = {
    /**
     * @description control the size of buttons in this button-group
     */
    size: buttonProps.size,
    /**
     * @description control the type of buttons in this button-group
     */
    type: buttonProps.type,
    /**
     * @description display direction
     */
    direction: {
      type: definePropType(String),
      values: ["horizontal", "vertical"],
      default: "horizontal"
    }
  };
  var _sfc_main$30 = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElButtonGroup"
    },
    __name: "button-group",
    props: buttonGroupProps,
    setup(__props) {
      const props2 = __props;
      provide(
        buttonGroupContextKey,
        reactive({
          size: toRef(props2, "size"),
          type: toRef(props2, "type")
        })
      );
      const ns = useNamespace("button");
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass([unref(ns).b("group"), unref(ns).bm("group", props2.direction)])
          },
          [
            renderSlot(_ctx.$slots, "default")
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const ElButton = withInstall(_sfc_main$31, {
    ButtonGroup: _sfc_main$30
  });
  const ElButtonGroup$1 = withNoopInstall(_sfc_main$30);
  const isValidRange$1 = (range2) => isArray$1(range2) && range2.length === 2 && range2.every((item) => isDate(item));
  const calendarProps = buildProps({
    /**
     * @description binding value
     */
    modelValue: {
      type: Date
    },
    /**
     * @description time range, including start time and end time.
     *   Start time must be start day of week, end time must be end day of week, the time span cannot exceed two months.
     */
    range: {
      type: definePropType(Array),
      validator: isValidRange$1
    },
    /**
     * @description type of the controller for the Calendar header
     */
    controllerType: {
      type: String,
      values: ["button", "select"],
      default: "button"
    },
    /**
     * @description format label when `controller-type` is 'select'
     */
    formatter: {
      type: definePropType(Function)
    }
  });
  const calendarEmits = {
    [UPDATE_MODEL_EVENT]: (value) => isDate(value),
    [INPUT_EVENT]: (value) => isDate(value)
  };
  function getDefaultExportFromCjs(x2) {
    return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, "default") ? x2["default"] : x2;
  }
  var dayjs_min$1 = { exports: {} };
  var dayjs_min = dayjs_min$1.exports;
  var hasRequiredDayjs_min;
  function requireDayjs_min() {
    if (hasRequiredDayjs_min) return dayjs_min$1.exports;
    hasRequiredDayjs_min = 1;
    (function(module2, exports$1) {
      !(function(t, e) {
        module2.exports = e();
      })(dayjs_min, (function() {
        var t = 1e3, e = 6e4, n = 36e5, r = "millisecond", i = "second", s2 = "minute", u2 = "hour", a2 = "day", o2 = "week", c2 = "month", f2 = "quarter", h2 = "year", d2 = "date", l2 = "Invalid Date", $ = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, y = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, M2 = { name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), ordinal: function(t2) {
          var e2 = ["th", "st", "nd", "rd"], n2 = t2 % 100;
          return "[" + t2 + (e2[(n2 - 20) % 10] || e2[n2] || e2[0]) + "]";
        } }, m2 = function(t2, e2, n2) {
          var r2 = String(t2);
          return !r2 || r2.length >= e2 ? t2 : "" + Array(e2 + 1 - r2.length).join(n2) + t2;
        }, v2 = { s: m2, z: function(t2) {
          var e2 = -t2.utcOffset(), n2 = Math.abs(e2), r2 = Math.floor(n2 / 60), i2 = n2 % 60;
          return (e2 <= 0 ? "+" : "-") + m2(r2, 2, "0") + ":" + m2(i2, 2, "0");
        }, m: function t2(e2, n2) {
          if (e2.date() < n2.date()) return -t2(n2, e2);
          var r2 = 12 * (n2.year() - e2.year()) + (n2.month() - e2.month()), i2 = e2.clone().add(r2, c2), s3 = n2 - i2 < 0, u3 = e2.clone().add(r2 + (s3 ? -1 : 1), c2);
          return +(-(r2 + (n2 - i2) / (s3 ? i2 - u3 : u3 - i2)) || 0);
        }, a: function(t2) {
          return t2 < 0 ? Math.ceil(t2) || 0 : Math.floor(t2);
        }, p: function(t2) {
          return { M: c2, y: h2, w: o2, d: a2, D: d2, h: u2, m: s2, s: i, ms: r, Q: f2 }[t2] || String(t2 || "").toLowerCase().replace(/s$/, "");
        }, u: function(t2) {
          return void 0 === t2;
        } }, g = "en", D2 = {};
        D2[g] = M2;
        var p2 = "$isDayjsObject", S2 = function(t2) {
          return t2 instanceof _2 || !(!t2 || !t2[p2]);
        }, w2 = function t2(e2, n2, r2) {
          var i2;
          if (!e2) return g;
          if ("string" == typeof e2) {
            var s3 = e2.toLowerCase();
            D2[s3] && (i2 = s3), n2 && (D2[s3] = n2, i2 = s3);
            var u3 = e2.split("-");
            if (!i2 && u3.length > 1) return t2(u3[0]);
          } else {
            var a3 = e2.name;
            D2[a3] = e2, i2 = a3;
          }
          return !r2 && i2 && (g = i2), i2 || !r2 && g;
        }, O2 = function(t2, e2) {
          if (S2(t2)) return t2.clone();
          var n2 = "object" == typeof e2 ? e2 : {};
          return n2.date = t2, n2.args = arguments, new _2(n2);
        }, b2 = v2;
        b2.l = w2, b2.i = S2, b2.w = function(t2, e2) {
          return O2(t2, { locale: e2.$L, utc: e2.$u, x: e2.$x, $offset: e2.$offset });
        };
        var _2 = (function() {
          function M3(t2) {
            this.$L = w2(t2.locale, null, true), this.parse(t2), this.$x = this.$x || t2.x || {}, this[p2] = true;
          }
          var m3 = M3.prototype;
          return m3.parse = function(t2) {
            this.$d = (function(t3) {
              var e2 = t3.date, n2 = t3.utc;
              if (null === e2) return /* @__PURE__ */ new Date(NaN);
              if (b2.u(e2)) return /* @__PURE__ */ new Date();
              if (e2 instanceof Date) return new Date(e2);
              if ("string" == typeof e2 && !/Z$/i.test(e2)) {
                var r2 = e2.match($);
                if (r2) {
                  var i2 = r2[2] - 1 || 0, s3 = (r2[7] || "0").substring(0, 3);
                  return n2 ? new Date(Date.UTC(r2[1], i2, r2[3] || 1, r2[4] || 0, r2[5] || 0, r2[6] || 0, s3)) : new Date(r2[1], i2, r2[3] || 1, r2[4] || 0, r2[5] || 0, r2[6] || 0, s3);
                }
              }
              return new Date(e2);
            })(t2), this.init();
          }, m3.init = function() {
            var t2 = this.$d;
            this.$y = t2.getFullYear(), this.$M = t2.getMonth(), this.$D = t2.getDate(), this.$W = t2.getDay(), this.$H = t2.getHours(), this.$m = t2.getMinutes(), this.$s = t2.getSeconds(), this.$ms = t2.getMilliseconds();
          }, m3.$utils = function() {
            return b2;
          }, m3.isValid = function() {
            return !(this.$d.toString() === l2);
          }, m3.isSame = function(t2, e2) {
            var n2 = O2(t2);
            return this.startOf(e2) <= n2 && n2 <= this.endOf(e2);
          }, m3.isAfter = function(t2, e2) {
            return O2(t2) < this.startOf(e2);
          }, m3.isBefore = function(t2, e2) {
            return this.endOf(e2) < O2(t2);
          }, m3.$g = function(t2, e2, n2) {
            return b2.u(t2) ? this[e2] : this.set(n2, t2);
          }, m3.unix = function() {
            return Math.floor(this.valueOf() / 1e3);
          }, m3.valueOf = function() {
            return this.$d.getTime();
          }, m3.startOf = function(t2, e2) {
            var n2 = this, r2 = !!b2.u(e2) || e2, f3 = b2.p(t2), l3 = function(t3, e3) {
              var i2 = b2.w(n2.$u ? Date.UTC(n2.$y, e3, t3) : new Date(n2.$y, e3, t3), n2);
              return r2 ? i2 : i2.endOf(a2);
            }, $2 = function(t3, e3) {
              return b2.w(n2.toDate()[t3].apply(n2.toDate("s"), (r2 ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e3)), n2);
            }, y2 = this.$W, M4 = this.$M, m4 = this.$D, v3 = "set" + (this.$u ? "UTC" : "");
            switch (f3) {
              case h2:
                return r2 ? l3(1, 0) : l3(31, 11);
              case c2:
                return r2 ? l3(1, M4) : l3(0, M4 + 1);
              case o2:
                var g2 = this.$locale().weekStart || 0, D3 = (y2 < g2 ? y2 + 7 : y2) - g2;
                return l3(r2 ? m4 - D3 : m4 + (6 - D3), M4);
              case a2:
              case d2:
                return $2(v3 + "Hours", 0);
              case u2:
                return $2(v3 + "Minutes", 1);
              case s2:
                return $2(v3 + "Seconds", 2);
              case i:
                return $2(v3 + "Milliseconds", 3);
              default:
                return this.clone();
            }
          }, m3.endOf = function(t2) {
            return this.startOf(t2, false);
          }, m3.$set = function(t2, e2) {
            var n2, o3 = b2.p(t2), f3 = "set" + (this.$u ? "UTC" : ""), l3 = (n2 = {}, n2[a2] = f3 + "Date", n2[d2] = f3 + "Date", n2[c2] = f3 + "Month", n2[h2] = f3 + "FullYear", n2[u2] = f3 + "Hours", n2[s2] = f3 + "Minutes", n2[i] = f3 + "Seconds", n2[r] = f3 + "Milliseconds", n2)[o3], $2 = o3 === a2 ? this.$D + (e2 - this.$W) : e2;
            if (o3 === c2 || o3 === h2) {
              var y2 = this.clone().set(d2, 1);
              y2.$d[l3]($2), y2.init(), this.$d = y2.set(d2, Math.min(this.$D, y2.daysInMonth())).$d;
            } else l3 && this.$d[l3]($2);
            return this.init(), this;
          }, m3.set = function(t2, e2) {
            return this.clone().$set(t2, e2);
          }, m3.get = function(t2) {
            return this[b2.p(t2)]();
          }, m3.add = function(r2, f3) {
            var d3, l3 = this;
            r2 = Number(r2);
            var $2 = b2.p(f3), y2 = function(t2) {
              var e2 = O2(l3);
              return b2.w(e2.date(e2.date() + Math.round(t2 * r2)), l3);
            };
            if ($2 === c2) return this.set(c2, this.$M + r2);
            if ($2 === h2) return this.set(h2, this.$y + r2);
            if ($2 === a2) return y2(1);
            if ($2 === o2) return y2(7);
            var M4 = (d3 = {}, d3[s2] = e, d3[u2] = n, d3[i] = t, d3)[$2] || 1, m4 = this.$d.getTime() + r2 * M4;
            return b2.w(m4, this);
          }, m3.subtract = function(t2, e2) {
            return this.add(-1 * t2, e2);
          }, m3.format = function(t2) {
            var e2 = this, n2 = this.$locale();
            if (!this.isValid()) return n2.invalidDate || l2;
            var r2 = t2 || "YYYY-MM-DDTHH:mm:ssZ", i2 = b2.z(this), s3 = this.$H, u3 = this.$m, a3 = this.$M, o3 = n2.weekdays, c3 = n2.months, f3 = n2.meridiem, h3 = function(t3, n3, i3, s4) {
              return t3 && (t3[n3] || t3(e2, r2)) || i3[n3].slice(0, s4);
            }, d3 = function(t3) {
              return b2.s(s3 % 12 || 12, t3, "0");
            }, $2 = f3 || function(t3, e3, n3) {
              var r3 = t3 < 12 ? "AM" : "PM";
              return n3 ? r3.toLowerCase() : r3;
            };
            return r2.replace(y, (function(t3, r3) {
              return r3 || (function(t4) {
                switch (t4) {
                  case "YY":
                    return String(e2.$y).slice(-2);
                  case "YYYY":
                    return b2.s(e2.$y, 4, "0");
                  case "M":
                    return a3 + 1;
                  case "MM":
                    return b2.s(a3 + 1, 2, "0");
                  case "MMM":
                    return h3(n2.monthsShort, a3, c3, 3);
                  case "MMMM":
                    return h3(c3, a3);
                  case "D":
                    return e2.$D;
                  case "DD":
                    return b2.s(e2.$D, 2, "0");
                  case "d":
                    return String(e2.$W);
                  case "dd":
                    return h3(n2.weekdaysMin, e2.$W, o3, 2);
                  case "ddd":
                    return h3(n2.weekdaysShort, e2.$W, o3, 3);
                  case "dddd":
                    return o3[e2.$W];
                  case "H":
                    return String(s3);
                  case "HH":
                    return b2.s(s3, 2, "0");
                  case "h":
                    return d3(1);
                  case "hh":
                    return d3(2);
                  case "a":
                    return $2(s3, u3, true);
                  case "A":
                    return $2(s3, u3, false);
                  case "m":
                    return String(u3);
                  case "mm":
                    return b2.s(u3, 2, "0");
                  case "s":
                    return String(e2.$s);
                  case "ss":
                    return b2.s(e2.$s, 2, "0");
                  case "SSS":
                    return b2.s(e2.$ms, 3, "0");
                  case "Z":
                    return i2;
                }
                return null;
              })(t3) || i2.replace(":", "");
            }));
          }, m3.utcOffset = function() {
            return 15 * -Math.round(this.$d.getTimezoneOffset() / 15);
          }, m3.diff = function(r2, d3, l3) {
            var $2, y2 = this, M4 = b2.p(d3), m4 = O2(r2), v3 = (m4.utcOffset() - this.utcOffset()) * e, g2 = this - m4, D3 = function() {
              return b2.m(y2, m4);
            };
            switch (M4) {
              case h2:
                $2 = D3() / 12;
                break;
              case c2:
                $2 = D3();
                break;
              case f2:
                $2 = D3() / 3;
                break;
              case o2:
                $2 = (g2 - v3) / 6048e5;
                break;
              case a2:
                $2 = (g2 - v3) / 864e5;
                break;
              case u2:
                $2 = g2 / n;
                break;
              case s2:
                $2 = g2 / e;
                break;
              case i:
                $2 = g2 / t;
                break;
              default:
                $2 = g2;
            }
            return l3 ? $2 : b2.a($2);
          }, m3.daysInMonth = function() {
            return this.endOf(c2).$D;
          }, m3.$locale = function() {
            return D2[this.$L];
          }, m3.locale = function(t2, e2) {
            if (!t2) return this.$L;
            var n2 = this.clone(), r2 = w2(t2, e2, true);
            return r2 && (n2.$L = r2), n2;
          }, m3.clone = function() {
            return b2.w(this.$d, this);
          }, m3.toDate = function() {
            return new Date(this.valueOf());
          }, m3.toJSON = function() {
            return this.isValid() ? this.toISOString() : null;
          }, m3.toISOString = function() {
            return this.$d.toISOString();
          }, m3.toString = function() {
            return this.$d.toUTCString();
          }, M3;
        })(), k = _2.prototype;
        return O2.prototype = k, [["$ms", r], ["$s", i], ["$m", s2], ["$H", u2], ["$W", a2], ["$M", c2], ["$y", h2], ["$D", d2]].forEach((function(t2) {
          k[t2[1]] = function(e2) {
            return this.$g(e2, t2[0], t2[1]);
          };
        })), O2.extend = function(t2, e2) {
          return t2.$i || (t2(e2, _2, O2), t2.$i = true), O2;
        }, O2.locale = w2, O2.isDayjs = S2, O2.unix = function(t2) {
          return O2(1e3 * t2);
        }, O2.en = D2[g], O2.Ls = D2, O2.p = {}, O2;
      }));
    })(dayjs_min$1);
    return dayjs_min$1.exports;
  }
  var dayjs_minExports = requireDayjs_min();
  const dayjs = /* @__PURE__ */ getDefaultExportFromCjs(dayjs_minExports);
  const buildTimeList = (value, bound) => {
    return [
      value > 0 ? value - 1 : void 0,
      value,
      value < bound ? value + 1 : void 0
    ];
  };
  const rangeArr = (n) => Array.from(Array.from({ length: n }).keys());
  const extractDateFormat = (format2) => {
    return format2.replace(/\W?m{1,2}|\W?ZZ/g, "").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi, "").trim();
  };
  const extractTimeFormat = (format2) => {
    return format2.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?Y{2,4}/g, "").trim();
  };
  const dateEquals = function(a2, b2) {
    const aIsDate = isDate(a2);
    const bIsDate = isDate(b2);
    if (aIsDate && bIsDate) {
      return a2.getTime() === b2.getTime();
    }
    if (!aIsDate && !bIsDate) {
      return a2 === b2;
    }
    return false;
  };
  const valueEquals = function(a2, b2) {
    const aIsArray = isArray$1(a2);
    const bIsArray = isArray$1(b2);
    if (aIsArray && bIsArray) {
      if (a2.length !== b2.length) {
        return false;
      }
      return a2.every((item, index) => dateEquals(item, b2[index]));
    }
    if (!aIsArray && !bIsArray) {
      return dateEquals(a2, b2);
    }
    return false;
  };
  const parseDate = function(date, format2, lang) {
    const day = isEmpty(format2) || format2 === "x" ? dayjs(date).locale(lang) : dayjs(date, format2).locale(lang);
    return day.isValid() ? day : void 0;
  };
  const formatter = function(date, format2, lang) {
    if (isEmpty(format2)) return date;
    if (format2 === "x") return +date;
    return dayjs(date).locale(lang).format(format2);
  };
  const makeList = (total2, method) => {
    var _a;
    const arr = [];
    const disabledArr = method == null ? void 0 : method();
    for (let i = 0; i < total2; i++) {
      arr.push((_a = disabledArr == null ? void 0 : disabledArr.includes(i)) != null ? _a : false);
    }
    return arr;
  };
  const dayOrDaysToDate = (dayOrDays) => {
    return isArray$1(dayOrDays) ? dayOrDays.map((d2) => d2.toDate()) : dayOrDays.toDate();
  };
  const getPrevMonthLastDays = (date, count) => {
    const lastDay = date.subtract(1, "month").endOf("month").date();
    return rangeArr(count).map((_2, index) => lastDay - (count - index - 1));
  };
  const getMonthDays = (date) => {
    const days = date.daysInMonth();
    return rangeArr(days).map((_2, index) => index + 1);
  };
  const toNestedArr = (days) => rangeArr(days.length / 7).map((index) => {
    const start = index * 7;
    return days.slice(start, start + 7);
  });
  const dateTableProps = buildProps({
    selectedDay: {
      type: definePropType(Object)
    },
    range: {
      type: definePropType(Array)
    },
    date: {
      type: definePropType(Object),
      required: true
    },
    hideHeader: {
      type: Boolean
    }
  });
  const dateTableEmits = {
    pick: (value) => isObject$2(value)
  };
  var localeData$2 = { exports: {} };
  var localeData$1 = localeData$2.exports;
  var hasRequiredLocaleData;
  function requireLocaleData() {
    if (hasRequiredLocaleData) return localeData$2.exports;
    hasRequiredLocaleData = 1;
    (function(module2, exports$1) {
      !(function(n, e) {
        module2.exports = e();
      })(localeData$1, (function() {
        return function(n, e, t) {
          var r = e.prototype, o2 = function(n2) {
            return n2 && (n2.indexOf ? n2 : n2.s);
          }, u2 = function(n2, e2, t2, r2, u3) {
            var i2 = n2.name ? n2 : n2.$locale(), a3 = o2(i2[e2]), s3 = o2(i2[t2]), f2 = a3 || s3.map((function(n3) {
              return n3.slice(0, r2);
            }));
            if (!u3) return f2;
            var d2 = i2.weekStart;
            return f2.map((function(n3, e3) {
              return f2[(e3 + (d2 || 0)) % 7];
            }));
          }, i = function() {
            return t.Ls[t.locale()];
          }, a2 = function(n2, e2) {
            return n2.formats[e2] || (function(n3) {
              return n3.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, (function(n4, e3, t2) {
                return e3 || t2.slice(1);
              }));
            })(n2.formats[e2.toUpperCase()]);
          }, s2 = function() {
            var n2 = this;
            return { months: function(e2) {
              return e2 ? e2.format("MMMM") : u2(n2, "months");
            }, monthsShort: function(e2) {
              return e2 ? e2.format("MMM") : u2(n2, "monthsShort", "months", 3);
            }, firstDayOfWeek: function() {
              return n2.$locale().weekStart || 0;
            }, weekdays: function(e2) {
              return e2 ? e2.format("dddd") : u2(n2, "weekdays");
            }, weekdaysMin: function(e2) {
              return e2 ? e2.format("dd") : u2(n2, "weekdaysMin", "weekdays", 2);
            }, weekdaysShort: function(e2) {
              return e2 ? e2.format("ddd") : u2(n2, "weekdaysShort", "weekdays", 3);
            }, longDateFormat: function(e2) {
              return a2(n2.$locale(), e2);
            }, meridiem: this.$locale().meridiem, ordinal: this.$locale().ordinal };
          };
          r.localeData = function() {
            return s2.bind(this)();
          }, t.localeData = function() {
            var n2 = i();
            return { firstDayOfWeek: function() {
              return n2.weekStart || 0;
            }, weekdays: function() {
              return t.weekdays();
            }, weekdaysShort: function() {
              return t.weekdaysShort();
            }, weekdaysMin: function() {
              return t.weekdaysMin();
            }, months: function() {
              return t.months();
            }, monthsShort: function() {
              return t.monthsShort();
            }, longDateFormat: function(e2) {
              return a2(n2, e2);
            }, meridiem: n2.meridiem, ordinal: n2.ordinal };
          }, t.months = function() {
            return u2(i(), "months");
          }, t.monthsShort = function() {
            return u2(i(), "monthsShort", "months", 3);
          }, t.weekdays = function(n2) {
            return u2(i(), "weekdays", null, null, n2);
          }, t.weekdaysShort = function(n2) {
            return u2(i(), "weekdaysShort", "weekdays", 3, n2);
          }, t.weekdaysMin = function(n2) {
            return u2(i(), "weekdaysMin", "weekdays", 2, n2);
          };
        };
      }));
    })(localeData$2);
    return localeData$2.exports;
  }
  var localeDataExports = requireLocaleData();
  const localeData = /* @__PURE__ */ getDefaultExportFromCjs(localeDataExports);
  const datePickTypes = [
    "year",
    "years",
    "month",
    "months",
    "date",
    "dates",
    "week",
    "datetime",
    "datetimerange",
    "daterange",
    "monthrange",
    "yearrange"
  ];
  const WEEK_DAYS = [
    "sun",
    "mon",
    "tue",
    "wed",
    "thu",
    "fri",
    "sat"
  ];
  const useDateTable = (props2, emit2) => {
    dayjs.extend(localeData);
    const firstDayOfWeek = dayjs.localeData().firstDayOfWeek();
    const { t, lang } = useLocale();
    const now2 = dayjs().locale(lang.value);
    const isInRange = computed(() => !!props2.range && !!props2.range.length);
    const rows = computed(() => {
      let days = [];
      if (isInRange.value) {
        const [start, end] = props2.range;
        const currentMonthRange = rangeArr(
          end.date() - start.date() + 1
        ).map((index) => ({
          text: start.date() + index,
          type: "current"
        }));
        let remaining = currentMonthRange.length % 7;
        remaining = remaining === 0 ? 0 : 7 - remaining;
        const nextMonthRange = rangeArr(remaining).map(
          (_2, index) => ({
            text: index + 1,
            type: "next"
          })
        );
        days = currentMonthRange.concat(nextMonthRange);
      } else {
        const firstDay = props2.date.startOf("month").day();
        const prevMonthDays = getPrevMonthLastDays(
          props2.date,
          (firstDay - firstDayOfWeek + 7) % 7
        ).map((day) => ({
          text: day,
          type: "prev"
        }));
        const currentMonthDays = getMonthDays(props2.date).map(
          (day) => ({
            text: day,
            type: "current"
          })
        );
        days = [...prevMonthDays, ...currentMonthDays];
        const remaining = 7 - (days.length % 7 || 7);
        const nextMonthDays = rangeArr(remaining).map(
          (_2, index) => ({
            text: index + 1,
            type: "next"
          })
        );
        days = days.concat(nextMonthDays);
      }
      return toNestedArr(days);
    });
    const weekDays = computed(() => {
      const start = firstDayOfWeek;
      if (start === 0) {
        return WEEK_DAYS.map((_2) => t(`el.datepicker.weeks.${_2}`));
      } else {
        return WEEK_DAYS.slice(start).concat(WEEK_DAYS.slice(0, start)).map((_2) => t(`el.datepicker.weeks.${_2}`));
      }
    });
    const getFormattedDate = (day, type) => {
      switch (type) {
        case "prev":
          return props2.date.startOf("month").subtract(1, "month").date(day);
        case "next":
          return props2.date.startOf("month").add(1, "month").date(day);
        case "current":
          return props2.date.date(day);
      }
    };
    const handlePickDay = ({ text, type }) => {
      const date = getFormattedDate(text, type);
      emit2("pick", date);
    };
    const getSlotData = ({ text, type }) => {
      const day = getFormattedDate(text, type);
      return {
        isSelected: day.isSame(props2.selectedDay),
        type: `${type}-month`,
        day: day.format("YYYY-MM-DD"),
        date: day.toDate()
      };
    };
    return {
      now: now2,
      isInRange,
      rows,
      weekDays,
      getFormattedDate,
      handlePickDay,
      getSlotData
    };
  };
  const _hoisted_1$1Z = { key: 0 };
  const _hoisted_2$1s = ["onClick"];
  var _sfc_main$2$ = /* @__PURE__ */ defineComponent({
    ...{
      name: "DateTable"
    },
    __name: "date-table",
    props: dateTableProps,
    emits: dateTableEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const {
        isInRange,
        now: now2,
        rows,
        weekDays,
        getFormattedDate,
        handlePickDay,
        getSlotData
      } = useDateTable(props2, emit2);
      const nsTable = useNamespace("calendar-table");
      const nsDay = useNamespace("calendar-day");
      const getCellClass = ({ text, type }) => {
        const classes = [type];
        if (type === "current") {
          const date = getFormattedDate(text, type);
          if (date.isSame(props2.selectedDay, "day")) {
            classes.push(nsDay.is("selected"));
          }
          if (date.isSame(now2, "day")) {
            classes.push(nsDay.is("today"));
          }
        }
        return classes;
      };
      __expose({
        /** @description toggle date panel */
        getFormattedDate
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "table",
          {
            class: normalizeClass([unref(nsTable).b(), unref(nsTable).is("range", unref(isInRange))]),
            cellspacing: "0",
            cellpadding: "0"
          },
          [
            !__props.hideHeader ? (openBlock(), createElementBlock("thead", _hoisted_1$1Z, [
              createBaseVNode("tr", null, [
                (openBlock(true), createElementBlock(
                  Fragment,
                  null,
                  renderList(unref(weekDays), (day) => {
                    return openBlock(), createElementBlock(
                      "th",
                      {
                        key: day,
                        scope: "col"
                      },
                      toDisplayString(day),
                      1
                      /* TEXT */
                    );
                  }),
                  128
                  /* KEYED_FRAGMENT */
                ))
              ])
            ])) : createCommentVNode("v-if", true),
            createBaseVNode("tbody", null, [
              (openBlock(true), createElementBlock(
                Fragment,
                null,
                renderList(unref(rows), (row, index) => {
                  return openBlock(), createElementBlock(
                    "tr",
                    {
                      key: index,
                      class: normalizeClass({
                        [unref(nsTable).e("row")]: true,
                        [unref(nsTable).em("row", "hide-border")]: index === 0 && __props.hideHeader
                      })
                    },
                    [
                      (openBlock(true), createElementBlock(
                        Fragment,
                        null,
                        renderList(row, (cell, key) => {
                          return openBlock(), createElementBlock("td", {
                            key,
                            class: normalizeClass(getCellClass(cell)),
                            onClick: ($event) => unref(handlePickDay)(cell)
                          }, [
                            createBaseVNode(
                              "div",
                              {
                                class: normalizeClass(unref(nsDay).b())
                              },
                              [
                                renderSlot(_ctx.$slots, "date-cell", {
                                  data: unref(getSlotData)(cell)
                                }, () => [
                                  createBaseVNode(
                                    "span",
                                    null,
                                    toDisplayString(cell.text),
                                    1
                                    /* TEXT */
                                  )
                                ])
                              ],
                              2
                              /* CLASS */
                            )
                          ], 10, _hoisted_2$1s);
                        }),
                        128
                        /* KEYED_FRAGMENT */
                      ))
                    ],
                    2
                    /* CLASS */
                  );
                }),
                128
                /* KEYED_FRAGMENT */
              ))
            ])
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const adjacentMonth = (start, end) => {
    const firstMonthLastDay = start.endOf("month");
    const lastMonthFirstDay = end.startOf("month");
    const isSameWeek = firstMonthLastDay.isSame(lastMonthFirstDay, "week");
    const lastMonthStartDay = isSameWeek ? lastMonthFirstDay.add(1, "week") : lastMonthFirstDay;
    return [
      [start, firstMonthLastDay],
      [lastMonthStartDay.startOf("week"), end]
    ];
  };
  const threeConsecutiveMonth = (start, end) => {
    const firstMonthLastDay = start.endOf("month");
    const secondMonthFirstDay = start.add(1, "month").startOf("month");
    const secondMonthStartDay = firstMonthLastDay.isSame(
      secondMonthFirstDay,
      "week"
    ) ? secondMonthFirstDay.add(1, "week") : secondMonthFirstDay;
    const secondMonthLastDay = secondMonthStartDay.endOf("month");
    const lastMonthFirstDay = end.startOf("month");
    const lastMonthStartDay = secondMonthLastDay.isSame(lastMonthFirstDay, "week") ? lastMonthFirstDay.add(1, "week") : lastMonthFirstDay;
    return [
      [start, firstMonthLastDay],
      [secondMonthStartDay.startOf("week"), secondMonthLastDay],
      [lastMonthStartDay.startOf("week"), end]
    ];
  };
  const useCalendar = (props2, emit2, componentName2) => {
    const { lang } = useLocale();
    const selectedDay = ref();
    const now2 = dayjs().locale(lang.value);
    const realSelectedDay = computed({
      get() {
        if (!props2.modelValue) return selectedDay.value;
        return date.value;
      },
      set(val) {
        if (!val) return;
        selectedDay.value = val;
        const result = val.toDate();
        emit2(INPUT_EVENT, result);
        emit2(UPDATE_MODEL_EVENT, result);
      }
    });
    const validatedRange = computed(() => {
      if (!props2.range || !isArray$1(props2.range) || props2.range.length !== 2 || props2.range.some((item) => !isDate(item)))
        return [];
      const rangeArrDayjs = props2.range.map((_2) => dayjs(_2).locale(lang.value));
      const [startDayjs, endDayjs] = rangeArrDayjs;
      if (startDayjs.isAfter(endDayjs)) {
        return [];
      }
      if (startDayjs.isSame(endDayjs, "month")) {
        return calculateValidatedDateRange(startDayjs, endDayjs);
      } else {
        if (startDayjs.add(1, "month").month() !== endDayjs.month()) {
          return [];
        }
        return calculateValidatedDateRange(startDayjs, endDayjs);
      }
    });
    const date = computed(() => {
      if (!props2.modelValue) {
        return realSelectedDay.value || (validatedRange.value.length ? validatedRange.value[0][0] : now2);
      } else {
        return dayjs(props2.modelValue).locale(lang.value);
      }
    });
    const prevMonthDayjs = computed(() => date.value.subtract(1, "month").date(1));
    const nextMonthDayjs = computed(() => date.value.add(1, "month").date(1));
    const prevYearDayjs = computed(() => date.value.subtract(1, "year").date(1));
    const nextYearDayjs = computed(() => date.value.add(1, "year").date(1));
    const calculateValidatedDateRange = (startDayjs, endDayjs) => {
      const firstDay = startDayjs.startOf("week");
      const lastDay = endDayjs.endOf("week");
      const firstMonth = firstDay.get("month");
      const lastMonth = lastDay.get("month");
      if (firstMonth === lastMonth) {
        return [[firstDay, lastDay]];
      } else if ((firstMonth + 1) % 12 === lastMonth) {
        return adjacentMonth(firstDay, lastDay);
      } else if (firstMonth + 2 === lastMonth || (firstMonth + 1) % 11 === lastMonth) {
        return threeConsecutiveMonth(firstDay, lastDay);
      } else {
        return [];
      }
    };
    const pickDay = (day) => {
      realSelectedDay.value = day;
    };
    const selectDate = (type) => {
      const dateMap = {
        "prev-month": prevMonthDayjs.value,
        "next-month": nextMonthDayjs.value,
        "prev-year": prevYearDayjs.value,
        "next-year": nextYearDayjs.value,
        today: now2
      };
      const day = dateMap[type];
      if (!day.isSame(date.value, "day")) {
        pickDay(day);
      }
    };
    const handleDateChange = (date22) => {
      if (date22 === "today") {
        selectDate("today");
      } else {
        pickDay(date22);
      }
    };
    return {
      calculateValidatedDateRange,
      date,
      realSelectedDay,
      pickDay,
      selectDate,
      validatedRange,
      handleDateChange
    };
  };
  const selectControllerProps = buildProps({
    date: {
      type: definePropType(Object),
      required: true
    },
    formatter: {
      type: definePropType(Function)
    }
  });
  const selectControllerEmits = {
    "date-change": (date) => isObject$2(date) || isString(date)
  };
  const tagProps = buildProps({
    /**
     * @description type of Tag
     */
    type: {
      type: String,
      values: ["primary", "success", "info", "warning", "danger"],
      default: "primary"
    },
    /**
     * @description whether Tag can be removed
     */
    closable: Boolean,
    /**
     * @description whether to disable animations
     */
    disableTransitions: Boolean,
    /**
     * @description whether Tag has a highlighted border
     */
    hit: Boolean,
    /**
     * @description background color of the Tag
     */
    color: String,
    /**
     * @description size of Tag
     */
    size: {
      type: String,
      values: componentSizes
    },
    /**
     * @description theme of Tag
     */
    effect: {
      type: String,
      values: ["dark", "light", "plain"],
      default: "light"
    },
    /**
     * @description whether Tag is rounded
     */
    round: Boolean
  });
  const tagEmits = {
    close: (evt) => evt instanceof MouseEvent,
    click: (evt) => evt instanceof MouseEvent
  };
  const _hoisted_1$1Y = ["aria-label"];
  const _hoisted_2$1r = ["aria-label"];
  var _sfc_main$2_ = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElTag"
    },
    __name: "tag",
    props: tagProps,
    emits: tagEmits,
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const tagSize = useFormSize();
      const { t } = useLocale();
      const ns = useNamespace("tag");
      const containerKls = computed(() => {
        const { type, hit, effect, closable, round: round2 } = props2;
        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", round2)
        ];
      });
      const handleClose = (event) => {
        emit2("close", event);
      };
      const handleClick = (event) => {
        emit2("click", event);
      };
      const handleVNodeMounted = (vnode) => {
        var _a, _b, _c;
        if ((_c = (_b = (_a = vnode == null ? void 0 : vnode.component) == null ? void 0 : _a.subTree) == null ? void 0 : _b.component) == null ? void 0 : _c.bum) {
          vnode.component.subTree.component.bum = null;
        }
      };
      return (_ctx, _cache) => {
        return __props.disableTransitions ? (openBlock(), createElementBlock(
          "span",
          {
            key: 0,
            class: normalizeClass(containerKls.value),
            style: normalizeStyle({ backgroundColor: __props.color }),
            onClick: handleClick
          },
          [
            createBaseVNode(
              "span",
              {
                class: normalizeClass(unref(ns).e("content"))
              },
              [
                renderSlot(_ctx.$slots, "default")
              ],
              2
              /* CLASS */
            ),
            __props.closable ? (openBlock(), createElementBlock("button", {
              key: 0,
              "aria-label": unref(t)("el.tag.close"),
              class: normalizeClass(unref(ns).e("close")),
              type: "button",
              onClick: withModifiers(handleClose, ["stop"])
            }, [
              createVNode(unref(ElIcon), null, {
                default: withCtx(() => [
                  createVNode(unref(close_default))
                ]),
                _: 1
                /* STABLE */
              })
            ], 10, _hoisted_1$1Y)) : createCommentVNode("v-if", true)
          ],
          6
          /* CLASS, STYLE */
        )) : (openBlock(), createBlock(Transition, {
          key: 1,
          name: `${unref(ns).namespace.value}-zoom-in-center`,
          appear: "",
          onVnodeMounted: handleVNodeMounted
        }, {
          default: withCtx(() => [
            createBaseVNode(
              "span",
              {
                class: normalizeClass(containerKls.value),
                style: normalizeStyle({ backgroundColor: __props.color }),
                onClick: handleClick
              },
              [
                createBaseVNode(
                  "span",
                  {
                    class: normalizeClass(unref(ns).e("content"))
                  },
                  [
                    renderSlot(_ctx.$slots, "default")
                  ],
                  2
                  /* CLASS */
                ),
                __props.closable ? (openBlock(), createElementBlock("button", {
                  key: 0,
                  "aria-label": unref(t)("el.tag.close"),
                  class: normalizeClass(unref(ns).e("close")),
                  type: "button",
                  onClick: withModifiers(handleClose, ["stop"])
                }, [
                  createVNode(unref(ElIcon), null, {
                    default: withCtx(() => [
                      createVNode(unref(close_default))
                    ]),
                    _: 1
                    /* STABLE */
                  })
                ], 10, _hoisted_2$1r)) : createCommentVNode("v-if", true)
              ],
              6
              /* CLASS, STYLE */
            )
          ]),
          _: 3
          /* FORWARDED */
        }, 8, ["name"]));
      };
    }
  });
  const ElTag = withInstall(_sfc_main$2_);
  const defaultProps$4 = {
    label: "label",
    value: "value",
    disabled: "disabled",
    options: "options"
  };
  function useProps(props2) {
    const aliasProps = ref({ ...defaultProps$4, ...props2.props });
    let cache2 = { ...props2.props };
    watch(
      () => props2.props,
      (val) => {
        if (!isEqual$1(val, cache2)) {
          aliasProps.value = { ...defaultProps$4, ...val };
          cache2 = { ...val };
        }
      },
      { deep: true }
    );
    const getLabel = (option) => get(option, aliasProps.value.label);
    const getValue2 = (option) => get(option, aliasProps.value.value);
    const getDisabled = (option) => get(option, aliasProps.value.disabled);
    const getOptions = (option) => get(option, aliasProps.value.options);
    return {
      aliasProps,
      getLabel,
      getValue: getValue2,
      getDisabled,
      getOptions
    };
  }
  const selectGroupKey = /* @__PURE__ */ Symbol("ElSelectGroup");
  const selectKey = /* @__PURE__ */ Symbol("ElSelect");
  const COMPONENT_NAME$i = "ElOption";
  const optionProps = buildProps({
    /**
     * @description value of option
     */
    value: {
      type: [String, Number, Boolean, Object],
      required: true
    },
    /**
     * @description label of option, same as `value` if omitted
     */
    label: {
      type: [String, Number]
    },
    created: Boolean,
    /**
     * @description whether option is disabled
     */
    disabled: Boolean
  });
  const escapeStringRegexp = (string2 = "") => string2.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
  const capitalize = (str) => capitalize$1(str);
  function useOption$1(props2, states) {
    const select = inject(selectKey);
    if (!select) {
      throwError(COMPONENT_NAME$i, "usage: <el-select><el-option /></el-select/>");
    }
    const selectGroup = inject(selectGroupKey, { disabled: false });
    const itemSelected = computed(() => {
      return contains(castArray$1(select.props.modelValue), props2.value);
    });
    const limitReached = computed(() => {
      var _a;
      if (select.props.multiple) {
        const modelValue = castArray$1((_a = select.props.modelValue) != null ? _a : []);
        return !itemSelected.value && modelValue.length >= select.props.multipleLimit && select.props.multipleLimit > 0;
      } else {
        return false;
      }
    });
    const currentLabel = computed(() => {
      var _a;
      return (_a = props2.label) != null ? _a : isObject$2(props2.value) ? "" : props2.value;
    });
    const currentValue = computed(() => {
      return props2.value || props2.label || "";
    });
    const isDisabled = computed(() => {
      return props2.disabled || states.groupDisabled || limitReached.value;
    });
    const instance = getCurrentInstance();
    const contains = (arr = [], target) => {
      if (!isObject$2(props2.value)) {
        return arr && arr.includes(target);
      } else {
        const valueKey = select.props.valueKey;
        return arr && arr.some((item) => {
          return toRaw(get(item, valueKey)) === get(target, valueKey);
        });
      }
    };
    const hoverItem = () => {
      if (!isDisabled.value) {
        select.states.hoveringIndex = select.optionsArray.indexOf(instance.proxy);
      }
    };
    const updateOption = (query) => {
      const regexp = new RegExp(escapeStringRegexp(query), "i");
      states.visible = regexp.test(String(currentLabel.value)) || props2.created;
    };
    watch(
      () => currentLabel.value,
      () => {
        if (!props2.created && !select.props.remote) select.setSelected();
      }
    );
    watch(
      () => props2.value,
      (val, oldVal) => {
        const { remote, valueKey } = select.props;
        const shouldUpdate = remote ? val !== oldVal : !isEqual$1(val, oldVal);
        if (shouldUpdate) {
          select.onOptionDestroy(oldVal, instance.proxy);
          select.onOptionCreate(instance.proxy);
        }
        if (!props2.created && !remote) {
          if (valueKey && isObject$2(val) && isObject$2(oldVal) && val[valueKey] === oldVal[valueKey]) {
            return;
          }
          select.setSelected();
        }
      }
    );
    watch(
      () => selectGroup.disabled,
      () => {
        states.groupDisabled = selectGroup.disabled;
      },
      { immediate: true }
    );
    return {
      select,
      currentLabel,
      currentValue,
      itemSelected,
      isDisabled,
      hoverItem,
      updateOption
    };
  }
  var _sfc_main$2Z = /* @__PURE__ */ defineComponent({
    name: COMPONENT_NAME$i,
    componentName: COMPONENT_NAME$i,
    props: optionProps,
    setup(props2) {
      const ns = useNamespace("select");
      const id = useId();
      const containerKls = computed(() => [
        ns.be("dropdown", "item"),
        ns.is("disabled", unref(isDisabled)),
        ns.is("selected", unref(itemSelected)),
        ns.is("hovering", unref(hover))
      ]);
      const states = reactive({
        index: -1,
        groupDisabled: false,
        visible: true,
        hover: false
      });
      const {
        currentLabel,
        itemSelected,
        isDisabled,
        select,
        hoverItem,
        updateOption
      } = useOption$1(props2, states);
      const { visible, hover } = toRefs(states);
      const vm = getCurrentInstance().proxy;
      select.onOptionCreate(vm);
      onBeforeUnmount(() => {
        const key = vm.value;
        nextTick(() => {
          const { selected: selectedOptions } = select.states;
          const doesSelected = selectedOptions.some((item) => {
            return item.value === vm.value;
          });
          if (select.states.cachedOptions.get(key) === vm && !doesSelected) {
            select.states.cachedOptions.delete(key);
          }
        });
        select.onOptionDestroy(key, vm);
      });
      function selectOptionClick() {
        if (!isDisabled.value) {
          select.handleOptionSelect(vm);
        }
      }
      return {
        ns,
        id,
        containerKls,
        currentLabel,
        itemSelected,
        isDisabled,
        select,
        visible,
        hover,
        states,
        hoverItem,
        updateOption,
        selectOptionClick
      };
    }
  });
  const _hoisted_1$1X = ["id", "aria-disabled", "aria-selected"];
  function _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) {
    return withDirectives((openBlock(), createElementBlock("li", {
      id: _ctx.id,
      class: normalizeClass(_ctx.containerKls),
      role: "option",
      "aria-disabled": _ctx.isDisabled || void 0,
      "aria-selected": _ctx.itemSelected,
      onMousemove: _cache[0] || (_cache[0] = (...args) => _ctx.hoverItem && _ctx.hoverItem(...args)),
      onClick: _cache[1] || (_cache[1] = withModifiers((...args) => _ctx.selectOptionClick && _ctx.selectOptionClick(...args), ["stop"]))
    }, [
      renderSlot(_ctx.$slots, "default", {}, () => [
        createBaseVNode(
          "span",
          null,
          toDisplayString(_ctx.currentLabel),
          1
          /* TEXT */
        )
      ])
    ], 42, _hoisted_1$1X)), [
      [vShow, _ctx.visible]
    ]);
  }
  var Option = /* @__PURE__ */ _export_sfc$1(_sfc_main$2Z, [["render", _sfc_render$l]]);
  const MINIMUM_INPUT_WIDTH = 11;
  const BORDER_HORIZONTAL_WIDTH = 2;
  var _sfc_main$2Y = /* @__PURE__ */ defineComponent({
    name: "ElSelectDropdown",
    componentName: "ElSelectDropdown",
    setup() {
      const select = inject(selectKey);
      const ns = useNamespace("select");
      const popperClass = computed(() => select.props.popperClass);
      const isMultiple = computed(() => select.props.multiple);
      const isFitInputWidth = computed(() => select.props.fitInputWidth);
      const minWidth = ref("");
      function updateMinWidth() {
        var _a;
        const offsetWidth = (_a = select.selectRef) == null ? void 0 : _a.offsetWidth;
        if (offsetWidth) {
          minWidth.value = `${offsetWidth - BORDER_HORIZONTAL_WIDTH}px`;
        } else {
          minWidth.value = "";
        }
      }
      onMounted(() => {
        updateMinWidth();
        useResizeObserver(select.selectRef, updateMinWidth);
      });
      return {
        ns,
        minWidth,
        popperClass,
        isMultiple,
        isFitInputWidth
      };
    }
  });
  function _sfc_render$k(_ctx, _cache, $props, $setup, $data, $options) {
    return openBlock(), createElementBlock(
      "div",
      {
        class: normalizeClass([_ctx.ns.b("dropdown"), _ctx.ns.is("multiple", _ctx.isMultiple), _ctx.popperClass]),
        style: normalizeStyle({ [_ctx.isFitInputWidth ? "width" : "minWidth"]: _ctx.minWidth })
      },
      [
        _ctx.$slots.header ? (openBlock(), createElementBlock(
          "div",
          {
            key: 0,
            class: normalizeClass(_ctx.ns.be("dropdown", "header"))
          },
          [
            renderSlot(_ctx.$slots, "header")
          ],
          2
          /* CLASS */
        )) : createCommentVNode("v-if", true),
        renderSlot(_ctx.$slots, "default"),
        _ctx.$slots.footer ? (openBlock(), createElementBlock(
          "div",
          {
            key: 1,
            class: normalizeClass(_ctx.ns.be("dropdown", "footer"))
          },
          [
            renderSlot(_ctx.$slots, "footer")
          ],
          2
          /* CLASS */
        )) : createCommentVNode("v-if", true)
      ],
      6
      /* CLASS, STYLE */
    );
  }
  var ElSelectMenu$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$2Y, [["render", _sfc_render$k]]);
  const useSelect$2 = (props2, emit2) => {
    const { t } = useLocale();
    const slots = useSlots();
    const contentId = useId();
    const nsSelect = useNamespace("select");
    const nsInput = useNamespace("input");
    const states = reactive({
      inputValue: "",
      options: /* @__PURE__ */ new Map(),
      cachedOptions: /* @__PURE__ */ new Map(),
      optionValues: [],
      // sorted value of options
      selected: [],
      selectionWidth: 0,
      collapseItemWidth: 0,
      selectedLabel: "",
      hoveringIndex: -1,
      previousQuery: null,
      inputHovering: false,
      menuVisibleOnFocus: false,
      isBeforeHide: false
    });
    const selectRef = ref();
    const selectionRef = ref();
    const tooltipRef = ref();
    const tagTooltipRef = ref();
    const inputRef = ref();
    const prefixRef = ref();
    const suffixRef = ref();
    const menuRef = ref();
    const tagMenuRef = ref();
    const collapseItemRef = ref();
    const scrollbarRef = ref();
    const expanded = ref(false);
    const hoverOption = ref();
    const debouncing = ref(false);
    const { form, formItem } = useFormItem();
    const { inputId } = useFormItemInputId(props2, {
      formItemContext: formItem
    });
    const { valueOnClear, isEmptyValue: isEmptyValue2 } = useEmptyValues(props2);
    const {
      isComposing,
      handleCompositionStart,
      handleCompositionUpdate,
      handleCompositionEnd
    } = useComposition({
      afterComposition: (e) => onInput(e)
    });
    const selectDisabled = useFormDisabled();
    const { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, {
      disabled: selectDisabled,
      afterFocus() {
        if (props2.automaticDropdown && !expanded.value) {
          expanded.value = true;
          states.menuVisibleOnFocus = true;
        }
      },
      beforeBlur(event) {
        var _a, _b;
        return ((_a = tooltipRef.value) == null ? void 0 : _a.isFocusInsideContent(event)) || ((_b = tagTooltipRef.value) == null ? void 0 : _b.isFocusInsideContent(event));
      },
      afterBlur() {
        var _a;
        expanded.value = false;
        states.menuVisibleOnFocus = false;
        if (props2.validateEvent) {
          (_a = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a.call(formItem, "blur").catch((err) => debugWarn());
        }
      }
    });
    const hasModelValue = computed(() => {
      return isArray$1(props2.modelValue) ? props2.modelValue.length > 0 : !isEmptyValue2(props2.modelValue);
    });
    const needStatusIcon = computed(() => {
      var _a;
      return (_a = form == null ? void 0 : form.statusIcon) != null ? _a : false;
    });
    const showClearBtn = computed(() => {
      return props2.clearable && !selectDisabled.value && hasModelValue.value && (isFocused.value || states.inputHovering);
    });
    const iconComponent = computed(
      () => props2.remote && props2.filterable && !props2.remoteShowSuffix ? "" : props2.suffixIcon
    );
    const iconReverse = computed(
      () => nsSelect.is("reverse", !!(iconComponent.value && expanded.value))
    );
    const validateState = computed(() => (formItem == null ? void 0 : formItem.validateState) || "");
    const validateIcon = computed(
      () => validateState.value && ValidateComponentsMap[validateState.value]
    );
    const debounce2 = computed(() => props2.remote ? props2.debounce : 0);
    const isRemoteSearchEmpty = computed(
      () => props2.remote && !states.inputValue && states.options.size === 0
    );
    const emptyText = computed(() => {
      if (props2.loading) {
        return props2.loadingText || t("el.select.loading");
      } else {
        if (props2.filterable && states.inputValue && states.options.size > 0 && filteredOptionsCount.value === 0) {
          return props2.noMatchText || t("el.select.noMatch");
        }
        if (states.options.size === 0) {
          return props2.noDataText || t("el.select.noData");
        }
      }
      return null;
    });
    const filteredOptionsCount = computed(
      () => optionsArray.value.filter((option) => option.visible).length
    );
    const optionsArray = 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 = computed(
      () => Array.from(states.cachedOptions.values())
    );
    const showNewOption = computed(() => {
      const hasExistingOption = optionsArray.value.filter((option) => {
        return !option.created;
      }).some((option) => {
        return option.currentLabel === states.inputValue;
      });
      return props2.filterable && props2.allowCreate && states.inputValue !== "" && !hasExistingOption;
    });
    const updateOptions2 = () => {
      if (props2.filterable && isFunction$1(props2.filterMethod)) return;
      if (props2.filterable && props2.remote && isFunction$1(props2.remoteMethod))
        return;
      optionsArray.value.forEach((option) => {
        var _a;
        (_a = option.updateOption) == null ? void 0 : _a.call(option, states.inputValue);
      });
    };
    const selectSize = useFormSize();
    const collapseTagSize = computed(
      () => ["small"].includes(selectSize.value) ? "small" : "default"
    );
    const dropdownMenuVisible = computed({
      get() {
        return expanded.value && (props2.loading || !isRemoteSearchEmpty.value || props2.remote && !!slots.empty) && (!debouncing.value || !isEmpty(states.previousQuery));
      },
      set(val) {
        expanded.value = val;
      }
    });
    const shouldShowPlaceholder = computed(() => {
      if (props2.multiple && !isUndefined(props2.modelValue)) {
        return castArray$1(props2.modelValue).length === 0 && !states.inputValue;
      }
      const value = isArray$1(props2.modelValue) ? props2.modelValue[0] : props2.modelValue;
      return props2.filterable || isUndefined(value) ? !states.inputValue : true;
    });
    const currentPlaceholder = computed(() => {
      var _a;
      const _placeholder = (_a = props2.placeholder) != null ? _a : t("el.select.placeholder");
      return props2.multiple || !hasModelValue.value ? _placeholder : states.selectedLabel;
    });
    const mouseEnterEventName = computed(() => isIOS ? null : "mouseenter");
    watch(
      () => props2.modelValue,
      (val, oldVal) => {
        if (props2.multiple) {
          if (props2.filterable && !props2.reserveKeyword) {
            states.inputValue = "";
            handleQueryChange("");
          }
        }
        setSelected();
        if (!isEqual$1(val, oldVal) && props2.validateEvent) {
          formItem == null ? void 0 : formItem.validate("change").catch((err) => debugWarn());
        }
      },
      {
        flush: "post",
        deep: true
      }
    );
    watch(
      () => expanded.value,
      (val) => {
        if (val) {
          handleQueryChange(states.inputValue);
        } else {
          states.inputValue = "";
          states.previousQuery = null;
          states.isBeforeHide = true;
          states.menuVisibleOnFocus = false;
        }
      }
    );
    watch(
      // fix `Array.prototype.push/splice/..` cannot trigger non-deep watcher
      // https://github.com/vuejs/vue-next/issues/2116
      () => states.options.entries(),
      () => {
        if (!isClient) return;
        setSelected();
        if (props2.defaultFirstOption && (props2.filterable || props2.remote) && filteredOptionsCount.value) {
          checkDefaultFirstOption();
        }
      },
      {
        flush: "post"
      }
    );
    watch([() => states.hoveringIndex, optionsArray], ([val]) => {
      if (isNumber(val) && val > -1) {
        hoverOption.value = optionsArray.value[val] || {};
      } else {
        hoverOption.value = {};
      }
      optionsArray.value.forEach((option) => {
        option.hover = hoverOption.value === option;
      });
    });
    watchEffect(() => {
      if (states.isBeforeHide) return;
      updateOptions2();
    });
    const handleQueryChange = (val) => {
      if (states.previousQuery === val || isComposing.value) {
        return;
      }
      states.previousQuery = val;
      if (props2.filterable && isFunction$1(props2.filterMethod)) {
        props2.filterMethod(val);
      } else if (props2.filterable && props2.remote && isFunction$1(props2.remoteMethod)) {
        props2.remoteMethod(val);
      }
      if (props2.defaultFirstOption && (props2.filterable || props2.remote) && filteredOptionsCount.value) {
        nextTick(checkDefaultFirstOption);
      } else {
        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];
      const valueList = optionsArray.value.map((item) => item.value);
      states.hoveringIndex = getValueIndex(
        valueList,
        userCreatedOption || firstOriginOption
      );
    };
    const setSelected = () => {
      if (!props2.multiple) {
        const value = isArray$1(props2.modelValue) ? props2.modelValue[0] : props2.modelValue;
        const option = getOption(value);
        states.selectedLabel = option.currentLabel;
        states.selected = [option];
        return;
      } else {
        states.selectedLabel = "";
      }
      const result = [];
      if (!isUndefined(props2.modelValue)) {
        castArray$1(props2.modelValue).forEach((value) => {
          result.push(getOption(value));
        });
      }
      states.selected = result;
    };
    const getOption = (value) => {
      let option;
      const isObjectValue = isPlainObject$1(value);
      for (let i = states.cachedOptions.size - 1; i >= 0; i--) {
        const cachedOption = cachedOptionsArray.value[i];
        const isEqualValue = isObjectValue ? get(cachedOption.value, props2.valueKey) === get(value, props2.valueKey) : cachedOption.value === value;
        if (isEqualValue) {
          option = {
            index: optionsArray.value.filter((opt) => !opt.created).indexOf(cachedOption),
            value,
            currentLabel: cachedOption.currentLabel,
            get isDisabled() {
              return cachedOption.isDisabled;
            }
          };
          break;
        }
      }
      if (option) return option;
      const label = isObjectValue ? value.label : value != null ? value : "";
      const newOption = {
        index: -1,
        value,
        currentLabel: label
      };
      return newOption;
    };
    const updateHoveringIndex = () => {
      const length = states.selected.length;
      if (length > 0) {
        const lastOption = states.selected[length - 1];
        states.hoveringIndex = optionsArray.value.findIndex(
          (item) => getValueKey(lastOption) === getValueKey(item)
        );
      } else {
        states.hoveringIndex = -1;
      }
    };
    const resetSelectionWidth = () => {
      states.selectionWidth = Number.parseFloat(
        window.getComputedStyle(selectionRef.value).width
      );
    };
    const resetCollapseItemWidth = () => {
      states.collapseItemWidth = collapseItemRef.value.getBoundingClientRect().width;
    };
    const updateTooltip = () => {
      var _a, _b;
      (_b = (_a = tooltipRef.value) == null ? void 0 : _a.updatePopper) == null ? void 0 : _b.call(_a);
    };
    const updateTagTooltip = () => {
      var _a, _b;
      (_b = (_a = tagTooltipRef.value) == null ? void 0 : _a.updatePopper) == null ? void 0 : _b.call(_a);
    };
    const onInputChange = () => {
      if (states.inputValue.length > 0 && !expanded.value) {
        expanded.value = true;
      }
      handleQueryChange(states.inputValue);
    };
    const onInput = (event) => {
      states.inputValue = event.target.value;
      if (props2.remote) {
        debouncing.value = true;
        debouncedOnInputChange();
      } else {
        return onInputChange();
      }
    };
    const debouncedOnInputChange = useDebounceFn(() => {
      onInputChange();
      debouncing.value = false;
    }, debounce2);
    const emitChange = (val) => {
      if (!isEqual$1(props2.modelValue, val)) {
        emit2(CHANGE_EVENT, val);
      }
    };
    const getLastNotDisabledIndex = (value) => findLastIndex(value, (it2) => {
      const option = states.cachedOptions.get(it2);
      return !(option == null ? void 0 : option.disabled) && !(option == null ? void 0 : option.states.groupDisabled);
    });
    const deletePrevTag = (e) => {
      const code = getEventCode(e);
      if (!props2.multiple) return;
      if (code === EVENT_CODE.delete) return;
      if (e.target.value.length <= 0) {
        const value = castArray$1(props2.modelValue).slice();
        const lastNotDisabledIndex = getLastNotDisabledIndex(value);
        if (lastNotDisabledIndex < 0) return;
        const removeTagValue = value[lastNotDisabledIndex];
        value.splice(lastNotDisabledIndex, 1);
        emit2(UPDATE_MODEL_EVENT, value);
        emitChange(value);
        emit2("remove-tag", removeTagValue);
      }
    };
    const deleteTag = (event, tag) => {
      const index = states.selected.indexOf(tag);
      if (index > -1 && !selectDisabled.value) {
        const value = castArray$1(props2.modelValue).slice();
        value.splice(index, 1);
        emit2(UPDATE_MODEL_EVENT, value);
        emitChange(value);
        emit2("remove-tag", tag.value);
      }
      event.stopPropagation();
      focus();
    };
    const deleteSelected = (event) => {
      event.stopPropagation();
      const value = props2.multiple ? [] : valueOnClear.value;
      if (props2.multiple) {
        for (const item of states.selected) {
          if (item.isDisabled) value.push(item.value);
        }
      }
      emit2(UPDATE_MODEL_EVENT, value);
      emitChange(value);
      states.hoveringIndex = -1;
      expanded.value = false;
      emit2("clear");
      focus();
    };
    const handleOptionSelect = (option) => {
      var _a;
      if (props2.multiple) {
        const value = castArray$1((_a = props2.modelValue) != null ? _a : []).slice();
        const optionIndex = getValueIndex(value, option);
        if (optionIndex > -1) {
          value.splice(optionIndex, 1);
        } else if (props2.multipleLimit <= 0 || value.length < props2.multipleLimit) {
          value.push(option.value);
        }
        emit2(UPDATE_MODEL_EVENT, value);
        emitChange(value);
        if (option.created) {
          handleQueryChange("");
        }
        if (props2.filterable && !props2.reserveKeyword) {
          states.inputValue = "";
        }
      } else {
        !isEqual$1(props2.modelValue, option.value) && emit2(UPDATE_MODEL_EVENT, option.value);
        emitChange(option.value);
        expanded.value = false;
      }
      focus();
      if (expanded.value) return;
      nextTick(() => {
        scrollToOption(option);
      });
    };
    const getValueIndex = (arr, option) => {
      if (isUndefined(option)) return -1;
      if (!isObject$2(option.value)) return arr.indexOf(option.value);
      return arr.findIndex((item) => {
        return isEqual$1(get(item, props2.valueKey), getValueKey(option));
      });
    };
    const scrollToOption = (option) => {
      var _a, _b, _c, _d, _e;
      const targetOption = isArray$1(option) ? option[option.length - 1] : option;
      let target = null;
      if (!isNil(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 = (_a = tooltipRef.value) == null ? void 0 : _a.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);
    };
    const onOptionDestroy = (key, vm) => {
      if (states.options.get(key) === vm) {
        states.options.delete(key);
      }
    };
    const popperRef = computed(() => {
      var _a, _b;
      return (_b = (_a = tooltipRef.value) == null ? void 0 : _a.popperRef) == null ? void 0 : _b.contentRef;
    });
    const handleMenuEnter = () => {
      states.isBeforeHide = false;
      nextTick(() => {
        var _a;
        (_a = scrollbarRef.value) == null ? void 0 : _a.update();
        scrollToOption(states.selected);
      });
    };
    const focus = () => {
      var _a;
      (_a = inputRef.value) == null ? void 0 : _a.focus();
    };
    const blur = () => {
      var _a;
      if (expanded.value) {
        expanded.value = false;
        nextTick(() => {
          var _a2;
          return (_a2 = inputRef.value) == null ? void 0 : _a2.blur();
        });
        return;
      }
      (_a = inputRef.value) == null ? void 0 : _a.blur();
    };
    const handleClearClick = (event) => {
      deleteSelected(event);
    };
    const handleClickOutside = (event) => {
      expanded.value = false;
      if (isFocused.value) {
        const _event2 = new FocusEvent("blur", event);
        nextTick(() => handleBlur(_event2));
      }
    };
    const handleEsc = () => {
      if (states.inputValue.length > 0) {
        states.inputValue = "";
      } else {
        expanded.value = false;
      }
    };
    const toggleMenu = (event) => {
      var _a;
      if (selectDisabled.value || props2.filterable && expanded.value && event && !((_a = suffixRef.value) == null ? void 0 : _a.contains(event.target)))
        return;
      if (isIOS) states.inputHovering = true;
      if (states.menuVisibleOnFocus) {
        states.menuVisibleOnFocus = false;
      } else {
        expanded.value = !expanded.value;
      }
    };
    const selectOption = () => {
      if (!expanded.value) {
        toggleMenu();
      } else {
        const option = optionsArray.value[states.hoveringIndex];
        if (option && !option.isDisabled) {
          handleOptionSelect(option);
        }
      }
    };
    const getValueKey = (item) => {
      return isObject$2(item.value) ? get(item.value, props2.valueKey) : item.value;
    };
    const optionsAllDisabled = computed(
      () => optionsArray.value.filter((option) => option.visible).every((option) => option.isDisabled)
    );
    const showTagList = computed(() => {
      if (!props2.multiple) {
        return [];
      }
      return props2.collapseTags ? states.selected.slice(0, props2.maxCollapseTags) : states.selected;
    });
    const collapseTagList = computed(() => {
      if (!props2.multiple) {
        return [];
      }
      return props2.collapseTags ? states.selected.slice(props2.maxCollapseTags) : [];
    });
    const navigateOptions = (direction2) => {
      if (!expanded.value) {
        expanded.value = true;
        return;
      }
      if (states.options.size === 0 || filteredOptionsCount.value === 0 || isComposing.value)
        return;
      if (!optionsAllDisabled.value) {
        if (direction2 === "next") {
          states.hoveringIndex++;
          if (states.hoveringIndex === states.options.size) {
            states.hoveringIndex = 0;
          }
        } else if (direction2 === "prev") {
          states.hoveringIndex--;
          if (states.hoveringIndex < 0) {
            states.hoveringIndex = states.options.size - 1;
          }
        }
        const option = optionsArray.value[states.hoveringIndex];
        if (option.isDisabled || !option.visible) {
          navigateOptions(direction2);
        }
        nextTick(() => scrollToOption(hoverOption.value));
      }
    };
    const findFocusableIndex = (arr, start, step2, len) => {
      for (let i = start; i >= 0 && i < len; i += step2) {
        const obj = arr[i];
        if (!(obj == null ? void 0 : obj.isDisabled) && (obj == null ? void 0 : obj.visible)) {
          return i;
        }
      }
      return null;
    };
    const focusOption = (targetIndex, mode) => {
      var _a;
      const len = states.options.size;
      if (len === 0) return;
      const start = clamp$2(targetIndex, 0, len - 1);
      const options = optionsArray.value;
      const direction2 = mode === "up" ? -1 : 1;
      const newIndex = (_a = findFocusableIndex(options, start, direction2, len)) != null ? _a : findFocusableIndex(options, start - direction2, -direction2, len);
      if (newIndex != null) {
        states.hoveringIndex = newIndex;
        nextTick(() => scrollToOption(hoverOption.value));
      }
    };
    const handleKeydown = (e) => {
      const code = getEventCode(e);
      let isPreventDefault = true;
      switch (code) {
        case EVENT_CODE.up:
          navigateOptions("prev");
          break;
        case EVENT_CODE.down:
          navigateOptions("next");
          break;
        case EVENT_CODE.enter:
        case EVENT_CODE.numpadEnter:
          if (!isComposing.value) {
            selectOption();
          }
          break;
        case EVENT_CODE.esc:
          handleEsc();
          break;
        case EVENT_CODE.backspace:
          isPreventDefault = false;
          deletePrevTag(e);
          return;
        case EVENT_CODE.home:
          if (!expanded.value) return;
          focusOption(0, "down");
          break;
        case EVENT_CODE.end:
          if (!expanded.value) return;
          focusOption(states.options.size - 1, "up");
          break;
        case EVENT_CODE.pageUp:
          if (!expanded.value) return;
          focusOption(states.hoveringIndex - 10, "up");
          break;
        case EVENT_CODE.pageDown:
          if (!expanded.value) return;
          focusOption(states.hoveringIndex + 10, "down");
          break;
        default:
          isPreventDefault = false;
          break;
      }
      if (isPreventDefault) {
        e.preventDefault();
        e.stopPropagation();
      }
    };
    const getGapWidth = () => {
      if (!selectionRef.value) return 0;
      const style = window.getComputedStyle(selectionRef.value);
      return Number.parseFloat(style.gap || "6px");
    };
    const tagStyle = computed(() => {
      const gapWidth = getGapWidth();
      const inputSlotWidth = props2.filterable ? gapWidth + MINIMUM_INPUT_WIDTH : 0;
      const maxWidth = collapseItemRef.value && props2.maxCollapseTags === 1 ? states.selectionWidth - states.collapseItemWidth - gapWidth - inputSlotWidth : states.selectionWidth - inputSlotWidth;
      return { maxWidth: `${maxWidth}px` };
    });
    const collapseTagStyle = computed(() => {
      return { maxWidth: `${states.selectionWidth}px` };
    });
    const popupScroll = (data) => {
      emit2("popup-scroll", data);
    };
    useResizeObserver(selectionRef, resetSelectionWidth);
    useResizeObserver(wrapperRef, updateTooltip);
    useResizeObserver(tagMenuRef, updateTagTooltip);
    useResizeObserver(collapseItemRef, resetCollapseItemWidth);
    let stop;
    watch(
      () => dropdownMenuVisible.value,
      (newVal) => {
        if (newVal) {
          stop = useResizeObserver(menuRef, updateTooltip).stop;
        } else {
          stop == null ? void 0 : stop();
          stop = void 0;
        }
        emit2("visible-change", newVal);
      }
    );
    onMounted(() => {
      setSelected();
    });
    return {
      inputId,
      contentId,
      nsSelect,
      nsInput,
      states,
      isFocused,
      expanded,
      optionsArray,
      hoverOption,
      selectSize,
      filteredOptionsCount,
      updateTooltip,
      updateTagTooltip,
      debouncedOnInputChange,
      onInput,
      deletePrevTag,
      deleteTag,
      deleteSelected,
      handleOptionSelect,
      scrollToOption,
      hasModelValue,
      shouldShowPlaceholder,
      currentPlaceholder,
      mouseEnterEventName,
      needStatusIcon,
      showClearBtn,
      iconComponent,
      iconReverse,
      validateState,
      validateIcon,
      showNewOption,
      updateOptions: updateOptions2,
      collapseTagSize,
      setSelected,
      selectDisabled,
      emptyText,
      handleCompositionStart,
      handleCompositionUpdate,
      handleCompositionEnd,
      handleKeydown,
      onOptionCreate,
      onOptionDestroy,
      handleMenuEnter,
      focus,
      blur,
      handleClearClick,
      handleClickOutside,
      handleEsc,
      toggleMenu,
      selectOption,
      getValueKey,
      navigateOptions,
      dropdownMenuVisible,
      showTagList,
      collapseTagList,
      popupScroll,
      getOption,
      // computed style
      tagStyle,
      collapseTagStyle,
      // DOM ref
      popperRef,
      inputRef,
      tooltipRef,
      tagTooltipRef,
      prefixRef,
      suffixRef,
      selectRef,
      wrapperRef,
      selectionRef,
      scrollbarRef,
      menuRef,
      tagMenuRef,
      collapseItemRef
    };
  };
  var ElOptions = /* @__PURE__ */ defineComponent({
    name: "ElOptions",
    setup(_2, { slots }) {
      const select = inject(selectKey);
      let cachedValueList = [];
      return () => {
        var _a, _b;
        const children = (_a = slots.default) == null ? void 0 : _a.call(slots);
        const valueList = [];
        function filterOptions(children2) {
          if (!isArray$1(children2)) return;
          children2.forEach((item) => {
            var _a2, _b2, _c, _d;
            const name = (_a2 = (item == null ? void 0 : item.type) || {}) == null ? void 0 : _a2.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$1(valueList, cachedValueList)) {
          cachedValueList = valueList;
          if (select) {
            select.states.optionValues = valueList;
          }
        }
        return children;
      };
    }
  });
  const selectProps = buildProps({
    /**
     * @description the name attribute of select input
     */
    name: String,
    /**
     * @description native input id
     */
    id: String,
    /**
     * @description binding value
     */
    modelValue: {
      type: definePropType([
        Array,
        String,
        Number,
        Boolean,
        Object
      ]),
      default: void 0
    },
    /**
     * @description the autocomplete attribute of select input
     */
    autocomplete: {
      type: String,
      default: "off"
    },
    /**
     * @description for non-filterable Select, this prop decides if the option menu pops up when the input is focused
     */
    automaticDropdown: Boolean,
    /**
     * @description size of Input
     */
    size: useSizeProp,
    /**
     * @description tooltip theme, built-in theme: `dark` / `light`
     */
    effect: {
      type: definePropType(String),
      default: "light"
    },
    /**
     * @description whether Select is disabled
     */
    disabled: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description whether select can be cleared
     */
    clearable: Boolean,
    /**
     * @description whether Select is filterable
     */
    filterable: Boolean,
    /**
     * @description whether creating new items is allowed. To use this, `filterable` must be true
     */
    allowCreate: Boolean,
    /**
     * @description whether Select is loading data from server
     */
    loading: Boolean,
    /**
     * @description custom class name for Select's dropdown
     */
    popperClass: {
      type: String,
      default: ""
    },
    /**
     * @description custom style for Select's dropdown
     */
    popperStyle: {
      type: definePropType([String, Object])
    },
    /**
     * @description [popper.js](https://popper.js.org/docs/v2/) parameters
     */
    popperOptions: {
      type: definePropType(Object),
      default: () => ({})
    },
    /**
     * @description whether options are loaded from server
     */
    remote: Boolean,
    /**
     * @description debounce delay during remote search, in milliseconds
     */
    debounce: {
      type: Number,
      default: 300
    },
    /**
     * @description displayed text while loading data from server, default is 'Loading'
     */
    loadingText: String,
    /**
     * @description displayed text when no data matches the filtering query, you can also use slot `empty`, default is 'No matching data'
     */
    noMatchText: String,
    /**
     * @description displayed text when there is no options, you can also use slot `empty`, default is 'No data'
     */
    noDataText: String,
    /**
     * @description function that gets called when the input value changes. Its parameter is the current input value. To use this, `filterable` must be true
     */
    remoteMethod: {
      type: definePropType(Function)
    },
    /**
     * @description custom filter method, the first parameter is the current input value. To use this, `filterable` must be true
     */
    filterMethod: {
      type: definePropType(Function)
    },
    /**
     * @description whether multiple-select is activated
     */
    multiple: Boolean,
    /**
     * @description maximum number of options user can select when `multiple` is `true`. No limit when set to 0
     */
    multipleLimit: {
      type: Number,
      default: 0
    },
    /**
     * @description placeholder, default is 'Select'
     */
    placeholder: {
      type: String
    },
    /**
     * @description select first matching option on enter key. Use with `filterable` or `remote`
     */
    defaultFirstOption: Boolean,
    /**
     * @description when `multiple` and `filter` is true, whether to reserve current keyword after selecting an option
     */
    reserveKeyword: {
      type: Boolean,
      default: true
    },
    /**
     * @description unique identity key name for value, required when value is an object
     */
    valueKey: {
      type: String,
      default: "value"
    },
    /**
     * @description whether to collapse tags to a text when multiple selecting
     */
    collapseTags: Boolean,
    /**
     * @description whether show all selected tags when mouse hover text of collapse-tags. To use this, `collapse-tags` must be true
     */
    collapseTagsTooltip: Boolean,
    /**
     * @description the max tags number to be shown. To use this, `collapse-tags` must be true
     */
    maxCollapseTags: {
      type: Number,
      default: 1
    },
    /**
     * @description whether select dropdown is teleported, if `true` it will be teleported to where `append-to` sets
     */
    teleported: useTooltipContentProps.teleported,
    /**
     * @description when select dropdown is inactive and `persistent` is `false`, select dropdown will be destroyed
     */
    persistent: {
      type: Boolean,
      default: true
    },
    /**
     * @description custom clear icon component
     */
    clearIcon: {
      type: iconPropType,
      default: circle_close_default
    },
    /**
     * @description whether the width of the dropdown is the same as the input
     */
    fitInputWidth: Boolean,
    /**
     * @description custom suffix icon component
     */
    suffixIcon: {
      type: iconPropType,
      default: arrow_down_default
    },
    /**
     * @description tag type
     */
    tagType: { ...tagProps.type, default: "info" },
    /**
     * @description tag effect
     */
    tagEffect: { ...tagProps.effect, default: "light" },
    /**
     * @description whether to trigger form validation
     */
    validateEvent: {
      type: Boolean,
      default: true
    },
    /**
     * @description in remote search method show suffix icon
     */
    remoteShowSuffix: Boolean,
    /**
     * @description determines whether the arrow is displayed
     */
    showArrow: {
      type: Boolean,
      default: true
    },
    /**
     * @description offset of the dropdown
     */
    offset: {
      type: Number,
      default: 12
    },
    /**
     * @description position of dropdown
     */
    placement: {
      type: definePropType(String),
      values: Ee,
      default: "bottom-start"
    },
    /**
     * @description list of possible positions for dropdown
     */
    fallbackPlacements: {
      type: definePropType(Array),
      default: ["bottom-start", "top-start", "right", "left"]
    },
    /**
     * @description tabindex for input
     */
    tabindex: {
      type: [String, Number],
      default: 0
    },
    /**
     * @description which element the selection dropdown appends to
     */
    appendTo: useTooltipContentProps.appendTo,
    options: {
      type: definePropType(Array)
    },
    props: {
      type: definePropType(Object),
      default: () => defaultProps$4
    },
    ...useEmptyValuesProps,
    ...useAriaProps(["ariaLabel"])
  });
  ({
    "popup-scroll": scrollbarEmits.scroll
  });
  var _sfc_main$2X = /* @__PURE__ */ defineComponent({
    name: "ElOptionGroup",
    componentName: "ElOptionGroup",
    props: {
      /**
       * @description name of the group
       */
      label: String,
      /**
       * @description whether to disable all options in this group
       */
      disabled: Boolean
    },
    setup(props2) {
      const ns = useNamespace("select");
      const groupRef = ref();
      const instance = getCurrentInstance();
      const children = ref([]);
      provide(
        selectGroupKey,
        reactive({
          ...toRefs(props2)
        })
      );
      const visible = computed(
        () => children.value.some((option) => option.visible === true)
      );
      const isOption = (node) => {
        var _a;
        return node.type.name === "ElOption" && !!((_a = node.component) == null ? void 0 : _a.proxy);
      };
      const flattedChildren2 = (node) => {
        const nodes = castArray$1(node);
        const children2 = [];
        nodes.forEach((child) => {
          var _a;
          if (!isVNode(child)) return;
          if (isOption(child)) {
            children2.push(child.component.proxy);
          } else if (isArray$1(child.children) && child.children.length) {
            children2.push(...flattedChildren2(child.children));
          } else if ((_a = child.component) == null ? void 0 : _a.subTree) {
            children2.push(...flattedChildren2(child.component.subTree));
          }
        });
        return children2;
      };
      const updateChildren = () => {
        children.value = flattedChildren2(instance.subTree);
      };
      onMounted(() => {
        updateChildren();
      });
      useMutationObserver(groupRef, updateChildren, {
        attributes: true,
        subtree: true,
        childList: true
      });
      return {
        groupRef,
        visible,
        ns
      };
    }
  });
  function _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) {
    return withDirectives((openBlock(), createElementBlock(
      "ul",
      {
        ref: "groupRef",
        class: normalizeClass(_ctx.ns.be("group", "wrap"))
      },
      [
        createBaseVNode(
          "li",
          {
            class: normalizeClass(_ctx.ns.be("group", "title"))
          },
          toDisplayString(_ctx.label),
          3
          /* TEXT, CLASS */
        ),
        createBaseVNode("li", null, [
          createBaseVNode(
            "ul",
            {
              class: normalizeClass(_ctx.ns.b("group"))
            },
            [
              renderSlot(_ctx.$slots, "default")
            ],
            2
            /* CLASS */
          )
        ])
      ],
      2
      /* CLASS */
    )), [
      [vShow, _ctx.visible]
    ]);
  }
  var OptionGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$2X, [["render", _sfc_render$j]]);
  const nodeList = /* @__PURE__ */ new Map();
  if (isClient) {
    let startClick;
    document.addEventListener("mousedown", (e) => startClick = e);
    document.addEventListener("mouseup", (e) => {
      if (startClick) {
        for (const handlers of nodeList.values()) {
          for (const { documentHandler } of handlers) {
            documentHandler(e, startClick);
          }
        }
        startClick = void 0;
      }
    });
  }
  function createDocumentHandler(el, binding) {
    let excludes = [];
    if (isArray$1(binding.arg)) {
      excludes = binding.arg;
    } else if (isElement$1(binding.arg)) {
      excludes.push(binding.arg);
    }
    return function(mouseup, mousedown) {
      const popperRef = binding.instance.popperRef;
      const mouseUpTarget = mouseup.target;
      const mouseDownTarget = mousedown == 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);
    }
  };
  function useCalcInputWidth() {
    const calculatorRef = shallowRef();
    const calculatorWidth = ref(0);
    const inputStyle = computed(() => ({
      minWidth: `${Math.max(calculatorWidth.value, MINIMUM_INPUT_WIDTH)}px`
    }));
    const resetCalculatorWidth = () => {
      var _a, _b;
      calculatorWidth.value = (_b = (_a = calculatorRef.value) == null ? void 0 : _a.getBoundingClientRect().width) != null ? _b : 0;
    };
    useResizeObserver(calculatorRef, resetCalculatorWidth);
    return {
      calculatorRef,
      calculatorWidth,
      inputStyle
    };
  }
  const COMPONENT_NAME$h = "ElSelect";
  const warnHandlerMap = /* @__PURE__ */ new WeakMap();
  const createSelectWarnHandler = (appContext) => {
    return (...args) => {
      var _a, _b;
      const message2 = args[0];
      if (!message2 || message2.includes(
        'Slot "default" invoked outside of the render function'
      ) && ((_a = args[2]) == null ? void 0 : _a.includes("ElTreeSelect")))
        return;
      const original = (_b = warnHandlerMap.get(appContext)) == null ? void 0 : _b.originalWarnHandler;
      if (original) {
        original(...args);
        return;
      }
      console.warn(...args);
    };
  };
  const getWarnHandlerRecord = (appContext) => {
    let record = warnHandlerMap.get(appContext);
    if (!record) {
      record = {
        originalWarnHandler: appContext.config.warnHandler,
        handler: createSelectWarnHandler(appContext),
        count: 0
      };
      warnHandlerMap.set(appContext, record);
    }
    return record;
  };
  var _sfc_main$2W = /* @__PURE__ */ defineComponent({
    name: COMPONENT_NAME$h,
    componentName: COMPONENT_NAME$h,
    components: {
      ElSelectMenu: ElSelectMenu$1,
      ElOption: Option,
      ElOptions,
      ElOptionGroup: OptionGroup,
      ElTag,
      ElScrollbar,
      ElTooltip,
      ElIcon
    },
    directives: { ClickOutside },
    props: selectProps,
    emits: [
      UPDATE_MODEL_EVENT,
      CHANGE_EVENT,
      "remove-tag",
      "clear",
      "visible-change",
      "focus",
      "blur",
      "popup-scroll"
    ],
    setup(props2, { emit: emit2, slots }) {
      const instance = getCurrentInstance();
      const warnRecord = getWarnHandlerRecord(instance.appContext);
      warnRecord.count += 1;
      instance.appContext.config.warnHandler = warnRecord.handler;
      const modelValue = computed(() => {
        const { modelValue: rawModelValue, multiple } = props2;
        const fallback = multiple ? [] : void 0;
        if (isArray$1(rawModelValue)) {
          return multiple ? rawModelValue : fallback;
        }
        return multiple ? fallback : rawModelValue;
      });
      const _props = reactive({
        ...toRefs(props2),
        modelValue
      });
      const API = useSelect$2(_props, emit2);
      const { calculatorRef, inputStyle } = useCalcInputWidth();
      const { getLabel, getValue: getValue2, getOptions, getDisabled } = useProps(props2);
      const getOptionProps = (option) => ({
        label: getLabel(option),
        value: getValue2(option),
        disabled: getDisabled(option)
      });
      const flatTreeSelectData = (data) => {
        return data.reduce((acc, item) => {
          acc.push(item);
          if (item.children && item.children.length > 0) {
            acc.push(...flatTreeSelectData(item.children));
          }
          return acc;
        }, []);
      };
      const manuallyRenderSlots = (vnodes) => {
        const children = flattedChildren(vnodes || []);
        children.forEach((item) => {
          var _a;
          if (isObject$2(item) && // @ts-expect-error
          (item.type.name === "ElOption" || item.type.name === "ElTree")) {
            const _name = item.type.name;
            if (_name === "ElTree") {
              const treeData = ((_a = item.props) == null ? void 0 : _a.data) || [];
              const flatData = flatTreeSelectData(treeData);
              flatData.forEach((treeItem) => {
                treeItem.currentLabel = treeItem.label || (isObject$2(treeItem.value) ? "" : treeItem.value);
                API.onOptionCreate(treeItem);
              });
            } else if (_name === "ElOption") {
              const obj = { ...item.props };
              obj.currentLabel = obj.label || (isObject$2(obj.value) ? "" : obj.value);
              API.onOptionCreate(obj);
            }
          }
        });
      };
      watch(
        () => {
          var _a;
          return [(_a = slots.default) == null ? void 0 : _a.call(slots), modelValue.value];
        },
        () => {
          var _a;
          if (props2.persistent || API.expanded.value) {
            return;
          }
          API.states.options.clear();
          manuallyRenderSlots((_a = slots.default) == null ? void 0 : _a.call(slots));
        },
        {
          immediate: true
        }
      );
      provide(
        selectKey,
        reactive({
          props: _props,
          states: API.states,
          selectRef: API.selectRef,
          optionsArray: API.optionsArray,
          setSelected: API.setSelected,
          handleOptionSelect: API.handleOptionSelect,
          onOptionCreate: API.onOptionCreate,
          onOptionDestroy: API.onOptionDestroy
        })
      );
      const selectedLabel = computed(() => {
        if (!props2.multiple) {
          return API.states.selectedLabel;
        }
        return API.states.selected.map((i) => i.currentLabel);
      });
      onBeforeUnmount(() => {
        const record = warnHandlerMap.get(instance.appContext);
        if (!record) return;
        record.count -= 1;
        if (record.count <= 0) {
          instance.appContext.config.warnHandler = record.originalWarnHandler;
          warnHandlerMap.delete(instance.appContext);
        }
      });
      return {
        ...API,
        modelValue,
        selectedLabel,
        calculatorRef,
        inputStyle,
        getLabel,
        getValue: getValue2,
        getOptions,
        getDisabled,
        getOptionProps
      };
    }
  });
  const _hoisted_1$1W = ["id", "value", "name", "disabled", "autocomplete", "tabindex", "readonly", "aria-activedescendant", "aria-controls", "aria-expanded", "aria-label"];
  const _hoisted_2$1q = ["textContent"];
  const _hoisted_3$11 = { key: 1 };
  function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {
    const _component_el_tag = resolveComponent("el-tag");
    const _component_el_tooltip = resolveComponent("el-tooltip");
    const _component_el_icon = resolveComponent("el-icon");
    const _component_el_option = resolveComponent("el-option");
    const _component_el_option_group = resolveComponent("el-option-group");
    const _component_el_options = resolveComponent("el-options");
    const _component_el_scrollbar = resolveComponent("el-scrollbar");
    const _component_el_select_menu = resolveComponent("el-select-menu");
    const _directive_click_outside = resolveDirective("click-outside");
    return withDirectives((openBlock(), createElementBlock(
      "div",
      mergeProps({
        ref: "selectRef",
        class: [_ctx.nsSelect.b(), _ctx.nsSelect.m(_ctx.selectSize)]
      }, {
        [toHandlerKey(_ctx.mouseEnterEventName)]: _cache[10] || (_cache[10] = ($event) => _ctx.states.inputHovering = true)
      }, {
        onMouseleave: _cache[11] || (_cache[11] = ($event) => _ctx.states.inputHovering = false)
      }),
      [
        createVNode(_component_el_tooltip, {
          ref: "tooltipRef",
          visible: _ctx.dropdownMenuVisible,
          placement: _ctx.placement,
          teleported: _ctx.teleported,
          "popper-class": [_ctx.nsSelect.e("popper"), _ctx.popperClass],
          "popper-style": _ctx.popperStyle,
          "popper-options": _ctx.popperOptions,
          "fallback-placements": _ctx.fallbackPlacements,
          effect: _ctx.effect,
          pure: "",
          trigger: "click",
          transition: `${_ctx.nsSelect.namespace.value}-zoom-in-top`,
          "stop-popper-mouse-event": false,
          "gpu-acceleration": false,
          persistent: _ctx.persistent,
          "append-to": _ctx.appendTo,
          "show-arrow": _ctx.showArrow,
          offset: _ctx.offset,
          onBeforeShow: _ctx.handleMenuEnter,
          onHide: _cache[9] || (_cache[9] = ($event) => _ctx.states.isBeforeHide = false)
        }, {
          default: withCtx(() => {
            var _a;
            return [
              createBaseVNode(
                "div",
                {
                  ref: "wrapperRef",
                  class: normalizeClass([
                    _ctx.nsSelect.e("wrapper"),
                    _ctx.nsSelect.is("focused", _ctx.isFocused),
                    _ctx.nsSelect.is("hovering", _ctx.states.inputHovering),
                    _ctx.nsSelect.is("filterable", _ctx.filterable),
                    _ctx.nsSelect.is("disabled", _ctx.selectDisabled)
                  ]),
                  onClick: _cache[6] || (_cache[6] = withModifiers((...args) => _ctx.toggleMenu && _ctx.toggleMenu(...args), ["prevent"]))
                },
                [
                  _ctx.$slots.prefix ? (openBlock(), createElementBlock(
                    "div",
                    {
                      key: 0,
                      ref: "prefixRef",
                      class: normalizeClass(_ctx.nsSelect.e("prefix"))
                    },
                    [
                      renderSlot(_ctx.$slots, "prefix")
                    ],
                    2
                    /* CLASS */
                  )) : createCommentVNode("v-if", true),
                  createBaseVNode(
                    "div",
                    {
                      ref: "selectionRef",
                      class: normalizeClass([
                        _ctx.nsSelect.e("selection"),
                        _ctx.nsSelect.is(
                          "near",
                          _ctx.multiple && !_ctx.$slots.prefix && !!_ctx.states.selected.length
                        )
                      ])
                    },
                    [
                      _ctx.multiple ? renderSlot(_ctx.$slots, "tag", {
                        key: 0,
                        data: _ctx.states.selected,
                        deleteTag: _ctx.deleteTag,
                        selectDisabled: _ctx.selectDisabled
                      }, () => [
                        (openBlock(true), createElementBlock(
                          Fragment,
                          null,
                          renderList(_ctx.showTagList, (item) => {
                            return openBlock(), createElementBlock(
                              "div",
                              {
                                key: _ctx.getValueKey(item),
                                class: normalizeClass(_ctx.nsSelect.e("selected-item"))
                              },
                              [
                                createVNode(_component_el_tag, {
                                  closable: !_ctx.selectDisabled && !item.isDisabled,
                                  size: _ctx.collapseTagSize,
                                  type: _ctx.tagType,
                                  effect: _ctx.tagEffect,
                                  "disable-transitions": "",
                                  style: normalizeStyle(_ctx.tagStyle),
                                  onClose: ($event) => _ctx.deleteTag($event, item)
                                }, {
                                  default: withCtx(() => [
                                    createBaseVNode(
                                      "span",
                                      {
                                        class: normalizeClass(_ctx.nsSelect.e("tags-text"))
                                      },
                                      [
                                        renderSlot(_ctx.$slots, "label", {
                                          index: item.index,
                                          label: item.currentLabel,
                                          value: item.value
                                        }, () => [
                                          createTextVNode(
                                            toDisplayString(item.currentLabel),
                                            1
                                            /* TEXT */
                                          )
                                        ])
                                      ],
                                      2
                                      /* CLASS */
                                    )
                                  ]),
                                  _: 2
                                  /* DYNAMIC */
                                }, 1032, ["closable", "size", "type", "effect", "style", "onClose"])
                              ],
                              2
                              /* CLASS */
                            );
                          }),
                          128
                          /* KEYED_FRAGMENT */
                        )),
                        _ctx.collapseTags && _ctx.states.selected.length > _ctx.maxCollapseTags ? (openBlock(), createBlock(_component_el_tooltip, {
                          key: 0,
                          ref: "tagTooltipRef",
                          disabled: _ctx.dropdownMenuVisible || !_ctx.collapseTagsTooltip,
                          "fallback-placements": ["bottom", "top", "right", "left"],
                          effect: _ctx.effect,
                          placement: "bottom",
                          "popper-class": _ctx.popperClass,
                          "popper-style": _ctx.popperStyle,
                          teleported: _ctx.teleported,
                          "popper-options": _ctx.popperOptions
                        }, {
                          default: withCtx(() => [
                            createBaseVNode(
                              "div",
                              {
                                ref: "collapseItemRef",
                                class: normalizeClass(_ctx.nsSelect.e("selected-item"))
                              },
                              [
                                createVNode(_component_el_tag, {
                                  closable: false,
                                  size: _ctx.collapseTagSize,
                                  type: _ctx.tagType,
                                  effect: _ctx.tagEffect,
                                  "disable-transitions": "",
                                  style: normalizeStyle(_ctx.collapseTagStyle)
                                }, {
                                  default: withCtx(() => [
                                    createBaseVNode(
                                      "span",
                                      {
                                        class: normalizeClass(_ctx.nsSelect.e("tags-text"))
                                      },
                                      " + " + toDisplayString(_ctx.states.selected.length - _ctx.maxCollapseTags),
                                      3
                                      /* TEXT, CLASS */
                                    )
                                  ]),
                                  _: 1
                                  /* STABLE */
                                }, 8, ["size", "type", "effect", "style"])
                              ],
                              2
                              /* CLASS */
                            )
                          ]),
                          content: withCtx(() => [
                            createBaseVNode(
                              "div",
                              {
                                ref: "tagMenuRef",
                                class: normalizeClass(_ctx.nsSelect.e("selection"))
                              },
                              [
                                (openBlock(true), createElementBlock(
                                  Fragment,
                                  null,
                                  renderList(_ctx.collapseTagList, (item) => {
                                    return openBlock(), createElementBlock(
                                      "div",
                                      {
                                        key: _ctx.getValueKey(item),
                                        class: normalizeClass(_ctx.nsSelect.e("selected-item"))
                                      },
                                      [
                                        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: withCtx(() => [
                                            createBaseVNode(
                                              "span",
                                              {
                                                class: normalizeClass(_ctx.nsSelect.e("tags-text"))
                                              },
                                              [
                                                renderSlot(_ctx.$slots, "label", {
                                                  index: item.index,
                                                  label: item.currentLabel,
                                                  value: item.value
                                                }, () => [
                                                  createTextVNode(
                                                    toDisplayString(item.currentLabel),
                                                    1
                                                    /* TEXT */
                                                  )
                                                ])
                                              ],
                                              2
                                              /* CLASS */
                                            )
                                          ]),
                                          _: 2
                                          /* DYNAMIC */
                                        }, 1032, ["closable", "size", "type", "effect", "onClose"])
                                      ],
                                      2
                                      /* CLASS */
                                    );
                                  }),
                                  128
                                  /* KEYED_FRAGMENT */
                                ))
                              ],
                              2
                              /* CLASS */
                            )
                          ]),
                          _: 3
                          /* FORWARDED */
                        }, 8, ["disabled", "effect", "popper-class", "popper-style", "teleported", "popper-options"])) : createCommentVNode("v-if", true)
                      ]) : createCommentVNode("v-if", true),
                      createBaseVNode(
                        "div",
                        {
                          class: normalizeClass([
                            _ctx.nsSelect.e("selected-item"),
                            _ctx.nsSelect.e("input-wrapper"),
                            _ctx.nsSelect.is("hidden", !_ctx.filterable || _ctx.selectDisabled)
                          ])
                        },
                        [
                          createBaseVNode("input", {
                            id: _ctx.inputId,
                            ref: "inputRef",
                            value: _ctx.states.inputValue,
                            type: "text",
                            name: _ctx.name,
                            class: normalizeClass([_ctx.nsSelect.e("input"), _ctx.nsSelect.is(_ctx.selectSize)]),
                            disabled: _ctx.selectDisabled,
                            autocomplete: _ctx.autocomplete,
                            style: normalizeStyle(_ctx.inputStyle),
                            tabindex: _ctx.tabindex,
                            role: "combobox",
                            readonly: !_ctx.filterable,
                            spellcheck: "false",
                            "aria-activedescendant": ((_a = _ctx.hoverOption) == null ? void 0 : _a.id) || "",
                            "aria-controls": _ctx.contentId,
                            "aria-expanded": _ctx.dropdownMenuVisible,
                            "aria-label": _ctx.ariaLabel,
                            "aria-autocomplete": "none",
                            "aria-haspopup": "listbox",
                            onKeydown: _cache[0] || (_cache[0] = (...args) => _ctx.handleKeydown && _ctx.handleKeydown(...args)),
                            onCompositionstart: _cache[1] || (_cache[1] = (...args) => _ctx.handleCompositionStart && _ctx.handleCompositionStart(...args)),
                            onCompositionupdate: _cache[2] || (_cache[2] = (...args) => _ctx.handleCompositionUpdate && _ctx.handleCompositionUpdate(...args)),
                            onCompositionend: _cache[3] || (_cache[3] = (...args) => _ctx.handleCompositionEnd && _ctx.handleCompositionEnd(...args)),
                            onInput: _cache[4] || (_cache[4] = (...args) => _ctx.onInput && _ctx.onInput(...args)),
                            onClick: _cache[5] || (_cache[5] = withModifiers((...args) => _ctx.toggleMenu && _ctx.toggleMenu(...args), ["stop"]))
                          }, null, 46, _hoisted_1$1W),
                          _ctx.filterable ? (openBlock(), createElementBlock("span", {
                            key: 0,
                            ref: "calculatorRef",
                            "aria-hidden": "true",
                            class: normalizeClass(_ctx.nsSelect.e("input-calculator")),
                            textContent: toDisplayString(_ctx.states.inputValue)
                          }, null, 10, _hoisted_2$1q)) : createCommentVNode("v-if", true)
                        ],
                        2
                        /* CLASS */
                      ),
                      _ctx.shouldShowPlaceholder ? (openBlock(), createElementBlock(
                        "div",
                        {
                          key: 1,
                          class: normalizeClass([
                            _ctx.nsSelect.e("selected-item"),
                            _ctx.nsSelect.e("placeholder"),
                            _ctx.nsSelect.is(
                              "transparent",
                              !_ctx.hasModelValue || _ctx.expanded && !_ctx.states.inputValue
                            )
                          ])
                        },
                        [
                          _ctx.hasModelValue ? renderSlot(_ctx.$slots, "label", {
                            key: 0,
                            index: _ctx.getOption(_ctx.modelValue).index,
                            label: _ctx.currentPlaceholder,
                            value: _ctx.modelValue
                          }, () => [
                            createBaseVNode(
                              "span",
                              null,
                              toDisplayString(_ctx.currentPlaceholder),
                              1
                              /* TEXT */
                            )
                          ]) : (openBlock(), createElementBlock(
                            "span",
                            _hoisted_3$11,
                            toDisplayString(_ctx.currentPlaceholder),
                            1
                            /* TEXT */
                          ))
                        ],
                        2
                        /* CLASS */
                      )) : createCommentVNode("v-if", true)
                    ],
                    2
                    /* CLASS */
                  ),
                  createBaseVNode(
                    "div",
                    {
                      ref: "suffixRef",
                      class: normalizeClass(_ctx.nsSelect.e("suffix"))
                    },
                    [
                      _ctx.iconComponent && !_ctx.showClearBtn ? (openBlock(), createBlock(_component_el_icon, {
                        key: 0,
                        class: normalizeClass([_ctx.nsSelect.e("caret"), _ctx.nsSelect.e("icon"), _ctx.iconReverse])
                      }, {
                        default: withCtx(() => [
                          (openBlock(), createBlock(resolveDynamicComponent(_ctx.iconComponent)))
                        ]),
                        _: 1
                        /* STABLE */
                      }, 8, ["class"])) : createCommentVNode("v-if", true),
                      _ctx.showClearBtn && _ctx.clearIcon ? (openBlock(), createBlock(_component_el_icon, {
                        key: 1,
                        class: normalizeClass([
                          _ctx.nsSelect.e("caret"),
                          _ctx.nsSelect.e("icon"),
                          _ctx.nsSelect.e("clear")
                        ]),
                        onClick: _ctx.handleClearClick
                      }, {
                        default: withCtx(() => [
                          (openBlock(), createBlock(resolveDynamicComponent(_ctx.clearIcon)))
                        ]),
                        _: 1
                        /* STABLE */
                      }, 8, ["class", "onClick"])) : createCommentVNode("v-if", true),
                      _ctx.validateState && _ctx.validateIcon && _ctx.needStatusIcon ? (openBlock(), createBlock(_component_el_icon, {
                        key: 2,
                        class: normalizeClass([
                          _ctx.nsInput.e("icon"),
                          _ctx.nsInput.e("validateIcon"),
                          _ctx.nsInput.is("loading", _ctx.validateState === "validating")
                        ])
                      }, {
                        default: withCtx(() => [
                          (openBlock(), createBlock(resolveDynamicComponent(_ctx.validateIcon)))
                        ]),
                        _: 1
                        /* STABLE */
                      }, 8, ["class"])) : createCommentVNode("v-if", true)
                    ],
                    2
                    /* CLASS */
                  )
                ],
                2
                /* CLASS */
              )
            ];
          }),
          content: withCtx(() => [
            createVNode(
              _component_el_select_menu,
              { ref: "menuRef" },
              {
                default: withCtx(() => [
                  _ctx.$slots.header ? (openBlock(), createElementBlock(
                    "div",
                    {
                      key: 0,
                      class: normalizeClass(_ctx.nsSelect.be("dropdown", "header")),
                      onClick: _cache[7] || (_cache[7] = withModifiers(() => {
                      }, ["stop"]))
                    },
                    [
                      renderSlot(_ctx.$slots, "header")
                    ],
                    2
                    /* CLASS */
                  )) : createCommentVNode("v-if", true),
                  withDirectives(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: normalizeClass([_ctx.nsSelect.is("empty", _ctx.filteredOptionsCount === 0)]),
                    role: "listbox",
                    "aria-label": _ctx.ariaLabel,
                    "aria-orientation": "vertical",
                    onScroll: _ctx.popupScroll
                  }, {
                    default: withCtx(() => [
                      _ctx.showNewOption ? (openBlock(), createBlock(_component_el_option, {
                        key: 0,
                        value: _ctx.states.inputValue,
                        created: true
                      }, null, 8, ["value"])) : createCommentVNode("v-if", true),
                      createVNode(_component_el_options, null, {
                        default: withCtx(() => [
                          renderSlot(_ctx.$slots, "default", {}, () => [
                            (openBlock(true), createElementBlock(
                              Fragment,
                              null,
                              renderList(_ctx.options, (option, index) => {
                                var _a;
                                return openBlock(), createElementBlock(
                                  Fragment,
                                  { key: index },
                                  [
                                    ((_a = _ctx.getOptions(option)) == null ? void 0 : _a.length) ? (openBlock(), createBlock(_component_el_option_group, {
                                      key: 0,
                                      label: _ctx.getLabel(option),
                                      disabled: _ctx.getDisabled(option)
                                    }, {
                                      default: withCtx(() => [
                                        (openBlock(true), createElementBlock(
                                          Fragment,
                                          null,
                                          renderList(_ctx.getOptions(option), (item) => {
                                            return openBlock(), createBlock(
                                              _component_el_option,
                                              mergeProps({
                                                key: _ctx.getValue(item)
                                              }, { ref_for: true }, _ctx.getOptionProps(item)),
                                              null,
                                              16
                                              /* FULL_PROPS */
                                            );
                                          }),
                                          128
                                          /* KEYED_FRAGMENT */
                                        ))
                                      ]),
                                      _: 2
                                      /* DYNAMIC */
                                    }, 1032, ["label", "disabled"])) : (openBlock(), createBlock(
                                      _component_el_option,
                                      mergeProps({
                                        key: 1,
                                        ref_for: true
                                      }, _ctx.getOptionProps(option)),
                                      null,
                                      16
                                      /* FULL_PROPS */
                                    ))
                                  ],
                                  64
                                  /* STABLE_FRAGMENT */
                                );
                              }),
                              128
                              /* KEYED_FRAGMENT */
                            ))
                          ])
                        ]),
                        _: 3
                        /* FORWARDED */
                      })
                    ]),
                    _: 3
                    /* FORWARDED */
                  }, 8, ["id", "wrap-class", "view-class", "class", "aria-label", "onScroll"]), [
                    [vShow, _ctx.states.options.size > 0 && !_ctx.loading]
                  ]),
                  _ctx.$slots.loading && _ctx.loading ? (openBlock(), createElementBlock(
                    "div",
                    {
                      key: 1,
                      class: normalizeClass(_ctx.nsSelect.be("dropdown", "loading"))
                    },
                    [
                      renderSlot(_ctx.$slots, "loading")
                    ],
                    2
                    /* CLASS */
                  )) : _ctx.loading || _ctx.filteredOptionsCount === 0 ? (openBlock(), createElementBlock(
                    "div",
                    {
                      key: 2,
                      class: normalizeClass(_ctx.nsSelect.be("dropdown", "empty"))
                    },
                    [
                      renderSlot(_ctx.$slots, "empty", {}, () => [
                        createBaseVNode(
                          "span",
                          null,
                          toDisplayString(_ctx.emptyText),
                          1
                          /* TEXT */
                        )
                      ])
                    ],
                    2
                    /* CLASS */
                  )) : createCommentVNode("v-if", true),
                  _ctx.$slots.footer ? (openBlock(), createElementBlock(
                    "div",
                    {
                      key: 3,
                      class: normalizeClass(_ctx.nsSelect.be("dropdown", "footer")),
                      onClick: _cache[8] || (_cache[8] = withModifiers(() => {
                      }, ["stop"]))
                    },
                    [
                      renderSlot(_ctx.$slots, "footer")
                    ],
                    2
                    /* CLASS */
                  )) : createCommentVNode("v-if", true)
                ]),
                _: 3
                /* FORWARDED */
              },
              512
              /* NEED_PATCH */
            )
          ]),
          _: 3
          /* FORWARDED */
        }, 8, ["visible", "placement", "teleported", "popper-class", "popper-style", "popper-options", "fallback-placements", "effect", "transition", "persistent", "append-to", "show-arrow", "offset", "onBeforeShow"])
      ],
      16
      /* FULL_PROPS */
    )), [
      [_directive_click_outside, _ctx.handleClickOutside, _ctx.popperRef]
    ]);
  }
  var Select$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$2W, [["render", _sfc_render$i]]);
  const ElSelect = withInstall(Select$1, {
    Option,
    OptionGroup
  });
  const ElOption = withNoopInstall(Option);
  const ElOptionGroup = withNoopInstall(OptionGroup);
  var _sfc_main$2V = /* @__PURE__ */ defineComponent({
    ...{
      name: "SelectController"
    },
    __name: "select-controller",
    props: selectControllerProps,
    emits: selectControllerEmits,
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const nsSelect = useNamespace("calendar-select");
      const { t, lang } = useLocale();
      const monthOptions = Array.from({ length: 12 }, (_2, index) => {
        const actualMonth = index + 1;
        const label = isFunction$1(props2.formatter) ? props2.formatter(actualMonth, "month") : actualMonth;
        return {
          value: actualMonth,
          label
        };
      });
      const yearValue = computed(() => props2.date.year());
      const monthValue = computed(() => props2.date.month() + 1);
      const yearOptions = computed(() => {
        const years = [];
        for (let i = -10; i < 10; i++) {
          const year = yearValue.value + i;
          if (year > 0) {
            const label = isFunction$1(props2.formatter) ? props2.formatter(year, "year") : year;
            years.push({ value: year, label });
          }
        }
        return years;
      });
      const handleYearChange = (year) => {
        emit2(
          "date-change",
          dayjs(new Date(year, monthValue.value - 1, 1)).locale(lang.value)
        );
      };
      const handleMonthChange = (month) => {
        emit2(
          "date-change",
          dayjs(new Date(yearValue.value, month - 1, 1)).locale(lang.value)
        );
      };
      const selectToday = () => {
        emit2("date-change", "today");
      };
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          Fragment,
          null,
          [
            createVNode(unref(ElSelect), {
              "model-value": yearValue.value,
              size: "small",
              class: normalizeClass(unref(nsSelect).e("year")),
              "validate-event": false,
              options: yearOptions.value,
              onChange: handleYearChange
            }, null, 8, ["model-value", "class", "options"]),
            createVNode(unref(ElSelect), {
              "model-value": monthValue.value,
              size: "small",
              class: normalizeClass(unref(nsSelect).e("month")),
              "validate-event": false,
              options: unref(monthOptions),
              onChange: handleMonthChange
            }, null, 8, ["model-value", "class", "options"]),
            createVNode(unref(ElButton), {
              size: "small",
              onClick: selectToday
            }, {
              default: withCtx(() => [
                createTextVNode(
                  toDisplayString(unref(t)("el.datepicker.today")),
                  1
                  /* TEXT */
                )
              ]),
              _: 1
              /* STABLE */
            })
          ],
          64
          /* STABLE_FRAGMENT */
        );
      };
    }
  });
  const COMPONENT_NAME$g = "ElCalendar";
  var _sfc_main$2U = /* @__PURE__ */ defineComponent({
    ...{
      name: COMPONENT_NAME$g
    },
    __name: "calendar",
    props: calendarProps,
    emits: calendarEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const ns = useNamespace("calendar");
      const props2 = __props;
      const emit2 = __emit;
      const {
        calculateValidatedDateRange,
        date,
        pickDay,
        realSelectedDay,
        selectDate,
        validatedRange,
        handleDateChange
      } = useCalendar(props2, emit2);
      const { t } = useLocale();
      const i18nDate = computed(() => {
        const pickedMonth = `el.datepicker.month${date.value.format("M")}`;
        return `${date.value.year()} ${t("el.datepicker.year")} ${t(pickedMonth)}`;
      });
      __expose({
        /** @description currently selected date */
        selectedDay: realSelectedDay,
        /** @description select a specific date */
        pickDay,
        /** @description select date */
        selectDate,
        /** @description Calculate the validate date range according to the start and end dates */
        calculateValidatedDateRange
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass(unref(ns).b())
          },
          [
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(ns).e("header"))
              },
              [
                renderSlot(_ctx.$slots, "header", { date: i18nDate.value }, () => [
                  createBaseVNode(
                    "div",
                    {
                      class: normalizeClass(unref(ns).e("title"))
                    },
                    toDisplayString(i18nDate.value),
                    3
                    /* TEXT, CLASS */
                  ),
                  unref(validatedRange).length === 0 && __props.controllerType === "button" ? (openBlock(), createElementBlock(
                    "div",
                    {
                      key: 0,
                      class: normalizeClass(unref(ns).e("button-group"))
                    },
                    [
                      createVNode(unref(ElButtonGroup$1), null, {
                        default: withCtx(() => [
                          createVNode(unref(ElButton), {
                            size: "small",
                            onClick: _cache[0] || (_cache[0] = ($event) => unref(selectDate)("prev-month"))
                          }, {
                            default: withCtx(() => [
                              createTextVNode(
                                toDisplayString(unref(t)("el.datepicker.prevMonth")),
                                1
                                /* TEXT */
                              )
                            ]),
                            _: 1
                            /* STABLE */
                          }),
                          createVNode(unref(ElButton), {
                            size: "small",
                            onClick: _cache[1] || (_cache[1] = ($event) => unref(selectDate)("today"))
                          }, {
                            default: withCtx(() => [
                              createTextVNode(
                                toDisplayString(unref(t)("el.datepicker.today")),
                                1
                                /* TEXT */
                              )
                            ]),
                            _: 1
                            /* STABLE */
                          }),
                          createVNode(unref(ElButton), {
                            size: "small",
                            onClick: _cache[2] || (_cache[2] = ($event) => unref(selectDate)("next-month"))
                          }, {
                            default: withCtx(() => [
                              createTextVNode(
                                toDisplayString(unref(t)("el.datepicker.nextMonth")),
                                1
                                /* TEXT */
                              )
                            ]),
                            _: 1
                            /* STABLE */
                          })
                        ]),
                        _: 1
                        /* STABLE */
                      })
                    ],
                    2
                    /* CLASS */
                  )) : unref(validatedRange).length === 0 && __props.controllerType === "select" ? (openBlock(), createElementBlock(
                    "div",
                    {
                      key: 1,
                      class: normalizeClass(unref(ns).e("select-controller"))
                    },
                    [
                      createVNode(_sfc_main$2V, {
                        date: unref(date),
                        formatter: __props.formatter,
                        onDateChange: unref(handleDateChange)
                      }, null, 8, ["date", "formatter", "onDateChange"])
                    ],
                    2
                    /* CLASS */
                  )) : createCommentVNode("v-if", true)
                ])
              ],
              2
              /* CLASS */
            ),
            unref(validatedRange).length === 0 ? (openBlock(), createElementBlock(
              "div",
              {
                key: 0,
                class: normalizeClass(unref(ns).e("body"))
              },
              [
                createVNode(_sfc_main$2$, {
                  date: unref(date),
                  "selected-day": unref(realSelectedDay),
                  onPick: unref(pickDay)
                }, createSlots({
                  _: 2
                  /* DYNAMIC */
                }, [
                  _ctx.$slots["date-cell"] ? {
                    name: "date-cell",
                    fn: withCtx((data) => [
                      renderSlot(_ctx.$slots, "date-cell", normalizeProps(guardReactiveProps(data)))
                    ]),
                    key: "0"
                  } : void 0
                ]), 1032, ["date", "selected-day", "onPick"])
              ],
              2
              /* CLASS */
            )) : (openBlock(), createElementBlock(
              "div",
              {
                key: 1,
                class: normalizeClass(unref(ns).e("body"))
              },
              [
                (openBlock(true), createElementBlock(
                  Fragment,
                  null,
                  renderList(unref(validatedRange), (range_, index) => {
                    return openBlock(), createBlock(_sfc_main$2$, {
                      key: index,
                      date: range_[0],
                      "selected-day": unref(realSelectedDay),
                      range: range_,
                      "hide-header": index !== 0,
                      onPick: unref(pickDay)
                    }, createSlots({
                      _: 2
                      /* DYNAMIC */
                    }, [
                      _ctx.$slots["date-cell"] ? {
                        name: "date-cell",
                        fn: withCtx((data) => [
                          renderSlot(_ctx.$slots, "date-cell", mergeProps({ ref_for: true }, data))
                        ]),
                        key: "0"
                      } : void 0
                    ]), 1032, ["date", "selected-day", "range", "hide-header", "onPick"]);
                  }),
                  128
                  /* KEYED_FRAGMENT */
                ))
              ],
              2
              /* CLASS */
            ))
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const ElCalendar = withInstall(_sfc_main$2U);
  const cardProps = buildProps({
    /**
     * @description title of the card. Also accepts a DOM passed by `slot#header`
     */
    header: {
      type: String,
      default: ""
    },
    /**
     * @description content of footer. Also accepts a DOM passed by `slot#footer`
     */
    footer: {
      type: String,
      default: ""
    },
    /**
     * @description CSS style of card body
     */
    bodyStyle: {
      type: definePropType([String, Object, Array]),
      default: ""
    },
    /**
     * @description custom class name of card footer
     */
    headerClass: String,
    /**
     * @description custom class name of card body
     */
    bodyClass: String,
    /**
     * @description custom class name of card footer
     */
    footerClass: String,
    /**
     * @description when to show card shadows
     */
    shadow: {
      type: String,
      values: ["always", "hover", "never"],
      default: void 0
    }
  });
  var _sfc_main$2T = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElCard"
    },
    __name: "card",
    props: cardProps,
    setup(__props) {
      const globalConfig2 = useGlobalConfig("card");
      const ns = useNamespace("card");
      return (_ctx, _cache) => {
        var _a;
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass([
              unref(ns).b(),
              unref(ns).is(`${__props.shadow || ((_a = unref(globalConfig2)) == null ? void 0 : _a.shadow) || "always"}-shadow`)
            ])
          },
          [
            _ctx.$slots.header || __props.header ? (openBlock(), createElementBlock(
              "div",
              {
                key: 0,
                class: normalizeClass([unref(ns).e("header"), __props.headerClass])
              },
              [
                renderSlot(_ctx.$slots, "header", {}, () => [
                  createTextVNode(
                    toDisplayString(__props.header),
                    1
                    /* TEXT */
                  )
                ])
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true),
            createBaseVNode(
              "div",
              {
                class: normalizeClass([unref(ns).e("body"), __props.bodyClass]),
                style: normalizeStyle(__props.bodyStyle)
              },
              [
                renderSlot(_ctx.$slots, "default")
              ],
              6
              /* CLASS, STYLE */
            ),
            _ctx.$slots.footer || __props.footer ? (openBlock(), createElementBlock(
              "div",
              {
                key: 1,
                class: normalizeClass([unref(ns).e("footer"), __props.footerClass])
              },
              [
                renderSlot(_ctx.$slots, "footer", {}, () => [
                  createTextVNode(
                    toDisplayString(__props.footer),
                    1
                    /* TEXT */
                  )
                ])
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true)
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const ElCard = withInstall(_sfc_main$2T);
  const carouselProps = buildProps({
    /**
     * @description index of the initially active slide (starting from 0)
     */
    initialIndex: {
      type: Number,
      default: 0
    },
    /**
     * @description height of the carousel
     */
    height: {
      type: String,
      default: ""
    },
    /**
     * @description how indicators are triggered
     */
    trigger: {
      type: String,
      values: ["hover", "click"],
      default: "hover"
    },
    /**
     * @description whether automatically loop the slides
     */
    autoplay: {
      type: Boolean,
      default: true
    },
    /**
     * @description interval of the auto loop, in milliseconds
     */
    interval: {
      type: Number,
      default: 3e3
    },
    /**
     * @description position of the indicators
     */
    indicatorPosition: {
      type: String,
      values: ["", "none", "outside"],
      default: ""
    },
    /**
     * @description when arrows are shown
     */
    arrow: {
      type: String,
      values: ["always", "hover", "never"],
      default: "hover"
    },
    /**
     * @description type of the Carousel
     */
    type: {
      type: String,
      values: ["", "card"],
      default: ""
    },
    /**
     * @description when type is card, scaled size of secondary cards
     */
    cardScale: {
      type: Number,
      default: 0.83
    },
    /**
     * @description display the items in loop
     */
    loop: {
      type: Boolean,
      default: true
    },
    /**
     * @description display direction
     */
    direction: {
      type: String,
      values: ["horizontal", "vertical"],
      default: "horizontal"
    },
    /**
     * @description pause autoplay when hover
     */
    pauseOnHover: {
      type: Boolean,
      default: true
    },
    /**
     * @description infuse dynamism and smoothness into the carousel
     */
    motionBlur: Boolean
  });
  const carouselEmits = {
    /**
     * @description triggers when the active slide switches
     * @param current index of the new active slide
     * @param prev index of the old active slide
     */
    change: (current, prev) => [current, prev].every(isNumber)
  };
  const carouselContextKey = /* @__PURE__ */ Symbol("carouselContextKey");
  const CAROUSEL_ITEM_NAME = "ElCarouselItem";
  const getOrderedChildren = (vm, childComponentName, children) => {
    const nodes = flattedChildren(vm.subTree).filter(
      (n) => {
        var _a;
        return isVNode(n) && ((_a = n.type) == null ? void 0 : _a.name) === childComponentName && !!n.component;
      }
    );
    const uids = nodes.map((n) => n.component.uid);
    return uids.map((uid2) => children[uid2]).filter((p2) => !!p2);
  };
  const useOrderedChildren = (vm, childComponentName) => {
    const children = shallowRef({});
    const orderedChildren = shallowRef([]);
    const nodesMap = /* @__PURE__ */ new WeakMap();
    const addChild = (child) => {
      children.value[child.uid] = child;
      triggerRef(children);
      onMounted(() => {
        const childNode = child.getVnode().el;
        const parentNode = childNode.parentNode;
        if (!nodesMap.has(parentNode)) {
          nodesMap.set(parentNode, []);
          const originalFn = parentNode.insertBefore.bind(parentNode);
          parentNode.insertBefore = (node, anchor) => {
            const shouldSortChildren = nodesMap.get(parentNode).some((el) => node === el || anchor === el);
            if (shouldSortChildren) triggerRef(children);
            return originalFn(node, anchor);
          };
        }
        nodesMap.get(parentNode).push(childNode);
      });
    };
    const removeChild = (child) => {
      delete children.value[child.uid];
      triggerRef(children);
      const childNode = child.getVnode().el;
      const parentNode = childNode.parentNode;
      const childNodes = nodesMap.get(parentNode);
      const index = childNodes.indexOf(childNode);
      childNodes.splice(index, 1);
    };
    const sortChildren = () => {
      orderedChildren.value = getOrderedChildren(
        vm,
        childComponentName,
        children.value
      );
    };
    const IsolatedRenderer = (props2) => {
      return props2.render();
    };
    const ChildrenSorter = /* @__PURE__ */ defineComponent({
      setup(_2, { slots }) {
        return () => {
          sortChildren();
          return slots.default ? (
            // Create a new `ReactiveEffect` to ensure `ChildrenSorter` doesn't track any extra dependencies
            // @ts-ignore TODO: Remove this after Vue is upgraded
            h$1(IsolatedRenderer, {
              render: slots.default
            })
          ) : null;
        };
      }
    });
    return {
      children: orderedChildren,
      addChild,
      removeChild,
      ChildrenSorter
    };
  };
  const THROTTLE_TIME = 300;
  const useCarousel = (props2, emit2, componentName2) => {
    const {
      children: items,
      addChild: addItem,
      removeChild: removeItem,
      ChildrenSorter: ItemsSorter
    } = useOrderedChildren(
      getCurrentInstance(),
      CAROUSEL_ITEM_NAME
    );
    const slots = useSlots();
    const activeIndex = ref(-1);
    const timer = ref(null);
    const hover = ref(false);
    const root2 = ref();
    const containerHeight = ref(0);
    const isItemsTwoLength = ref(true);
    const arrowDisplay = computed(
      () => props2.arrow !== "never" && !unref(isVertical)
    );
    const hasLabel = computed(() => {
      return items.value.some((item) => item.props.label.toString().length > 0);
    });
    const isCardType = computed(() => props2.type === "card");
    const isVertical = computed(() => props2.direction === "vertical");
    const containerStyle = computed(() => {
      if (props2.height !== "auto") {
        return {
          height: props2.height
        };
      }
      return {
        height: `${containerHeight.value}px`,
        overflow: "hidden"
      };
    });
    const throttledArrowClick = throttle(
      (index) => {
        setActiveItem(index);
      },
      THROTTLE_TIME,
      { trailing: true }
    );
    const throttledIndicatorHover = throttle((index) => {
      handleIndicatorHover(index);
    }, THROTTLE_TIME);
    const isTwoLengthShow = (index) => {
      if (!isItemsTwoLength.value) return true;
      return activeIndex.value <= 1 ? index <= 1 : index > 1;
    };
    function pauseTimer() {
      if (timer.value) {
        clearInterval(timer.value);
        timer.value = null;
      }
    }
    function startTimer() {
      if (props2.interval <= 0 || !props2.autoplay || timer.value) return;
      timer.value = setInterval(() => playSlides(), props2.interval);
    }
    const playSlides = () => {
      if (activeIndex.value < items.value.length - 1) {
        activeIndex.value = activeIndex.value + 1;
      } else if (props2.loop) {
        activeIndex.value = 0;
      }
    };
    function setActiveItem(index) {
      if (isString(index)) {
        const filteredItems = items.value.filter(
          (item) => item.props.name === index
        );
        if (filteredItems.length > 0) {
          index = items.value.indexOf(filteredItems[0]);
        }
      }
      index = Number(index);
      if (Number.isNaN(index) || index !== Math.floor(index)) {
        return;
      }
      const itemCount = items.value.length;
      const oldIndex = activeIndex.value;
      if (index < 0) {
        activeIndex.value = props2.loop ? itemCount - 1 : 0;
      } else if (index >= itemCount) {
        activeIndex.value = props2.loop ? 0 : itemCount - 1;
      } else {
        activeIndex.value = index;
      }
      if (oldIndex === activeIndex.value) {
        resetItemPosition(oldIndex);
      }
      resetTimer();
    }
    function resetItemPosition(oldIndex) {
      items.value.forEach((item, index) => {
        item.translateItem(index, activeIndex.value, oldIndex);
      });
    }
    function itemInStage(item, index) {
      var _a, _b, _c, _d;
      const _items = unref(items);
      const itemCount = _items.length;
      if (itemCount === 0 || !item.states.inStage) return false;
      const nextItemIndex = index + 1;
      const prevItemIndex = index - 1;
      const lastItemIndex = itemCount - 1;
      const isLastItemActive = _items[lastItemIndex].states.active;
      const isFirstItemActive = _items[0].states.active;
      const isNextItemActive = (_b = (_a = _items[nextItemIndex]) == null ? void 0 : _a.states) == null ? void 0 : _b.active;
      const isPrevItemActive = (_d = (_c = _items[prevItemIndex]) == null ? void 0 : _c.states) == null ? void 0 : _d.active;
      if (index === lastItemIndex && isFirstItemActive || isNextItemActive) {
        return "left";
      } else if (index === 0 && isLastItemActive || isPrevItemActive) {
        return "right";
      }
      return false;
    }
    function handleMouseEnter() {
      hover.value = true;
      if (props2.pauseOnHover) {
        pauseTimer();
      }
    }
    function handleMouseLeave() {
      hover.value = false;
      startTimer();
    }
    function handleButtonEnter(arrow2) {
      if (unref(isVertical)) return;
      items.value.forEach((item, index) => {
        if (arrow2 === itemInStage(item, index)) {
          item.states.hover = true;
        }
      });
    }
    function handleButtonLeave() {
      if (unref(isVertical)) return;
      items.value.forEach((item) => {
        item.states.hover = false;
      });
    }
    function handleIndicatorClick(index) {
      activeIndex.value = index;
    }
    function handleIndicatorHover(index) {
      if (props2.trigger === "hover" && index !== activeIndex.value) {
        activeIndex.value = index;
      }
    }
    function prev() {
      setActiveItem(activeIndex.value - 1);
    }
    function next() {
      setActiveItem(activeIndex.value + 1);
    }
    function resetTimer() {
      pauseTimer();
      if (!props2.pauseOnHover) startTimer();
    }
    function setContainerHeight(height) {
      if (props2.height !== "auto") return;
      containerHeight.value = height;
    }
    function PlaceholderItem() {
      var _a;
      const defaultSlots = (_a = slots.default) == null ? void 0 : _a.call(slots);
      if (!defaultSlots) return null;
      const flatSlots = flattedChildren(defaultSlots);
      const normalizeSlots = flatSlots.filter((slot) => {
        return isVNode(slot) && slot.type.name === CAROUSEL_ITEM_NAME;
      });
      if ((normalizeSlots == null ? void 0 : normalizeSlots.length) === 2 && props2.loop && !isCardType.value) {
        isItemsTwoLength.value = true;
        return normalizeSlots;
      }
      isItemsTwoLength.value = false;
      return null;
    }
    watch(
      () => activeIndex.value,
      (current, prev2) => {
        resetItemPosition(prev2);
        if (isItemsTwoLength.value) {
          current = current % 2;
          prev2 = prev2 % 2;
        }
        if (prev2 > -1) {
          emit2(CHANGE_EVENT, current, prev2);
        }
      }
    );
    const exposeActiveIndex = computed({
      get: () => {
        return isItemsTwoLength.value ? activeIndex.value % 2 : activeIndex.value;
      },
      set: (value) => activeIndex.value = value
    });
    watch(
      () => props2.autoplay,
      (autoplay) => {
        autoplay ? startTimer() : pauseTimer();
      }
    );
    watch(
      () => props2.loop,
      () => {
        setActiveItem(activeIndex.value);
      }
    );
    watch(
      () => props2.interval,
      () => {
        resetTimer();
      }
    );
    const resizeObserver = shallowRef();
    onMounted(() => {
      watch(
        () => items.value,
        () => {
          if (items.value.length > 0) setActiveItem(props2.initialIndex);
        },
        {
          immediate: true
        }
      );
      resizeObserver.value = useResizeObserver(root2.value, () => {
        resetItemPosition();
      });
      startTimer();
    });
    onBeforeUnmount(() => {
      pauseTimer();
      if (root2.value && resizeObserver.value) resizeObserver.value.stop();
    });
    provide(carouselContextKey, {
      root: root2,
      isCardType,
      isVertical,
      items,
      loop: props2.loop,
      cardScale: props2.cardScale,
      addItem,
      removeItem,
      setActiveItem,
      setContainerHeight
    });
    return {
      root: root2,
      activeIndex,
      exposeActiveIndex,
      arrowDisplay,
      hasLabel,
      hover,
      isCardType,
      items,
      isVertical,
      containerStyle,
      isItemsTwoLength,
      handleButtonEnter,
      handleButtonLeave,
      handleIndicatorClick,
      handleMouseEnter,
      handleMouseLeave,
      setActiveItem,
      prev,
      next,
      PlaceholderItem,
      isTwoLengthShow,
      ItemsSorter,
      throttledArrowClick,
      throttledIndicatorHover
    };
  };
  const _hoisted_1$1V = ["aria-label"];
  const _hoisted_2$1p = ["aria-label"];
  const _hoisted_3$10 = ["onMouseenter", "onClick"];
  const _hoisted_4$V = ["aria-label"];
  const _hoisted_5$L = { key: 0 };
  const _hoisted_6$p = {
    key: 2,
    xmlns: "http://www.w3.org/2000/svg",
    version: "1.1",
    style: { "display": "none" }
  };
  const COMPONENT_NAME$f = "ElCarousel";
  var _sfc_main$2S = /* @__PURE__ */ defineComponent({
    ...{
      name: COMPONENT_NAME$f
    },
    __name: "carousel",
    props: carouselProps,
    emits: carouselEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const {
        root: root2,
        activeIndex,
        exposeActiveIndex,
        arrowDisplay,
        hasLabel,
        hover,
        isCardType,
        items,
        isVertical,
        containerStyle,
        handleButtonEnter,
        handleButtonLeave,
        handleIndicatorClick,
        handleMouseEnter,
        handleMouseLeave,
        setActiveItem,
        prev,
        next,
        PlaceholderItem,
        isTwoLengthShow,
        ItemsSorter,
        throttledArrowClick,
        throttledIndicatorHover
      } = useCarousel(props2, emit2);
      const ns = useNamespace("carousel");
      const { t } = useLocale();
      const carouselClasses = computed(() => {
        const classes = [ns.b(), ns.m(props2.direction)];
        if (unref(isCardType)) {
          classes.push(ns.m("card"));
        }
        return classes;
      });
      const indicatorsClasses = computed(() => {
        const classes = [ns.e("indicators"), ns.em("indicators", props2.direction)];
        if (unref(hasLabel)) {
          classes.push(ns.em("indicators", "labels"));
        }
        if (props2.indicatorPosition === "outside") {
          classes.push(ns.em("indicators", "outside"));
        }
        if (unref(isVertical)) {
          classes.push(ns.em("indicators", "right"));
        }
        return classes;
      });
      function handleTransitionStart(e) {
        if (!props2.motionBlur) return;
        const kls = unref(isVertical) ? `${ns.namespace.value}-transitioning-vertical` : `${ns.namespace.value}-transitioning`;
        e.currentTarget.classList.add(kls);
      }
      function handleTransitionEnd(e) {
        if (!props2.motionBlur) return;
        const kls = unref(isVertical) ? `${ns.namespace.value}-transitioning-vertical` : `${ns.namespace.value}-transitioning`;
        e.currentTarget.classList.remove(kls);
      }
      __expose({
        /** @description active slide index */
        activeIndex: exposeActiveIndex,
        /** @description manually switch slide, index of the slide to be switched to, starting from 0; or the `name` of corresponding `el-carousel-item` */
        setActiveItem,
        /** @description switch to the previous slide */
        prev,
        /** @description switch to the next slide */
        next
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            ref_key: "root",
            ref: root2,
            class: normalizeClass(carouselClasses.value),
            onMouseenter: _cache[6] || (_cache[6] = withModifiers(
              //@ts-ignore
              (...args) => unref(handleMouseEnter) && unref(handleMouseEnter)(...args),
              ["stop"]
            )),
            onMouseleave: _cache[7] || (_cache[7] = withModifiers(
              //@ts-ignore
              (...args) => unref(handleMouseLeave) && unref(handleMouseLeave)(...args),
              ["stop"]
            ))
          },
          [
            unref(arrowDisplay) ? (openBlock(), createBlock(Transition, {
              key: 0,
              name: "carousel-arrow-left",
              persisted: ""
            }, {
              default: withCtx(() => [
                withDirectives(createBaseVNode("button", {
                  type: "button",
                  class: normalizeClass([unref(ns).e("arrow"), unref(ns).em("arrow", "left")]),
                  "aria-label": unref(t)("el.carousel.leftArrow"),
                  onMouseenter: _cache[0] || (_cache[0] = ($event) => unref(handleButtonEnter)("left")),
                  onMouseleave: _cache[1] || (_cache[1] = //@ts-ignore
                  (...args) => unref(handleButtonLeave) && unref(handleButtonLeave)(...args)),
                  onClick: _cache[2] || (_cache[2] = withModifiers(($event) => unref(throttledArrowClick)(unref(activeIndex) - 1), ["stop"]))
                }, [
                  createVNode(unref(ElIcon), null, {
                    default: withCtx(() => [
                      createVNode(unref(arrow_left_default))
                    ]),
                    _: 1
                    /* STABLE */
                  })
                ], 42, _hoisted_1$1V), [
                  [vShow, (__props.arrow === "always" || unref(hover)) && (__props.loop || unref(activeIndex) > 0)]
                ])
              ]),
              _: 1
              /* STABLE */
            })) : createCommentVNode("v-if", true),
            unref(arrowDisplay) ? (openBlock(), createBlock(Transition, {
              key: 1,
              name: "carousel-arrow-right",
              persisted: ""
            }, {
              default: withCtx(() => [
                withDirectives(createBaseVNode("button", {
                  type: "button",
                  class: normalizeClass([unref(ns).e("arrow"), unref(ns).em("arrow", "right")]),
                  "aria-label": unref(t)("el.carousel.rightArrow"),
                  onMouseenter: _cache[3] || (_cache[3] = ($event) => unref(handleButtonEnter)("right")),
                  onMouseleave: _cache[4] || (_cache[4] = //@ts-ignore
                  (...args) => unref(handleButtonLeave) && unref(handleButtonLeave)(...args)),
                  onClick: _cache[5] || (_cache[5] = withModifiers(($event) => unref(throttledArrowClick)(unref(activeIndex) + 1), ["stop"]))
                }, [
                  createVNode(unref(ElIcon), null, {
                    default: withCtx(() => [
                      createVNode(unref(arrow_right_default))
                    ]),
                    _: 1
                    /* STABLE */
                  })
                ], 42, _hoisted_2$1p), [
                  [
                    vShow,
                    (__props.arrow === "always" || unref(hover)) && (__props.loop || unref(activeIndex) < unref(items).length - 1)
                  ]
                ])
              ]),
              _: 1
              /* STABLE */
            })) : createCommentVNode("v-if", true),
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(ns).e("container")),
                style: normalizeStyle(unref(containerStyle)),
                onTransitionstart: handleTransitionStart,
                onTransitionend: handleTransitionEnd
              },
              [
                createVNode(unref(PlaceholderItem)),
                renderSlot(_ctx.$slots, "default")
              ],
              38
              /* CLASS, STYLE, NEED_HYDRATION */
            ),
            createVNode(unref(ItemsSorter), null, {
              default: withCtx(() => [
                __props.indicatorPosition !== "none" ? (openBlock(), createElementBlock(
                  "ul",
                  {
                    key: 0,
                    class: normalizeClass(indicatorsClasses.value)
                  },
                  [
                    (openBlock(true), createElementBlock(
                      Fragment,
                      null,
                      renderList(unref(items), (item, index) => {
                        return withDirectives((openBlock(), createElementBlock("li", {
                          key: index,
                          class: normalizeClass([
                            unref(ns).e("indicator"),
                            unref(ns).em("indicator", __props.direction),
                            unref(ns).is("active", index === unref(activeIndex))
                          ]),
                          onMouseenter: ($event) => unref(throttledIndicatorHover)(index),
                          onClick: withModifiers(($event) => unref(handleIndicatorClick)(index), ["stop"])
                        }, [
                          createBaseVNode("button", {
                            class: normalizeClass(unref(ns).e("button")),
                            "aria-label": unref(t)("el.carousel.indicator", { index: index + 1 })
                          }, [
                            unref(hasLabel) ? (openBlock(), createElementBlock(
                              "span",
                              _hoisted_5$L,
                              toDisplayString(item.props.label),
                              1
                              /* TEXT */
                            )) : createCommentVNode("v-if", true)
                          ], 10, _hoisted_4$V)
                        ], 42, _hoisted_3$10)), [
                          [vShow, unref(isTwoLengthShow)(index)]
                        ]);
                      }),
                      128
                      /* KEYED_FRAGMENT */
                    ))
                  ],
                  2
                  /* CLASS */
                )) : createCommentVNode("v-if", true)
              ]),
              _: 1
              /* STABLE */
            }),
            __props.motionBlur ? (openBlock(), createElementBlock("svg", _hoisted_6$p, [..._cache[8] || (_cache[8] = [
              createBaseVNode(
                "defs",
                null,
                [
                  createBaseVNode("filter", { id: "elCarouselHorizontal" }, [
                    createBaseVNode("feGaussianBlur", {
                      in: "SourceGraphic",
                      stdDeviation: "12,0"
                    })
                  ]),
                  createBaseVNode("filter", { id: "elCarouselVertical" }, [
                    createBaseVNode("feGaussianBlur", {
                      in: "SourceGraphic",
                      stdDeviation: "0,10"
                    })
                  ])
                ],
                -1
                /* CACHED */
              )
            ])])) : createCommentVNode("v-if", true)
          ],
          34
          /* CLASS, NEED_HYDRATION */
        );
      };
    }
  });
  const carouselItemProps = buildProps({
    /**
     * @description name of the item, can be used in `setActiveItem`
     */
    name: { type: String, default: "" },
    /**
     * @description text content for the corresponding indicator
     */
    label: {
      type: [String, Number],
      default: ""
    }
  });
  const useCarouselItem = (props2) => {
    const carouselContext = inject(carouselContextKey);
    const instance = getCurrentInstance();
    const carouselItemRef = ref();
    const hover = ref(false);
    const translate2 = ref(0);
    const scale = ref(1);
    const active = ref(false);
    const ready = ref(false);
    const inStage = ref(false);
    const animating = ref(false);
    const { isCardType, isVertical, cardScale } = carouselContext;
    function processIndex(index, activeIndex, length) {
      const lastItemIndex = length - 1;
      const prevItemIndex = activeIndex - 1;
      const nextItemIndex = activeIndex + 1;
      const halfItemIndex = length / 2;
      if (activeIndex === 0 && index === lastItemIndex) {
        return -1;
      } else if (activeIndex === lastItemIndex && index === 0) {
        return length;
      } else if (index < prevItemIndex && activeIndex - index >= halfItemIndex) {
        return length + 1;
      } else if (index > nextItemIndex && index - activeIndex >= halfItemIndex) {
        return -2;
      }
      return index;
    }
    function calcCardTranslate(index, activeIndex) {
      var _a, _b;
      const parentWidth = unref(isVertical) ? ((_a = carouselContext.root.value) == null ? void 0 : _a.offsetHeight) || 0 : ((_b = carouselContext.root.value) == null ? void 0 : _b.offsetWidth) || 0;
      if (inStage.value) {
        return parentWidth * ((2 - cardScale) * (index - activeIndex) + 1) / 4;
      } else if (index < activeIndex) {
        return -(1 + cardScale) * parentWidth / 4;
      } else {
        return (3 + cardScale) * parentWidth / 4;
      }
    }
    function calcTranslate(index, activeIndex, isVertical2) {
      const rootEl = carouselContext.root.value;
      if (!rootEl) return 0;
      const distance = (isVertical2 ? rootEl.offsetHeight : rootEl.offsetWidth) || 0;
      return distance * (index - activeIndex);
    }
    const translateItem = (index, activeIndex, oldIndex) => {
      var _a;
      const _isCardType = unref(isCardType);
      const carouselItemLength = (_a = carouselContext.items.value.length) != null ? _a : Number.NaN;
      const isActive = index === activeIndex;
      if (!_isCardType && !isUndefined(oldIndex)) {
        animating.value = isActive || index === oldIndex;
      }
      if (!isActive && carouselItemLength > 2 && carouselContext.loop) {
        index = processIndex(index, activeIndex, carouselItemLength);
      }
      const _isVertical = unref(isVertical);
      active.value = isActive;
      if (_isCardType) {
        inStage.value = Math.round(Math.abs(index - activeIndex)) <= 1;
        translate2.value = calcCardTranslate(index, activeIndex);
        scale.value = unref(active) ? 1 : cardScale;
      } else {
        translate2.value = calcTranslate(index, activeIndex, _isVertical);
      }
      ready.value = true;
      if (isActive && carouselItemRef.value) {
        carouselContext.setContainerHeight(carouselItemRef.value.offsetHeight);
      }
    };
    function handleItemClick() {
      if (carouselContext && unref(isCardType)) {
        const index = carouselContext.items.value.findIndex(
          ({ uid: uid2 }) => uid2 === instance.uid
        );
        carouselContext.setActiveItem(index);
      }
    }
    const carouselItemContext = {
      props: props2,
      states: reactive({
        hover,
        translate: translate2,
        scale,
        active,
        ready,
        inStage,
        animating
      }),
      uid: instance.uid,
      getVnode: () => instance.vnode,
      translateItem
    };
    carouselContext.addItem(carouselItemContext);
    onBeforeUnmount(() => {
      carouselContext.removeItem(carouselItemContext);
    });
    return {
      carouselItemRef,
      active,
      animating,
      hover,
      inStage,
      isVertical,
      translate: translate2,
      isCardType,
      scale,
      ready,
      handleItemClick
    };
  };
  var _sfc_main$2R = /* @__PURE__ */ defineComponent({
    ...{
      name: CAROUSEL_ITEM_NAME
    },
    __name: "carousel-item",
    props: carouselItemProps,
    setup(__props) {
      const props2 = __props;
      const ns = useNamespace("carousel");
      const {
        carouselItemRef,
        active,
        animating,
        hover,
        inStage,
        isVertical,
        translate: translate2,
        isCardType,
        scale,
        ready,
        handleItemClick
      } = useCarouselItem(props2);
      const itemKls = computed(() => [
        ns.e("item"),
        ns.is("active", active.value),
        ns.is("in-stage", inStage.value),
        ns.is("hover", hover.value),
        ns.is("animating", animating.value),
        {
          [ns.em("item", "card")]: isCardType.value,
          [ns.em("item", "card-vertical")]: isCardType.value && isVertical.value
        }
      ]);
      const itemStyle = computed(() => {
        const translateType = `translate${unref(isVertical) ? "Y" : "X"}`;
        const _translate = `${translateType}(${unref(translate2)}px)`;
        const _scale = `scale(${unref(scale)})`;
        const transform = [_translate, _scale].join(" ");
        return {
          transform
        };
      });
      return (_ctx, _cache) => {
        return withDirectives((openBlock(), createElementBlock(
          "div",
          {
            ref_key: "carouselItemRef",
            ref: carouselItemRef,
            class: normalizeClass(itemKls.value),
            style: normalizeStyle(itemStyle.value),
            onClick: _cache[0] || (_cache[0] = //@ts-ignore
            (...args) => unref(handleItemClick) && unref(handleItemClick)(...args))
          },
          [
            unref(isCardType) ? withDirectives((openBlock(), createElementBlock(
              "div",
              {
                key: 0,
                class: normalizeClass(unref(ns).e("mask"))
              },
              null,
              2
              /* CLASS */
            )), [
              [vShow, !unref(active)]
            ]) : createCommentVNode("v-if", true),
            renderSlot(_ctx.$slots, "default")
          ],
          6
          /* CLASS, STYLE */
        )), [
          [vShow, unref(ready)]
        ]);
      };
    }
  });
  const ElCarousel = withInstall(_sfc_main$2S, {
    CarouselItem: _sfc_main$2R
  });
  const ElCarouselItem = withNoopInstall(_sfc_main$2R);
  const CommonProps = buildProps({
    /**
     * @description specify which key of node object is used as the node's value
     */
    modelValue: {
      type: definePropType([Number, String, Array, Object])
    },
    /**
     * @description data of the options, the key of `value` and `label` can be customize by `CascaderProps`.
     */
    options: {
      type: definePropType(Array),
      default: () => []
    },
    /**
     * @description configuration options, see the following `CascaderProps` table.
     */
    props: {
      type: definePropType(Object),
      default: () => ({})
    }
  });
  const DefaultProps = {
    /**
     * @description trigger mode of expanding options
     */
    expandTrigger: "click",
    /**
     * @description whether multiple selection is enabled
     */
    multiple: false,
    /**
     * @description whether checked state of a node not affects its parent and child nodes
     */
    checkStrictly: false,
    // whether all nodes can be selected
    /**
     * @description when checked nodes change, whether to emit an array of node's path, if false, only emit the value of node.
     */
    emitPath: true,
    // wether to emit an array of all levels value in which node is located
    /**
     * @description whether to dynamic load child nodes, use with `lazyload` attribute
     */
    lazy: false,
    /**
     * @description method for loading child nodes data, only works when `lazy` is true
     */
    lazyLoad: NOOP,
    /**
     * @description specify which key of node object is used as the node's value
     */
    value: "value",
    /**
     * @description specify which key of node object is used as the node's label
     */
    label: "label",
    /**
     * @description specify which key of node object is used as the node's children
     */
    children: "children",
    /**
     * @description specify which key of node object is used as the node's leaf
     */
    leaf: "leaf",
    /**
     * @description specify which key of node object is used as the node's disabled
     */
    disabled: "disabled",
    /**
     * @description hover threshold of expanding options
     */
    hoverThreshold: 500,
    /**
     * @description whether to check or uncheck node when clicking on the node
     */
    checkOnClickNode: false,
    /**
     * @description whether to check or uncheck node when clicking on leaf node (last children).
     */
    checkOnClickLeaf: true,
    /**
     * @description whether to show the radio or checkbox prefix
     */
    showPrefix: true
  };
  const cascaderPanelProps = buildProps({
    ...CommonProps,
    border: {
      type: Boolean,
      default: true
    },
    renderLabel: {
      type: Function
    }
  });
  const emitChangeFn$2 = (value) => true;
  const cascaderPanelEmits = {
    [UPDATE_MODEL_EVENT]: emitChangeFn$2,
    [CHANGE_EVENT]: emitChangeFn$2,
    close: () => true,
    "expand-change": (value) => value
  };
  const useCascaderConfig = (props2) => {
    return computed(() => ({
      ...DefaultProps,
      ...props2.props
    }));
  };
  const cascaderProps = buildProps({
    ...CommonProps,
    /**
     * @description size of input
     */
    size: useSizeProp,
    /**
     * @description placeholder of input
     */
    placeholder: String,
    /**
     * @description whether Cascader is disabled
     */
    disabled: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description whether selected value can be cleared
     */
    clearable: Boolean,
    /**
     * @description custom clear icon component
     */
    clearIcon: {
      type: iconPropType,
      default: circle_close_default
    },
    /**
     * @description whether the options can be searched
     */
    filterable: Boolean,
    /**
     * @description customize search logic, the first parameter is `node`, the second is `keyword`, and need return a boolean value indicating whether it hits.
     */
    filterMethod: {
      type: definePropType(
        Function
      ),
      default: (node, keyword) => node.text.includes(keyword)
    },
    /**
     * @description option label separator
     */
    separator: {
      type: String,
      default: " / "
    },
    /**
     * @description whether to display all levels of the selected value in the input
     */
    showAllLevels: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether to collapse tags in multiple selection mode
     */
    collapseTags: Boolean,
    /**
     * @description The max tags number to be shown. To use this, collapse-tags must be true
     */
    maxCollapseTags: {
      type: Number,
      default: 1
    },
    /**
     * @description whether show all selected tags when mouse hover text of collapse-tags. To use this, collapse-tags must be true
     */
    collapseTagsTooltip: Boolean,
    /**
     * @description The max height of collapse tags tooltip, in pixels. To use this, collapse-tags-tooltip must be true
     */
    maxCollapseTagsTooltipHeight: {
      type: [String, Number]
    },
    /**
     * @description debounce delay when typing filter keyword, in milliseconds
     */
    debounce: {
      type: Number,
      default: 300
    },
    /**
     * @description hook function before filtering with the value to be filtered as its parameter. If `false` is returned or a `Promise` is returned and then is rejected, filtering will be aborted
     */
    beforeFilter: {
      type: definePropType(Function),
      default: () => true
    },
    /**
     * @description position of dropdown
     */
    placement: {
      type: definePropType(String),
      values: Ee,
      default: "bottom-start"
    },
    /**
     * @description list of possible positions for dropdown
     */
    fallbackPlacements: {
      type: definePropType(Array),
      default: ["bottom-start", "bottom", "top-start", "top", "right", "left"]
    },
    /**
     * @description custom class name for Cascader's dropdown
     */
    popperClass: useTooltipContentProps.popperClass,
    /**
     * @description custom style for Cascader's dropdown
     */
    popperStyle: useTooltipContentProps.popperStyle,
    /**
     * @description whether cascader popup is teleported
     */
    teleported: useTooltipContentProps.teleported,
    /**
     * @description tooltip theme, built-in theme: `dark` / `light`
     */
    effect: {
      type: definePropType(String),
      default: "light"
    },
    /**
     * @description tag type
     */
    tagType: { ...tagProps.type, default: "info" },
    /**
     * @description tag effect
     */
    tagEffect: { ...tagProps.effect, default: "light" },
    /**
     * @description whether to trigger form validation
     */
    validateEvent: {
      type: Boolean,
      default: true
    },
    /**
     * @description when dropdown is inactive and `persistent` is `false`, dropdown will be destroyed
     */
    persistent: {
      type: Boolean,
      default: true
    },
    /**
     * @description Use `parent` when you want things tidy (like "Entire Collection" instead of listing 100 items)
     * Use `child` when every single item matters (like important settings)
     */
    showCheckedStrategy: {
      type: String,
      values: ["parent", "child"],
      default: "child"
    },
    /**
     * @description whether to check or uncheck node when clicking on the node
     */
    checkOnClickNode: Boolean,
    /**
     * @description whether to show the radio or checkbox prefix
     */
    showPrefix: {
      type: Boolean,
      default: true
    },
    ...useEmptyValuesProps
  });
  const emitChangeFn$1 = (value) => true;
  const cascaderEmits = {
    [UPDATE_MODEL_EVENT]: emitChangeFn$1,
    [CHANGE_EVENT]: emitChangeFn$1,
    focus: (evt) => evt instanceof FocusEvent,
    blur: (evt) => evt instanceof FocusEvent,
    clear: () => true,
    visibleChange: (val) => isBoolean(val),
    expandChange: (val) => !!val,
    removeTag: (val) => !!val
  };
  const checkboxProps = {
    /**
     * @description binding value
     */
    modelValue: {
      type: [Number, String, Boolean],
      default: void 0
    },
    /**
     * @description label of the Checkbox when used inside a `checkbox-group`
     */
    label: {
      type: [String, Boolean, Number, Object],
      default: void 0
    },
    /**
     * @description value of the Checkbox when used inside a `checkbox-group`
     */
    value: {
      type: [String, Boolean, Number, Object],
      default: void 0
    },
    /**
     * @description Set indeterminate state, only responsible for style control
     */
    indeterminate: Boolean,
    /**
     * @description whether the Checkbox is disabled
     */
    disabled: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description if the Checkbox is checked
     */
    checked: Boolean,
    /**
     * @description native 'name' attribute
     */
    name: {
      type: String,
      default: void 0
    },
    /**
     * @description value of the Checkbox if it's checked
     */
    trueValue: {
      type: [String, Number],
      default: void 0
    },
    /**
     * @description value of the Checkbox if it's not checked
     */
    falseValue: {
      type: [String, Number],
      default: void 0
    },
    /**
     * @deprecated use `trueValue` instead
     * @description value of the Checkbox if it's checked
     */
    trueLabel: {
      type: [String, Number],
      default: void 0
    },
    /**
     * @deprecated use `falseValue` instead
     * @description value of the Checkbox if it's not checked
     */
    falseLabel: {
      type: [String, Number],
      default: void 0
    },
    /**
     * @description input id
     */
    id: {
      type: String,
      default: void 0
    },
    /**
     * @description whether to add a border around Checkbox
     */
    border: Boolean,
    /**
     * @description size of the Checkbox
     */
    size: useSizeProp,
    /**
     * @description input tabindex
     */
    tabindex: [String, Number],
    /**
     * @description whether to trigger form validation
     */
    validateEvent: {
      type: Boolean,
      default: true
    },
    ariaLabel: String,
    ...useAriaProps(["ariaControls"])
  };
  const checkboxEmits = {
    [UPDATE_MODEL_EVENT]: (val) => isString(val) || isNumber(val) || isBoolean(val),
    change: (val) => isString(val) || isNumber(val) || isBoolean(val)
  };
  const checkboxGroupContextKey = /* @__PURE__ */ Symbol("checkboxGroupContextKey");
  const useCheckboxDisabled = ({
    model,
    isChecked
  }) => {
    const checkboxGroup = inject(checkboxGroupContextKey, void 0);
    const formContext = inject(formContextKey, void 0);
    const isLimitDisabled = computed(() => {
      var _a, _b;
      const max2 = (_a = checkboxGroup == null ? void 0 : checkboxGroup.max) == null ? void 0 : _a.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(
      computed(() => {
        var _a, _b;
        if (checkboxGroup === void 0) {
          return (_a = formContext == null ? void 0 : formContext.disabled) != null ? _a : isLimitDisabled.value;
        } else {
          return ((_b = checkboxGroup.disabled) == null ? void 0 : _b.value) || isLimitDisabled.value;
        }
      })
    );
    return {
      isDisabled,
      isLimitDisabled
    };
  };
  const useCheckboxEvent = (props2, {
    model,
    isLimitExceeded,
    hasOwnLabel,
    isDisabled,
    isLabeledByFormItem
  }) => {
    const checkboxGroup = inject(checkboxGroupContextKey, void 0);
    const { formItem } = useFormItem();
    const { emit: emit2 } = getCurrentInstance();
    function getLabeledValue(value) {
      var _a, _b, _c, _d;
      return [true, props2.trueValue, props2.trueLabel].includes(value) ? (_b = (_a = props2.trueValue) != null ? _a : props2.trueLabel) != null ? _b : true : (_d = (_c = props2.falseValue) != null ? _c : props2.falseLabel) != null ? _d : false;
    }
    function emitChangeEvent(checked, e) {
      emit2(CHANGE_EVENT, getLabeledValue(checked), e);
    }
    function handleChange(e) {
      if (isLimitExceeded.value) return;
      const target = e.target;
      emit2(CHANGE_EVENT, 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, props2.falseValue, props2.falseLabel].includes(model.value)
          );
          await nextTick();
          emitChangeEvent(model.value, e);
        }
      }
    }
    const validateEvent = computed(
      () => (checkboxGroup == null ? void 0 : checkboxGroup.validateEvent) || props2.validateEvent
    );
    watch(
      () => props2.modelValue,
      () => {
        if (validateEvent.value) {
          formItem == null ? void 0 : formItem.validate("change").catch((err) => debugWarn());
        }
      }
    );
    return {
      handleChange,
      onClickRoot
    };
  };
  const useCheckboxModel = (props2) => {
    const selfModel = ref(false);
    const { emit: emit2 } = getCurrentInstance();
    const checkboxGroup = inject(checkboxGroupContextKey, void 0);
    const isGroup = computed(() => isUndefined(checkboxGroup) === false);
    const isLimitExceeded = ref(false);
    const model = computed({
      get() {
        var _a, _b;
        return isGroup.value ? (_a = checkboxGroup == null ? void 0 : checkboxGroup.modelValue) == null ? void 0 : _a.value : (_b = props2.modelValue) != null ? _b : selfModel.value;
      },
      set(val) {
        var _a, _b;
        if (isGroup.value && isArray$1(val)) {
          isLimitExceeded.value = ((_a = checkboxGroup == null ? void 0 : checkboxGroup.max) == null ? void 0 : _a.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 {
          emit2(UPDATE_MODEL_EVENT, val);
          selfModel.value = val;
        }
      }
    });
    return {
      model,
      isGroup,
      isLimitExceeded
    };
  };
  const useCheckboxStatus = (props2, slots, { model }) => {
    const checkboxGroup = inject(checkboxGroupContextKey, void 0);
    const isFocused = ref(false);
    const actualValue = computed(() => {
      if (!isPropAbsent(props2.value)) {
        return props2.value;
      }
      return props2.label;
    });
    const isChecked = computed(() => {
      const value = model.value;
      if (isBoolean(value)) {
        return value;
      } else if (isArray$1(value)) {
        if (isObject$2(actualValue.value)) {
          return value.map(toRaw).some((o2) => isEqual$1(o2, actualValue.value));
        } else {
          return value.map(toRaw).includes(actualValue.value);
        }
      } else if (value !== null && value !== void 0) {
        return value === props2.trueValue || value === props2.trueLabel;
      } else {
        return !!value;
      }
    });
    const checkboxButtonSize = useFormSize(
      computed(() => {
        var _a;
        return (_a = checkboxGroup == null ? void 0 : checkboxGroup.size) == null ? void 0 : _a.value;
      }),
      {
        prop: true
      }
    );
    const checkboxSize = useFormSize(computed(() => {
      var _a;
      return (_a = checkboxGroup == null ? void 0 : checkboxGroup.size) == null ? void 0 : _a.value;
    }));
    const hasOwnLabel = computed(() => {
      return !!slots.default || !isPropAbsent(actualValue.value);
    });
    return {
      checkboxButtonSize,
      isChecked,
      isFocused,
      checkboxSize,
      hasOwnLabel,
      actualValue
    };
  };
  const useCheckbox = (props2, slots) => {
    const { formItem: elFormItem } = useFormItem();
    const { model, isGroup, isLimitExceeded } = useCheckboxModel(props2);
    const {
      isFocused,
      isChecked,
      checkboxButtonSize,
      checkboxSize,
      hasOwnLabel,
      actualValue
    } = useCheckboxStatus(props2, slots, { model });
    const { isDisabled } = useCheckboxDisabled({ model, isChecked });
    const { inputId, isLabeledByFormItem } = useFormItemInputId(props2, {
      formItemContext: elFormItem,
      disableIdGeneration: hasOwnLabel,
      disableIdManagement: isGroup
    });
    const { handleChange, onClickRoot } = useCheckboxEvent(props2, {
      model,
      isLimitExceeded,
      hasOwnLabel,
      isDisabled,
      isLabeledByFormItem
    });
    const setStoreValue = () => {
      function addToStore() {
        var _a, _b;
        if (isArray$1(model.value) && !model.value.includes(actualValue.value)) {
          model.value.push(actualValue.value);
        } else {
          model.value = (_b = (_a = props2.trueValue) != null ? _a : props2.trueLabel) != null ? _b : true;
        }
      }
      props2.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"
      },
      computed(() => isGroup.value && isPropAbsent(props2.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"
      },
      computed(() => !!props2.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"
      },
      computed(() => !!props2.falseLabel)
    );
    return {
      inputId,
      isLabeledByFormItem,
      isChecked,
      isDisabled,
      isFocused,
      checkboxButtonSize,
      checkboxSize,
      hasOwnLabel,
      model,
      actualValue,
      handleChange,
      onClickRoot
    };
  };
  const _hoisted_1$1U = ["id", "indeterminate", "name", "tabindex", "disabled"];
  var _sfc_main$2Q = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElCheckbox"
    },
    __name: "checkbox",
    props: checkboxProps,
    emits: checkboxEmits,
    setup(__props) {
      const props2 = __props;
      const slots = useSlots();
      const {
        inputId,
        isLabeledByFormItem,
        isChecked,
        isDisabled,
        isFocused,
        checkboxSize,
        hasOwnLabel,
        model,
        actualValue,
        handleChange,
        onClickRoot
      } = useCheckbox(props2, slots);
      const inputBindings = computed(() => {
        var _a, _b, _c, _d;
        if (props2.trueValue || props2.falseValue || props2.trueLabel || props2.falseLabel) {
          return {
            "true-value": (_b = (_a = props2.trueValue) != null ? _a : props2.trueLabel) != null ? _b : true,
            "false-value": (_d = (_c = props2.falseValue) != null ? _c : props2.falseLabel) != null ? _d : false
          };
        }
        return {
          value: actualValue.value
        };
      });
      const ns = useNamespace("checkbox");
      const compKls = computed(() => {
        return [
          ns.b(),
          ns.m(checkboxSize.value),
          ns.is("disabled", isDisabled.value),
          ns.is("bordered", props2.border),
          ns.is("checked", isChecked.value)
        ];
      });
      const spanKls = computed(() => {
        return [
          ns.e("input"),
          ns.is("disabled", isDisabled.value),
          ns.is("checked", isChecked.value),
          ns.is("indeterminate", props2.indeterminate),
          ns.is("focus", isFocused.value)
        ];
      });
      return (_ctx, _cache) => {
        return openBlock(), createBlock(resolveDynamicComponent(!unref(hasOwnLabel) && unref(isLabeledByFormItem) ? "span" : "label"), {
          for: !unref(hasOwnLabel) && unref(isLabeledByFormItem) ? null : unref(inputId),
          class: normalizeClass(compKls.value),
          "aria-controls": __props.indeterminate ? __props.ariaControls : null,
          "aria-checked": __props.indeterminate ? "mixed" : void 0,
          "aria-label": __props.ariaLabel,
          onClick: unref(onClickRoot)
        }, {
          default: withCtx(() => [
            createBaseVNode(
              "span",
              {
                class: normalizeClass(spanKls.value)
              },
              [
                withDirectives(createBaseVNode("input", mergeProps({
                  id: unref(inputId),
                  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(model) ? model.value = $event : null),
                  class: unref(ns).e("original"),
                  type: "checkbox",
                  indeterminate: __props.indeterminate,
                  name: __props.name,
                  tabindex: __props.tabindex,
                  disabled: unref(isDisabled)
                }, inputBindings.value, {
                  onChange: _cache[1] || (_cache[1] = //@ts-ignore
                  (...args) => unref(handleChange) && unref(handleChange)(...args)),
                  onFocus: _cache[2] || (_cache[2] = ($event) => isFocused.value = true),
                  onBlur: _cache[3] || (_cache[3] = ($event) => isFocused.value = false),
                  onClick: _cache[4] || (_cache[4] = withModifiers(() => {
                  }, ["stop"]))
                }), null, 16, _hoisted_1$1U), [
                  [vModelCheckbox, unref(model)]
                ]),
                createBaseVNode(
                  "span",
                  {
                    class: normalizeClass(unref(ns).e("inner"))
                  },
                  null,
                  2
                  /* CLASS */
                )
              ],
              2
              /* CLASS */
            ),
            unref(hasOwnLabel) ? (openBlock(), createElementBlock(
              "span",
              {
                key: 0,
                class: normalizeClass(unref(ns).e("label"))
              },
              [
                renderSlot(_ctx.$slots, "default"),
                !_ctx.$slots.default ? (openBlock(), createElementBlock(
                  Fragment,
                  { key: 0 },
                  [
                    createTextVNode(
                      toDisplayString(__props.label),
                      1
                      /* TEXT */
                    )
                  ],
                  64
                  /* STABLE_FRAGMENT */
                )) : createCommentVNode("v-if", true)
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true)
          ]),
          _: 3
          /* FORWARDED */
        }, 8, ["for", "class", "aria-controls", "aria-checked", "aria-label", "onClick"]);
      };
    }
  });
  const _hoisted_1$1T = ["name", "tabindex", "disabled"];
  var _sfc_main$2P = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElCheckboxButton"
    },
    __name: "checkbox-button",
    props: checkboxProps,
    emits: checkboxEmits,
    setup(__props) {
      const props2 = __props;
      const slots = useSlots();
      const {
        isFocused,
        isChecked,
        isDisabled,
        checkboxButtonSize,
        model,
        actualValue,
        handleChange
      } = useCheckbox(props2, slots);
      const inputBindings = computed(() => {
        var _a, _b, _c, _d;
        if (props2.trueValue || props2.falseValue || props2.trueLabel || props2.falseLabel) {
          return {
            "true-value": (_b = (_a = props2.trueValue) != null ? _a : props2.trueLabel) != null ? _b : true,
            "false-value": (_d = (_c = props2.falseValue) != null ? _c : props2.falseLabel) != null ? _d : false
          };
        }
        return {
          value: actualValue.value
        };
      });
      const checkboxGroup = inject(checkboxGroupContextKey, void 0);
      const ns = useNamespace("checkbox");
      const activeStyle = computed(() => {
        var _a, _b, _c, _d;
        const fillValue = (_b = (_a = checkboxGroup == null ? void 0 : checkboxGroup.fill) == null ? void 0 : _a.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 = computed(() => {
        return [
          ns.b("button"),
          ns.bm("button", checkboxButtonSize.value),
          ns.is("disabled", isDisabled.value),
          ns.is("checked", isChecked.value),
          ns.is("focus", isFocused.value)
        ];
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "label",
          {
            class: normalizeClass(labelKls.value)
          },
          [
            withDirectives(createBaseVNode("input", mergeProps({
              "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(model) ? model.value = $event : null),
              class: unref(ns).be("button", "original"),
              type: "checkbox",
              name: __props.name,
              tabindex: __props.tabindex,
              disabled: unref(isDisabled)
            }, inputBindings.value, {
              onChange: _cache[1] || (_cache[1] = //@ts-ignore
              (...args) => unref(handleChange) && unref(handleChange)(...args)),
              onFocus: _cache[2] || (_cache[2] = ($event) => isFocused.value = true),
              onBlur: _cache[3] || (_cache[3] = ($event) => isFocused.value = false),
              onClick: _cache[4] || (_cache[4] = withModifiers(() => {
              }, ["stop"]))
            }), null, 16, _hoisted_1$1T), [
              [vModelCheckbox, unref(model)]
            ]),
            _ctx.$slots.default || __props.label ? (openBlock(), createElementBlock(
              "span",
              {
                key: 0,
                class: normalizeClass(unref(ns).be("button", "inner")),
                style: normalizeStyle(unref(isChecked) ? activeStyle.value : void 0)
              },
              [
                renderSlot(_ctx.$slots, "default", {}, () => [
                  createTextVNode(
                    toDisplayString(__props.label),
                    1
                    /* TEXT */
                  )
                ])
              ],
              6
              /* CLASS, STYLE */
            )) : createCommentVNode("v-if", true)
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const checkboxGroupProps = buildProps({
    /**
     * @description binding value
     */
    modelValue: {
      type: definePropType(Array),
      default: () => []
    },
    /**
     * @description whether the nesting checkboxes are disabled
     */
    disabled: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description minimum number of checkbox checked
     */
    min: Number,
    /**
     * @description maximum number of checkbox checked
     */
    max: Number,
    /**
     * @description size of checkbox
     */
    size: useSizeProp,
    /**
     * @description border and background color when button is active
     */
    fill: String,
    /**
     * @description font color when button is active
     */
    textColor: String,
    /**
     * @description element tag of the checkbox group
     */
    tag: {
      type: String,
      default: "div"
    },
    /**
     * @description whether to trigger form validation
     */
    validateEvent: {
      type: Boolean,
      default: true
    },
    options: {
      type: definePropType(Array)
    },
    props: {
      type: definePropType(Object),
      default: () => checkboxDefaultProps
    },
    type: {
      type: String,
      values: ["checkbox", "button"],
      default: "checkbox"
    },
    ...useAriaProps(["ariaLabel"])
  });
  const checkboxGroupEmits = {
    [UPDATE_MODEL_EVENT]: (val) => isArray$1(val),
    change: (val) => isArray$1(val)
  };
  const checkboxDefaultProps = {
    label: "label",
    value: "value",
    disabled: "disabled"
  };
  var _sfc_main$2O = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElCheckboxGroup"
    },
    __name: "checkbox-group",
    props: checkboxGroupProps,
    emits: checkboxGroupEmits,
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const ns = useNamespace("checkbox");
      const checkboxDisabled = useFormDisabled();
      const { formItem } = useFormItem();
      const { inputId: groupId, isLabeledByFormItem } = useFormItemInputId(props2, {
        formItemContext: formItem
      });
      const changeEvent = async (value) => {
        emit2(UPDATE_MODEL_EVENT, value);
        await nextTick();
        emit2(CHANGE_EVENT, value);
      };
      const modelValue = computed({
        get() {
          return props2.modelValue;
        },
        set(val) {
          changeEvent(val);
        }
      });
      const aliasProps = computed(() => ({
        ...checkboxDefaultProps,
        ...props2.props
      }));
      const getOptionProps = (option) => {
        const { label, value, disabled } = aliasProps.value;
        const base = {
          label: option[label],
          value: option[value],
          disabled: option[disabled]
        };
        return { ...omit(option, [label, value, disabled]), ...base };
      };
      const optionComponent = computed(
        () => props2.type === "button" ? _sfc_main$2P : _sfc_main$2Q
      );
      provide(checkboxGroupContextKey, {
        ...pick(toRefs(props2), [
          "size",
          "min",
          "max",
          "validateEvent",
          "fill",
          "textColor"
        ]),
        disabled: checkboxDisabled,
        modelValue,
        changeEvent
      });
      watch(
        () => props2.modelValue,
        (newVal, oldValue) => {
          if (props2.validateEvent && !isEqual$1(newVal, oldValue)) {
            formItem == null ? void 0 : formItem.validate("change").catch((err) => debugWarn());
          }
        }
      );
      return (_ctx, _cache) => {
        var _a;
        return openBlock(), createBlock(resolveDynamicComponent(__props.tag), {
          id: unref(groupId),
          class: normalizeClass(unref(ns).b("group")),
          role: "group",
          "aria-label": !unref(isLabeledByFormItem) ? __props.ariaLabel || "checkbox-group" : void 0,
          "aria-labelledby": unref(isLabeledByFormItem) ? (_a = unref(formItem)) == null ? void 0 : _a.labelId : void 0
        }, {
          default: withCtx(() => [
            renderSlot(_ctx.$slots, "default", {}, () => [
              (openBlock(true), createElementBlock(
                Fragment,
                null,
                renderList(__props.options, (item, index) => {
                  return openBlock(), createBlock(
                    resolveDynamicComponent(optionComponent.value),
                    mergeProps({ key: index }, { ref_for: true }, getOptionProps(item)),
                    null,
                    16
                    /* FULL_PROPS */
                  );
                }),
                128
                /* KEYED_FRAGMENT */
              ))
            ])
          ]),
          _: 3
          /* FORWARDED */
        }, 8, ["id", "class", "aria-label", "aria-labelledby"]);
      };
    }
  });
  const ElCheckbox = withInstall(_sfc_main$2Q, {
    CheckboxButton: _sfc_main$2P,
    CheckboxGroup: _sfc_main$2O
  });
  const ElCheckboxButton = withNoopInstall(_sfc_main$2P);
  const ElCheckboxGroup = withNoopInstall(_sfc_main$2O);
  const radioPropsBase = buildProps({
    /**
     * @description binding value
     */
    modelValue: {
      type: [String, Number, Boolean],
      default: void 0
    },
    /**
     * @description size of the Radio
     */
    size: useSizeProp,
    /**
     * @description whether Radio is disabled
     */
    disabled: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description the label of Radio
     */
    label: {
      type: [String, Number, Boolean],
      default: void 0
    },
    /**
     * @description the value of Radio
     */
    value: {
      type: [String, Number, Boolean],
      default: void 0
    },
    /**
     * @description native `name` attribute
     */
    name: {
      type: String,
      default: void 0
    }
  });
  const radioProps = buildProps({
    ...radioPropsBase,
    /**
     * @description whether to add a border around Radio
     */
    border: Boolean
  });
  const radioEmits = {
    [UPDATE_MODEL_EVENT]: (val) => isString(val) || isNumber(val) || isBoolean(val),
    [CHANGE_EVENT]: (val) => isString(val) || isNumber(val) || isBoolean(val)
  };
  const radioGroupKey = /* @__PURE__ */ Symbol("radioGroupKey");
  const useRadio = (props2, emit2) => {
    const radioRef = ref();
    const radioGroup = inject(radioGroupKey, void 0);
    const isGroup = computed(() => !!radioGroup);
    const actualValue = computed(() => {
      if (!isPropAbsent(props2.value)) {
        return props2.value;
      }
      return props2.label;
    });
    const modelValue = computed({
      get() {
        return isGroup.value ? radioGroup.modelValue : props2.modelValue;
      },
      set(val) {
        if (isGroup.value) {
          radioGroup.changeEvent(val);
        } else {
          emit2 && emit2(UPDATE_MODEL_EVENT, val);
        }
        radioRef.value.checked = props2.modelValue === actualValue.value;
      }
    });
    const size = useFormSize(computed(() => radioGroup == null ? void 0 : radioGroup.size));
    const disabled = useFormDisabled(computed(() => radioGroup == null ? void 0 : radioGroup.disabled));
    const focus = ref(false);
    const tabIndex = computed(() => {
      return disabled.value || isGroup.value && modelValue.value !== actualValue.value ? -1 : 0;
    });
    useDeprecated(
      {
        from: "label act as value",
        replacement: "value",
        version: "3.0.0",
        scope: "el-radio",
        ref: "https://element-plus.org/en-US/component/radio.html"
      },
      computed(() => isGroup.value && isPropAbsent(props2.value))
    );
    return {
      radioRef,
      isGroup,
      radioGroup,
      focus,
      size,
      disabled,
      tabIndex,
      modelValue,
      actualValue
    };
  };
  const _hoisted_1$1S = ["value", "name", "disabled", "checked"];
  var _sfc_main$2N = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElRadio"
    },
    __name: "radio",
    props: radioProps,
    emits: radioEmits,
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const ns = useNamespace("radio");
      const { radioRef, radioGroup, focus, size, disabled, modelValue, actualValue } = useRadio(props2, emit2);
      function handleChange() {
        nextTick(() => emit2(CHANGE_EVENT, modelValue.value));
      }
      return (_ctx, _cache) => {
        var _a;
        return openBlock(), createElementBlock(
          "label",
          {
            class: normalizeClass([
              unref(ns).b(),
              unref(ns).is("disabled", unref(disabled)),
              unref(ns).is("focus", unref(focus)),
              unref(ns).is("bordered", __props.border),
              unref(ns).is("checked", unref(modelValue) === unref(actualValue)),
              unref(ns).m(unref(size))
            ])
          },
          [
            createBaseVNode(
              "span",
              {
                class: normalizeClass([
                  unref(ns).e("input"),
                  unref(ns).is("disabled", unref(disabled)),
                  unref(ns).is("checked", unref(modelValue) === unref(actualValue))
                ])
              },
              [
                withDirectives(createBaseVNode("input", {
                  ref_key: "radioRef",
                  ref: radioRef,
                  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(modelValue) ? modelValue.value = $event : null),
                  class: normalizeClass(unref(ns).e("original")),
                  value: unref(actualValue),
                  name: __props.name || ((_a = unref(radioGroup)) == null ? void 0 : _a.name),
                  disabled: unref(disabled),
                  checked: unref(modelValue) === unref(actualValue),
                  type: "radio",
                  onFocus: _cache[1] || (_cache[1] = ($event) => focus.value = true),
                  onBlur: _cache[2] || (_cache[2] = ($event) => focus.value = false),
                  onChange: handleChange,
                  onClick: _cache[3] || (_cache[3] = withModifiers(() => {
                  }, ["stop"]))
                }, null, 42, _hoisted_1$1S), [
                  [vModelRadio, unref(modelValue)]
                ]),
                createBaseVNode(
                  "span",
                  {
                    class: normalizeClass(unref(ns).e("inner"))
                  },
                  null,
                  2
                  /* CLASS */
                )
              ],
              2
              /* CLASS */
            ),
            createBaseVNode(
              "span",
              {
                class: normalizeClass(unref(ns).e("label")),
                onKeydown: _cache[4] || (_cache[4] = withModifiers(() => {
                }, ["stop"]))
              },
              [
                renderSlot(_ctx.$slots, "default", {}, () => [
                  createTextVNode(
                    toDisplayString(__props.label),
                    1
                    /* TEXT */
                  )
                ])
              ],
              34
              /* CLASS, NEED_HYDRATION */
            )
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const radioButtonProps = buildProps({
    ...radioPropsBase
  });
  const _hoisted_1$1R = ["value", "name", "disabled"];
  var _sfc_main$2M = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElRadioButton"
    },
    __name: "radio-button",
    props: radioButtonProps,
    setup(__props) {
      const props2 = __props;
      const ns = useNamespace("radio");
      const { radioRef, focus, size, disabled, modelValue, radioGroup, actualValue } = useRadio(props2);
      const activeStyle = computed(() => {
        return {
          backgroundColor: (radioGroup == null ? void 0 : radioGroup.fill) || "",
          borderColor: (radioGroup == null ? void 0 : radioGroup.fill) || "",
          boxShadow: (radioGroup == null ? void 0 : radioGroup.fill) ? `-1px 0 0 0 ${radioGroup.fill}` : "",
          color: (radioGroup == null ? void 0 : radioGroup.textColor) || ""
        };
      });
      return (_ctx, _cache) => {
        var _a;
        return openBlock(), createElementBlock(
          "label",
          {
            class: normalizeClass([
              unref(ns).b("button"),
              unref(ns).is("active", unref(modelValue) === unref(actualValue)),
              unref(ns).is("disabled", unref(disabled)),
              unref(ns).is("focus", unref(focus)),
              unref(ns).bm("button", unref(size))
            ])
          },
          [
            withDirectives(createBaseVNode("input", {
              ref_key: "radioRef",
              ref: radioRef,
              "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(modelValue) ? modelValue.value = $event : null),
              class: normalizeClass(unref(ns).be("button", "original-radio")),
              value: unref(actualValue),
              type: "radio",
              name: __props.name || ((_a = unref(radioGroup)) == null ? void 0 : _a.name),
              disabled: unref(disabled),
              onFocus: _cache[1] || (_cache[1] = ($event) => focus.value = true),
              onBlur: _cache[2] || (_cache[2] = ($event) => focus.value = false),
              onClick: _cache[3] || (_cache[3] = withModifiers(() => {
              }, ["stop"]))
            }, null, 42, _hoisted_1$1R), [
              [vModelRadio, unref(modelValue)]
            ]),
            createBaseVNode(
              "span",
              {
                class: normalizeClass(unref(ns).be("button", "inner")),
                style: normalizeStyle(unref(modelValue) === unref(actualValue) ? activeStyle.value : {}),
                onKeydown: _cache[4] || (_cache[4] = withModifiers(() => {
                }, ["stop"]))
              },
              [
                renderSlot(_ctx.$slots, "default", {}, () => [
                  createTextVNode(
                    toDisplayString(__props.label),
                    1
                    /* TEXT */
                  )
                ])
              ],
              38
              /* CLASS, STYLE, NEED_HYDRATION */
            )
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const radioDefaultProps = {
    label: "label",
    value: "value",
    disabled: "disabled"
  };
  const radioGroupProps = buildProps({
    /**
     * @description native `id` attribute
     */
    id: {
      type: String,
      default: void 0
    },
    /**
     * @description the size of radio buttons or bordered radios
     */
    size: useSizeProp,
    /**
     * @description whether the nesting radios are disabled
     */
    disabled: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description binding value
     */
    modelValue: {
      type: [String, Number, Boolean],
      default: void 0
    },
    /**
     * @description border and background color when button is active
     */
    fill: {
      type: String,
      default: ""
    },
    /**
     * @description font color when button is active
     */
    textColor: {
      type: String,
      default: ""
    },
    /**
     * @description native `name` attribute
     */
    name: {
      type: String,
      default: void 0
    },
    /**
     * @description whether to trigger form validation
     */
    validateEvent: {
      type: Boolean,
      default: true
    },
    options: {
      type: definePropType(Array)
    },
    props: {
      type: definePropType(Object),
      default: () => radioDefaultProps
    },
    type: {
      type: String,
      values: ["radio", "button"],
      default: "radio"
    },
    ...useAriaProps(["ariaLabel"])
  });
  const radioGroupEmits = radioEmits;
  const _hoisted_1$1Q = ["id", "aria-label", "aria-labelledby"];
  var _sfc_main$2L = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElRadioGroup"
    },
    __name: "radio-group",
    props: radioGroupProps,
    emits: radioGroupEmits,
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const ns = useNamespace("radio");
      const radioId = useId();
      const radioGroupRef = ref();
      const { formItem } = useFormItem();
      const { inputId: groupId, isLabeledByFormItem } = useFormItemInputId(props2, {
        formItemContext: formItem
      });
      const changeEvent = (value) => {
        emit2(UPDATE_MODEL_EVENT, value);
        nextTick(() => emit2(CHANGE_EVENT, value));
      };
      onMounted(() => {
        const radios = radioGroupRef.value.querySelectorAll("[type=radio]");
        const firstLabel = radios[0];
        if (!Array.from(radios).some((radio) => radio.checked) && firstLabel) {
          firstLabel.tabIndex = 0;
        }
      });
      const name = computed(() => {
        return props2.name || radioId.value;
      });
      const aliasProps = computed(() => ({
        ...radioDefaultProps,
        ...props2.props
      }));
      const getOptionProps = (option) => {
        const { label, value, disabled } = aliasProps.value;
        const base = {
          label: option[label],
          value: option[value],
          disabled: option[disabled]
        };
        return { ...omit(option, [label, value, disabled]), ...base };
      };
      const optionComponent = computed(
        () => props2.type === "button" ? _sfc_main$2M : _sfc_main$2N
      );
      provide(
        radioGroupKey,
        reactive({
          ...toRefs(props2),
          changeEvent,
          name
        })
      );
      watch(
        () => props2.modelValue,
        (newVal, oldValue) => {
          if (props2.validateEvent && !isEqual$1(newVal, oldValue)) {
            formItem == null ? void 0 : formItem.validate("change").catch((err) => debugWarn());
          }
        }
      );
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock("div", {
          id: unref(groupId),
          ref_key: "radioGroupRef",
          ref: radioGroupRef,
          class: normalizeClass(unref(ns).b("group")),
          role: "radiogroup",
          "aria-label": !unref(isLabeledByFormItem) ? __props.ariaLabel || "radio-group" : void 0,
          "aria-labelledby": unref(isLabeledByFormItem) ? unref(formItem).labelId : void 0
        }, [
          renderSlot(_ctx.$slots, "default", {}, () => [
            (openBlock(true), createElementBlock(
              Fragment,
              null,
              renderList(__props.options, (item, index) => {
                return openBlock(), createBlock(
                  resolveDynamicComponent(optionComponent.value),
                  mergeProps({ key: index }, { ref_for: true }, getOptionProps(item)),
                  null,
                  16
                  /* FULL_PROPS */
                );
              }),
              128
              /* KEYED_FRAGMENT */
            ))
          ])
        ], 10, _hoisted_1$1Q);
      };
    }
  });
  const ElRadio = withInstall(_sfc_main$2N, {
    RadioButton: _sfc_main$2M,
    RadioGroup: _sfc_main$2L
  });
  const ElRadioGroup = withNoopInstall(_sfc_main$2L);
  const ElRadioButton = withNoopInstall(_sfc_main$2M);
  const CASCADER_PANEL_INJECTION_KEY = /* @__PURE__ */ Symbol();
  function isVNodeEmpty(vnodes) {
    return !!(isArray$1(vnodes) ? vnodes.every(({
      type
    }) => type === Comment) : (vnodes == null ? void 0 : vnodes.type) === Comment);
  }
  var NodeContent = /* @__PURE__ */ defineComponent({
    name: "NodeContent",
    props: {
      node: {
        type: Object,
        required: true
      }
    },
    setup(props2) {
      const ns = useNamespace("cascader-node");
      const {
        renderLabelFn
      } = inject(CASCADER_PANEL_INJECTION_KEY);
      const {
        node
      } = props2;
      const {
        data,
        label: nodeLabel
      } = node;
      const label = () => {
        const renderLabel = renderLabelFn == null ? void 0 : renderLabelFn({
          node,
          data
        });
        return isVNodeEmpty(renderLabel) ? nodeLabel : renderLabel != null ? renderLabel : nodeLabel;
      };
      return () => createVNode("span", {
        "class": ns.e("label")
      }, [label()]);
    }
  });
  const _hoisted_1$1P = ["id", "aria-haspopup", "aria-owns", "aria-expanded", "tabindex"];
  var _sfc_main$2K = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElCascaderNode"
    },
    __name: "node",
    props: {
      node: {
        type: Object,
        required: true
      },
      menuId: String
    },
    emits: ["expand"],
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const panel = inject(CASCADER_PANEL_INJECTION_KEY);
      const ns = useNamespace("cascader-node");
      const isHoverMenu = computed(() => panel.isHoverMenu);
      const multiple = computed(() => panel.config.multiple);
      const checkStrictly = computed(() => panel.config.checkStrictly);
      const showPrefix = computed(() => panel.config.showPrefix);
      const checkedNodeId = computed(() => {
        var _a;
        return (_a = panel.checkedNodes[0]) == null ? void 0 : _a.uid;
      });
      const isDisabled = computed(() => props2.node.isDisabled);
      const isLeaf2 = computed(() => props2.node.isLeaf);
      const expandable = computed(
        () => checkStrictly.value && !isLeaf2.value || !isDisabled.value
      );
      const inExpandingPath = computed(() => isInPath(panel.expandingNode));
      const inCheckedPath = computed(
        () => checkStrictly.value && panel.checkedNodes.some(isInPath)
      );
      const isInPath = (node) => {
        var _a;
        const { level, uid: uid2 } = props2.node;
        return ((_a = node == null ? void 0 : node.pathNodes[level - 1]) == null ? void 0 : _a.uid) === uid2;
      };
      const doExpand = () => {
        if (inExpandingPath.value) return;
        panel.expandNode(props2.node);
      };
      const doCheck = (checked) => {
        const { node } = props2;
        if (checked === node.checked) return;
        panel.handleCheckChange(node, checked);
      };
      const doLoad = () => {
        panel.lazyLoad(props2.node, () => {
          if (!isLeaf2.value) doExpand();
        });
      };
      const handleHoverExpand = (e) => {
        if (!isHoverMenu.value) return;
        handleExpand();
        !isLeaf2.value && emit2("expand", e);
      };
      const handleExpand = () => {
        const { node } = props2;
        if (!expandable.value || node.loading) return;
        node.loaded ? doExpand() : doLoad();
      };
      const handleClick = () => {
        if (isLeaf2.value && !isDisabled.value && !checkStrictly.value && !multiple.value) {
          handleCheck(true);
        } else if ((panel.config.checkOnClickNode && (multiple.value || checkStrictly.value) || isLeaf2.value && panel.config.checkOnClickLeaf) && !isDisabled.value) {
          handleSelectCheck(!props2.node.checked);
        } else if (!isHoverMenu.value) {
          handleExpand();
        }
      };
      const handleSelectCheck = (checked) => {
        if (checkStrictly.value) {
          doCheck(checked);
          if (props2.node.loaded) {
            doExpand();
          }
        } else {
          handleCheck(checked);
        }
      };
      const handleCheck = (checked) => {
        if (!props2.node.loaded) {
          doLoad();
        } else {
          doCheck(checked);
          !checkStrictly.value && doExpand();
        }
      };
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock("li", {
          id: `${__props.menuId}-${__props.node.uid}`,
          role: "menuitem",
          "aria-haspopup": !isLeaf2.value,
          "aria-owns": isLeaf2.value ? void 0 : __props.menuId,
          "aria-expanded": inExpandingPath.value,
          tabindex: expandable.value ? -1 : void 0,
          class: normalizeClass([
            unref(ns).b(),
            unref(ns).is("selectable", checkStrictly.value),
            unref(ns).is("active", __props.node.checked),
            unref(ns).is("disabled", !expandable.value),
            inExpandingPath.value && "in-active-path",
            inCheckedPath.value && "in-checked-path"
          ]),
          onMouseenter: handleHoverExpand,
          onFocus: handleHoverExpand,
          onClick: handleClick
        }, [
          createCommentVNode(" prefix "),
          multiple.value && showPrefix.value ? (openBlock(), createBlock(unref(ElCheckbox), {
            key: 0,
            "model-value": __props.node.checked,
            indeterminate: __props.node.indeterminate,
            disabled: isDisabled.value,
            onClick: _cache[0] || (_cache[0] = withModifiers(() => {
            }, ["stop"])),
            "onUpdate:modelValue": handleSelectCheck
          }, null, 8, ["model-value", "indeterminate", "disabled"])) : checkStrictly.value && showPrefix.value ? (openBlock(), createBlock(unref(ElRadio), {
            key: 1,
            "model-value": checkedNodeId.value,
            label: __props.node.uid,
            disabled: isDisabled.value,
            "onUpdate:modelValue": handleSelectCheck,
            onClick: _cache[1] || (_cache[1] = withModifiers(() => {
            }, ["stop"]))
          }, {
            default: withCtx(() => [
              createCommentVNode("\n        Add an empty element to avoid render label,\n        do not use empty fragment here for https://github.com/vuejs/vue-next/pull/2485\n      "),
              _cache[2] || (_cache[2] = createBaseVNode(
                "span",
                null,
                null,
                -1
                /* CACHED */
              ))
            ]),
            _: 1
            /* STABLE */
          }, 8, ["model-value", "label", "disabled"])) : isLeaf2.value && __props.node.checked ? (openBlock(), createBlock(unref(ElIcon), {
            key: 2,
            class: normalizeClass(unref(ns).e("prefix"))
          }, {
            default: withCtx(() => [
              createVNode(unref(check_default))
            ]),
            _: 1
            /* STABLE */
          }, 8, ["class"])) : createCommentVNode("v-if", true),
          createCommentVNode(" content "),
          createVNode(unref(NodeContent), { node: __props.node }, null, 8, ["node"]),
          createCommentVNode(" postfix "),
          !isLeaf2.value ? (openBlock(), createElementBlock(
            Fragment,
            { key: 3 },
            [
              __props.node.loading ? (openBlock(), createBlock(unref(ElIcon), {
                key: 0,
                class: normalizeClass([unref(ns).is("loading"), unref(ns).e("postfix")])
              }, {
                default: withCtx(() => [
                  createVNode(unref(loading_default))
                ]),
                _: 1
                /* STABLE */
              }, 8, ["class"])) : (openBlock(), createBlock(unref(ElIcon), {
                key: 1,
                class: normalizeClass(["arrow-right", unref(ns).e("postfix")])
              }, {
                default: withCtx(() => [
                  createVNode(unref(arrow_right_default))
                ]),
                _: 1
                /* STABLE */
              }, 8, ["class"]))
            ],
            64
            /* STABLE_FRAGMENT */
          )) : createCommentVNode("v-if", true)
        ], 42, _hoisted_1$1P);
      };
    }
  });
  var _sfc_main$2J = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElCascaderMenu"
    },
    __name: "menu",
    props: {
      nodes: {
        type: Array,
        required: true
      },
      index: {
        type: Number,
        required: true
      }
    },
    setup(__props) {
      const props2 = __props;
      const instance = getCurrentInstance();
      const ns = useNamespace("cascader-menu");
      const { t } = useLocale();
      const id = useId();
      let activeNode;
      let hoverTimer;
      const panel = inject(CASCADER_PANEL_INJECTION_KEY);
      const hoverZone = ref();
      const isEmpty2 = computed(() => !props2.nodes.length);
      const isLoading2 = computed(() => !panel.initialLoaded);
      const menuId = computed(() => `${id.value}-${props2.index}`);
      const handleExpand = (e) => {
        activeNode = e.target;
      };
      const handleMouseMove = (e) => {
        var _a;
        if (!panel.isHoverMenu || !activeNode || !hoverZone.value) return;
        if (activeNode.contains(e.target)) {
          clearHoverTimer();
          const el = instance.vnode.el;
          const { left } = el.getBoundingClientRect();
          const { offsetWidth, offsetHeight } = el;
          const startX = e.clientX - left;
          const top = activeNode.offsetTop;
          const bottom = top + activeNode.offsetHeight;
          const scrollTop = ((_a = el.querySelector(`.${ns.e("wrap")}`)) == null ? void 0 : _a.scrollTop) || 0;
          hoverZone.value.innerHTML = `
          <path style="pointer-events: auto;" fill="transparent" d="M${startX} ${top} L${offsetWidth} ${scrollTop} V${top} Z" />
          <path style="pointer-events: auto;" fill="transparent" d="M${startX} ${bottom} L${offsetWidth} ${offsetHeight + scrollTop} V${bottom} Z" />
        `;
        } else if (!hoverTimer) {
          hoverTimer = window.setTimeout(clearHoverZone, panel.config.hoverThreshold);
        }
      };
      const clearHoverTimer = () => {
        if (!hoverTimer) return;
        clearTimeout(hoverTimer);
        hoverTimer = void 0;
      };
      const clearHoverZone = () => {
        if (!hoverZone.value) return;
        hoverZone.value.innerHTML = "";
        clearHoverTimer();
      };
      return (_ctx, _cache) => {
        return openBlock(), createBlock(unref(ElScrollbar), {
          key: menuId.value,
          tag: "ul",
          role: "menu",
          class: normalizeClass(unref(ns).b()),
          "wrap-class": unref(ns).e("wrap"),
          "view-class": [unref(ns).e("list"), unref(ns).is("empty", isEmpty2.value)],
          onMousemove: handleMouseMove,
          onMouseleave: clearHoverZone
        }, {
          default: withCtx(() => {
            var _a;
            return [
              (openBlock(true), createElementBlock(
                Fragment,
                null,
                renderList(__props.nodes, (node) => {
                  return openBlock(), createBlock(_sfc_main$2K, {
                    key: node.uid,
                    node,
                    "menu-id": menuId.value,
                    onExpand: handleExpand
                  }, null, 8, ["node", "menu-id"]);
                }),
                128
                /* KEYED_FRAGMENT */
              )),
              isLoading2.value ? (openBlock(), createElementBlock(
                "div",
                {
                  key: 0,
                  class: normalizeClass(unref(ns).e("empty-text"))
                },
                [
                  createVNode(unref(ElIcon), {
                    size: "14",
                    class: normalizeClass(unref(ns).is("loading"))
                  }, {
                    default: withCtx(() => [
                      createVNode(unref(loading_default))
                    ]),
                    _: 1
                    /* STABLE */
                  }, 8, ["class"]),
                  createTextVNode(
                    " " + toDisplayString(unref(t)("el.cascader.loading")),
                    1
                    /* TEXT */
                  )
                ],
                2
                /* CLASS */
              )) : isEmpty2.value ? (openBlock(), createElementBlock(
                "div",
                {
                  key: 1,
                  class: normalizeClass(unref(ns).e("empty-text"))
                },
                [
                  renderSlot(_ctx.$slots, "empty", {}, () => [
                    createTextVNode(
                      toDisplayString(unref(t)("el.cascader.noData")),
                      1
                      /* TEXT */
                    )
                  ])
                ],
                2
                /* CLASS */
              )) : ((_a = unref(panel)) == null ? void 0 : _a.isHoverMenu) ? (openBlock(), createElementBlock(
                Fragment,
                { key: 2 },
                [
                  createCommentVNode(" eslint-disable vue/html-self-closing "),
                  (openBlock(), createElementBlock(
                    "svg",
                    {
                      ref_key: "hoverZone",
                      ref: hoverZone,
                      class: normalizeClass(unref(ns).e("hover-zone"))
                    },
                    null,
                    2
                    /* CLASS */
                  ))
                ],
                2112
                /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
              )) : createCommentVNode("v-if", true),
              createCommentVNode(" eslint-enable vue/html-self-closing ")
            ];
          }),
          _: 3
          /* FORWARDED */
        }, 8, ["class", "wrap-class", "view-class"]);
      };
    }
  });
  var __defProp$8 = Object.defineProperty;
  var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  var __publicField$8 = (obj, key, value) => __defNormalProp$8(obj, typeof key !== "symbol" ? key + "" : key, value);
  let uid = 0;
  const calculatePathNodes = (node) => {
    const nodes = [node];
    let { parent: parent2 } = node;
    while (parent2) {
      nodes.unshift(parent2);
      parent2 = parent2.parent;
    }
    return nodes;
  };
  let Node$2 = class Node2 {
    constructor(data, config, parent2, root2 = false) {
      this.data = data;
      this.config = config;
      this.parent = parent2;
      this.root = root2;
      __publicField$8(this, "uid", uid++);
      __publicField$8(this, "level");
      __publicField$8(this, "value");
      __publicField$8(this, "label");
      __publicField$8(this, "pathNodes");
      __publicField$8(this, "pathValues");
      __publicField$8(this, "pathLabels");
      __publicField$8(this, "childrenData");
      __publicField$8(this, "children");
      __publicField$8(this, "text");
      __publicField$8(this, "loaded");
      __publicField$8(this, "checked", false);
      __publicField$8(this, "indeterminate", false);
      __publicField$8(this, "loading", false);
      const { value: valueKey, label: labelKey, children: childrenKey } = config;
      const childrenData = data[childrenKey];
      const pathNodes = calculatePathNodes(this);
      this.level = root2 ? 0 : parent2 ? parent2.level + 1 : 1;
      this.value = data[valueKey];
      this.label = data[labelKey];
      this.pathNodes = pathNodes;
      this.pathValues = pathNodes.map((node) => node.value);
      this.pathLabels = pathNodes.map((node) => node.label);
      this.childrenData = childrenData;
      this.children = (childrenData || []).map(
        (child) => new Node2(child, config, this)
      );
      this.loaded = !config.lazy || this.isLeaf || !isEmpty(childrenData);
      this.text = "";
    }
    get isDisabled() {
      const { data, parent: parent2, config } = this;
      const { disabled, checkStrictly } = config;
      const isDisabled = isFunction$1(disabled) ? disabled(data, this) : !!data[disabled];
      return isDisabled || !checkStrictly && !!(parent2 == null ? void 0 : parent2.isDisabled);
    }
    get isLeaf() {
      const { data, config, childrenData, loaded } = this;
      const { lazy, leaf } = config;
      const isLeaf2 = isFunction$1(leaf) ? leaf(data, this) : data[leaf];
      return isUndefined(isLeaf2) ? lazy && !loaded ? false : !(isArray$1(childrenData) && childrenData.length) : !!isLeaf2;
    }
    get valueByOption() {
      return this.config.emitPath ? this.pathValues : this.value;
    }
    appendChild(childData) {
      const { childrenData, children } = this;
      const node = new Node2(childData, this.config, this);
      if (isArray$1(childrenData)) {
        childrenData.push(childData);
      } else {
        this.childrenData = [childData];
      }
      children.push(node);
      return node;
    }
    calcText(allLevels, separator) {
      const text = allLevels ? this.pathLabels.join(separator) : this.label;
      this.text = text;
      return text;
    }
    broadcast(checked) {
      this.children.forEach((child) => {
        var _a;
        if (child) {
          child.broadcast(checked);
          (_a = child.onParentCheck) == null ? void 0 : _a.call(child, checked);
        }
      });
    }
    emit() {
      var _a;
      const { parent: parent2 } = this;
      if (parent2) {
        (_a = parent2.onChildCheck) == null ? void 0 : _a.call(parent2);
        parent2.emit();
      }
    }
    onParentCheck(checked) {
      if (!this.isDisabled) {
        this.setCheckState(checked);
      }
    }
    onChildCheck() {
      const { children } = this;
      const validChildren = children.filter((child) => !child.isDisabled);
      const checked = validChildren.length ? validChildren.every((child) => child.checked) : false;
      this.setCheckState(checked);
    }
    setCheckState(checked) {
      const totalNum = this.children.length;
      const checkedNum = this.children.reduce((c2, p2) => {
        const num = p2.checked ? 1 : p2.indeterminate ? 0.5 : 0;
        return c2 + num;
      }, 0);
      this.checked = this.loaded && this.children.filter((child) => !child.isDisabled).every((child) => child.loaded && child.checked) && checked;
      this.indeterminate = this.loaded && checkedNum !== totalNum && checkedNum > 0;
    }
    doCheck(checked) {
      if (this.checked === checked) return;
      const { checkStrictly, multiple } = this.config;
      if (checkStrictly || !multiple) {
        this.checked = checked;
      } else {
        this.broadcast(checked);
        this.setCheckState(checked);
        this.emit();
      }
    }
  };
  var __defProp$7 = Object.defineProperty;
  var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  var __publicField$7 = (obj, key, value) => __defNormalProp$7(obj, typeof key !== "symbol" ? key + "" : key, value);
  const flatNodes = (nodes, leafOnly) => {
    return nodes.reduce((res, node) => {
      if (node.isLeaf) {
        res.push(node);
      } else {
        !leafOnly && res.push(node);
        res = res.concat(flatNodes(node.children, leafOnly));
      }
      return res;
    }, []);
  };
  class Store {
    constructor(data, config) {
      this.config = config;
      __publicField$7(this, "nodes");
      __publicField$7(this, "allNodes");
      __publicField$7(this, "leafNodes");
      const nodes = (data || []).map(
        (nodeData) => new Node$2(nodeData, this.config)
      );
      this.nodes = nodes;
      this.allNodes = flatNodes(nodes, false);
      this.leafNodes = flatNodes(nodes, true);
    }
    getNodes() {
      return this.nodes;
    }
    getFlattedNodes(leafOnly) {
      return leafOnly ? this.leafNodes : this.allNodes;
    }
    appendNode(nodeData, parentNode) {
      const node = parentNode ? parentNode.appendChild(nodeData) : new Node$2(nodeData, this.config);
      if (!parentNode) this.nodes.push(node);
      this.appendAllNodesAndLeafNodes(node);
    }
    appendNodes(nodeDataList, parentNode) {
      if (nodeDataList.length > 0) {
        nodeDataList.forEach((nodeData) => this.appendNode(nodeData, parentNode));
      } else {
        parentNode && parentNode.isLeaf && this.leafNodes.push(parentNode);
      }
    }
    appendAllNodesAndLeafNodes(node) {
      this.allNodes.push(node);
      node.isLeaf && this.leafNodes.push(node);
      if (node.children) {
        node.children.forEach((subNode) => {
          this.appendAllNodesAndLeafNodes(subNode);
        });
      }
    }
    // when checkStrictly, leaf node first
    getNodeByValue(value, leafOnly = false) {
      if (isPropAbsent(value)) return null;
      const node = this.getFlattedNodes(leafOnly).find(
        (node2) => isEqual$1(node2.value, value) || isEqual$1(node2.pathValues, value)
      );
      return node || null;
    }
    getSameNode(node) {
      if (!node) return null;
      const node_ = this.getFlattedNodes(false).find(
        ({ value, level }) => isEqual$1(node.value, value) && node.level === level
      );
      return node_ || null;
    }
  }
  const getMenuIndex = (el) => {
    if (!el) return 0;
    const pieces = el.id.split("-");
    return Number(pieces[pieces.length - 2]);
  };
  const checkNode = (el) => {
    if (!el) return;
    const input = el.querySelector("input");
    if (input) {
      input.click();
    } else if (isLeaf(el)) {
      el.click();
    }
  };
  const sortByOriginalOrder = (oldNodes, newNodes) => {
    const newNodesCopy = newNodes.slice(0);
    const newIds = newNodesCopy.map((node) => node.uid);
    const res = oldNodes.reduce((acc, item) => {
      const index = newIds.indexOf(item.uid);
      if (index > -1) {
        acc.push(item);
        newNodesCopy.splice(index, 1);
        newIds.splice(index, 1);
      }
      return acc;
    }, []);
    res.push(...newNodesCopy);
    return res;
  };
  var _sfc_main$2I = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElCascaderPanel"
    },
    __name: "index",
    props: cascaderPanelProps,
    emits: cascaderPanelEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      let manualChecked = false;
      const ns = useNamespace("cascader");
      const config = useCascaderConfig(props2);
      const slots = useSlots();
      let store;
      const initialLoaded = ref(true);
      const initialLoadedOnce = ref(false);
      const menuList = ref([]);
      const checkedValue = ref();
      const menus = ref([]);
      const expandingNode = ref();
      const checkedNodes = ref([]);
      const isHoverMenu = computed(() => config.value.expandTrigger === "hover");
      const renderLabelFn = computed(() => props2.renderLabel || slots.default);
      const initStore = () => {
        const { options } = props2;
        const cfg = config.value;
        manualChecked = false;
        store = new Store(options, cfg);
        menus.value = [store.getNodes()];
        if (cfg.lazy && isEmpty(props2.options)) {
          initialLoaded.value = false;
          lazyLoad(void 0, (list) => {
            if (list) {
              store = new Store(list, cfg);
              menus.value = [store.getNodes()];
            }
            initialLoaded.value = true;
            syncCheckedValue(false, true);
          });
        } else {
          syncCheckedValue(false, true);
        }
      };
      const lazyLoad = (node, cb) => {
        const cfg = config.value;
        node = node || new Node$2({}, cfg, void 0, true);
        node.loading = true;
        const resolve2 = (dataList) => {
          const _node = node;
          const parent2 = _node.root ? null : _node;
          _node.loading = false;
          _node.loaded = true;
          _node.childrenData = _node.childrenData || [];
          dataList && (store == null ? void 0 : store.appendNodes(dataList, parent2));
          dataList && (cb == null ? void 0 : cb(dataList));
          if (node.level === 0) {
            initialLoadedOnce.value = true;
          }
        };
        const reject = () => {
          node.loading = false;
          node.loaded = false;
          if (node.level === 0) {
            initialLoaded.value = true;
          }
        };
        cfg.lazyLoad(node, resolve2, reject);
      };
      const expandNode = (node, silent) => {
        var _a;
        const { level } = node;
        const newMenus = menus.value.slice(0, level);
        let newExpandingNode;
        if (node.isLeaf) {
          newExpandingNode = node.pathNodes[level - 2];
        } else {
          newExpandingNode = node;
          newMenus.push(node.children);
        }
        if (((_a = expandingNode.value) == null ? void 0 : _a.uid) !== (newExpandingNode == null ? void 0 : newExpandingNode.uid)) {
          expandingNode.value = node;
          menus.value = newMenus;
          !silent && emit2("expand-change", (node == null ? void 0 : node.pathValues) || []);
        }
      };
      const handleCheckChange = (node, checked, emitClose = true) => {
        const { checkStrictly, multiple } = config.value;
        const oldNode = checkedNodes.value[0];
        manualChecked = true;
        !multiple && (oldNode == null ? void 0 : oldNode.doCheck(false));
        node.doCheck(checked);
        calculateCheckedValue();
        emitClose && !multiple && !checkStrictly && emit2("close");
        !emitClose && !multiple && expandParentNode(node);
      };
      const expandParentNode = (node) => {
        if (!node) return;
        node = node.parent;
        expandParentNode(node);
        node && expandNode(node);
      };
      const getFlattedNodes = (leafOnly) => store == null ? void 0 : store.getFlattedNodes(leafOnly);
      const getCheckedNodes = (leafOnly) => {
        var _a;
        return (_a = getFlattedNodes(leafOnly)) == null ? void 0 : _a.filter(({ checked }) => checked !== false);
      };
      const clearCheckedNodes = () => {
        checkedNodes.value.forEach((node) => node.doCheck(false));
        calculateCheckedValue();
        menus.value = menus.value.slice(0, 1);
        expandingNode.value = void 0;
        emit2("expand-change", []);
      };
      const calculateCheckedValue = () => {
        var _a;
        const { checkStrictly, multiple } = config.value;
        const oldNodes = checkedNodes.value;
        const newNodes = getCheckedNodes(!checkStrictly);
        const nodes = sortByOriginalOrder(oldNodes, newNodes);
        const values = nodes.map((node) => node.valueByOption);
        checkedNodes.value = nodes;
        checkedValue.value = multiple ? values : (_a = values[0]) != null ? _a : null;
      };
      const syncCheckedValue = (loaded = false, forced = false) => {
        const { modelValue } = props2;
        const { lazy, multiple, checkStrictly } = config.value;
        const leafOnly = !checkStrictly;
        if (!initialLoaded.value || manualChecked || !forced && isEqual$1(modelValue, checkedValue.value))
          return;
        if (lazy && !loaded) {
          const values = unique(
            flattenDeep(castArray(modelValue))
          );
          const nodes = values.map((val) => store == null ? void 0 : store.getNodeByValue(val)).filter((node) => !!node && !node.loaded && !node.loading);
          if (nodes.length) {
            nodes.forEach((node) => {
              lazyLoad(node, () => syncCheckedValue(false, forced));
            });
          } else {
            syncCheckedValue(true, forced);
          }
        } else {
          const values = multiple ? castArray(modelValue) : [modelValue];
          const nodes = unique(
            values.map(
              (val) => store == null ? void 0 : store.getNodeByValue(val, leafOnly)
            )
          );
          syncMenuState(nodes, forced);
          checkedValue.value = cloneDeep(modelValue != null ? modelValue : void 0);
        }
      };
      const syncMenuState = (newCheckedNodes, reserveExpandingState = true) => {
        const { checkStrictly } = config.value;
        const oldNodes = checkedNodes.value;
        const newNodes = newCheckedNodes.filter(
          (node) => !!node && (checkStrictly || node.isLeaf)
        );
        const oldExpandingNode = store == null ? void 0 : store.getSameNode(expandingNode.value);
        const newExpandingNode = reserveExpandingState && oldExpandingNode || newNodes[0];
        if (newExpandingNode) {
          newExpandingNode.pathNodes.forEach((node) => expandNode(node, true));
        } else {
          expandingNode.value = void 0;
        }
        oldNodes.forEach((node) => node.doCheck(false));
        reactive(newNodes).forEach((node) => node.doCheck(true));
        checkedNodes.value = newNodes;
        nextTick(scrollToExpandingNode);
      };
      const scrollToExpandingNode = () => {
        if (!isClient) return;
        menuList.value.forEach((menu) => {
          const menuElement = menu == null ? void 0 : menu.$el;
          if (menuElement) {
            const container = menuElement.querySelector(
              `.${ns.namespace.value}-scrollbar__wrap`
            );
            let activeNode = menuElement.querySelector(
              `.${ns.b("node")}.in-active-path`
            );
            if (!activeNode) {
              const activeElements = menuElement.querySelectorAll(
                `.${ns.b("node")}.${ns.is("active")}`
              );
              activeNode = activeElements[activeElements.length - 1];
            }
            scrollIntoView(container, activeNode);
          }
        });
      };
      const handleKeyDown = (e) => {
        const target = e.target;
        const code = getEventCode(e);
        switch (code) {
          case EVENT_CODE.up:
          case EVENT_CODE.down: {
            e.preventDefault();
            const distance = code === EVENT_CODE.up ? -1 : 1;
            focusNode(
              getSibling(
                target,
                distance,
                `.${ns.b("node")}[tabindex="-1"]`
              )
            );
            break;
          }
          case EVENT_CODE.left: {
            e.preventDefault();
            const preMenu = menuList.value[getMenuIndex(target) - 1];
            const expandedNode = preMenu == null ? void 0 : preMenu.$el.querySelector(
              `.${ns.b("node")}[aria-expanded="true"]`
            );
            focusNode(expandedNode);
            break;
          }
          case EVENT_CODE.right: {
            e.preventDefault();
            const nextMenu = menuList.value[getMenuIndex(target) + 1];
            const firstNode = nextMenu == null ? void 0 : nextMenu.$el.querySelector(
              `.${ns.b("node")}[tabindex="-1"]`
            );
            focusNode(firstNode);
            break;
          }
          case EVENT_CODE.enter:
          case EVENT_CODE.numpadEnter:
            checkNode(target);
            break;
        }
      };
      provide(
        CASCADER_PANEL_INJECTION_KEY,
        reactive({
          config,
          expandingNode,
          checkedNodes,
          isHoverMenu,
          initialLoaded,
          renderLabelFn,
          lazyLoad,
          expandNode,
          handleCheckChange
        })
      );
      watch(
        config,
        (newVal, oldVal) => {
          if (isEqual$1(newVal, oldVal)) return;
          initStore();
        },
        {
          immediate: true
        }
      );
      watch(() => props2.options, initStore, {
        deep: true
      });
      watch(
        () => props2.modelValue,
        () => {
          manualChecked = false;
          syncCheckedValue();
        },
        {
          deep: true
        }
      );
      watch(
        () => checkedValue.value,
        (val) => {
          if (!isEqual$1(val, props2.modelValue)) {
            emit2(UPDATE_MODEL_EVENT, val);
            emit2(CHANGE_EVENT, val);
          }
        }
      );
      const loadLazyRootNodes = () => {
        if (initialLoadedOnce.value) return;
        initStore();
      };
      onBeforeUpdate(() => menuList.value = []);
      onMounted(() => !isEmpty(props2.modelValue) && syncCheckedValue());
      __expose({
        menuList,
        menus,
        checkedNodes,
        handleKeyDown,
        handleCheckChange,
        getFlattedNodes,
        /**
         * @description get an array of currently selected node,(leafOnly) whether only return the leaf checked nodes, default is `false`
         */
        getCheckedNodes,
        /**
         * @description clear checked nodes
         */
        clearCheckedNodes,
        calculateCheckedValue,
        scrollToExpandingNode,
        loadLazyRootNodes
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass([unref(ns).b("panel"), unref(ns).is("bordered", __props.border)]),
            onKeydown: handleKeyDown
          },
          [
            (openBlock(true), createElementBlock(
              Fragment,
              null,
              renderList(menus.value, (menu, index) => {
                return openBlock(), createBlock(_sfc_main$2J, {
                  key: index,
                  ref_for: true,
                  ref: (item) => menuList.value[index] = item,
                  index,
                  nodes: [...menu]
                }, {
                  empty: withCtx(() => [
                    renderSlot(_ctx.$slots, "empty")
                  ]),
                  _: 3
                  /* FORWARDED */
                }, 8, ["index", "nodes"]);
              }),
              128
              /* KEYED_FRAGMENT */
            ))
          ],
          34
          /* CLASS, NEED_HYDRATION */
        );
      };
    }
  });
  const ElCascaderPanel = withInstall(_sfc_main$2I);
  const _hoisted_1$1O = ["placeholder"];
  const _hoisted_2$1o = ["onClick"];
  var _sfc_main$2H = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElCascader"
    },
    __name: "cascader",
    props: cascaderProps,
    emits: cascaderEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const popperOptions = {
        modifiers: [
          {
            name: "arrowPosition",
            enabled: true,
            phase: "main",
            fn: ({ state }) => {
              const { modifiersData, placement } = state;
              if (["right", "left", "bottom", "top"].includes(placement)) return;
              if (modifiersData.arrow) {
                modifiersData.arrow.x = 35;
              }
            },
            requires: ["arrow"]
          }
        ]
      };
      const props2 = __props;
      const emit2 = __emit;
      const attrs = useAttrs$1();
      const slots = useSlots();
      let inputInitialHeight = 0;
      let pressDeleteCount = 0;
      const nsCascader = useNamespace("cascader");
      const nsInput = useNamespace("input");
      const sizeMapPadding = {
        small: 7,
        default: 11,
        large: 15
      };
      const { t } = useLocale();
      const { formItem } = useFormItem();
      const isDisabled = useFormDisabled();
      const { valueOnClear } = useEmptyValues(props2);
      const { isComposing, handleComposition } = useComposition({
        afterComposition(event) {
          var _a;
          const text = (_a = event.target) == null ? void 0 : _a.value;
          handleInput(text);
        }
      });
      const tooltipRef = ref();
      const tagTooltipRef = ref();
      const inputRef = ref();
      const tagWrapper = ref();
      const cascaderPanelRef = ref();
      const suggestionPanel = ref();
      const popperVisible = ref(false);
      const inputHover = ref(false);
      const filtering = ref(false);
      const inputValue = ref("");
      const searchInputValue = ref("");
      const tags = ref([]);
      const suggestions = ref([]);
      const showTagList = computed(() => {
        if (!props2.props.multiple) {
          return [];
        }
        return props2.collapseTags ? tags.value.slice(0, props2.maxCollapseTags) : tags.value;
      });
      const collapseTagList = computed(() => {
        if (!props2.props.multiple) {
          return [];
        }
        return props2.collapseTags ? tags.value.slice(props2.maxCollapseTags) : [];
      });
      const cascaderStyle = computed(() => {
        return attrs.style;
      });
      const inputPlaceholder = computed(
        () => {
          var _a;
          return (_a = props2.placeholder) != null ? _a : t("el.cascader.placeholder");
        }
      );
      const currentPlaceholder = computed(
        () => searchInputValue.value || tags.value.length > 0 || isComposing.value ? "" : inputPlaceholder.value
      );
      const realSize = useFormSize();
      const tagSize = computed(
        () => realSize.value === "small" ? "small" : "default"
      );
      const multiple = computed(() => !!props2.props.multiple);
      const readonly2 = computed(() => !props2.filterable || multiple.value);
      const searchKeyword = computed(
        () => multiple.value ? searchInputValue.value : inputValue.value
      );
      const checkedNodes = computed(
        () => {
          var _a;
          return ((_a = cascaderPanelRef.value) == null ? void 0 : _a.checkedNodes) || [];
        }
      );
      const { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, {
        disabled: isDisabled,
        beforeBlur(event) {
          var _a, _b;
          return ((_a = tooltipRef.value) == null ? void 0 : _a.isFocusInsideContent(event)) || ((_b = tagTooltipRef.value) == null ? void 0 : _b.isFocusInsideContent(event));
        },
        afterBlur() {
          var _a;
          if (props2.validateEvent) {
            (_a = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a.call(formItem, "blur").catch((err) => debugWarn());
          }
        }
      });
      const clearBtnVisible = computed(() => {
        if (!props2.clearable || isDisabled.value || filtering.value || !inputHover.value && !isFocused.value)
          return false;
        return !!checkedNodes.value.length;
      });
      const presentText = computed(() => {
        const { showAllLevels, separator } = props2;
        const nodes = checkedNodes.value;
        return nodes.length ? multiple.value ? "" : nodes[0].calcText(showAllLevels, separator) : "";
      });
      const validateState = computed(() => (formItem == null ? void 0 : formItem.validateState) || "");
      const checkedValue = computed({
        get() {
          return cloneDeep(props2.modelValue);
        },
        set(val) {
          const value = val != null ? val : valueOnClear.value;
          emit2(UPDATE_MODEL_EVENT, value);
          emit2(CHANGE_EVENT, value);
          if (props2.validateEvent) {
            formItem == null ? void 0 : formItem.validate("change").catch((err) => debugWarn());
          }
        }
      });
      const cascaderKls = computed(() => {
        return [
          nsCascader.b(),
          nsCascader.m(realSize.value),
          nsCascader.is("disabled", isDisabled.value),
          attrs.class
        ];
      });
      const cascaderIconKls = computed(() => {
        return [
          nsInput.e("icon"),
          "icon-arrow-down",
          nsCascader.is("reverse", popperVisible.value)
        ];
      });
      const inputClass = computed(() => nsCascader.is("focus", isFocused.value));
      const contentRef = computed(() => {
        var _a, _b;
        return (_b = (_a = tooltipRef.value) == null ? void 0 : _a.popperRef) == null ? void 0 : _b.contentRef;
      });
      const handleClickOutside = (event) => {
        if (isFocused.value) {
          const _event2 = new FocusEvent("blur", event);
          handleBlur(_event2);
        }
        togglePopperVisible(false);
      };
      const togglePopperVisible = (visible) => {
        var _a, _b;
        if (isDisabled.value) return;
        visible = visible != null ? visible : !popperVisible.value;
        if (visible !== popperVisible.value) {
          popperVisible.value = visible;
          (_b = (_a = inputRef.value) == null ? void 0 : _a.input) == null ? void 0 : _b.setAttribute("aria-expanded", `${visible}`);
          if (visible) {
            updatePopperPosition();
            cascaderPanelRef.value && nextTick(cascaderPanelRef.value.scrollToExpandingNode);
          } else if (props2.filterable) {
            syncPresentTextValue();
          }
          emit2("visibleChange", visible);
        }
      };
      const updatePopperPosition = () => {
        nextTick(() => {
          var _a;
          (_a = tooltipRef.value) == null ? void 0 : _a.updatePopper();
        });
      };
      const hideSuggestionPanel = () => {
        filtering.value = false;
      };
      const genTag2 = (node) => {
        const { showAllLevels, separator } = props2;
        return {
          node,
          key: node.uid,
          text: node.calcText(showAllLevels, separator),
          hitState: false,
          closable: !isDisabled.value && !node.isDisabled
        };
      };
      const deleteTag = (tag) => {
        var _a;
        const node = tag.node;
        node.doCheck(false);
        (_a = cascaderPanelRef.value) == null ? void 0 : _a.calculateCheckedValue();
        emit2("removeTag", node.valueByOption);
      };
      const getStrategyCheckedNodes = () => {
        switch (props2.showCheckedStrategy) {
          case "child":
            return checkedNodes.value;
          case "parent": {
            const clickedNodes = getCheckedNodes(false);
            const clickedNodesValue = clickedNodes.map((o2) => o2.value);
            const parentNodes = clickedNodes.filter(
              (o2) => !o2.parent || !clickedNodesValue.includes(o2.parent.value)
            );
            return parentNodes;
          }
          default:
            return [];
        }
      };
      const calculatePresentTags = () => {
        if (!multiple.value) return;
        const nodes = getStrategyCheckedNodes();
        const allTags = [];
        nodes.forEach((node) => allTags.push(genTag2(node)));
        tags.value = allTags;
      };
      const calculateSuggestions = () => {
        var _a, _b;
        const { filterMethod, showAllLevels, separator } = props2;
        const res = (_b = (_a = cascaderPanelRef.value) == null ? void 0 : _a.getFlattedNodes(!props2.props.checkStrictly)) == null ? void 0 : _b.filter((node) => {
          if (node.isDisabled) return false;
          node.calcText(showAllLevels, separator);
          return filterMethod(node, searchKeyword.value);
        });
        if (multiple.value) {
          tags.value.forEach((tag) => {
            tag.hitState = false;
          });
        }
        filtering.value = true;
        suggestions.value = res;
        updatePopperPosition();
      };
      const focusFirstNode = () => {
        var _a;
        let firstNode;
        if (filtering.value && suggestionPanel.value) {
          firstNode = suggestionPanel.value.$el.querySelector(
            `.${nsCascader.e("suggestion-item")}`
          );
        } else {
          firstNode = (_a = cascaderPanelRef.value) == null ? void 0 : _a.$el.querySelector(
            `.${nsCascader.b("node")}[tabindex="-1"]`
          );
        }
        if (firstNode) {
          firstNode.focus();
          !filtering.value && firstNode.click();
        }
      };
      const updateStyle = () => {
        var _a, _b, _c;
        const inputInner = (_a = inputRef.value) == null ? void 0 : _a.input;
        const tagWrapperEl = tagWrapper.value;
        const suggestionPanelEl = (_b = suggestionPanel.value) == null ? void 0 : _b.$el;
        if (!isClient || !inputInner) return;
        if (suggestionPanelEl) {
          const suggestionList = suggestionPanelEl.querySelector(
            `.${nsCascader.e("suggestion-list")}`
          );
          suggestionList.style.minWidth = `${inputInner.offsetWidth}px`;
        }
        if (tagWrapperEl) {
          const { offsetHeight } = tagWrapperEl;
          const height = tags.value.length > 0 ? `${Math.max(offsetHeight, inputInitialHeight) - 2}px` : `${inputInitialHeight}px`;
          inputInner.style.height = height;
          if (slots.prefix) {
            const prefix = (_c = inputRef.value) == null ? void 0 : _c.$el.querySelector(
              `.${nsInput.e("prefix")}`
            );
            let left = 0;
            if (prefix) {
              left = prefix.offsetWidth;
              if (left > 0) {
                left += sizeMapPadding[realSize.value || "default"];
              }
            }
            tagWrapperEl.style.left = `${left}px`;
          } else {
            tagWrapperEl.style.left = `0`;
          }
          updatePopperPosition();
        }
      };
      const getCheckedNodes = (leafOnly) => {
        var _a;
        return (_a = cascaderPanelRef.value) == null ? void 0 : _a.getCheckedNodes(leafOnly);
      };
      const handleExpandChange = (value) => {
        updatePopperPosition();
        emit2("expandChange", value);
      };
      const handleKeyDown = (e) => {
        if (isComposing.value) return;
        const code = getEventCode(e);
        switch (code) {
          case EVENT_CODE.enter:
          case EVENT_CODE.numpadEnter:
            togglePopperVisible();
            break;
          case EVENT_CODE.down:
            togglePopperVisible(true);
            nextTick(focusFirstNode);
            e.preventDefault();
            break;
          case EVENT_CODE.esc:
            if (popperVisible.value === true) {
              e.preventDefault();
              e.stopPropagation();
              togglePopperVisible(false);
            }
            break;
          case EVENT_CODE.tab:
            togglePopperVisible(false);
            break;
        }
      };
      const handleClear = () => {
        var _a;
        (_a = cascaderPanelRef.value) == null ? void 0 : _a.clearCheckedNodes();
        if (!popperVisible.value && props2.filterable) {
          syncPresentTextValue();
        }
        togglePopperVisible(false);
        emit2("clear");
      };
      const syncPresentTextValue = () => {
        const { value } = presentText;
        inputValue.value = value;
        searchInputValue.value = value;
      };
      const handleSuggestionClick = (node) => {
        var _a, _b;
        const { checked } = node;
        if (multiple.value) {
          (_a = cascaderPanelRef.value) == null ? void 0 : _a.handleCheckChange(node, !checked, false);
        } else {
          !checked && ((_b = cascaderPanelRef.value) == null ? void 0 : _b.handleCheckChange(node, true, false));
          togglePopperVisible(false);
        }
      };
      const handleSuggestionKeyDown = (e) => {
        const target = e.target;
        const code = getEventCode(e);
        switch (code) {
          case EVENT_CODE.up:
          case EVENT_CODE.down: {
            e.preventDefault();
            const distance = code === EVENT_CODE.up ? -1 : 1;
            focusNode(
              getSibling(
                target,
                distance,
                `.${nsCascader.e("suggestion-item")}[tabindex="-1"]`
              )
            );
            break;
          }
          case EVENT_CODE.enter:
          case EVENT_CODE.numpadEnter:
            target.click();
            break;
        }
      };
      const handleDelete = () => {
        const lastTag = tags.value[tags.value.length - 1];
        pressDeleteCount = searchInputValue.value ? 0 : pressDeleteCount + 1;
        if (!lastTag || !pressDeleteCount || props2.collapseTags && tags.value.length > 1)
          return;
        if (lastTag.hitState) {
          deleteTag(lastTag);
        } else {
          lastTag.hitState = true;
        }
      };
      const debounce2 = computed(() => props2.debounce);
      const handleFilter = useDebounceFn(() => {
        const { value } = searchKeyword;
        if (!value) return;
        const passed = props2.beforeFilter(value);
        if (isPromise(passed)) {
          passed.then(calculateSuggestions).catch(() => {
          });
        } else if (passed !== false) {
          calculateSuggestions();
        } else {
          hideSuggestionPanel();
        }
      }, debounce2);
      const handleInput = (val, e) => {
        !popperVisible.value && togglePopperVisible(true);
        if (e == null ? void 0 : e.isComposing) return;
        val ? handleFilter() : hideSuggestionPanel();
      };
      const getInputInnerHeight = (inputInner) => Number.parseFloat(
        useCssVar(nsInput.cssVarName("input-height"), inputInner).value
      ) - 2;
      const focus = () => {
        var _a;
        (_a = inputRef.value) == null ? void 0 : _a.focus();
      };
      const blur = () => {
        var _a;
        (_a = inputRef.value) == null ? void 0 : _a.blur();
      };
      watch(filtering, updatePopperPosition);
      watch(
        [
          checkedNodes,
          isDisabled,
          () => props2.collapseTags,
          () => props2.maxCollapseTags
        ],
        calculatePresentTags
      );
      watch(tags, () => {
        nextTick(() => updateStyle());
      });
      watch(realSize, async () => {
        await nextTick();
        const inputInner = inputRef.value.input;
        inputInitialHeight = getInputInnerHeight(inputInner) || inputInitialHeight;
        updateStyle();
      });
      watch(presentText, syncPresentTextValue, { immediate: true });
      watch(
        () => popperVisible.value,
        (val) => {
          var _a;
          if (val && props2.props.lazy && props2.props.lazyLoad) {
            (_a = cascaderPanelRef.value) == null ? void 0 : _a.loadLazyRootNodes();
          }
        }
      );
      onMounted(() => {
        const inputInner = inputRef.value.input;
        const inputInnerHeight = getInputInnerHeight(inputInner);
        inputInitialHeight = inputInner.offsetHeight || inputInnerHeight;
        useResizeObserver(inputInner, updateStyle);
      });
      __expose({
        /**
         * @description get an array of currently selected node,(leafOnly) whether only return the leaf checked nodes, default is `false`
         */
        getCheckedNodes,
        /**
         * @description cascader panel ref
         */
        cascaderPanelRef,
        /**
         * @description toggle the visible of popper
         */
        togglePopperVisible,
        /**
         * @description cascader content ref
         */
        contentRef,
        /**
         * @description selected content text
         */
        presentText,
        /** @description focus the input element */
        focus,
        /** @description blur the input element */
        blur
      });
      return (_ctx, _cache) => {
        return openBlock(), createBlock(unref(ElTooltip), {
          ref_key: "tooltipRef",
          ref: tooltipRef,
          visible: popperVisible.value,
          teleported: __props.teleported,
          "popper-class": [unref(nsCascader).e("dropdown"), __props.popperClass],
          "popper-style": __props.popperStyle,
          "popper-options": popperOptions,
          "fallback-placements": __props.fallbackPlacements,
          "stop-popper-mouse-event": false,
          "gpu-acceleration": false,
          placement: __props.placement,
          transition: `${unref(nsCascader).namespace.value}-zoom-in-top`,
          effect: __props.effect,
          pure: "",
          persistent: __props.persistent,
          onHide: hideSuggestionPanel
        }, {
          default: withCtx(() => [
            withDirectives((openBlock(), createElementBlock(
              "div",
              {
                ref_key: "wrapperRef",
                ref: wrapperRef,
                class: normalizeClass(cascaderKls.value),
                style: normalizeStyle(cascaderStyle.value),
                onClick: _cache[8] || (_cache[8] = () => togglePopperVisible(readonly2.value ? void 0 : true)),
                onKeydown: handleKeyDown,
                onMouseenter: _cache[9] || (_cache[9] = ($event) => inputHover.value = true),
                onMouseleave: _cache[10] || (_cache[10] = ($event) => inputHover.value = false)
              },
              [
                createVNode(unref(ElInput), {
                  ref_key: "inputRef",
                  ref: inputRef,
                  modelValue: inputValue.value,
                  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => inputValue.value = $event),
                  placeholder: currentPlaceholder.value,
                  readonly: readonly2.value,
                  disabled: unref(isDisabled),
                  "validate-event": false,
                  size: unref(realSize),
                  class: normalizeClass(inputClass.value),
                  tabindex: multiple.value && __props.filterable && !unref(isDisabled) ? -1 : void 0,
                  onCompositionstart: unref(handleComposition),
                  onCompositionupdate: unref(handleComposition),
                  onCompositionend: unref(handleComposition),
                  onInput: handleInput
                }, createSlots({
                  suffix: withCtx(() => [
                    clearBtnVisible.value ? (openBlock(), createBlock(unref(ElIcon), {
                      key: "clear",
                      class: normalizeClass([unref(nsInput).e("icon"), "icon-circle-close"]),
                      onClick: withModifiers(handleClear, ["stop"])
                    }, {
                      default: withCtx(() => [
                        (openBlock(), createBlock(resolveDynamicComponent(__props.clearIcon)))
                      ]),
                      _: 1
                      /* STABLE */
                    }, 8, ["class"])) : (openBlock(), createBlock(unref(ElIcon), {
                      key: "arrow-down",
                      class: normalizeClass(cascaderIconKls.value),
                      onClick: _cache[0] || (_cache[0] = withModifiers(($event) => togglePopperVisible(), ["stop"]))
                    }, {
                      default: withCtx(() => [
                        createVNode(unref(arrow_down_default))
                      ]),
                      _: 1
                      /* STABLE */
                    }, 8, ["class"]))
                  ]),
                  _: 2
                  /* DYNAMIC */
                }, [
                  _ctx.$slots.prefix ? {
                    name: "prefix",
                    fn: withCtx(() => [
                      renderSlot(_ctx.$slots, "prefix")
                    ]),
                    key: "0"
                  } : void 0
                ]), 1032, ["modelValue", "placeholder", "readonly", "disabled", "size", "class", "tabindex", "onCompositionstart", "onCompositionupdate", "onCompositionend"]),
                multiple.value ? (openBlock(), createElementBlock(
                  "div",
                  {
                    key: 0,
                    ref_key: "tagWrapper",
                    ref: tagWrapper,
                    class: normalizeClass([
                      unref(nsCascader).e("tags"),
                      unref(nsCascader).is("validate", Boolean(validateState.value))
                    ])
                  },
                  [
                    renderSlot(_ctx.$slots, "tag", {
                      data: tags.value,
                      deleteTag
                    }, () => [
                      (openBlock(true), createElementBlock(
                        Fragment,
                        null,
                        renderList(showTagList.value, (tag) => {
                          return openBlock(), createBlock(unref(ElTag), {
                            key: tag.key,
                            type: __props.tagType,
                            size: tagSize.value,
                            effect: __props.tagEffect,
                            hit: tag.hitState,
                            closable: tag.closable,
                            "disable-transitions": "",
                            onClose: ($event) => deleteTag(tag)
                          }, {
                            default: withCtx(() => [
                              createBaseVNode(
                                "span",
                                null,
                                toDisplayString(tag.text),
                                1
                                /* TEXT */
                              )
                            ]),
                            _: 2
                            /* DYNAMIC */
                          }, 1032, ["type", "size", "effect", "hit", "closable", "onClose"]);
                        }),
                        128
                        /* KEYED_FRAGMENT */
                      ))
                    ]),
                    __props.collapseTags && tags.value.length > __props.maxCollapseTags ? (openBlock(), createBlock(unref(ElTooltip), {
                      key: 0,
                      ref_key: "tagTooltipRef",
                      ref: tagTooltipRef,
                      disabled: popperVisible.value || !__props.collapseTagsTooltip,
                      "fallback-placements": ["bottom", "top", "right", "left"],
                      placement: "bottom",
                      "popper-class": __props.popperClass,
                      "popper-style": __props.popperStyle,
                      effect: __props.effect,
                      persistent: __props.persistent
                    }, {
                      default: withCtx(() => [
                        createVNode(unref(ElTag), {
                          closable: false,
                          size: tagSize.value,
                          type: __props.tagType,
                          effect: __props.tagEffect,
                          "disable-transitions": ""
                        }, {
                          default: withCtx(() => [
                            createBaseVNode(
                              "span",
                              {
                                class: normalizeClass(unref(nsCascader).e("tags-text"))
                              },
                              " + " + toDisplayString(tags.value.length - __props.maxCollapseTags),
                              3
                              /* TEXT, CLASS */
                            )
                          ]),
                          _: 1
                          /* STABLE */
                        }, 8, ["size", "type", "effect"])
                      ]),
                      content: withCtx(() => [
                        createVNode(unref(ElScrollbar), { "max-height": __props.maxCollapseTagsTooltipHeight }, {
                          default: withCtx(() => [
                            createBaseVNode(
                              "div",
                              {
                                class: normalizeClass(unref(nsCascader).e("collapse-tags"))
                              },
                              [
                                (openBlock(true), createElementBlock(
                                  Fragment,
                                  null,
                                  renderList(collapseTagList.value, (tag, idx) => {
                                    return openBlock(), createElementBlock(
                                      "div",
                                      {
                                        key: idx,
                                        class: normalizeClass(unref(nsCascader).e("collapse-tag"))
                                      },
                                      [
                                        (openBlock(), createBlock(unref(ElTag), {
                                          key: tag.key,
                                          class: "in-tooltip",
                                          type: __props.tagType,
                                          size: tagSize.value,
                                          effect: __props.tagEffect,
                                          hit: tag.hitState,
                                          closable: tag.closable,
                                          "disable-transitions": "",
                                          onClose: ($event) => deleteTag(tag)
                                        }, {
                                          default: withCtx(() => [
                                            createBaseVNode(
                                              "span",
                                              null,
                                              toDisplayString(tag.text),
                                              1
                                              /* TEXT */
                                            )
                                          ]),
                                          _: 2
                                          /* DYNAMIC */
                                        }, 1032, ["type", "size", "effect", "hit", "closable", "onClose"]))
                                      ],
                                      2
                                      /* CLASS */
                                    );
                                  }),
                                  128
                                  /* KEYED_FRAGMENT */
                                ))
                              ],
                              2
                              /* CLASS */
                            )
                          ]),
                          _: 1
                          /* STABLE */
                        }, 8, ["max-height"])
                      ]),
                      _: 1
                      /* STABLE */
                    }, 8, ["disabled", "popper-class", "popper-style", "effect", "persistent"])) : createCommentVNode("v-if", true),
                    __props.filterable && !unref(isDisabled) ? withDirectives((openBlock(), createElementBlock("input", {
                      key: 1,
                      "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => searchInputValue.value = $event),
                      type: "text",
                      class: normalizeClass(unref(nsCascader).e("search-input")),
                      placeholder: presentText.value ? "" : inputPlaceholder.value,
                      onInput: _cache[3] || (_cache[3] = (e) => handleInput(searchInputValue.value, e)),
                      onClick: _cache[4] || (_cache[4] = withModifiers(($event) => togglePopperVisible(true), ["stop"])),
                      onKeydown: withKeys(handleDelete, ["delete"]),
                      onCompositionstart: _cache[5] || (_cache[5] = //@ts-ignore
                      (...args) => unref(handleComposition) && unref(handleComposition)(...args)),
                      onCompositionupdate: _cache[6] || (_cache[6] = //@ts-ignore
                      (...args) => unref(handleComposition) && unref(handleComposition)(...args)),
                      onCompositionend: _cache[7] || (_cache[7] = //@ts-ignore
                      (...args) => unref(handleComposition) && unref(handleComposition)(...args))
                    }, null, 42, _hoisted_1$1O)), [
                      [vModelText, searchInputValue.value]
                    ]) : createCommentVNode("v-if", true)
                  ],
                  2
                  /* CLASS */
                )) : createCommentVNode("v-if", true)
              ],
              38
              /* CLASS, STYLE, NEED_HYDRATION */
            )), [
              [unref(ClickOutside), handleClickOutside, contentRef.value]
            ])
          ]),
          content: withCtx(() => [
            _ctx.$slots.header ? (openBlock(), createElementBlock(
              "div",
              {
                key: 0,
                class: normalizeClass(unref(nsCascader).e("header")),
                onClick: _cache[11] || (_cache[11] = withModifiers(() => {
                }, ["stop"]))
              },
              [
                renderSlot(_ctx.$slots, "header")
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true),
            withDirectives(createVNode(unref(ElCascaderPanel), {
              ref_key: "cascaderPanelRef",
              ref: cascaderPanelRef,
              modelValue: checkedValue.value,
              "onUpdate:modelValue": _cache[12] || (_cache[12] = ($event) => checkedValue.value = $event),
              options: __props.options,
              props: props2.props,
              border: false,
              "render-label": _ctx.$slots.default,
              onExpandChange: handleExpandChange,
              onClose: _cache[13] || (_cache[13] = ($event) => _ctx.$nextTick(() => togglePopperVisible(false)))
            }, {
              empty: withCtx(() => [
                renderSlot(_ctx.$slots, "empty")
              ]),
              _: 3
              /* FORWARDED */
            }, 8, ["modelValue", "options", "props", "render-label"]), [
              [vShow, !filtering.value]
            ]),
            __props.filterable ? withDirectives((openBlock(), createBlock(unref(ElScrollbar), {
              key: 1,
              ref_key: "suggestionPanel",
              ref: suggestionPanel,
              tag: "ul",
              class: normalizeClass(unref(nsCascader).e("suggestion-panel")),
              "view-class": unref(nsCascader).e("suggestion-list"),
              onKeydown: handleSuggestionKeyDown
            }, {
              default: withCtx(() => [
                suggestions.value.length ? (openBlock(true), createElementBlock(
                  Fragment,
                  { key: 0 },
                  renderList(suggestions.value, (item) => {
                    return openBlock(), createElementBlock("li", {
                      key: item.uid,
                      class: normalizeClass([
                        unref(nsCascader).e("suggestion-item"),
                        unref(nsCascader).is("checked", item.checked)
                      ]),
                      tabindex: -1,
                      onClick: ($event) => handleSuggestionClick(item)
                    }, [
                      renderSlot(_ctx.$slots, "suggestion-item", { item }, () => [
                        createBaseVNode(
                          "span",
                          null,
                          toDisplayString(item.text),
                          1
                          /* TEXT */
                        ),
                        item.checked ? (openBlock(), createBlock(unref(ElIcon), { key: 0 }, {
                          default: withCtx(() => [
                            createVNode(unref(check_default))
                          ]),
                          _: 1
                          /* STABLE */
                        })) : createCommentVNode("v-if", true)
                      ])
                    ], 10, _hoisted_2$1o);
                  }),
                  128
                  /* KEYED_FRAGMENT */
                )) : renderSlot(_ctx.$slots, "empty", { key: 1 }, () => [
                  createBaseVNode(
                    "li",
                    {
                      class: normalizeClass(unref(nsCascader).e("empty-text"))
                    },
                    toDisplayString(unref(t)("el.cascader.noMatch")),
                    3
                    /* TEXT, CLASS */
                  )
                ])
              ]),
              _: 3
              /* FORWARDED */
            }, 8, ["class", "view-class"])), [
              [vShow, filtering.value]
            ]) : createCommentVNode("v-if", true),
            _ctx.$slots.footer ? (openBlock(), createElementBlock(
              "div",
              {
                key: 2,
                class: normalizeClass(unref(nsCascader).e("footer")),
                onClick: _cache[14] || (_cache[14] = withModifiers(() => {
                }, ["stop"]))
              },
              [
                renderSlot(_ctx.$slots, "footer")
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true)
          ]),
          _: 3
          /* FORWARDED */
        }, 8, ["visible", "teleported", "popper-class", "popper-style", "fallback-placements", "placement", "transition", "effect", "persistent"]);
      };
    }
  });
  const ElCascader = withInstall(_sfc_main$2H);
  const checkTagProps = buildProps({
    /**
     * @description is checked
     */
    checked: Boolean,
    /**
     * @description whether the check-tag is disabled
     */
    disabled: Boolean,
    /**
     * @description type of Tag
     */
    type: {
      type: String,
      values: ["primary", "success", "info", "warning", "danger"],
      default: "primary"
    }
  });
  const checkTagEmits = {
    "update:checked": (value) => isBoolean(value),
    [CHANGE_EVENT]: (value) => isBoolean(value)
  };
  var _sfc_main$2G = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElCheckTag"
    },
    __name: "check-tag",
    props: checkTagProps,
    emits: checkTagEmits,
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const ns = useNamespace("check-tag");
      const containerKls = computed(() => [
        ns.b(),
        ns.is("checked", props2.checked),
        ns.is("disabled", props2.disabled),
        ns.m(props2.type || "primary")
      ]);
      const handleChange = () => {
        if (props2.disabled) return;
        const checked = !props2.checked;
        emit2(CHANGE_EVENT, checked);
        emit2("update:checked", checked);
      };
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "span",
          {
            class: normalizeClass(containerKls.value),
            onClick: handleChange
          },
          [
            renderSlot(_ctx.$slots, "default")
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const ElCheckTag = withInstall(_sfc_main$2G);
  const colProps = buildProps({
    /**
     * @description custom element tag
     */
    tag: {
      type: String,
      default: "div"
    },
    /**
     * @description number of column the grid spans
     */
    span: {
      type: Number,
      default: 24
    },
    /**
     * @description number of spacing on the left side of the grid
     */
    offset: {
      type: Number,
      default: 0
    },
    /**
     * @description number of columns that grid moves to the left
     */
    pull: {
      type: Number,
      default: 0
    },
    /**
     * @description number of columns that grid moves to the right
     */
    push: {
      type: Number,
      default: 0
    },
    /**
     * @description `<768px` Responsive columns or column props object
     */
    xs: {
      type: definePropType([Number, Object]),
      default: () => mutable({})
    },
    /**
     * @description `≥768px` Responsive columns or column props object
     */
    sm: {
      type: definePropType([Number, Object]),
      default: () => mutable({})
    },
    /**
     * @description `≥992px` Responsive columns or column props object
     */
    md: {
      type: definePropType([Number, Object]),
      default: () => mutable({})
    },
    /**
     * @description `≥1200px` Responsive columns or column props object
     */
    lg: {
      type: definePropType([Number, Object]),
      default: () => mutable({})
    },
    /**
     * @description `≥1920px` Responsive columns or column props object
     */
    xl: {
      type: definePropType([Number, Object]),
      default: () => mutable({})
    }
  });
  const rowContextKey = /* @__PURE__ */ Symbol("rowContextKey");
  var _sfc_main$2F = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElCol"
    },
    __name: "col",
    props: colProps,
    setup(__props) {
      const props2 = __props;
      const { gutter } = inject(rowContextKey, { gutter: computed(() => 0) });
      const ns = useNamespace("col");
      const style = computed(() => {
        const styles = {};
        if (gutter.value) {
          styles.paddingLeft = styles.paddingRight = `${gutter.value / 2}px`;
        }
        return styles;
      });
      const colKls = computed(() => {
        const classes = [];
        const pos = ["span", "offset", "pull", "push"];
        pos.forEach((prop) => {
          const size = props2[prop];
          if (isNumber(size)) {
            if (prop === "span") classes.push(ns.b(`${props2[prop]}`));
            else if (size > 0) classes.push(ns.b(`${prop}-${props2[prop]}`));
          }
        });
        const sizes = ["xs", "sm", "md", "lg", "xl"];
        sizes.forEach((size) => {
          if (isNumber(props2[size])) {
            classes.push(ns.b(`${size}-${props2[size]}`));
          } else if (isObject$2(props2[size])) {
            Object.entries(props2[size]).forEach(([prop, sizeProp]) => {
              classes.push(
                prop !== "span" ? ns.b(`${size}-${prop}-${sizeProp}`) : ns.b(`${size}-${sizeProp}`)
              );
            });
          }
        });
        if (gutter.value) {
          classes.push(ns.is("guttered"));
        }
        return [ns.b(), classes];
      });
      return (_ctx, _cache) => {
        return openBlock(), createBlock(resolveDynamicComponent(__props.tag), {
          class: normalizeClass(colKls.value),
          style: normalizeStyle(style.value)
        }, {
          default: withCtx(() => [
            renderSlot(_ctx.$slots, "default")
          ]),
          _: 3
          /* FORWARDED */
        }, 8, ["class", "style"]);
      };
    }
  });
  const ElCol = withInstall(_sfc_main$2F);
  const emitChangeFn = (value) => isNumber(value) || isString(value) || isArray$1(value);
  const collapseProps = buildProps({
    /**
     * @description whether to activate accordion mode
     */
    accordion: Boolean,
    /**
     * @description currently active panel, the type is `string` in accordion mode, otherwise it is `array`
     */
    modelValue: {
      type: definePropType([Array, String, Number]),
      default: () => mutable([])
    },
    /**
     * @description set expand icon position
     */
    expandIconPosition: {
      type: definePropType([String]),
      default: "right"
    },
    /**
     * @description before-collapse hook before the collapse state changes. If `false` is returned or a `Promise` is returned and then is rejected, will stop collapsing
     */
    beforeCollapse: {
      type: definePropType(
        Function
      )
    }
  });
  const collapseEmits = {
    [UPDATE_MODEL_EVENT]: emitChangeFn,
    [CHANGE_EVENT]: emitChangeFn
  };
  const collapseContextKey = /* @__PURE__ */ Symbol("collapseContextKey");
  const SCOPE$5 = "ElCollapse";
  const useCollapse = (props2, emit2) => {
    const activeNames = ref(castArray$1(props2.modelValue));
    const setActiveNames = (_activeNames) => {
      activeNames.value = _activeNames;
      const value = props2.accordion ? activeNames.value[0] : activeNames.value;
      emit2(UPDATE_MODEL_EVENT, value);
      emit2(CHANGE_EVENT, value);
    };
    const handleChange = (name) => {
      if (props2.accordion) {
        setActiveNames([activeNames.value[0] === name ? "" : name]);
      } else {
        const _activeNames = [...activeNames.value];
        const index = _activeNames.indexOf(name);
        if (index > -1) {
          _activeNames.splice(index, 1);
        } else {
          _activeNames.push(name);
        }
        setActiveNames(_activeNames);
      }
    };
    const handleItemClick = async (name) => {
      const { beforeCollapse } = props2;
      if (!beforeCollapse) {
        handleChange(name);
        return;
      }
      const shouldChange = beforeCollapse(name);
      const isPromiseOrBool = [
        isPromise(shouldChange),
        isBoolean(shouldChange)
      ].includes(true);
      if (!isPromiseOrBool) {
        throwError(
          SCOPE$5,
          "beforeCollapse must return type `Promise<boolean>` or `boolean`"
        );
      }
      if (isPromise(shouldChange)) {
        shouldChange.then((result) => {
          if (result !== false) {
            handleChange(name);
          }
        }).catch((e) => {
        });
      } else if (shouldChange) {
        handleChange(name);
      }
    };
    watch(
      () => props2.modelValue,
      () => activeNames.value = castArray$1(props2.modelValue),
      { deep: true }
    );
    provide(collapseContextKey, {
      activeNames,
      handleItemClick
    });
    return {
      activeNames,
      setActiveNames
    };
  };
  const useCollapseDOM = (props2) => {
    const ns = useNamespace("collapse");
    const rootKls = computed(() => [
      ns.b(),
      ns.b(`icon-position-${props2.expandIconPosition}`)
    ]);
    return {
      rootKls
    };
  };
  var _sfc_main$2E = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElCollapse"
    },
    __name: "collapse",
    props: collapseProps,
    emits: collapseEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const { activeNames, setActiveNames } = useCollapse(props2, emit2);
      const { rootKls } = useCollapseDOM(props2);
      __expose({
        /** @description active names */
        activeNames,
        /** @description set active names */
        setActiveNames
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass(unref(rootKls))
          },
          [
            renderSlot(_ctx.$slots, "default")
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const collapseItemProps = buildProps({
    /**
     * @description title of the panel
     */
    title: {
      type: String,
      default: ""
    },
    /**
     * @description unique identification of the panel
     */
    name: {
      type: definePropType([String, Number]),
      default: void 0
    },
    /**
     * @description icon of the collapse item
     */
    icon: {
      type: iconPropType,
      default: arrow_right_default
    },
    /**
     * @description disable the collapse item
     */
    disabled: Boolean
  });
  var _sfc_main$2D = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElCollapseTransition"
    },
    __name: "collapse-transition",
    setup(__props) {
      const ns = useNamespace("collapse-transition");
      const reset = (el) => {
        el.style.maxHeight = "";
        el.style.overflow = el.dataset.oldOverflow;
        el.style.paddingTop = el.dataset.oldPaddingTop;
        el.style.paddingBottom = el.dataset.oldPaddingBottom;
      };
      const 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 openBlock(), createBlock(Transition, mergeProps({
          name: unref(ns).b()
        }, toHandlers(on2)), {
          default: withCtx(() => [
            renderSlot(_ctx.$slots, "default")
          ]),
          _: 3
          /* FORWARDED */
        }, 16, ["name"]);
      };
    }
  });
  const ElCollapseTransition = withInstall(_sfc_main$2D);
  const useCollapseItem = (props2) => {
    const collapse = inject(collapseContextKey);
    const { namespace } = useNamespace("collapse");
    const focusing = ref(false);
    const isClick = ref(false);
    const idInjection = useIdInjection();
    const id = computed(() => idInjection.current++);
    const name = computed(() => {
      var _a;
      return (_a = props2.name) != null ? _a : `${namespace.value}-id-${idInjection.prefix}-${unref(id)}`;
    });
    const isActive = computed(
      () => collapse == null ? void 0 : collapse.activeNames.value.includes(unref(name))
    );
    const handleFocus = () => {
      setTimeout(() => {
        if (!isClick.value) {
          focusing.value = true;
        } else {
          isClick.value = false;
        }
      }, 50);
    };
    const handleHeaderClick = (e) => {
      if (props2.disabled) return;
      const target = e.target;
      if (target == null ? void 0 : target.closest("input, textarea, select")) return;
      collapse == null ? void 0 : collapse.handleItemClick(unref(name));
      focusing.value = false;
      isClick.value = true;
    };
    const handleEnterClick = (e) => {
      const target = e.target;
      if (target == null ? void 0 : target.closest("input, textarea, select")) return;
      e.preventDefault();
      collapse == null ? void 0 : collapse.handleItemClick(unref(name));
    };
    return {
      focusing,
      id,
      isActive,
      handleFocus,
      handleHeaderClick,
      handleEnterClick
    };
  };
  const useCollapseItemDOM = (props2, { focusing, isActive, id }) => {
    const ns = useNamespace("collapse");
    const rootKls = computed(() => [
      ns.b("item"),
      ns.is("active", unref(isActive)),
      ns.is("disabled", props2.disabled)
    ]);
    const headKls = computed(() => [
      ns.be("item", "header"),
      ns.is("active", unref(isActive)),
      { focusing: unref(focusing) && !props2.disabled }
    ]);
    const arrowKls = computed(() => [
      ns.be("item", "arrow"),
      ns.is("active", unref(isActive))
    ]);
    const itemTitleKls = computed(() => [ns.be("item", "title")]);
    const itemWrapperKls = computed(() => ns.be("item", "wrap"));
    const itemContentKls = computed(() => ns.be("item", "content"));
    const scopedContentId = computed(() => ns.b(`content-${unref(id)}`));
    const scopedHeadId = computed(() => ns.b(`head-${unref(id)}`));
    return {
      itemTitleKls,
      arrowKls,
      headKls,
      rootKls,
      itemWrapperKls,
      itemContentKls,
      scopedContentId,
      scopedHeadId
    };
  };
  const _hoisted_1$1N = ["id", "aria-expanded", "aria-controls", "aria-describedby", "tabindex", "aria-disabled"];
  const _hoisted_2$1n = ["id", "aria-hidden", "aria-labelledby"];
  var _sfc_main$2C = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElCollapseItem"
    },
    __name: "collapse-item",
    props: collapseItemProps,
    setup(__props, { expose: __expose }) {
      const props2 = __props;
      const {
        focusing,
        id,
        isActive,
        handleFocus,
        handleHeaderClick,
        handleEnterClick
      } = useCollapseItem(props2);
      const {
        arrowKls,
        headKls,
        rootKls,
        itemTitleKls,
        itemWrapperKls,
        itemContentKls,
        scopedContentId,
        scopedHeadId
      } = useCollapseItemDOM(props2, { focusing, isActive, id });
      __expose({
        /** @description current collapse-item whether active */
        isActive
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass(unref(rootKls))
          },
          [
            createBaseVNode("div", {
              id: unref(scopedHeadId),
              class: normalizeClass(unref(headKls)),
              "aria-expanded": unref(isActive),
              "aria-controls": unref(scopedContentId),
              "aria-describedby": unref(scopedContentId),
              tabindex: __props.disabled ? void 0 : 0,
              "aria-disabled": __props.disabled,
              role: "button",
              onClick: _cache[0] || (_cache[0] = //@ts-ignore
              (...args) => unref(handleHeaderClick) && unref(handleHeaderClick)(...args)),
              onKeydown: _cache[1] || (_cache[1] = withKeys(withModifiers(
                //@ts-ignore
                (...args) => unref(handleEnterClick) && unref(handleEnterClick)(...args),
                ["stop"]
              ), ["space", "enter"])),
              onFocus: _cache[2] || (_cache[2] = //@ts-ignore
              (...args) => unref(handleFocus) && unref(handleFocus)(...args)),
              onBlur: _cache[3] || (_cache[3] = ($event) => focusing.value = false)
            }, [
              createBaseVNode(
                "span",
                {
                  class: normalizeClass(unref(itemTitleKls))
                },
                [
                  renderSlot(_ctx.$slots, "title", { isActive: unref(isActive) }, () => [
                    createTextVNode(
                      toDisplayString(__props.title),
                      1
                      /* TEXT */
                    )
                  ])
                ],
                2
                /* CLASS */
              ),
              renderSlot(_ctx.$slots, "icon", { isActive: unref(isActive) }, () => [
                createVNode(unref(ElIcon), {
                  class: normalizeClass(unref(arrowKls))
                }, {
                  default: withCtx(() => [
                    (openBlock(), createBlock(resolveDynamicComponent(__props.icon)))
                  ]),
                  _: 1
                  /* STABLE */
                }, 8, ["class"])
              ])
            ], 42, _hoisted_1$1N),
            createVNode(unref(ElCollapseTransition), null, {
              default: withCtx(() => [
                withDirectives(createBaseVNode("div", {
                  id: unref(scopedContentId),
                  role: "region",
                  class: normalizeClass(unref(itemWrapperKls)),
                  "aria-hidden": !unref(isActive),
                  "aria-labelledby": unref(scopedHeadId)
                }, [
                  createBaseVNode(
                    "div",
                    {
                      class: normalizeClass(unref(itemContentKls))
                    },
                    [
                      renderSlot(_ctx.$slots, "default")
                    ],
                    2
                    /* CLASS */
                  )
                ], 10, _hoisted_2$1n), [
                  [vShow, unref(isActive)]
                ])
              ]),
              _: 3
              /* FORWARDED */
            })
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const ElCollapse = withInstall(_sfc_main$2E, {
    CollapseItem: _sfc_main$2C
  });
  const ElCollapseItem = withNoopInstall(_sfc_main$2C);
  const colorPickerPanelProps = buildProps({
    /**
     * @description binding value
     */
    modelValue: {
      type: definePropType(String),
      default: void 0
    },
    /**
     * @description whether the color picker is bordered
     */
    border: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether to display the alpha slider
     */
    showAlpha: Boolean,
    /**
     * @description color format of v-model
     */
    colorFormat: String,
    /**
     * @description whether to disable the color picker
     */
    disabled: Boolean,
    /**
     * @description predefined color options
     */
    predefine: {
      type: definePropType(Array)
    },
    /**
     * @description whether to trigger form validation
     */
    validateEvent: {
      type: Boolean,
      default: true
    }
  });
  const colorPickerPanelEmits = {
    [UPDATE_MODEL_EVENT]: (val) => isString(val) || isNil(val)
  };
  const ROOT_COMMON_COLOR_INJECTION_KEY = /* @__PURE__ */ Symbol("colorCommonPickerKey");
  const colorPickerPanelContextKey = /* @__PURE__ */ Symbol("colorPickerPanelContextKey");
  const alphaSliderProps = buildProps({
    color: {
      type: definePropType(Object),
      required: true
    },
    vertical: Boolean,
    disabled: Boolean
  });
  const hueSliderProps = alphaSliderProps;
  let isDragging = false;
  function draggable(element, options) {
    if (!isClient) return;
    const moveFn = function(event) {
      var _a;
      (_a = options.drag) == null ? void 0 : _a.call(options, event);
    };
    const upFn = function(event) {
      var _a;
      document.removeEventListener("mousemove", moveFn);
      document.removeEventListener("mouseup", upFn);
      document.removeEventListener("touchmove", moveFn);
      document.removeEventListener("touchend", upFn);
      document.onselectstart = null;
      document.ondragstart = null;
      isDragging = false;
      (_a = options.end) == null ? void 0 : _a.call(options, event);
    };
    const downFn = function(event) {
      var _a;
      if (isDragging) return;
      document.onselectstart = () => false;
      document.ondragstart = () => false;
      document.addEventListener("mousemove", moveFn);
      document.addEventListener("mouseup", upFn);
      document.addEventListener("touchmove", moveFn);
      document.addEventListener("touchend", upFn);
      isDragging = true;
      (_a = options.start) == null ? void 0 : _a.call(options, event);
    };
    element.addEventListener("mousedown", downFn);
    element.addEventListener("touchstart", downFn, { passive: false });
  }
  const getOffsetTop = (el) => {
    let offset2 = 0;
    let parent2 = el;
    while (parent2) {
      offset2 += parent2.offsetTop;
      parent2 = parent2.offsetParent;
    }
    return offset2;
  };
  const getOffsetTopDistance = (el, containerEl) => {
    return Math.abs(getOffsetTop(el) - getOffsetTop(containerEl));
  };
  const getClientXY = (event) => {
    let clientX;
    let clientY;
    if (event.type === "touchend") {
      clientY = event.changedTouches[0].clientY;
      clientX = event.changedTouches[0].clientX;
    } else if (event.type.startsWith("touch")) {
      clientY = event.touches[0].clientY;
      clientX = event.touches[0].clientX;
    } else {
      clientY = event.clientY;
      clientX = event.clientX;
    }
    return {
      clientX,
      clientY
    };
  };
  const useSlider = (props2, { key, minValue: minValue2, maxValue: maxValue2 }) => {
    const instance = getCurrentInstance();
    const thumb = shallowRef();
    const bar = shallowRef();
    const currentValue = computed(() => props2.color.get(key));
    function handleClick(event) {
      var _a;
      if (props2.disabled) return;
      const target = event.target;
      if (target !== thumb.value) {
        handleDrag(event);
      }
      (_a = thumb.value) == null ? void 0 : _a.focus();
    }
    function handleDrag(event) {
      if (!bar.value || !thumb.value || props2.disabled) return;
      const el = instance.vnode.el;
      const rect = el.getBoundingClientRect();
      const { clientX, clientY } = getClientXY(event);
      let value;
      if (!props2.vertical) {
        let left = clientX - rect.left;
        left = Math.max(thumb.value.offsetWidth / 2, left);
        left = Math.min(left, rect.width - thumb.value.offsetWidth / 2);
        value = Math.round(
          (left - thumb.value.offsetWidth / 2) / (rect.width - thumb.value.offsetWidth) * maxValue2
        );
      } else {
        let top = clientY - rect.top;
        top = Math.max(thumb.value.offsetHeight / 2, top);
        top = Math.min(top, rect.height - thumb.value.offsetHeight / 2);
        value = Math.round(
          (top - thumb.value.offsetHeight / 2) / (rect.height - thumb.value.offsetHeight) * maxValue2
        );
      }
      props2.color.set(key, value);
    }
    function handleKeydown(event) {
      if (props2.disabled) return;
      const { shiftKey } = event;
      const code = getEventCode(event);
      const step2 = shiftKey ? 10 : 1;
      const reverse = key === "hue" ? -1 : 1;
      let isPreventDefault = true;
      switch (code) {
        case EVENT_CODE.left:
        case EVENT_CODE.down:
          incrementPosition(-step2 * reverse);
          break;
        case EVENT_CODE.right:
        case EVENT_CODE.up:
          incrementPosition(step2 * reverse);
          break;
        case EVENT_CODE.home:
          props2.color.set(key, key === "hue" ? maxValue2 : minValue2);
          break;
        case EVENT_CODE.end:
          props2.color.set(key, key === "hue" ? minValue2 : maxValue2);
          break;
        case EVENT_CODE.pageDown:
          incrementPosition(-4 * reverse);
          break;
        case EVENT_CODE.pageUp:
          incrementPosition(4 * reverse);
          break;
        default:
          isPreventDefault = false;
          break;
      }
      isPreventDefault && event.preventDefault();
    }
    function incrementPosition(step2) {
      let next = currentValue.value + step2;
      next = next < minValue2 ? minValue2 : next > maxValue2 ? maxValue2 : next;
      props2.color.set(key, next);
    }
    return {
      thumb,
      bar,
      currentValue,
      handleDrag,
      handleClick,
      handleKeydown
    };
  };
  const useSliderDOM = (props2, {
    namespace,
    maxValue: maxValue2,
    bar,
    thumb,
    currentValue,
    handleDrag,
    getBackground
  }) => {
    const instance = getCurrentInstance();
    const ns = useNamespace(namespace);
    const thumbLeft = ref(0);
    const thumbTop = ref(0);
    const background = ref();
    function getThumbLeft() {
      if (!thumb.value) return 0;
      if (props2.vertical) return 0;
      const el = instance.vnode.el;
      const value = currentValue.value;
      if (!el) return 0;
      return Math.round(
        value * (el.offsetWidth - thumb.value.offsetWidth / 2) / maxValue2
      );
    }
    function getThumbTop() {
      if (!thumb.value) return 0;
      const el = instance.vnode.el;
      if (!props2.vertical) return 0;
      const value = currentValue.value;
      if (!el) return 0;
      return Math.round(
        value * (el.offsetHeight - thumb.value.offsetHeight / 2) / maxValue2
      );
    }
    function update() {
      thumbLeft.value = getThumbLeft();
      thumbTop.value = getThumbTop();
      background.value = getBackground == null ? void 0 : getBackground();
    }
    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();
    });
    watch(currentValue, () => update());
    watch(
      () => props2.color.value,
      () => update()
    );
    const rootKls = computed(() => [
      ns.b(),
      ns.is("vertical", props2.vertical),
      ns.is("disabled", props2.disabled)
    ]);
    const barKls = computed(() => ns.e("bar"));
    const thumbKls = computed(() => ns.e("thumb"));
    const barStyle = computed(() => ({ background: background.value }));
    const thumbStyle = computed(() => ({
      left: addUnit(thumbLeft.value),
      top: addUnit(thumbTop.value)
    }));
    return {
      rootKls,
      barKls,
      barStyle,
      thumbKls,
      thumbStyle,
      thumbLeft,
      thumbTop,
      update
    };
  };
  const _hoisted_1$1M = ["aria-label", "aria-valuenow", "aria-valuetext", "aria-orientation", "tabindex", "aria-disabled"];
  const minValue$1 = 0;
  const maxValue$1 = 100;
  var _sfc_main$2B = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElColorAlphaSlider"
    },
    __name: "alpha-slider",
    props: alphaSliderProps,
    setup(__props, { expose: __expose }) {
      const props2 = __props;
      const { currentValue, bar, thumb, handleDrag, handleClick, handleKeydown } = useSlider(props2, { key: "alpha", minValue: minValue$1, maxValue: maxValue$1 });
      const { rootKls, barKls, barStyle, thumbKls, thumbStyle, update } = useSliderDOM(props2, {
        namespace: "color-alpha-slider",
        maxValue: maxValue$1,
        currentValue,
        bar,
        thumb,
        handleDrag,
        getBackground
      });
      const { t } = useLocale();
      const ariaLabel = computed(() => t("el.colorpicker.alphaLabel"));
      const ariaValuetext = computed(() => {
        return t("el.colorpicker.alphaDescription", {
          alpha: currentValue.value,
          color: props2.color.value
        });
      });
      function getBackground() {
        if (props2.color && props2.color.value) {
          const { r, g, b: b2 } = props2.color.toRgb();
          return `linear-gradient(to right, rgba(${r}, ${g}, ${b2}, 0) 0%, rgba(${r}, ${g}, ${b2}, 1) 100%)`;
        }
        return "";
      }
      __expose({
        /**
         * @description update alpha slider manually
         * @type {Function}
         */
        update,
        /**
         * @description bar element ref
         * @type {HTMLElement}
         */
        bar,
        /**
         * @description thumb element ref
         * @type {HTMLElement}
         */
        thumb
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass(unref(rootKls))
          },
          [
            createBaseVNode(
              "div",
              {
                ref_key: "bar",
                ref: bar,
                class: normalizeClass(unref(barKls)),
                style: normalizeStyle(unref(barStyle)),
                onClick: _cache[0] || (_cache[0] = //@ts-ignore
                (...args) => unref(handleClick) && unref(handleClick)(...args))
              },
              null,
              6
              /* CLASS, STYLE */
            ),
            createBaseVNode("div", {
              ref_key: "thumb",
              ref: thumb,
              class: normalizeClass(unref(thumbKls)),
              style: normalizeStyle(unref(thumbStyle)),
              "aria-label": ariaLabel.value,
              "aria-valuenow": unref(currentValue),
              "aria-valuetext": ariaValuetext.value,
              "aria-orientation": __props.vertical ? "vertical" : "horizontal",
              "aria-valuemin": minValue$1,
              "aria-valuemax": maxValue$1,
              role: "slider",
              tabindex: __props.disabled ? void 0 : 0,
              "aria-disabled": __props.disabled,
              onKeydown: _cache[1] || (_cache[1] = //@ts-ignore
              (...args) => unref(handleKeydown) && unref(handleKeydown)(...args))
            }, null, 46, _hoisted_1$1M)
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const _hoisted_1$1L = ["aria-label", "aria-valuenow", "aria-valuetext", "aria-orientation", "tabindex", "aria-disabled"];
  const minValue = 0;
  const maxValue = 360;
  var _sfc_main$2A = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElColorHueSlider"
    },
    __name: "hue-slider",
    props: hueSliderProps,
    setup(__props, { expose: __expose }) {
      const props2 = __props;
      const { currentValue, bar, thumb, handleDrag, handleClick, handleKeydown } = useSlider(props2, { key: "hue", minValue, maxValue });
      const { rootKls, barKls, thumbKls, thumbStyle, thumbTop, update } = useSliderDOM(props2, {
        namespace: "color-hue-slider",
        maxValue,
        currentValue,
        bar,
        thumb,
        handleDrag
      });
      const { t } = useLocale();
      const ariaLabel = computed(() => t("el.colorpicker.hueLabel"));
      const ariaValuetext = computed(() => {
        return t("el.colorpicker.hueDescription", {
          hue: currentValue.value,
          color: props2.color.value
        });
      });
      __expose({
        /**
         * @description bar element ref
         */
        bar,
        /**
         * @description thumb element ref
         */
        thumb,
        /**
         * @description thumb top position, only for vertical slider
         */
        thumbTop,
        /**
         * @description update hue slider manually
         */
        update
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass(unref(rootKls))
          },
          [
            createBaseVNode(
              "div",
              {
                ref_key: "bar",
                ref: bar,
                class: normalizeClass(unref(barKls)),
                onClick: _cache[0] || (_cache[0] = //@ts-ignore
                (...args) => unref(handleClick) && unref(handleClick)(...args))
              },
              null,
              2
              /* CLASS */
            ),
            createBaseVNode("div", {
              ref_key: "thumb",
              ref: thumb,
              class: normalizeClass(unref(thumbKls)),
              style: normalizeStyle(unref(thumbStyle)),
              "aria-label": ariaLabel.value,
              "aria-valuenow": unref(currentValue),
              "aria-valuetext": ariaValuetext.value,
              "aria-orientation": __props.vertical ? "vertical" : "horizontal",
              "aria-valuemin": minValue,
              "aria-valuemax": maxValue,
              role: "slider",
              tabindex: __props.disabled ? void 0 : 0,
              "aria-disabled": __props.disabled,
              onKeydown: _cache[1] || (_cache[1] = //@ts-ignore
              (...args) => unref(handleKeydown) && unref(handleKeydown)(...args))
            }, null, 46, _hoisted_1$1L)
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const predefineProps = buildProps({
    colors: {
      type: definePropType(Array),
      required: true
    },
    color: {
      type: definePropType(Object),
      required: true
    },
    enableAlpha: {
      type: Boolean,
      required: true
    },
    disabled: Boolean
  });
  var __defProp$6 = Object.defineProperty;
  var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  var __publicField$6 = (obj, key, value) => __defNormalProp$6(obj, typeof key !== "symbol" ? key + "" : key, value);
  class Color {
    constructor(options = {}) {
      __publicField$6(this, "_hue", 0);
      __publicField$6(this, "_saturation", 100);
      __publicField$6(this, "_value", 100);
      __publicField$6(this, "_alpha", 100);
      __publicField$6(this, "_tiny", new TinyColor());
      __publicField$6(this, "_isValid", false);
      __publicField$6(this, "enableAlpha", false);
      __publicField$6(this, "format", "");
      __publicField$6(this, "value", "");
      __publicField$6(this, "selected");
      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 p2 in prop) {
          if (hasOwn(prop, p2)) {
            this.set(p2, prop[p2]);
          }
        }
        return;
      }
      this[`_${prop}`] = value;
      this._isValid = true;
      this.doOnChange();
    }
    get(prop) {
      if (["hue", "saturation", "value", "alpha"].includes(prop)) {
        return Math.round(this[`_${prop}`]);
      }
      return this[`_${prop}`];
    }
    toRgb() {
      return this._isValid ? this._tiny.toRgb() : { r: 255, g: 255, b: 255, a: 0 };
    }
    fromString(value) {
      const color = new TinyColor(value);
      this._isValid = color.isValid;
      if (color.isValid) {
        const { h: h2, s: s2, v: v2, a: a2 } = color.toHsv();
        this._hue = h2;
        this._saturation = s2 * 100;
        this._value = v2 * 100;
        this._alpha = a2 * 100;
      } else {
        this._hue = 0;
        this._saturation = 100;
        this._value = 100;
        this._alpha = 100;
      }
      this.doOnChange();
    }
    clear() {
      this._isValid = false;
      this.value = "";
      this._hue = 0;
      this._saturation = 100;
      this._value = 100;
      this._alpha = 100;
    }
    compare(color) {
      const compareColor = new TinyColor({
        h: color._hue,
        s: color._saturation / 100,
        v: color._value / 100,
        a: color._alpha / 100
      });
      return this._tiny.equals(compareColor);
    }
    doOnChange() {
      const { _hue, _saturation, _value, _alpha, format: format2, enableAlpha } = this;
      let _format = format2 || (enableAlpha ? "rgb" : "hex");
      if (format2 === "hex" && enableAlpha) {
        _format = "hex8";
      }
      this._tiny = new TinyColor({
        h: _hue,
        s: _saturation / 100,
        v: _value / 100,
        a: _alpha / 100
      });
      this.value = this._isValid ? this._tiny.toString(_format) : "";
    }
  }
  const usePredefine = (props2) => {
    const { currentColor } = inject(colorPickerPanelContextKey);
    const rgbaColors = ref(parseColors(props2.colors, props2.color));
    watch(
      () => currentColor.value,
      (val) => {
        const color = new Color({
          value: val,
          enableAlpha: props2.enableAlpha
        });
        rgbaColors.value.forEach((item) => {
          item.selected = color.compare(item);
        });
      }
    );
    watchEffect(() => {
      rgbaColors.value = parseColors(props2.colors, props2.color);
    });
    function handleSelect(index) {
      props2.color.fromString(props2.colors[index]);
    }
    function parseColors(colors, color) {
      return colors.map((value) => {
        const c2 = new Color({
          value,
          enableAlpha: props2.enableAlpha
        });
        c2.selected = c2.compare(color);
        return c2;
      });
    }
    return {
      rgbaColors,
      handleSelect
    };
  };
  const usePredefineDOM = (props2) => {
    const ns = useNamespace("color-predefine");
    const rootKls = computed(() => [ns.b(), ns.is("disabled", props2.disabled)]);
    const colorsKls = computed(() => ns.e("colors"));
    function colorSelectorKls(item) {
      return [
        ns.e("color-selector"),
        ns.is("alpha", item.get("alpha") < 100),
        { selected: item.selected }
      ];
    }
    return {
      rootKls,
      colorsKls,
      colorSelectorKls
    };
  };
  const _hoisted_1$1K = ["disabled", "aria-label", "onClick"];
  var _sfc_main$2z = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElColorPredefine"
    },
    __name: "predefine",
    props: predefineProps,
    setup(__props) {
      const props2 = __props;
      const { rgbaColors, handleSelect } = usePredefine(props2);
      const { rootKls, colorsKls, colorSelectorKls } = usePredefineDOM(props2);
      const { t } = useLocale();
      const ariaLabel = (value) => {
        return t("el.colorpicker.predefineDescription", { value });
      };
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass(unref(rootKls))
          },
          [
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(colorsKls))
              },
              [
                (openBlock(true), createElementBlock(
                  Fragment,
                  null,
                  renderList(unref(rgbaColors), (item, index) => {
                    return openBlock(), createElementBlock("button", {
                      key: __props.colors[index],
                      type: "button",
                      disabled: __props.disabled,
                      "aria-label": ariaLabel(item.value),
                      class: normalizeClass(unref(colorSelectorKls)(item)),
                      onClick: ($event) => unref(handleSelect)(index)
                    }, [
                      createBaseVNode(
                        "div",
                        {
                          style: normalizeStyle({ backgroundColor: item.value })
                        },
                        null,
                        4
                        /* STYLE */
                      )
                    ], 10, _hoisted_1$1K);
                  }),
                  128
                  /* KEYED_FRAGMENT */
                ))
              ],
              2
              /* CLASS */
            )
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const svPanelProps = buildProps({
    color: {
      type: definePropType(Object),
      required: true
    },
    disabled: Boolean
  });
  const useSvPanel = (props2) => {
    const instance = getCurrentInstance();
    const cursorRef = ref();
    const cursorTop = ref(0);
    const cursorLeft = ref(0);
    const background = ref("hsl(0, 100%, 50%)");
    const saturation = computed(() => props2.color.get("saturation"));
    const brightness = computed(() => props2.color.get("value"));
    const hue = computed(() => props2.color.get("hue"));
    function handleClick(event) {
      var _a;
      if (props2.disabled) return;
      const target = event.target;
      if (target !== cursorRef.value) {
        handleDrag(event);
      }
      (_a = cursorRef.value) == null ? void 0 : _a.focus({ preventScroll: true });
    }
    function handleDrag(event) {
      if (props2.disabled) return;
      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;
      props2.color.set({
        saturation: left / rect.width * 100,
        value: 100 - top / rect.height * 100
      });
    }
    function handleKeydown(event) {
      if (props2.disabled) return;
      const { shiftKey } = event;
      const code = getEventCode(event);
      const step2 = shiftKey ? 10 : 1;
      let isPreventDefault = true;
      switch (code) {
        case EVENT_CODE.left:
          incrementSaturation(-step2);
          break;
        case EVENT_CODE.right:
          incrementSaturation(step2);
          break;
        case EVENT_CODE.up:
          incrementBrightness(step2);
          break;
        case EVENT_CODE.down:
          incrementBrightness(-step2);
          break;
        default:
          isPreventDefault = false;
          break;
      }
      isPreventDefault && event.preventDefault();
    }
    function incrementSaturation(step2) {
      let next = saturation.value + step2;
      next = next < 0 ? 0 : next > 100 ? 100 : next;
      props2.color.set("saturation", next);
    }
    function incrementBrightness(step2) {
      let next = brightness.value + step2;
      next = next < 0 ? 0 : next > 100 ? 100 : next;
      props2.color.set("value", next);
    }
    return {
      cursorRef,
      cursorTop,
      cursorLeft,
      background,
      saturation,
      brightness,
      hue,
      handleClick,
      handleDrag,
      handleKeydown
    };
  };
  const useSvPanelDOM = (props2, {
    cursorTop,
    cursorLeft,
    background,
    handleDrag
  }) => {
    const instance = getCurrentInstance();
    const ns = useNamespace("color-svpanel");
    function update() {
      const saturation = props2.color.get("saturation");
      const brightness = props2.color.get("value");
      const el = instance.vnode.el;
      const { clientWidth: width, clientHeight: height } = el;
      cursorLeft.value = saturation * width / 100;
      cursorTop.value = (100 - brightness) * height / 100;
      background.value = `hsl(${props2.color.get("hue")}, 100%, 50%)`;
    }
    onMounted(() => {
      draggable(instance.vnode.el, {
        drag: (event) => {
          handleDrag(event);
        },
        end: (event) => {
          handleDrag(event);
        }
      });
      update();
    });
    watch(
      [
        () => props2.color.get("hue"),
        () => props2.color.get("value"),
        () => props2.color.value
      ],
      () => update()
    );
    const rootKls = computed(() => ns.b());
    const cursorKls = computed(() => ns.e("cursor"));
    const rootStyle = computed(() => ({
      backgroundColor: background.value
    }));
    const cursorStyle = computed(() => ({
      top: addUnit(cursorTop.value),
      left: addUnit(cursorLeft.value)
    }));
    return {
      rootKls,
      cursorKls,
      rootStyle,
      cursorStyle,
      update
    };
  };
  const _hoisted_1$1J = ["tabindex", "aria-disabled", "aria-label", "aria-valuenow", "aria-valuetext"];
  var _sfc_main$2y = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElSvPanel"
    },
    __name: "sv-panel",
    props: svPanelProps,
    setup(__props, { expose: __expose }) {
      const props2 = __props;
      const {
        cursorRef,
        cursorTop,
        cursorLeft,
        background,
        saturation,
        brightness,
        handleClick,
        handleDrag,
        handleKeydown
      } = useSvPanel(props2);
      const { rootKls, cursorKls, rootStyle, cursorStyle, update } = useSvPanelDOM(
        props2,
        {
          cursorTop,
          cursorLeft,
          background,
          handleDrag
        }
      );
      const { t } = useLocale();
      const ariaLabel = computed(() => t("el.colorpicker.svLabel"));
      const ariaValuetext = computed(() => {
        return t("el.colorpicker.svDescription", {
          saturation: saturation.value,
          brightness: brightness.value,
          color: props2.color.value
        });
      });
      __expose({
        /**
         * @description update sv panel manually
         */
        update
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass(unref(rootKls)),
            style: normalizeStyle(unref(rootStyle)),
            onClick: _cache[1] || (_cache[1] = //@ts-ignore
            (...args) => unref(handleClick) && unref(handleClick)(...args))
          },
          [
            createBaseVNode("div", {
              ref_key: "cursorRef",
              ref: cursorRef,
              class: normalizeClass(unref(cursorKls)),
              style: normalizeStyle(unref(cursorStyle)),
              tabindex: __props.disabled ? void 0 : 0,
              "aria-disabled": __props.disabled,
              role: "slider",
              "aria-valuemin": "0,0",
              "aria-valuemax": "100,100",
              "aria-label": ariaLabel.value,
              "aria-valuenow": `${unref(saturation)},${unref(brightness)}`,
              "aria-valuetext": ariaValuetext.value,
              onKeydown: _cache[0] || (_cache[0] = //@ts-ignore
              (...args) => unref(handleKeydown) && unref(handleKeydown)(...args))
            }, null, 46, _hoisted_1$1J)
          ],
          6
          /* CLASS, STYLE */
        );
      };
    }
  });
  const useCommonColor = (props2, emit2) => {
    const color = reactive(
      new Color({
        enableAlpha: props2.showAlpha,
        format: props2.colorFormat || "",
        value: props2.modelValue
      })
    );
    watch(
      () => [props2.colorFormat, props2.showAlpha],
      () => {
        color.enableAlpha = props2.showAlpha;
        color.format = props2.colorFormat || color.format;
        color.doOnChange();
        emit2(UPDATE_MODEL_EVENT, color.value);
      }
    );
    return {
      color
    };
  };
  var _sfc_main$2x = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElColorPickerPanel"
    },
    __name: "color-picker-panel",
    props: colorPickerPanelProps,
    emits: colorPickerPanelEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const ns = useNamespace("color-picker-panel");
      const { formItem } = useFormItem();
      const disabled = useFormDisabled();
      const hueRef = ref();
      const svRef = ref();
      const alphaRef = ref();
      const inputRef = ref();
      const customInput = ref("");
      const { color } = inject(
        ROOT_COMMON_COLOR_INJECTION_KEY,
        () => useCommonColor(props2, emit2),
        true
      );
      function handleConfirm() {
        color.fromString(customInput.value);
        if (color.value !== customInput.value) {
          customInput.value = color.value;
        }
      }
      function handleFocusout() {
        var _a;
        if (props2.validateEvent) {
          (_a = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a.call(formItem, "blur").catch((err) => debugWarn());
        }
      }
      function update() {
        var _a, _b, _c;
        (_a = hueRef.value) == null ? void 0 : _a.update();
        (_b = svRef.value) == null ? void 0 : _b.update();
        (_c = alphaRef.value) == null ? void 0 : _c.update();
      }
      onMounted(() => {
        if (props2.modelValue) {
          customInput.value = color.value;
        }
        nextTick(update);
      });
      watch(
        () => props2.modelValue,
        (newVal) => {
          if (newVal !== color.value) {
            newVal ? color.fromString(newVal) : color.clear();
          }
        }
      );
      watch(
        () => color.value,
        (val) => {
          emit2(UPDATE_MODEL_EVENT, val);
          customInput.value = val;
          if (props2.validateEvent) {
            formItem == null ? void 0 : formItem.validate("change").catch((err) => debugWarn());
          }
        }
      );
      provide(colorPickerPanelContextKey, {
        currentColor: computed(() => color.value)
      });
      __expose({
        /**
         * @description current color object
         */
        color,
        /**
         * @description custom input ref
         */
        inputRef,
        /**
         * @description update sub components
         */
        update
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass([unref(ns).b(), unref(ns).is("disabled", unref(disabled)), unref(ns).is("border", __props.border)]),
            onFocusout: handleFocusout
          },
          [
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(ns).e("wrapper"))
              },
              [
                createVNode(_sfc_main$2A, {
                  ref_key: "hueRef",
                  ref: hueRef,
                  class: "hue-slider",
                  color: unref(color),
                  vertical: "",
                  disabled: unref(disabled)
                }, null, 8, ["color", "disabled"]),
                createVNode(_sfc_main$2y, {
                  ref_key: "svRef",
                  ref: svRef,
                  color: unref(color),
                  disabled: unref(disabled)
                }, null, 8, ["color", "disabled"])
              ],
              2
              /* CLASS */
            ),
            __props.showAlpha ? (openBlock(), createBlock(_sfc_main$2B, {
              key: 0,
              ref_key: "alphaRef",
              ref: alphaRef,
              color: unref(color),
              disabled: unref(disabled)
            }, null, 8, ["color", "disabled"])) : createCommentVNode("v-if", true),
            __props.predefine ? (openBlock(), createBlock(_sfc_main$2z, {
              key: 1,
              ref: "predefine",
              "enable-alpha": __props.showAlpha,
              color: unref(color),
              colors: __props.predefine,
              disabled: unref(disabled)
            }, null, 8, ["enable-alpha", "color", "colors", "disabled"])) : createCommentVNode("v-if", true),
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(ns).e("footer"))
              },
              [
                createVNode(unref(ElInput), {
                  ref_key: "inputRef",
                  ref: inputRef,
                  modelValue: customInput.value,
                  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => customInput.value = $event),
                  "validate-event": false,
                  size: "small",
                  disabled: unref(disabled),
                  onChange: handleConfirm
                }, null, 8, ["modelValue", "disabled"]),
                renderSlot(_ctx.$slots, "footer")
              ],
              2
              /* CLASS */
            )
          ],
          34
          /* CLASS, NEED_HYDRATION */
        );
      };
    }
  });
  const ElColorPickerPanel = withInstall(_sfc_main$2x);
  const colorPickerProps = buildProps({
    /**
     * @description when color-picker inactive and persistent is false, the color panel will be destroyed
     */
    persistent: {
      type: Boolean,
      default: true
    },
    /**
     * @description binding value
     */
    modelValue: {
      type: definePropType(String),
      default: void 0
    },
    /**
     * @description ColorPicker id
     */
    id: String,
    /**
     * @description whether to display the alpha slider
     */
    showAlpha: Boolean,
    /**
     * @description color format of v-model
     */
    colorFormat: String,
    /**
     * @description whether to disable the ColorPicker
     */
    disabled: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description whether to show clear button
     */
    clearable: {
      type: Boolean,
      default: true
    },
    /**
     * @description size of ColorPicker
     */
    size: useSizeProp,
    /**
     * @description custom class name for ColorPicker's dropdown
     */
    popperClass: useTooltipContentProps.popperClass,
    /**
     * @description custom style for ColorPicker's dropdown
     */
    popperStyle: useTooltipContentProps.popperStyle,
    /**
     * @description ColorPicker tabindex
     */
    tabindex: {
      type: [String, Number],
      default: 0
    },
    /**
     * @description whether color-picker popper is teleported to the body
     */
    teleported: useTooltipContentProps.teleported,
    /**
     * @description which color-picker panel appends to
     */
    appendTo: useTooltipContentProps.appendTo,
    /**
     * @description predefined color options
     */
    predefine: {
      type: definePropType(Array)
    },
    /**
     * @description whether to trigger form validation
     */
    validateEvent: {
      type: Boolean,
      default: true
    },
    ...useEmptyValuesProps,
    ...useAriaProps(["ariaLabel"])
  });
  const colorPickerEmits = {
    [UPDATE_MODEL_EVENT]: (val) => isString(val) || isNil(val),
    [CHANGE_EVENT]: (val) => isString(val) || isNil(val),
    activeChange: (val) => isString(val) || isNil(val),
    focus: (evt) => evt instanceof FocusEvent,
    blur: (evt) => evt instanceof FocusEvent,
    clear: () => true
  };
  const _hoisted_1$1I = ["id", "aria-label", "aria-labelledby", "aria-description", "aria-disabled", "tabindex"];
  var _sfc_main$2w = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElColorPicker"
    },
    __name: "color-picker",
    props: colorPickerProps,
    emits: colorPickerEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const { t } = useLocale();
      const ns = useNamespace("color");
      const { formItem } = useFormItem();
      const colorSize = useFormSize();
      const colorDisabled = useFormDisabled();
      const { valueOnClear, isEmptyValue: isEmptyValue2 } = useEmptyValues(props2, null);
      const commonColor = useCommonColor(props2, emit2);
      const { inputId: buttonId, isLabeledByFormItem } = useFormItemInputId(props2, {
        formItemContext: formItem
      });
      const popper = ref();
      const triggerRef2 = ref();
      const pickerPanelRef = ref();
      const showPicker = ref(false);
      const showPanelColor = ref(false);
      let shouldActiveChange = true;
      const { isFocused, handleFocus, handleBlur } = useFocusController(triggerRef2, {
        disabled: colorDisabled,
        beforeBlur(event) {
          var _a;
          return (_a = popper.value) == null ? void 0 : _a.isFocusInsideContent(event);
        },
        afterBlur() {
          var _a;
          setShowPicker(false);
          resetColor();
          if (props2.validateEvent) {
            (_a = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a.call(formItem, "blur").catch((err) => debugWarn());
          }
        }
      });
      const color = reactiveComputed(
        () => {
          var _a, _b;
          return (_b = (_a = pickerPanelRef.value) == null ? void 0 : _a.color) != null ? _b : commonColor.color;
        }
      );
      const panelProps = computed(
        () => pick(props2, Object.keys(colorPickerPanelProps))
      );
      const displayedColor = computed(() => {
        if (!props2.modelValue && !showPanelColor.value) {
          return "transparent";
        }
        return displayedRgb(color, props2.showAlpha);
      });
      const currentColor = computed(() => {
        return !props2.modelValue && !showPanelColor.value ? "" : color.value;
      });
      const buttonAriaLabel = computed(() => {
        return !isLabeledByFormItem.value ? props2.ariaLabel || t("el.colorpicker.defaultLabel") : void 0;
      });
      const buttonAriaLabelledby = computed(() => {
        return isLabeledByFormItem.value ? formItem == null ? void 0 : formItem.labelId : void 0;
      });
      const btnKls = computed(() => {
        return [
          ns.b("picker"),
          ns.is("disabled", colorDisabled.value),
          ns.bm("picker", colorSize.value),
          ns.is("focused", isFocused.value)
        ];
      });
      function displayedRgb(color2, showAlpha) {
        const { r, g, b: b2, a: a2 } = color2.toRgb();
        return showAlpha ? `rgba(${r}, ${g}, ${b2}, ${a2})` : `rgb(${r}, ${g}, ${b2})`;
      }
      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() {
        nextTick(() => {
          if (props2.modelValue) {
            color.fromString(props2.modelValue);
          } else {
            color.value = "";
            nextTick(() => {
              showPanelColor.value = false;
            });
          }
        });
      }
      function handleTrigger() {
        if (colorDisabled.value) return;
        if (showPicker.value) {
          resetColor();
        }
        debounceSetShowPicker(!showPicker.value);
      }
      function confirmValue() {
        const value = isEmptyValue2(color.value) ? valueOnClear.value : color.value;
        emit2(UPDATE_MODEL_EVENT, value);
        emit2(CHANGE_EVENT, value);
        if (props2.validateEvent) {
          formItem == null ? void 0 : formItem.validate("change").catch((err) => debugWarn());
        }
        debounceSetShowPicker(false);
        nextTick(() => {
          const newColor = new Color({
            enableAlpha: props2.showAlpha,
            format: props2.colorFormat || "",
            value: props2.modelValue
          });
          if (!color.compare(newColor)) {
            resetColor();
          }
        });
      }
      function clear() {
        debounceSetShowPicker(false);
        emit2(UPDATE_MODEL_EVENT, valueOnClear.value);
        emit2(CHANGE_EVENT, valueOnClear.value);
        if (props2.modelValue !== valueOnClear.value && props2.validateEvent) {
          formItem == null ? void 0 : formItem.validate("change").catch((err) => debugWarn());
        }
        resetColor();
        emit2("clear");
      }
      function handleShowTooltip() {
        var _a, _b;
        (_b = (_a = pickerPanelRef == null ? void 0 : pickerPanelRef.value) == null ? void 0 : _a.inputRef) == null ? void 0 : _b.focus();
      }
      function handleClickOutside() {
        if (!showPicker.value) return;
        hide();
        isFocused.value && focus();
      }
      function handleEsc(event) {
        event.preventDefault();
        event.stopPropagation();
        setShowPicker(false);
        resetColor();
      }
      function handleKeyDown(event) {
        const code = getEventCode(event);
        switch (code) {
          case EVENT_CODE.enter:
          case EVENT_CODE.numpadEnter:
          case EVENT_CODE.space:
            event.preventDefault();
            event.stopPropagation();
            show();
            break;
          case EVENT_CODE.esc:
            handleEsc(event);
            break;
        }
      }
      function focus() {
        triggerRef2.value.focus();
      }
      function blur() {
        triggerRef2.value.blur();
      }
      watch(
        () => currentColor.value,
        (val) => {
          shouldActiveChange && emit2("activeChange", val);
          shouldActiveChange = true;
        }
      );
      watch(
        () => color.value,
        () => {
          if (!props2.modelValue && !showPanelColor.value) {
            showPanelColor.value = true;
          }
        }
      );
      watch(
        () => props2.modelValue,
        (newVal) => {
          if (!newVal) {
            showPanelColor.value = false;
          } else if (newVal && newVal !== color.value) {
            shouldActiveChange = false;
            color.fromString(newVal);
          }
        }
      );
      watch(
        () => showPicker.value,
        () => {
          pickerPanelRef.value && nextTick(pickerPanelRef.value.update);
        }
      );
      provide(ROOT_COMMON_COLOR_INJECTION_KEY, commonColor);
      __expose({
        /**
         * @description current color object
         */
        color,
        /**
         * @description manually show ColorPicker
         */
        show,
        /**
         * @description manually hide ColorPicker
         */
        hide,
        /**
         * @description focus the input element
         */
        focus,
        /**
         * @description blur the input element
         */
        blur
      });
      return (_ctx, _cache) => {
        return openBlock(), createBlock(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": [unref(ns).be("picker", "panel"), __props.popperClass],
          "popper-style": __props.popperStyle,
          "stop-popper-mouse-event": false,
          pure: "",
          loop: "",
          role: "dialog",
          effect: "light",
          trigger: "click",
          teleported: __props.teleported,
          transition: `${unref(ns).namespace.value}-zoom-in-top`,
          persistent: __props.persistent,
          "append-to": __props.appendTo,
          onShow: handleShowTooltip,
          onHide: _cache[2] || (_cache[2] = ($event) => setShowPicker(false))
        }, {
          content: withCtx(() => [
            withDirectives((openBlock(), createBlock(
              unref(ElColorPickerPanel),
              mergeProps({
                ref_key: "pickerPanelRef",
                ref: pickerPanelRef
              }, panelProps.value, {
                border: false,
                "validate-event": false,
                onKeydown: withKeys(handleEsc, ["esc"])
              }),
              {
                footer: withCtx(() => [
                  createBaseVNode("div", null, [
                    __props.clearable ? (openBlock(), createBlock(unref(ElButton), {
                      key: 0,
                      class: normalizeClass(unref(ns).be("footer", "link-btn")),
                      text: "",
                      size: "small",
                      onClick: clear
                    }, {
                      default: withCtx(() => [
                        createTextVNode(
                          toDisplayString(unref(t)("el.colorpicker.clear")),
                          1
                          /* TEXT */
                        )
                      ]),
                      _: 1
                      /* STABLE */
                    }, 8, ["class"])) : createCommentVNode("v-if", true),
                    createVNode(unref(ElButton), {
                      plain: "",
                      size: "small",
                      class: normalizeClass(unref(ns).be("footer", "btn")),
                      onClick: confirmValue
                    }, {
                      default: withCtx(() => [
                        createTextVNode(
                          toDisplayString(unref(t)("el.colorpicker.confirm")),
                          1
                          /* TEXT */
                        )
                      ]),
                      _: 1
                      /* STABLE */
                    }, 8, ["class"])
                  ])
                ]),
                _: 1
                /* STABLE */
              },
              16
              /* FULL_PROPS */
            )), [
              [unref(ClickOutside), handleClickOutside, triggerRef2.value]
            ])
          ]),
          default: withCtx(() => [
            createBaseVNode("div", mergeProps({
              id: unref(buttonId),
              ref_key: "triggerRef",
              ref: triggerRef2
            }, _ctx.$attrs, {
              class: btnKls.value,
              role: "button",
              "aria-label": buttonAriaLabel.value,
              "aria-labelledby": buttonAriaLabelledby.value,
              "aria-description": unref(t)("el.colorpicker.description", { color: __props.modelValue || "" }),
              "aria-disabled": unref(colorDisabled),
              tabindex: unref(colorDisabled) ? void 0 : __props.tabindex,
              onKeydown: handleKeyDown,
              onFocus: _cache[0] || (_cache[0] = //@ts-ignore
              (...args) => unref(handleFocus) && unref(handleFocus)(...args)),
              onBlur: _cache[1] || (_cache[1] = //@ts-ignore
              (...args) => unref(handleBlur) && unref(handleBlur)(...args))
            }), [
              createBaseVNode(
                "div",
                {
                  class: normalizeClass(unref(ns).be("picker", "trigger")),
                  onClick: handleTrigger
                },
                [
                  createBaseVNode(
                    "span",
                    {
                      class: normalizeClass([unref(ns).be("picker", "color"), unref(ns).is("alpha", __props.showAlpha)])
                    },
                    [
                      createBaseVNode(
                        "span",
                        {
                          class: normalizeClass(unref(ns).be("picker", "color-inner")),
                          style: normalizeStyle({
                            backgroundColor: displayedColor.value
                          })
                        },
                        [
                          withDirectives(createVNode(unref(ElIcon), {
                            class: normalizeClass([unref(ns).be("picker", "icon"), unref(ns).is("icon-arrow-down")])
                          }, {
                            default: withCtx(() => [
                              createVNode(unref(arrow_down_default))
                            ]),
                            _: 1
                            /* STABLE */
                          }, 8, ["class"]), [
                            [vShow, __props.modelValue || showPanelColor.value]
                          ]),
                          withDirectives(createVNode(unref(ElIcon), {
                            class: normalizeClass([unref(ns).be("picker", "empty"), unref(ns).is("icon-close")])
                          }, {
                            default: withCtx(() => [
                              createVNode(unref(close_default))
                            ]),
                            _: 1
                            /* STABLE */
                          }, 8, ["class"]), [
                            [vShow, !__props.modelValue && !showPanelColor.value]
                          ])
                        ],
                        6
                        /* CLASS, STYLE */
                      )
                    ],
                    2
                    /* CLASS */
                  )
                ],
                2
                /* CLASS */
              )
            ], 16, _hoisted_1$1I)
          ]),
          _: 1
          /* STABLE */
        }, 8, ["visible", "popper-class", "popper-style", "teleported", "transition", "persistent", "append-to"]);
      };
    }
  });
  const ElColorPicker = withInstall(_sfc_main$2w);
  const configProviderProps = buildProps({
    /**
     * @description Controlling if the users want a11y features
     */
    a11y: {
      type: Boolean,
      default: true
    },
    /**
     * @description Locale Object
     */
    locale: {
      type: definePropType(Object)
    },
    /**
     * @description global component size
     */
    size: useSizeProp,
    /**
     * @description button related configuration, [see the following table](https://element-plus.org/en-US/component/config-provider.html#button-attribute)
     */
    button: {
      type: definePropType(Object)
    },
    /**
     * @description card related configuration, [see the following table](https://element-plus.org/en-US/component/config-provider.html#card-attribute)
     */
    card: {
      type: definePropType(Object)
    },
    /**
     * @description dialog related configuration, [see the following table](https://element-plus.org/en-US/component/config-provider.html#dialog-attribute)
     */
    dialog: {
      type: definePropType(Object)
    },
    /**
     * @description link related configuration, [see the following table](https://element-plus.org/en-US/component/config-provider.html#link-attribute)
     */
    link: {
      type: definePropType(Object)
    },
    /**
     * @description features at experimental stage to be added, all features are default to be set to false, [see the following table](https://element-plus.org/en-US/component/config-provider.html#experimental-features)                                                                            | ^[object]
     */
    experimentalFeatures: {
      type: definePropType(Object)
    },
    /**
     * @description Controls if we should handle keyboard navigation
     */
    keyboardNavigation: {
      type: Boolean,
      default: true
    },
    /**
     * @description message related configuration, [see the following table](https://element-plus.org/en-US/component/config-provider.html#message-attribute)
     */
    message: {
      type: definePropType(Object)
    },
    /**
     * @description global Initial zIndex
     */
    zIndex: Number,
    /**
     * @description global component className prefix (cooperated with [$namespace](https://github.com/element-plus/element-plus/blob/dev/packages/theme-chalk/src/mixins/config.scss#L1)) | ^[string]
     */
    namespace: {
      type: String,
      default: "el"
    },
    ...useEmptyValuesProps
  });
  const messageConfig = {
    placement: "top"
  };
  const ConfigProvider = /* @__PURE__ */ defineComponent({
    name: "ElConfigProvider",
    props: configProviderProps,
    setup(props2, { slots }) {
      const config = provideGlobalConfig(props2);
      watch(
        () => props2.message,
        (val) => {
          var _a, _b;
          Object.assign(messageConfig, (_b = (_a = config == null ? void 0 : config.value) == null ? void 0 : _a.message) != null ? _b : {}, val != null ? val : {});
        },
        { immediate: true, deep: true }
      );
      return () => renderSlot(slots, "default", { config: config == null ? void 0 : config.value });
    }
  });
  const ElConfigProvider = withInstall(ConfigProvider);
  var _sfc_main$2v = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElContainer"
    },
    __name: "container",
    props: {
      direction: { type: String, required: false }
    },
    setup(__props) {
      const props2 = __props;
      const slots = useSlots();
      const ns = useNamespace("container");
      const isVertical = computed(() => {
        if (props2.direction === "vertical") {
          return true;
        } else if (props2.direction === "horizontal") {
          return false;
        }
        if (slots && slots.default) {
          const vNodes = slots.default();
          return vNodes.some((vNode) => {
            const tag = vNode.type.name;
            return tag === "ElHeader" || tag === "ElFooter";
          });
        } else {
          return false;
        }
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "section",
          {
            class: normalizeClass([unref(ns).b(), unref(ns).is("vertical", isVertical.value)])
          },
          [
            renderSlot(_ctx.$slots, "default")
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  var _sfc_main$2u = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElAside"
    },
    __name: "aside",
    props: {
      width: { type: [String, null], required: false, default: null }
    },
    setup(__props) {
      const props2 = __props;
      const ns = useNamespace("aside");
      const style = computed(
        () => props2.width ? ns.cssVarBlock({ width: props2.width }) : {}
      );
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "aside",
          {
            class: normalizeClass(unref(ns).b()),
            style: normalizeStyle(style.value)
          },
          [
            renderSlot(_ctx.$slots, "default")
          ],
          6
          /* CLASS, STYLE */
        );
      };
    }
  });
  var _sfc_main$2t = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElFooter"
    },
    __name: "footer",
    props: {
      height: { type: [String, null], required: false, default: null }
    },
    setup(__props) {
      const props2 = __props;
      const ns = useNamespace("footer");
      const style = computed(
        () => props2.height ? ns.cssVarBlock({ height: props2.height }) : {}
      );
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "footer",
          {
            class: normalizeClass(unref(ns).b()),
            style: normalizeStyle(style.value)
          },
          [
            renderSlot(_ctx.$slots, "default")
          ],
          6
          /* CLASS, STYLE */
        );
      };
    }
  });
  var _sfc_main$2s = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElHeader"
    },
    __name: "header",
    props: {
      height: { type: [String, null], required: false, default: null }
    },
    setup(__props) {
      const props2 = __props;
      const ns = useNamespace("header");
      const style = computed(() => {
        return props2.height ? ns.cssVarBlock({
          height: props2.height
        }) : {};
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "header",
          {
            class: normalizeClass(unref(ns).b()),
            style: normalizeStyle(style.value)
          },
          [
            renderSlot(_ctx.$slots, "default")
          ],
          6
          /* CLASS, STYLE */
        );
      };
    }
  });
  var _sfc_main$2r = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElMain"
    },
    __name: "main",
    setup(__props) {
      const ns = useNamespace("main");
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "main",
          {
            class: normalizeClass(unref(ns).b())
          },
          [
            renderSlot(_ctx.$slots, "default")
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const ElContainer = withInstall(_sfc_main$2v, {
    Aside: _sfc_main$2u,
    Footer: _sfc_main$2t,
    Header: _sfc_main$2s,
    Main: _sfc_main$2r
  });
  const ElAside = withNoopInstall(_sfc_main$2u);
  const ElFooter = withNoopInstall(_sfc_main$2t);
  const ElHeader = withNoopInstall(_sfc_main$2s);
  const ElMain = withNoopInstall(_sfc_main$2r);
  var customParseFormat$2 = { exports: {} };
  var customParseFormat$1 = customParseFormat$2.exports;
  var hasRequiredCustomParseFormat;
  function requireCustomParseFormat() {
    if (hasRequiredCustomParseFormat) return customParseFormat$2.exports;
    hasRequiredCustomParseFormat = 1;
    (function(module2, exports$1) {
      !(function(e, t) {
        module2.exports = t();
      })(customParseFormat$1, (function() {
        var e = { LTS: "h:mm:ss A", LT: "h:mm A", L: "MM/DD/YYYY", LL: "MMMM D, YYYY", LLL: "MMMM D, YYYY h:mm A", LLLL: "dddd, MMMM D, YYYY h:mm A" }, t = /(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g, n = /\d/, r = /\d\d/, i = /\d\d?/, o2 = /\d*[^-_:/,()\s\d]+/, s2 = {}, a2 = function(e2) {
          return (e2 = +e2) + (e2 > 68 ? 1900 : 2e3);
        };
        var f2 = function(e2) {
          return function(t2) {
            this[e2] = +t2;
          };
        }, h2 = [/[+-]\d\d:?(\d\d)?|Z/, function(e2) {
          (this.zone || (this.zone = {})).offset = (function(e3) {
            if (!e3) return 0;
            if ("Z" === e3) return 0;
            var t2 = e3.match(/([+-]|\d\d)/g), n2 = 60 * t2[1] + (+t2[2] || 0);
            return 0 === n2 ? 0 : "+" === t2[0] ? -n2 : n2;
          })(e2);
        }], u2 = function(e2) {
          var t2 = s2[e2];
          return t2 && (t2.indexOf ? t2 : t2.s.concat(t2.f));
        }, d2 = function(e2, t2) {
          var n2, r2 = s2.meridiem;
          if (r2) {
            for (var i2 = 1; i2 <= 24; i2 += 1) if (e2.indexOf(r2(i2, 0, t2)) > -1) {
              n2 = i2 > 12;
              break;
            }
          } else n2 = e2 === (t2 ? "pm" : "PM");
          return n2;
        }, c2 = { A: [o2, function(e2) {
          this.afternoon = d2(e2, false);
        }], a: [o2, function(e2) {
          this.afternoon = d2(e2, true);
        }], Q: [n, function(e2) {
          this.month = 3 * (e2 - 1) + 1;
        }], S: [n, function(e2) {
          this.milliseconds = 100 * +e2;
        }], SS: [r, function(e2) {
          this.milliseconds = 10 * +e2;
        }], SSS: [/\d{3}/, function(e2) {
          this.milliseconds = +e2;
        }], s: [i, f2("seconds")], ss: [i, f2("seconds")], m: [i, f2("minutes")], mm: [i, f2("minutes")], H: [i, f2("hours")], h: [i, f2("hours")], HH: [i, f2("hours")], hh: [i, f2("hours")], D: [i, f2("day")], DD: [r, f2("day")], Do: [o2, function(e2) {
          var t2 = s2.ordinal, n2 = e2.match(/\d+/);
          if (this.day = n2[0], t2) for (var r2 = 1; r2 <= 31; r2 += 1) t2(r2).replace(/\[|\]/g, "") === e2 && (this.day = r2);
        }], w: [i, f2("week")], ww: [r, f2("week")], M: [i, f2("month")], MM: [r, f2("month")], MMM: [o2, function(e2) {
          var t2 = u2("months"), n2 = (u2("monthsShort") || t2.map((function(e3) {
            return e3.slice(0, 3);
          }))).indexOf(e2) + 1;
          if (n2 < 1) throw new Error();
          this.month = n2 % 12 || n2;
        }], MMMM: [o2, function(e2) {
          var t2 = u2("months").indexOf(e2) + 1;
          if (t2 < 1) throw new Error();
          this.month = t2 % 12 || t2;
        }], Y: [/[+-]?\d+/, f2("year")], YY: [r, function(e2) {
          this.year = a2(e2);
        }], YYYY: [/\d{4}/, f2("year")], Z: h2, ZZ: h2 };
        function l2(n2) {
          var r2, i2;
          r2 = n2, i2 = s2 && s2.formats;
          for (var o3 = (n2 = r2.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g, (function(t2, n3, r3) {
            var o4 = r3 && r3.toUpperCase();
            return n3 || i2[r3] || e[r3] || i2[o4].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, (function(e2, t3, n4) {
              return t3 || n4.slice(1);
            }));
          }))).match(t), a3 = o3.length, f3 = 0; f3 < a3; f3 += 1) {
            var h3 = o3[f3], u3 = c2[h3], d3 = u3 && u3[0], l3 = u3 && u3[1];
            o3[f3] = l3 ? { regex: d3, parser: l3 } : h3.replace(/^\[|\]$/g, "");
          }
          return function(e2) {
            for (var t2 = {}, n3 = 0, r3 = 0; n3 < a3; n3 += 1) {
              var i3 = o3[n3];
              if ("string" == typeof i3) r3 += i3.length;
              else {
                var s3 = i3.regex, f4 = i3.parser, h4 = e2.slice(r3), u4 = s3.exec(h4)[0];
                f4.call(t2, u4), e2 = e2.replace(u4, "");
              }
            }
            return (function(e3) {
              var t3 = e3.afternoon;
              if (void 0 !== t3) {
                var n4 = e3.hours;
                t3 ? n4 < 12 && (e3.hours += 12) : 12 === n4 && (e3.hours = 0), delete e3.afternoon;
              }
            })(t2), t2;
          };
        }
        return function(e2, t2, n2) {
          n2.p.customParseFormat = true, e2 && e2.parseTwoDigitYear && (a2 = e2.parseTwoDigitYear);
          var r2 = t2.prototype, i2 = r2.parse;
          r2.parse = function(e3) {
            var t3 = e3.date, r3 = e3.utc, o3 = e3.args;
            this.$u = r3;
            var a3 = o3[1];
            if ("string" == typeof a3) {
              var f3 = true === o3[2], h3 = true === o3[3], u3 = f3 || h3, d3 = o3[2];
              h3 && (d3 = o3[2]), s2 = this.$locale(), !f3 && d3 && (s2 = n2.Ls[d3]), this.$d = (function(e4, t4, n3, r4) {
                try {
                  if (["x", "X"].indexOf(t4) > -1) return new Date(("X" === t4 ? 1e3 : 1) * e4);
                  var i3 = l2(t4)(e4), o4 = i3.year, s3 = i3.month, a4 = i3.day, f4 = i3.hours, h4 = i3.minutes, u4 = i3.seconds, d4 = i3.milliseconds, c4 = i3.zone, m3 = i3.week, M3 = /* @__PURE__ */ new Date(), Y2 = a4 || (o4 || s3 ? 1 : M3.getDate()), p2 = o4 || M3.getFullYear(), v2 = 0;
                  o4 && !s3 || (v2 = s3 > 0 ? s3 - 1 : M3.getMonth());
                  var D2, w2 = f4 || 0, g = h4 || 0, y = u4 || 0, L2 = d4 || 0;
                  return c4 ? new Date(Date.UTC(p2, v2, Y2, w2, g, y, L2 + 60 * c4.offset * 1e3)) : n3 ? new Date(Date.UTC(p2, v2, Y2, w2, g, y, L2)) : (D2 = new Date(p2, v2, Y2, w2, g, y, L2), m3 && (D2 = r4(D2).week(m3).toDate()), D2);
                } catch (e5) {
                  return /* @__PURE__ */ new Date("");
                }
              })(t3, a3, r3, n2), this.init(), d3 && true !== d3 && (this.$L = this.locale(d3).$L), u3 && t3 != this.format(a3) && (this.$d = /* @__PURE__ */ new Date("")), s2 = {};
            } else if (a3 instanceof Array) for (var c3 = a3.length, m2 = 1; m2 <= c3; m2 += 1) {
              o3[1] = a3[m2 - 1];
              var M2 = n2.apply(this, o3);
              if (M2.isValid()) {
                this.$d = M2.$d, this.$L = M2.$L, this.init();
                break;
              }
              m2 === c3 && (this.$d = /* @__PURE__ */ new Date(""));
            }
            else i2.call(this, e3);
          };
        };
      }));
    })(customParseFormat$2);
    return customParseFormat$2.exports;
  }
  var customParseFormatExports = requireCustomParseFormat();
  const customParseFormat = /* @__PURE__ */ getDefaultExportFromCjs(customParseFormatExports);
  const timeUnits$1 = ["hours", "minutes", "seconds"];
  const PICKER_BASE_INJECTION_KEY = "EP_PICKER_BASE";
  const PICKER_POPPER_OPTIONS_INJECTION_KEY = "ElPopperOptions";
  const ROOT_COMMON_PICKER_INJECTION_KEY = /* @__PURE__ */ Symbol("commonPickerContextKey");
  const DEFAULT_FORMATS_TIME = "HH:mm:ss";
  const DEFAULT_FORMATS_DATE = "YYYY-MM-DD";
  const DEFAULT_FORMATS_DATEPICKER = {
    date: DEFAULT_FORMATS_DATE,
    dates: DEFAULT_FORMATS_DATE,
    week: "gggg[w]ww",
    year: "YYYY",
    years: "YYYY",
    month: "YYYY-MM",
    months: "YYYY-MM",
    datetime: `${DEFAULT_FORMATS_DATE} ${DEFAULT_FORMATS_TIME}`,
    monthrange: "YYYY-MM",
    yearrange: "YYYY",
    daterange: DEFAULT_FORMATS_DATE,
    datetimerange: `${DEFAULT_FORMATS_DATE} ${DEFAULT_FORMATS_TIME}`
  };
  const useCommonPicker = (props2, emit2) => {
    const { lang } = useLocale();
    const pickerVisible = ref(false);
    const pickerActualVisible = ref(false);
    const userInput = ref(null);
    const valueIsEmpty = computed(() => {
      const { modelValue } = props2;
      return !modelValue || isArray$1(modelValue) && !modelValue.filter(Boolean).length;
    });
    const emitInput = (input) => {
      if (!valueEquals(props2.modelValue, input)) {
        let formatted;
        if (isArray$1(input)) {
          formatted = input.map(
            (item) => formatter(item, props2.valueFormat, lang.value)
          );
        } else if (input) {
          formatted = formatter(input, props2.valueFormat, lang.value);
        }
        const emitVal = input ? formatted : input;
        emit2(UPDATE_MODEL_EVENT, emitVal, lang.value);
      }
    };
    const parsedValue = computed(() => {
      var _a;
      let dayOrDays;
      if (valueIsEmpty.value) {
        if (pickerOptions.value.getDefaultValue) {
          dayOrDays = pickerOptions.value.getDefaultValue();
        }
      } else {
        if (isArray$1(props2.modelValue)) {
          dayOrDays = props2.modelValue.map(
            (d2) => parseDate(d2, props2.valueFormat, lang.value)
          );
        } else {
          dayOrDays = parseDate(
            (_a = props2.modelValue) != null ? _a : "",
            props2.valueFormat,
            lang.value
          );
        }
      }
      if (pickerOptions.value.getRangeAvailableTime) {
        const availableResult = pickerOptions.value.getRangeAvailableTime(
          dayOrDays
        );
        if (!isEqual$1(availableResult, dayOrDays)) {
          dayOrDays = availableResult;
          if (!valueIsEmpty.value) {
            emitInput(dayOrDaysToDate(dayOrDays));
          }
        }
      }
      if (isArray$1(dayOrDays) && dayOrDays.some((day) => !day)) {
        dayOrDays = [];
      }
      return dayOrDays;
    });
    const pickerOptions = ref({});
    const onSetPickerOption = (e) => {
      pickerOptions.value[e[0]] = e[1];
      pickerOptions.value.panelReady = true;
    };
    const onCalendarChange = (e) => {
      emit2("calendar-change", e);
    };
    const onPanelChange = (value, mode, view) => {
      emit2("panel-change", value, mode, view);
    };
    const onPick = (date = "", visible = false) => {
      pickerVisible.value = visible;
      let result;
      if (isArray$1(date)) {
        result = date.map((_2) => _2.toDate());
      } else {
        result = date ? date.toDate() : date;
      }
      userInput.value = null;
      emitInput(result);
    };
    return {
      parsedValue,
      pickerActualVisible,
      pickerOptions,
      pickerVisible,
      userInput,
      valueIsEmpty,
      emitInput,
      onCalendarChange,
      onPanelChange,
      onPick,
      onSetPickerOption
    };
  };
  const disabledTimeListsProps = buildProps({
    /**
     * @description To specify the array of hours that cannot be selected
     */
    disabledHours: {
      type: definePropType(Function)
    },
    /**
     * @description To specify the array of minutes that cannot be selected
     */
    disabledMinutes: {
      type: definePropType(Function)
    },
    /**
     * @description To specify the array of seconds that cannot be selected
     */
    disabledSeconds: {
      type: definePropType(Function)
    }
  });
  const timePanelSharedProps = buildProps({
    visible: Boolean,
    actualVisible: {
      type: Boolean,
      default: void 0
    },
    format: {
      type: String,
      default: ""
    }
  });
  const timePickerDefaultProps = buildProps({
    /**
     * @description this prop decides if the date picker panel pops up when the input is focused
     */
    automaticDropdown: {
      type: Boolean,
      default: true
    },
    /**
     * @description same as `id` in native input
     */
    id: {
      type: definePropType([Array, String])
    },
    /**
     * @description same as `name` in native input
     */
    name: {
      type: definePropType([Array, String])
    },
    /**
     * @description custom class name for TimePicker's dropdown
     */
    popperClass: useTooltipContentProps.popperClass,
    /**
     * @description custom style for TimePicker's dropdown
     */
    popperStyle: useTooltipContentProps.popperStyle,
    /**
     * @description format of the displayed value in the input box
     */
    format: String,
    /**
     * @description optional, format of binding value. If not specified, the binding value will be a Date object
     */
    valueFormat: String,
    /**
     * @description optional, format of the date displayed in input's inner panel
     */
    dateFormat: String,
    /**
     * @description optional, format of the time displayed in input's inner panel
     */
    timeFormat: String,
    /**
     * @description type of the picker
     */
    type: {
      type: String,
      default: ""
    },
    /**
     * @description whether to show clear button
     */
    clearable: {
      type: Boolean,
      default: true
    },
    /**
     * @description Custom clear icon component
     */
    clearIcon: {
      type: definePropType([String, Object]),
      default: circle_close_default
    },
    /**
     * @description whether the input is editable
     */
    editable: {
      type: Boolean,
      default: true
    },
    /**
     * @description Custom prefix icon component
     */
    prefixIcon: {
      type: definePropType([String, Object]),
      default: ""
    },
    /**
     * @description size of Input
     */
    size: useSizeProp,
    /**
     * @description whether TimePicker is read only
     */
    readonly: Boolean,
    /**
     * @description whether TimePicker is disabled
     */
    disabled: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description placeholder in non-range mode
     */
    placeholder: {
      type: String,
      default: ""
    },
    /**
     * @description [popper.js](https://popper.js.org/docs/v2/) parameters
     */
    popperOptions: {
      type: definePropType(Object),
      default: () => ({})
    },
    /**
     * @description binding value, if it is an array, the length should be 2
     */
    modelValue: {
      type: definePropType([Date, Array, String, Number]),
      default: ""
    },
    /**
     * @description range separator
     */
    rangeSeparator: {
      type: String,
      default: "-"
    },
    /**
     * @description placeholder for the start date in range mode
     */
    startPlaceholder: String,
    /**
     * @description placeholder for the end date in range mode
     */
    endPlaceholder: String,
    /**
     * @description optional, default date of the calendar
     */
    defaultValue: {
      type: definePropType([Date, Array])
    },
    /**
     * @description optional, the time value to use when selecting date range
     */
    defaultTime: {
      type: definePropType([Date, Array])
    },
    /**
     * @description whether to pick a time range
     */
    isRange: Boolean,
    ...disabledTimeListsProps,
    /**
     * @description a function determining if a date is disabled with that date as its parameter. Should return a Boolean
     */
    disabledDate: {
      type: Function
    },
    /**
     * @description set custom className
     */
    cellClassName: {
      type: Function
    },
    /**
     * @description an object array to set shortcut options
     */
    shortcuts: {
      type: Array,
      default: () => []
    },
    /**
     * @description whether to pick time using arrow buttons
     */
    arrowControl: Boolean,
    /**
     * @description input tabindex
     */
    tabindex: {
      type: definePropType([String, Number]),
      default: 0
    },
    /**
     * @description whether to trigger form validation
     */
    validateEvent: {
      type: Boolean,
      default: true
    },
    /**
     * @description unlink two date-panels in range-picker
     */
    unlinkPanels: Boolean,
    /**
     * @description position of dropdown
     */
    placement: {
      type: definePropType(String),
      values: Ee,
      default: "bottom"
    },
    /**
     * @description list of possible positions for dropdown
     */
    fallbackPlacements: {
      type: definePropType(Array),
      default: ["bottom", "top", "right", "left"]
    },
    ...useEmptyValuesProps,
    ...useAriaProps(["ariaLabel"]),
    /**
     * @description whether to show the now button
     */
    showNow: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether to show footer
     */
    showConfirm: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether to show footer
     */
    showFooter: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether to show the number of the calendar week
     */
    showWeekNumber: Boolean
  });
  const timePickerRangeTriggerProps = buildProps({
    id: {
      type: definePropType(Array)
    },
    name: {
      type: definePropType(Array)
    },
    modelValue: {
      type: definePropType([Array, String])
    },
    startPlaceholder: String,
    endPlaceholder: String,
    disabled: Boolean
  });
  const _hoisted_1$1H = ["id", "name", "placeholder", "value", "disabled"];
  const _hoisted_2$1m = ["id", "name", "placeholder", "value", "disabled"];
  var _sfc_main$2q = /* @__PURE__ */ defineComponent({
    ...{
      name: "PickerRangeTrigger",
      inheritAttrs: false
    },
    __name: "picker-range-trigger",
    props: timePickerRangeTriggerProps,
    emits: [
      "mouseenter",
      "mouseleave",
      "click",
      "touchstart",
      "focus",
      "blur",
      "startInput",
      "endInput",
      "startChange",
      "endChange"
    ],
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const { formItem } = useFormItem();
      const { inputId } = useFormItemInputId(
        reactive({ id: computed(() => {
          var _a;
          return (_a = props2.id) == null ? void 0 : _a[0];
        }) }),
        {
          formItemContext: formItem
        }
      );
      const attrs = useAttrs();
      const nsDate = useNamespace("date");
      const nsRange = useNamespace("range");
      const inputRef = ref();
      const endInputRef = ref();
      const { wrapperRef, isFocused } = useFocusController(inputRef, {
        disabled: computed(() => props2.disabled)
      });
      const handleClick = (evt) => {
        emit2("click", evt);
      };
      const handleMouseEnter = (evt) => {
        emit2("mouseenter", evt);
      };
      const handleMouseLeave = (evt) => {
        emit2("mouseleave", evt);
      };
      const handleTouchStart = (evt) => {
        emit2("touchstart", evt);
      };
      const handleStartInput = (evt) => {
        emit2("startInput", evt);
      };
      const handleEndInput = (evt) => {
        emit2("endInput", evt);
      };
      const handleStartChange = (evt) => {
        emit2("startChange", evt);
      };
      const handleEndChange = (evt) => {
        emit2("endChange", evt);
      };
      const focus = () => {
        var _a;
        (_a = inputRef.value) == null ? void 0 : _a.focus();
      };
      const blur = () => {
        var _a, _b;
        (_a = inputRef.value) == null ? void 0 : _a.blur();
        (_b = endInputRef.value) == null ? void 0 : _b.blur();
      };
      __expose({
        focus,
        blur
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            ref_key: "wrapperRef",
            ref: wrapperRef,
            class: normalizeClass([unref(nsDate).is("active", unref(isFocused)), _ctx.$attrs.class]),
            style: normalizeStyle(
              // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527
              _ctx.$attrs.style
            ),
            onClick: handleClick,
            onMouseenter: handleMouseEnter,
            onMouseleave: handleMouseLeave,
            onTouchstartPassive: handleTouchStart
          },
          [
            renderSlot(_ctx.$slots, "prefix"),
            createBaseVNode("input", mergeProps(unref(attrs), {
              id: unref(inputId),
              ref_key: "inputRef",
              ref: inputRef,
              name: _ctx.name && _ctx.name[0],
              placeholder: _ctx.startPlaceholder,
              value: _ctx.modelValue && _ctx.modelValue[0],
              class: unref(nsRange).b("input"),
              disabled: _ctx.disabled,
              onInput: handleStartInput,
              onChange: handleStartChange
            }), null, 16, _hoisted_1$1H),
            renderSlot(_ctx.$slots, "range-separator"),
            createBaseVNode("input", mergeProps(unref(attrs), {
              id: _ctx.id && _ctx.id[1],
              ref_key: "endInputRef",
              ref: endInputRef,
              name: _ctx.name && _ctx.name[1],
              placeholder: _ctx.endPlaceholder,
              value: _ctx.modelValue && _ctx.modelValue[1],
              class: unref(nsRange).b("input"),
              disabled: _ctx.disabled,
              onInput: handleEndInput,
              onChange: handleEndChange
            }), null, 16, _hoisted_2$1m),
            renderSlot(_ctx.$slots, "suffix")
          ],
          38
          /* CLASS, STYLE, NEED_HYDRATION */
        );
      };
    }
  });
  var _sfc_main$2p = /* @__PURE__ */ defineComponent({
    ...{
      name: "Picker"
    },
    __name: "picker",
    props: timePickerDefaultProps,
    emits: [
      UPDATE_MODEL_EVENT,
      CHANGE_EVENT,
      "focus",
      "blur",
      "clear",
      "calendar-change",
      "panel-change",
      "visible-change",
      "keydown"
    ],
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const attrs = useAttrs$1();
      const nsDate = useNamespace("date");
      const nsInput = useNamespace("input");
      const nsRange = useNamespace("range");
      const { formItem } = useFormItem();
      const elPopperOptions = inject(
        PICKER_POPPER_OPTIONS_INJECTION_KEY,
        {}
      );
      const emptyValues = useEmptyValues(props2, null);
      const refPopper = ref();
      const inputRef = ref();
      const valueOnOpen = ref(null);
      let hasJustTabExitedInput = false;
      const pickerDisabled = useFormDisabled();
      const commonPicker = useCommonPicker(props2, emit2);
      const {
        parsedValue,
        pickerActualVisible,
        userInput,
        pickerVisible,
        pickerOptions,
        valueIsEmpty,
        emitInput,
        onPick,
        onSetPickerOption,
        onCalendarChange,
        onPanelChange
      } = commonPicker;
      const { isFocused, handleFocus, handleBlur } = useFocusController(inputRef, {
        disabled: pickerDisabled,
        beforeFocus() {
          return props2.readonly;
        },
        afterFocus() {
          if (!props2.automaticDropdown) return;
          pickerVisible.value = true;
        },
        beforeBlur(event) {
          var _a;
          return !hasJustTabExitedInput && ((_a = refPopper.value) == null ? void 0 : _a.isFocusInsideContent(event));
        },
        afterBlur() {
          handleChange();
          pickerVisible.value = false;
          hasJustTabExitedInput = false;
          props2.validateEvent && (formItem == null ? void 0 : formItem.validate("blur").catch((err) => debugWarn()));
        }
      });
      const hovering = ref(false);
      const rangeInputKls = computed(() => [
        nsDate.b("editor"),
        nsDate.bm("editor", props2.type),
        nsInput.e("wrapper"),
        nsDate.is("disabled", pickerDisabled.value),
        nsDate.is("active", pickerVisible.value),
        nsRange.b("editor"),
        pickerSize ? nsRange.bm("editor", pickerSize.value) : "",
        attrs.class
      ]);
      const clearIconKls = computed(() => [
        nsInput.e("icon"),
        nsRange.e("close-icon"),
        !showClearBtn.value ? nsRange.em("close-icon", "hidden") : ""
      ]);
      watch(pickerVisible, (val) => {
        if (!val) {
          userInput.value = null;
          nextTick(() => {
            emitChange(props2.modelValue);
          });
        } else {
          nextTick(() => {
            if (val) {
              valueOnOpen.value = props2.modelValue;
            }
          });
        }
      });
      const emitChange = (val, isClear) => {
        if (isClear || !valueEquals(val, valueOnOpen.value)) {
          emit2(CHANGE_EVENT, val);
          isClear && (valueOnOpen.value = val);
          props2.validateEvent && (formItem == null ? void 0 : formItem.validate("change").catch((err) => debugWarn()));
        }
      };
      const emitKeydown = (e) => {
        emit2("keydown", e);
      };
      const refInput = computed(() => {
        if (inputRef.value) {
          return Array.from(
            inputRef.value.$el.querySelectorAll("input")
          );
        }
        return [];
      });
      const setSelectionRange = (start, end, pos) => {
        const _inputs = refInput.value;
        if (!_inputs.length) return;
        if (!pos || pos === "min") {
          _inputs[0].setSelectionRange(start, end);
          _inputs[0].focus();
        } else if (pos === "max") {
          _inputs[1].setSelectionRange(start, end);
          _inputs[1].focus();
        }
      };
      const onBeforeShow = () => {
        pickerActualVisible.value = true;
      };
      const onShow = () => {
        emit2("visible-change", true);
      };
      const onHide = () => {
        pickerActualVisible.value = false;
        pickerVisible.value = false;
        emit2("visible-change", false);
      };
      const handleOpen = () => {
        pickerVisible.value = true;
      };
      const handleClose = () => {
        pickerVisible.value = false;
      };
      const displayValue = computed(() => {
        const formattedValue = formatToString(parsedValue.value);
        if (isArray$1(userInput.value)) {
          return [
            userInput.value[0] || formattedValue && formattedValue[0] || "",
            userInput.value[1] || formattedValue && formattedValue[1] || ""
          ];
        } else if (userInput.value !== null) {
          return userInput.value;
        }
        if (!isTimePicker.value && valueIsEmpty.value) return "";
        if (!pickerVisible.value && valueIsEmpty.value) return "";
        if (formattedValue) {
          return isDatesPicker.value || isMonthsPicker.value || isYearsPicker.value ? formattedValue.join(", ") : formattedValue;
        }
        return "";
      });
      const isTimeLikePicker = computed(() => props2.type.includes("time"));
      const isTimePicker = computed(() => props2.type.startsWith("time"));
      const isDatesPicker = computed(() => props2.type === "dates");
      const isMonthsPicker = computed(() => props2.type === "months");
      const isYearsPicker = computed(() => props2.type === "years");
      const triggerIcon = computed(
        () => props2.prefixIcon || (isTimeLikePicker.value ? clock_default : calendar_default)
      );
      const showClearBtn = computed(
        () => props2.clearable && !pickerDisabled.value && !props2.readonly && !valueIsEmpty.value && (hovering.value || isFocused.value)
      );
      const onClear = (event) => {
        if (props2.readonly || pickerDisabled.value) return;
        if (showClearBtn.value) {
          event == null ? void 0 : event.stopPropagation();
          if (pickerOptions.value.handleClear) {
            pickerOptions.value.handleClear();
          } else {
            emitInput(emptyValues.valueOnClear.value);
          }
          emitChange(emptyValues.valueOnClear.value, true);
          onHide();
        }
        emit2("clear");
      };
      const onMouseDownInput = async (event) => {
        var _a;
        if (props2.readonly || pickerDisabled.value) return;
        if (((_a = event.target) == null ? void 0 : _a.tagName) !== "INPUT" || isFocused.value || !props2.automaticDropdown) {
          pickerVisible.value = true;
        }
      };
      const onMouseEnter = () => {
        if (props2.readonly || pickerDisabled.value) return;
        if (!valueIsEmpty.value && props2.clearable) {
          hovering.value = true;
        }
      };
      const onMouseLeave = () => {
        hovering.value = false;
      };
      const onTouchStartInput = (event) => {
        var _a;
        if (props2.readonly || pickerDisabled.value) return;
        if (((_a = event.touches[0].target) == null ? void 0 : _a.tagName) !== "INPUT" || isFocused.value || !props2.automaticDropdown) {
          pickerVisible.value = true;
        }
      };
      const isRangeInput = computed(() => {
        return props2.type.includes("range");
      });
      const pickerSize = useFormSize();
      const popperEl = computed(() => {
        var _a, _b;
        return (_b = (_a = unref(refPopper)) == null ? void 0 : _a.popperRef) == null ? void 0 : _b.contentRef;
      });
      const stophandle = onClickOutside(
        inputRef,
        (e) => {
          const unrefedPopperEl = unref(popperEl);
          const inputEl = unrefElement(inputRef);
          if (unrefedPopperEl && (e.target === unrefedPopperEl || e.composedPath().includes(unrefedPopperEl)) || e.target === inputEl || inputEl && e.composedPath().includes(inputEl))
            return;
          pickerVisible.value = false;
        }
      );
      onBeforeUnmount(() => {
        stophandle == null ? void 0 : stophandle();
      });
      const handleChange = () => {
        if (userInput.value) {
          const value = parseUserInputToDayjs(displayValue.value);
          if (value) {
            if (isValidValue2(value)) {
              emitInput(dayOrDaysToDate(value));
            }
            userInput.value = null;
          }
        }
        if (userInput.value === "") {
          emitInput(emptyValues.valueOnClear.value);
          emitChange(emptyValues.valueOnClear.value, true);
          userInput.value = null;
        }
      };
      const parseUserInputToDayjs = (value) => {
        if (!value) return null;
        return pickerOptions.value.parseUserInput(value);
      };
      const formatToString = (value) => {
        if (!value) return null;
        const res = isArray$1(value) ? value.map((_2) => _2.format(props2.format)) : value.format(props2.format);
        return res;
      };
      const isValidValue2 = (value) => {
        return pickerOptions.value.isValidValue(value);
      };
      const handleKeydownInput = async (event) => {
        if (props2.readonly || pickerDisabled.value) return;
        const code = getEventCode(event);
        emitKeydown(event);
        if (code === EVENT_CODE.esc) {
          if (pickerVisible.value === true) {
            pickerVisible.value = false;
            event.preventDefault();
            event.stopPropagation();
          }
          return;
        }
        if (code === EVENT_CODE.down) {
          if (pickerOptions.value.handleFocusPicker) {
            event.preventDefault();
            event.stopPropagation();
          }
          if (pickerVisible.value === false) {
            pickerVisible.value = true;
            await nextTick();
          }
          if (pickerOptions.value.handleFocusPicker) {
            pickerOptions.value.handleFocusPicker();
            return;
          }
        }
        if (code === EVENT_CODE.tab) {
          hasJustTabExitedInput = true;
          return;
        }
        if (code === EVENT_CODE.enter || code === EVENT_CODE.numpadEnter) {
          if (!pickerVisible.value) {
            pickerVisible.value = true;
          } else if (userInput.value === null || userInput.value === "" || isValidValue2(parseUserInputToDayjs(displayValue.value))) {
            handleChange();
            pickerVisible.value = false;
          }
          event.preventDefault();
          event.stopPropagation();
          return;
        }
        if (userInput.value) {
          event.stopPropagation();
          return;
        }
        if (pickerOptions.value.handleKeydownInput) {
          pickerOptions.value.handleKeydownInput(event);
        }
      };
      const onUserInput = (e) => {
        userInput.value = e;
        if (!pickerVisible.value) {
          pickerVisible.value = true;
        }
      };
      const handleStartInput = (event) => {
        const target = event.target;
        if (userInput.value) {
          userInput.value = [target.value, userInput.value[1]];
        } else {
          userInput.value = [target.value, null];
        }
      };
      const handleEndInput = (event) => {
        const target = event.target;
        if (userInput.value) {
          userInput.value = [userInput.value[0], target.value];
        } else {
          userInput.value = [null, target.value];
        }
      };
      const handleStartChange = () => {
        var _a;
        const values = userInput.value;
        const value = parseUserInputToDayjs(values && values[0]);
        const parsedVal = unref(parsedValue);
        if (value && value.isValid()) {
          userInput.value = [
            formatToString(value),
            ((_a = displayValue.value) == null ? void 0 : _a[1]) || null
          ];
          const newValue = [value, parsedVal && (parsedVal[1] || null)];
          if (isValidValue2(newValue)) {
            emitInput(dayOrDaysToDate(newValue));
            userInput.value = null;
          }
        }
      };
      const handleEndChange = () => {
        var _a;
        const values = unref(userInput);
        const value = parseUserInputToDayjs(values && values[1]);
        const parsedVal = unref(parsedValue);
        if (value && value.isValid()) {
          userInput.value = [
            ((_a = unref(displayValue)) == null ? void 0 : _a[0]) || null,
            formatToString(value)
          ];
          const newValue = [parsedVal && parsedVal[0], value];
          if (isValidValue2(newValue)) {
            emitInput(dayOrDaysToDate(newValue));
            userInput.value = null;
          }
        }
      };
      const focus = () => {
        var _a;
        (_a = inputRef.value) == null ? void 0 : _a.focus();
      };
      const blur = () => {
        var _a;
        (_a = inputRef.value) == null ? void 0 : _a.blur();
      };
      provide(PICKER_BASE_INJECTION_KEY, {
        props: props2,
        emptyValues
      });
      provide(ROOT_COMMON_PICKER_INJECTION_KEY, commonPicker);
      __expose({
        /**
         * @description focus input box.
         */
        focus,
        /**
         * @description blur input box.
         */
        blur,
        /**
         * @description opens picker
         */
        handleOpen,
        /**
         * @description closes picker
         */
        handleClose,
        /**
         * @description pick item manually
         */
        onPick
      });
      return (_ctx, _cache) => {
        return openBlock(), createBlock(unref(ElTooltip), mergeProps({
          ref_key: "refPopper",
          ref: refPopper,
          visible: unref(pickerVisible),
          effect: "light",
          pure: "",
          trigger: "click"
        }, _ctx.$attrs, {
          role: "dialog",
          teleported: "",
          transition: `${unref(nsDate).namespace.value}-zoom-in-top`,
          "popper-class": [`${unref(nsDate).namespace.value}-picker__popper`, _ctx.popperClass],
          "popper-style": _ctx.popperStyle,
          "popper-options": unref(elPopperOptions),
          "fallback-placements": _ctx.fallbackPlacements,
          "gpu-acceleration": false,
          placement: _ctx.placement,
          "stop-popper-mouse-event": false,
          "hide-after": 0,
          persistent: "",
          onBeforeShow,
          onShow,
          onHide
        }), {
          default: withCtx(() => [
            !isRangeInput.value ? (openBlock(), createBlock(unref(ElInput), {
              key: 0,
              id: (
                // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527
                _ctx.id
              ),
              ref_key: "inputRef",
              ref: inputRef,
              "container-role": "combobox",
              "model-value": (
                // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527
                displayValue.value
              ),
              name: (
                // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527
                _ctx.name
              ),
              size: unref(pickerSize),
              disabled: unref(pickerDisabled),
              placeholder: _ctx.placeholder,
              class: normalizeClass([
                unref(nsDate).b("editor"),
                unref(nsDate).bm("editor", _ctx.type),
                unref(nsDate).is("focus", unref(pickerVisible)),
                _ctx.$attrs.class
              ]),
              style: normalizeStyle(_ctx.$attrs.style),
              readonly: !_ctx.editable || _ctx.readonly || isDatesPicker.value || isMonthsPicker.value || isYearsPicker.value || _ctx.type === "week",
              "aria-label": _ctx.ariaLabel,
              tabindex: _ctx.tabindex,
              "validate-event": false,
              onInput: onUserInput,
              onFocus: unref(handleFocus),
              onBlur: unref(handleBlur),
              onKeydown: handleKeydownInput,
              onChange: handleChange,
              onMousedown: onMouseDownInput,
              onMouseenter: onMouseEnter,
              onMouseleave: onMouseLeave,
              onTouchstartPassive: onTouchStartInput,
              onClick: _cache[0] || (_cache[0] = withModifiers(() => {
              }, ["stop"]))
            }, {
              prefix: withCtx(() => [
                triggerIcon.value ? (openBlock(), createBlock(unref(ElIcon), {
                  key: 0,
                  class: normalizeClass(unref(nsInput).e("icon")),
                  onMousedown: withModifiers(onMouseDownInput, ["prevent"]),
                  onTouchstartPassive: onTouchStartInput
                }, {
                  default: withCtx(() => [
                    (openBlock(), createBlock(resolveDynamicComponent(triggerIcon.value)))
                  ]),
                  _: 1
                  /* STABLE */
                }, 8, ["class"])) : createCommentVNode("v-if", true)
              ]),
              suffix: withCtx(() => [
                showClearBtn.value && _ctx.clearIcon ? (openBlock(), createBlock(unref(ElIcon), {
                  key: 0,
                  class: normalizeClass(`${unref(nsInput).e("icon")} clear-icon`),
                  onMousedown: withModifiers(unref(NOOP), ["prevent"]),
                  onClick: onClear
                }, {
                  default: withCtx(() => [
                    (openBlock(), createBlock(resolveDynamicComponent(_ctx.clearIcon)))
                  ]),
                  _: 1
                  /* STABLE */
                }, 8, ["class", "onMousedown"])) : createCommentVNode("v-if", true)
              ]),
              _: 1
              /* STABLE */
            }, 8, ["id", "model-value", "name", "size", "disabled", "placeholder", "class", "style", "readonly", "aria-label", "tabindex", "onFocus", "onBlur"])) : (openBlock(), createBlock(_sfc_main$2q, {
              key: 1,
              id: (
                // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527
                _ctx.id
              ),
              ref_key: "inputRef",
              ref: inputRef,
              "model-value": displayValue.value,
              name: (
                // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527
                _ctx.name
              ),
              disabled: unref(pickerDisabled),
              readonly: !_ctx.editable || _ctx.readonly,
              "start-placeholder": _ctx.startPlaceholder,
              "end-placeholder": _ctx.endPlaceholder,
              class: normalizeClass(rangeInputKls.value),
              style: normalizeStyle(_ctx.$attrs.style),
              "aria-label": _ctx.ariaLabel,
              tabindex: _ctx.tabindex,
              autocomplete: "off",
              role: "combobox",
              onClick: onMouseDownInput,
              onFocus: unref(handleFocus),
              onBlur: unref(handleBlur),
              onStartInput: handleStartInput,
              onStartChange: handleStartChange,
              onEndInput: handleEndInput,
              onEndChange: handleEndChange,
              onMousedown: onMouseDownInput,
              onMouseenter: onMouseEnter,
              onMouseleave: onMouseLeave,
              onTouchstartPassive: onTouchStartInput,
              onKeydown: handleKeydownInput
            }, {
              prefix: withCtx(() => [
                triggerIcon.value ? (openBlock(), createBlock(unref(ElIcon), {
                  key: 0,
                  class: normalizeClass([unref(nsInput).e("icon"), unref(nsRange).e("icon")])
                }, {
                  default: withCtx(() => [
                    (openBlock(), createBlock(resolveDynamicComponent(triggerIcon.value)))
                  ]),
                  _: 1
                  /* STABLE */
                }, 8, ["class"])) : createCommentVNode("v-if", true)
              ]),
              "range-separator": withCtx(() => [
                renderSlot(_ctx.$slots, "range-separator", {}, () => [
                  createBaseVNode(
                    "span",
                    {
                      class: normalizeClass(unref(nsRange).b("separator"))
                    },
                    toDisplayString(_ctx.rangeSeparator),
                    3
                    /* TEXT, CLASS */
                  )
                ])
              ]),
              suffix: withCtx(() => [
                _ctx.clearIcon ? (openBlock(), createBlock(unref(ElIcon), {
                  key: 0,
                  class: normalizeClass(clearIconKls.value),
                  onMousedown: withModifiers(unref(NOOP), ["prevent"]),
                  onClick: onClear
                }, {
                  default: withCtx(() => [
                    (openBlock(), createBlock(resolveDynamicComponent(_ctx.clearIcon)))
                  ]),
                  _: 1
                  /* STABLE */
                }, 8, ["class", "onMousedown"])) : createCommentVNode("v-if", true)
              ]),
              _: 3
              /* FORWARDED */
            }, 8, ["id", "model-value", "name", "disabled", "readonly", "start-placeholder", "end-placeholder", "class", "style", "aria-label", "tabindex", "onFocus", "onBlur"]))
          ]),
          content: withCtx(() => [
            renderSlot(_ctx.$slots, "default", {
              visible: unref(pickerVisible),
              actualVisible: unref(pickerActualVisible),
              parsedValue: unref(parsedValue),
              format: _ctx.format,
              dateFormat: _ctx.dateFormat,
              timeFormat: _ctx.timeFormat,
              unlinkPanels: _ctx.unlinkPanels,
              type: _ctx.type,
              defaultValue: _ctx.defaultValue,
              showNow: _ctx.showNow,
              showConfirm: _ctx.showConfirm,
              showFooter: _ctx.showFooter,
              showWeekNumber: _ctx.showWeekNumber,
              onPick: _cache[1] || (_cache[1] = //@ts-ignore
              (...args) => unref(onPick) && unref(onPick)(...args)),
              onSelectRange: setSelectionRange,
              onSetPickerOption: _cache[2] || (_cache[2] = //@ts-ignore
              (...args) => unref(onSetPickerOption) && unref(onSetPickerOption)(...args)),
              onCalendarChange: _cache[3] || (_cache[3] = //@ts-ignore
              (...args) => unref(onCalendarChange) && unref(onCalendarChange)(...args)),
              onClear,
              onPanelChange: _cache[4] || (_cache[4] = //@ts-ignore
              (...args) => unref(onPanelChange) && unref(onPanelChange)(...args)),
              onMousedown: _cache[5] || (_cache[5] = withModifiers(() => {
              }, ["stop"]))
            })
          ]),
          _: 3
          /* FORWARDED */
        }, 16, ["visible", "transition", "popper-class", "popper-style", "popper-options", "fallback-placements", "placement"]);
      };
    }
  });
  const panelTimePickerProps = buildProps({
    ...timePanelSharedProps,
    datetimeRole: String,
    parsedValue: {
      type: definePropType(Object)
    }
  });
  const useTimePanel = ({
    getAvailableHours,
    getAvailableMinutes,
    getAvailableSeconds
  }) => {
    const getAvailableTime = (date, role, first, compareDate) => {
      const availableTimeGetters = {
        hour: getAvailableHours,
        minute: getAvailableMinutes,
        second: getAvailableSeconds
      };
      let result = date;
      ["hour", "minute", "second"].forEach((type) => {
        if (availableTimeGetters[type]) {
          let availableTimeSlots;
          const method = availableTimeGetters[type];
          switch (type) {
            case "minute": {
              availableTimeSlots = method(
                result.hour(),
                role,
                compareDate
              );
              break;
            }
            case "second": {
              availableTimeSlots = method(
                result.hour(),
                result.minute(),
                role,
                compareDate
              );
              break;
            }
            default: {
              availableTimeSlots = method(
                role,
                compareDate
              );
              break;
            }
          }
          if ((availableTimeSlots == null ? void 0 : availableTimeSlots.length) && !availableTimeSlots.includes(result[type]())) {
            const pos = first ? 0 : availableTimeSlots.length - 1;
            result = result[type](availableTimeSlots[pos]);
          }
        }
      });
      return result;
    };
    const timePickerOptions = {};
    const onSetOption = ([key, val]) => {
      timePickerOptions[key] = val;
    };
    return {
      timePickerOptions,
      getAvailableTime,
      onSetOption
    };
  };
  const makeAvailableArr = (disabledList) => {
    const trueOrNumber = (isDisabled, index) => isDisabled || index;
    const getNumber = (predicate) => predicate !== true;
    return disabledList.map(trueOrNumber).filter(getNumber);
  };
  const getTimeLists = (disabledHours, disabledMinutes, disabledSeconds) => {
    const getHoursList = (role, compare) => {
      return makeList(24, disabledHours && (() => disabledHours == null ? void 0 : disabledHours(role, compare)));
    };
    const getMinutesList = (hour, role, compare) => {
      return makeList(
        60,
        disabledMinutes && (() => disabledMinutes == null ? void 0 : disabledMinutes(hour, role, compare))
      );
    };
    const getSecondsList = (hour, minute, role, compare) => {
      return makeList(
        60,
        disabledSeconds && (() => disabledSeconds == null ? void 0 : disabledSeconds(hour, minute, role, compare))
      );
    };
    return {
      getHoursList,
      getMinutesList,
      getSecondsList
    };
  };
  const buildAvailableTimeSlotGetter = (disabledHours, disabledMinutes, disabledSeconds) => {
    const { getHoursList, getMinutesList, getSecondsList } = getTimeLists(
      disabledHours,
      disabledMinutes,
      disabledSeconds
    );
    const getAvailableHours = (role, compare) => {
      return makeAvailableArr(getHoursList(role, compare));
    };
    const getAvailableMinutes = (hour, role, compare) => {
      return makeAvailableArr(getMinutesList(hour, role, compare));
    };
    const getAvailableSeconds = (hour, minute, role, compare) => {
      return makeAvailableArr(getSecondsList(hour, minute, role, compare));
    };
    return {
      getAvailableHours,
      getAvailableMinutes,
      getAvailableSeconds
    };
  };
  const useOldValue = (props2) => {
    const oldValue = ref(props2.parsedValue);
    watch(
      () => props2.visible,
      (val) => {
        if (!val) {
          oldValue.value = props2.parsedValue;
        }
      }
    );
    return oldValue;
  };
  const basicTimeSpinnerProps = buildProps({
    role: {
      type: String,
      required: true
    },
    spinnerDate: {
      type: definePropType(Object),
      required: true
    },
    showSeconds: {
      type: Boolean,
      default: true
    },
    arrowControl: Boolean,
    amPmMode: {
      // 'a': am/pm; 'A': AM/PM
      type: definePropType(String),
      default: ""
    },
    ...disabledTimeListsProps
  });
  const REPEAT_INTERVAL = 100;
  const REPEAT_DELAY = 600;
  const SCOPE$4 = "_RepeatClick";
  const vRepeatClick = {
    beforeMount(el, binding) {
      const value = binding.value;
      const { interval = REPEAT_INTERVAL, delay = REPEAT_DELAY } = isFunction$1(
        value
      ) ? {} : value;
      let intervalId;
      let delayId;
      const handler = () => isFunction$1(value) ? value() : value.handler();
      const clear = () => {
        if (delayId) {
          clearTimeout(delayId);
          delayId = void 0;
        }
        if (intervalId) {
          clearInterval(intervalId);
          intervalId = void 0;
        }
      };
      const start = (evt) => {
        if (evt.button !== 0) return;
        clear();
        handler();
        document.addEventListener("mouseup", clear, { once: true });
        delayId = setTimeout(() => {
          intervalId = setInterval(() => {
            handler();
          }, interval);
        }, delay);
      };
      el[SCOPE$4] = { start, clear };
      el.addEventListener("mousedown", start);
    },
    unmounted(el) {
      if (!el[SCOPE$4]) return;
      const { start, clear } = el[SCOPE$4];
      if (start) {
        el.removeEventListener("mousedown", start);
      }
      if (clear) {
        clear();
        document.removeEventListener("mouseup", clear);
      }
      el[SCOPE$4] = null;
    }
  };
  const _hoisted_1$1G = ["onClick"];
  const _hoisted_2$1l = ["onMouseenter"];
  var _sfc_main$2o = /* @__PURE__ */ defineComponent({
    __name: "basic-time-spinner",
    props: basicTimeSpinnerProps,
    emits: [CHANGE_EVENT, "select-range", "set-option"],
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const pickerBase = inject(PICKER_BASE_INJECTION_KEY);
      const { isRange, format: format2 } = pickerBase.props;
      const emit2 = __emit;
      const ns = useNamespace("time");
      const { getHoursList, getMinutesList, getSecondsList } = getTimeLists(
        props2.disabledHours,
        props2.disabledMinutes,
        props2.disabledSeconds
      );
      let isScrolling = false;
      const currentScrollbar = ref();
      const listHoursRef = ref();
      const listMinutesRef = ref();
      const listSecondsRef = ref();
      const listRefsMap = {
        hours: listHoursRef,
        minutes: listMinutesRef,
        seconds: listSecondsRef
      };
      const spinnerItems = computed(() => {
        return props2.showSeconds ? timeUnits$1 : timeUnits$1.slice(0, 2);
      });
      const timePartials = computed(() => {
        const { spinnerDate } = props2;
        const hours = spinnerDate.hour();
        const minutes = spinnerDate.minute();
        const seconds = spinnerDate.second();
        return { hours, minutes, seconds };
      });
      const timeList = computed(() => {
        const { hours, minutes } = unref(timePartials);
        const { role, spinnerDate } = props2;
        const compare = !isRange ? spinnerDate : void 0;
        return {
          hours: getHoursList(role, compare),
          minutes: getMinutesList(hours, role, compare),
          seconds: getSecondsList(hours, minutes, role, compare)
        };
      });
      const arrowControlTimeList = computed(() => {
        const { hours, minutes, seconds } = unref(timePartials);
        return {
          hours: buildTimeList(hours, 23),
          minutes: buildTimeList(minutes, 59),
          seconds: buildTimeList(seconds, 59)
        };
      });
      const debouncedResetScroll = debounce((type) => {
        isScrolling = false;
        adjustCurrentSpinner(type);
      }, 200);
      const getAmPmFlag = (hour) => {
        const shouldShowAmPm = !!props2.amPmMode;
        if (!shouldShowAmPm) return "";
        const isCapital = props2.amPmMode === "A";
        let content = hour < 12 ? " am" : " pm";
        if (isCapital) content = content.toUpperCase();
        return content;
      };
      const emitSelectRange = (type) => {
        let range2 = [0, 0];
        const actualFormat = format2 || DEFAULT_FORMATS_TIME;
        const hourIndex = actualFormat.indexOf("HH");
        const minuteIndex = actualFormat.indexOf("mm");
        const secondIndex = actualFormat.indexOf("ss");
        switch (type) {
          case "hours":
            if (hourIndex !== -1) {
              range2 = [hourIndex, hourIndex + 2];
            }
            break;
          case "minutes":
            if (minuteIndex !== -1) {
              range2 = [minuteIndex, minuteIndex + 2];
            }
            break;
          case "seconds":
            if (secondIndex !== -1) {
              range2 = [secondIndex, secondIndex + 2];
            }
            break;
        }
        const [left, right] = range2;
        emit2("select-range", left, right);
        currentScrollbar.value = type;
      };
      const adjustCurrentSpinner = (type) => {
        adjustSpinner(type, unref(timePartials)[type]);
      };
      const adjustSpinners = () => {
        adjustCurrentSpinner("hours");
        adjustCurrentSpinner("minutes");
        adjustCurrentSpinner("seconds");
      };
      const getScrollbarElement = (el) => el.querySelector(`.${ns.namespace.value}-scrollbar__wrap`);
      const adjustSpinner = (type, value) => {
        if (props2.arrowControl) return;
        const scrollbar = unref(listRefsMap[type]);
        if (scrollbar && scrollbar.$el) {
          getScrollbarElement(scrollbar.$el).scrollTop = Math.max(
            0,
            value * typeItemHeight(type)
          );
        }
      };
      const typeItemHeight = (type) => {
        const scrollbar = unref(listRefsMap[type]);
        const listItem = scrollbar == null ? void 0 : scrollbar.$el.querySelector("li");
        if (listItem) {
          return Number.parseFloat(getStyle(listItem, "height")) || 0;
        }
        return 0;
      };
      const onIncrement = () => {
        scrollDown(1);
      };
      const onDecrement = () => {
        scrollDown(-1);
      };
      const scrollDown = (step2) => {
        if (!currentScrollbar.value) {
          emitSelectRange("hours");
        }
        const label = currentScrollbar.value;
        const now2 = unref(timePartials)[label];
        const total2 = currentScrollbar.value === "hours" ? 24 : 60;
        const next = findNextUnDisabled(label, now2, step2, total2);
        modifyDateField(label, next);
        adjustSpinner(label, next);
        nextTick(() => emitSelectRange(label));
      };
      const findNextUnDisabled = (type, now2, step2, total2) => {
        let next = (now2 + step2 + total2) % total2;
        const list = unref(timeList)[type];
        while (list[next] && next !== now2) {
          next = (next + step2 + total2) % total2;
        }
        return next;
      };
      const modifyDateField = (type, value) => {
        const list = unref(timeList)[type];
        const isDisabled = list[value];
        if (isDisabled) return;
        const { hours, minutes, seconds } = unref(timePartials);
        let changeTo;
        switch (type) {
          case "hours":
            changeTo = props2.spinnerDate.hour(value).minute(minutes).second(seconds);
            break;
          case "minutes":
            changeTo = props2.spinnerDate.hour(hours).minute(value).second(seconds);
            break;
          case "seconds":
            changeTo = props2.spinnerDate.hour(hours).minute(minutes).second(value);
            break;
        }
        emit2(CHANGE_EVENT, changeTo);
      };
      const handleClick = (type, { value, disabled }) => {
        if (!disabled) {
          modifyDateField(type, value);
          emitSelectRange(type);
          adjustSpinner(type, value);
        }
      };
      const handleScroll2 = (type) => {
        const scrollbar = unref(listRefsMap[type]);
        if (!scrollbar) return;
        isScrolling = true;
        debouncedResetScroll(type);
        const value = Math.min(
          Math.round(
            (getScrollbarElement(scrollbar.$el).scrollTop - (scrollBarHeight(type) * 0.5 - 10) / typeItemHeight(type) + 3) / typeItemHeight(type)
          ),
          type === "hours" ? 23 : 59
        );
        modifyDateField(type, value);
      };
      const scrollBarHeight = (type) => {
        return unref(listRefsMap[type]).$el.offsetHeight;
      };
      const bindScrollEvent = () => {
        const bindFunction = (type) => {
          const scrollbar = unref(listRefsMap[type]);
          if (scrollbar && scrollbar.$el) {
            getScrollbarElement(scrollbar.$el).onscroll = () => {
              handleScroll2(type);
            };
          }
        };
        bindFunction("hours");
        bindFunction("minutes");
        bindFunction("seconds");
      };
      onMounted(() => {
        nextTick(() => {
          !props2.arrowControl && bindScrollEvent();
          adjustSpinners();
          if (props2.role === "start") emitSelectRange("hours");
        });
      });
      const setRef2 = (scrollbar, type) => {
        listRefsMap[type].value = scrollbar != null ? scrollbar : void 0;
      };
      emit2("set-option", [`${props2.role}_scrollDown`, scrollDown]);
      emit2("set-option", [`${props2.role}_emitSelectRange`, emitSelectRange]);
      watch(
        () => props2.spinnerDate,
        () => {
          if (isScrolling) return;
          adjustSpinners();
        }
      );
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass([unref(ns).b("spinner"), { "has-seconds": _ctx.showSeconds }])
          },
          [
            !_ctx.arrowControl ? (openBlock(true), createElementBlock(
              Fragment,
              { key: 0 },
              renderList(spinnerItems.value, (item) => {
                return openBlock(), createBlock(unref(ElScrollbar), {
                  key: item,
                  ref_for: true,
                  ref: (scrollbar) => setRef2(scrollbar, item),
                  class: normalizeClass(unref(ns).be("spinner", "wrapper")),
                  "wrap-style": "max-height: inherit;",
                  "view-class": unref(ns).be("spinner", "list"),
                  noresize: "",
                  tag: "ul",
                  onMouseenter: ($event) => emitSelectRange(item),
                  onMousemove: ($event) => adjustCurrentSpinner(item)
                }, {
                  default: withCtx(() => [
                    (openBlock(true), createElementBlock(
                      Fragment,
                      null,
                      renderList(timeList.value[item], (disabled, key) => {
                        return openBlock(), createElementBlock("li", {
                          key,
                          class: normalizeClass([
                            unref(ns).be("spinner", "item"),
                            unref(ns).is("active", key === timePartials.value[item]),
                            unref(ns).is("disabled", disabled)
                          ]),
                          onClick: ($event) => handleClick(item, { value: key, disabled })
                        }, [
                          item === "hours" ? (openBlock(), createElementBlock(
                            Fragment,
                            { key: 0 },
                            [
                              createTextVNode(
                                toDisplayString(("0" + (_ctx.amPmMode ? key % 12 || 12 : key)).slice(-2)) + toDisplayString(getAmPmFlag(key)),
                                1
                                /* TEXT */
                              )
                            ],
                            64
                            /* STABLE_FRAGMENT */
                          )) : (openBlock(), createElementBlock(
                            Fragment,
                            { key: 1 },
                            [
                              createTextVNode(
                                toDisplayString(("0" + key).slice(-2)),
                                1
                                /* TEXT */
                              )
                            ],
                            64
                            /* STABLE_FRAGMENT */
                          ))
                        ], 10, _hoisted_1$1G);
                      }),
                      128
                      /* KEYED_FRAGMENT */
                    ))
                  ]),
                  _: 2
                  /* DYNAMIC */
                }, 1032, ["class", "view-class", "onMouseenter", "onMousemove"]);
              }),
              128
              /* KEYED_FRAGMENT */
            )) : createCommentVNode("v-if", true),
            _ctx.arrowControl ? (openBlock(true), createElementBlock(
              Fragment,
              { key: 1 },
              renderList(spinnerItems.value, (item) => {
                return openBlock(), createElementBlock("div", {
                  key: item,
                  class: normalizeClass([unref(ns).be("spinner", "wrapper"), unref(ns).is("arrow")]),
                  onMouseenter: ($event) => emitSelectRange(item)
                }, [
                  withDirectives((openBlock(), createBlock(unref(ElIcon), {
                    class: normalizeClass(["arrow-up", unref(ns).be("spinner", "arrow")])
                  }, {
                    default: withCtx(() => [
                      createVNode(unref(arrow_up_default))
                    ]),
                    _: 1
                    /* STABLE */
                  }, 8, ["class"])), [
                    [unref(vRepeatClick), onDecrement]
                  ]),
                  withDirectives((openBlock(), createBlock(unref(ElIcon), {
                    class: normalizeClass(["arrow-down", unref(ns).be("spinner", "arrow")])
                  }, {
                    default: withCtx(() => [
                      createVNode(unref(arrow_down_default))
                    ]),
                    _: 1
                    /* STABLE */
                  }, 8, ["class"])), [
                    [unref(vRepeatClick), onIncrement]
                  ]),
                  createBaseVNode(
                    "ul",
                    {
                      class: normalizeClass(unref(ns).be("spinner", "list"))
                    },
                    [
                      (openBlock(true), createElementBlock(
                        Fragment,
                        null,
                        renderList(arrowControlTimeList.value[item], (time, key) => {
                          return openBlock(), createElementBlock(
                            "li",
                            {
                              key,
                              class: normalizeClass([
                                unref(ns).be("spinner", "item"),
                                unref(ns).is("active", time === timePartials.value[item]),
                                unref(ns).is("disabled", timeList.value[item][time])
                              ])
                            },
                            [
                              unref(isNumber)(time) ? (openBlock(), createElementBlock(
                                Fragment,
                                { key: 0 },
                                [
                                  item === "hours" ? (openBlock(), createElementBlock(
                                    Fragment,
                                    { key: 0 },
                                    [
                                      createTextVNode(
                                        toDisplayString(("0" + (_ctx.amPmMode ? time % 12 || 12 : time)).slice(-2)) + toDisplayString(getAmPmFlag(time)),
                                        1
                                        /* TEXT */
                                      )
                                    ],
                                    64
                                    /* STABLE_FRAGMENT */
                                  )) : (openBlock(), createElementBlock(
                                    Fragment,
                                    { key: 1 },
                                    [
                                      createTextVNode(
                                        toDisplayString(("0" + time).slice(-2)),
                                        1
                                        /* TEXT */
                                      )
                                    ],
                                    64
                                    /* STABLE_FRAGMENT */
                                  ))
                                ],
                                64
                                /* STABLE_FRAGMENT */
                              )) : createCommentVNode("v-if", true)
                            ],
                            2
                            /* CLASS */
                          );
                        }),
                        128
                        /* KEYED_FRAGMENT */
                      ))
                    ],
                    2
                    /* CLASS */
                  )
                ], 42, _hoisted_2$1l);
              }),
              128
              /* KEYED_FRAGMENT */
            )) : createCommentVNode("v-if", true)
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  var _sfc_main$2n = /* @__PURE__ */ defineComponent({
    __name: "panel-time-pick",
    props: panelTimePickerProps,
    emits: ["pick", "select-range", "set-picker-option"],
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const pickerBase = inject(PICKER_BASE_INJECTION_KEY);
      const {
        arrowControl,
        disabledHours,
        disabledMinutes,
        disabledSeconds,
        defaultValue
      } = pickerBase.props;
      const { getAvailableHours, getAvailableMinutes, getAvailableSeconds } = buildAvailableTimeSlotGetter(disabledHours, disabledMinutes, disabledSeconds);
      const ns = useNamespace("time");
      const { t, lang } = useLocale();
      const selectionRange = ref([0, 2]);
      const oldValue = useOldValue(props2);
      const transitionName = computed(() => {
        return isUndefined(props2.actualVisible) ? `${ns.namespace.value}-zoom-in-top` : "";
      });
      const showSeconds = computed(() => {
        return props2.format.includes("ss");
      });
      const amPmMode = computed(() => {
        if (props2.format.includes("A")) return "A";
        if (props2.format.includes("a")) return "a";
        return "";
      });
      const isValidValue2 = (_date) => {
        const parsedDate = dayjs(_date).locale(lang.value);
        const result = getRangeAvailableTime(parsedDate);
        return parsedDate.isSame(result);
      };
      const handleCancel = () => {
        const old = oldValue.value;
        emit2("pick", old, false);
        nextTick(() => {
          oldValue.value = old;
        });
      };
      const handleConfirm = (visible = false, first = false) => {
        if (first) return;
        emit2("pick", props2.parsedValue, visible);
      };
      const handleChange = (_date) => {
        if (!props2.visible) {
          return;
        }
        const result = getRangeAvailableTime(_date).millisecond(0);
        emit2("pick", result, true);
      };
      const setSelectionRange = (start, end) => {
        emit2("select-range", start, end);
        selectionRange.value = [start, end];
      };
      const changeSelectionRange = (step2) => {
        const actualFormat = props2.format;
        const hourIndex = actualFormat.indexOf("HH");
        const minuteIndex = actualFormat.indexOf("mm");
        const secondIndex = actualFormat.indexOf("ss");
        const list = [];
        const mapping = [];
        if (hourIndex !== -1) {
          list.push(hourIndex);
          mapping.push("hours");
        }
        if (minuteIndex !== -1) {
          list.push(minuteIndex);
          mapping.push("minutes");
        }
        if (secondIndex !== -1 && showSeconds.value) {
          list.push(secondIndex);
          mapping.push("seconds");
        }
        const index = list.indexOf(selectionRange.value[0]);
        const next = (index + step2 + list.length) % list.length;
        timePickerOptions["start_emitSelectRange"](mapping[next]);
      };
      const handleKeydown = (event) => {
        const code = getEventCode(event);
        const { left, right, up, down } = EVENT_CODE;
        if ([left, right].includes(code)) {
          const step2 = code === left ? -1 : 1;
          changeSelectionRange(step2);
          event.preventDefault();
          return;
        }
        if ([up, down].includes(code)) {
          const step2 = code === up ? -1 : 1;
          timePickerOptions["start_scrollDown"](step2);
          event.preventDefault();
          return;
        }
      };
      const { timePickerOptions, onSetOption, getAvailableTime } = useTimePanel({
        getAvailableHours,
        getAvailableMinutes,
        getAvailableSeconds
      });
      const getRangeAvailableTime = (date) => {
        return getAvailableTime(date, props2.datetimeRole || "", true);
      };
      const parseUserInput = (value) => {
        if (!value) return null;
        return dayjs(value, props2.format).locale(lang.value);
      };
      const getDefaultValue2 = () => {
        return dayjs(defaultValue).locale(lang.value);
      };
      emit2("set-picker-option", ["isValidValue", isValidValue2]);
      emit2("set-picker-option", ["parseUserInput", parseUserInput]);
      emit2("set-picker-option", ["handleKeydownInput", handleKeydown]);
      emit2("set-picker-option", ["getRangeAvailableTime", getRangeAvailableTime]);
      emit2("set-picker-option", ["getDefaultValue", getDefaultValue2]);
      return (_ctx, _cache) => {
        return openBlock(), createBlock(Transition, { name: transitionName.value }, {
          default: withCtx(() => [
            _ctx.actualVisible || _ctx.visible ? (openBlock(), createElementBlock(
              "div",
              {
                key: 0,
                class: normalizeClass(unref(ns).b("panel"))
              },
              [
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass([unref(ns).be("panel", "content"), { "has-seconds": showSeconds.value }])
                  },
                  [
                    createVNode(_sfc_main$2o, {
                      ref: "spinner",
                      role: _ctx.datetimeRole || "start",
                      "arrow-control": unref(arrowControl),
                      "show-seconds": showSeconds.value,
                      "am-pm-mode": amPmMode.value,
                      "spinner-date": (
                        // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527
                        _ctx.parsedValue
                      ),
                      "disabled-hours": unref(disabledHours),
                      "disabled-minutes": unref(disabledMinutes),
                      "disabled-seconds": unref(disabledSeconds),
                      onChange: handleChange,
                      onSetOption: unref(onSetOption),
                      onSelectRange: setSelectionRange
                    }, null, 8, ["role", "arrow-control", "show-seconds", "am-pm-mode", "spinner-date", "disabled-hours", "disabled-minutes", "disabled-seconds", "onSetOption"])
                  ],
                  2
                  /* CLASS */
                ),
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass(unref(ns).be("panel", "footer"))
                  },
                  [
                    createBaseVNode(
                      "button",
                      {
                        type: "button",
                        class: normalizeClass([unref(ns).be("panel", "btn"), "cancel"]),
                        onClick: handleCancel
                      },
                      toDisplayString(unref(t)("el.datepicker.cancel")),
                      3
                      /* TEXT, CLASS */
                    ),
                    createBaseVNode(
                      "button",
                      {
                        type: "button",
                        class: normalizeClass([unref(ns).be("panel", "btn"), "confirm"]),
                        onClick: _cache[0] || (_cache[0] = ($event) => handleConfirm())
                      },
                      toDisplayString(unref(t)("el.datepicker.confirm")),
                      3
                      /* TEXT, CLASS */
                    )
                  ],
                  2
                  /* CLASS */
                )
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true)
          ]),
          _: 1
          /* STABLE */
        }, 8, ["name"]);
      };
    }
  });
  const panelTimeRangeProps = buildProps({
    ...timePanelSharedProps,
    parsedValue: {
      type: definePropType(Array)
    }
  });
  const _hoisted_1$1F = ["disabled"];
  var _sfc_main$2m = /* @__PURE__ */ defineComponent({
    __name: "panel-time-range",
    props: panelTimeRangeProps,
    emits: ["pick", "select-range", "set-picker-option"],
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const makeSelectRange = (start, end) => {
        const result = [];
        for (let i = start; i <= end; i++) {
          result.push(i);
        }
        return result;
      };
      const { t, lang } = useLocale();
      const nsTime = useNamespace("time");
      const nsPicker = useNamespace("picker");
      const pickerBase = inject(PICKER_BASE_INJECTION_KEY);
      const {
        arrowControl,
        disabledHours,
        disabledMinutes,
        disabledSeconds,
        defaultValue
      } = pickerBase.props;
      const startContainerKls = computed(() => [
        nsTime.be("range-picker", "body"),
        nsTime.be("panel", "content"),
        nsTime.is("arrow", arrowControl),
        showSeconds.value ? "has-seconds" : ""
      ]);
      const endContainerKls = computed(() => [
        nsTime.be("range-picker", "body"),
        nsTime.be("panel", "content"),
        nsTime.is("arrow", arrowControl),
        showSeconds.value ? "has-seconds" : ""
      ]);
      const startTime = computed(() => props2.parsedValue[0]);
      const endTime = computed(() => props2.parsedValue[1]);
      const oldValue = useOldValue(props2);
      const handleCancel = () => {
        const old = oldValue.value;
        emit2("pick", old, false);
        nextTick(() => {
          oldValue.value = old;
        });
      };
      const showSeconds = computed(() => {
        return props2.format.includes("ss");
      });
      const amPmMode = computed(() => {
        if (props2.format.includes("A")) return "A";
        if (props2.format.includes("a")) return "a";
        return "";
      });
      const handleConfirm = (visible = false) => {
        emit2("pick", [startTime.value, endTime.value], visible);
      };
      const handleMinChange = (date) => {
        handleChange(date.millisecond(0), endTime.value);
      };
      const handleMaxChange = (date) => {
        handleChange(startTime.value, date.millisecond(0));
      };
      const isValidValue2 = (_date) => {
        const parsedDate = _date.map((_2) => dayjs(_2).locale(lang.value));
        const result = getRangeAvailableTime(parsedDate);
        return parsedDate[0].isSame(result[0]) && parsedDate[1].isSame(result[1]);
      };
      const handleChange = (start, end) => {
        if (!props2.visible) {
          return;
        }
        emit2("pick", [start, end], true);
      };
      const btnConfirmDisabled = computed(() => {
        return startTime.value > endTime.value;
      });
      const selectionRange = ref([0, 2]);
      const setMinSelectionRange = (start, end) => {
        emit2("select-range", start, end, "min");
        selectionRange.value = [start, end];
      };
      const offset2 = computed(() => showSeconds.value ? 11 : 8);
      const setMaxSelectionRange = (start, end) => {
        emit2("select-range", start, end, "max");
        const _offset = unref(offset2);
        selectionRange.value = [start + _offset, end + _offset];
      };
      const changeSelectionRange = (step2) => {
        const list = showSeconds.value ? [0, 3, 6, 11, 14, 17] : [0, 3, 8, 11];
        const mapping = ["hours", "minutes"].concat(
          showSeconds.value ? ["seconds"] : []
        );
        const index = list.indexOf(selectionRange.value[0]);
        const next = (index + step2 + list.length) % list.length;
        const half = list.length / 2;
        if (next < half) {
          timePickerOptions["start_emitSelectRange"](mapping[next]);
        } else {
          timePickerOptions["end_emitSelectRange"](mapping[next - half]);
        }
      };
      const handleKeydown = (event) => {
        const code = getEventCode(event);
        const { left, right, up, down } = EVENT_CODE;
        if ([left, right].includes(code)) {
          const step2 = code === left ? -1 : 1;
          changeSelectionRange(step2);
          event.preventDefault();
          return;
        }
        if ([up, down].includes(code)) {
          const step2 = code === up ? -1 : 1;
          const role = selectionRange.value[0] < offset2.value ? "start" : "end";
          timePickerOptions[`${role}_scrollDown`](step2);
          event.preventDefault();
          return;
        }
      };
      const disabledHours_ = (role, compare) => {
        const defaultDisable = disabledHours ? disabledHours(role) : [];
        const isStart = role === "start";
        const compareDate = compare || (isStart ? endTime.value : startTime.value);
        const compareHour = compareDate.hour();
        const nextDisable = isStart ? makeSelectRange(compareHour + 1, 23) : makeSelectRange(0, compareHour - 1);
        return union(defaultDisable, nextDisable);
      };
      const disabledMinutes_ = (hour, role, compare) => {
        const defaultDisable = disabledMinutes ? disabledMinutes(hour, role) : [];
        const isStart = role === "start";
        const compareDate = compare || (isStart ? endTime.value : startTime.value);
        const compareHour = compareDate.hour();
        if (hour !== compareHour) {
          return defaultDisable;
        }
        const compareMinute = compareDate.minute();
        const nextDisable = isStart ? makeSelectRange(compareMinute + 1, 59) : makeSelectRange(0, compareMinute - 1);
        return union(defaultDisable, nextDisable);
      };
      const disabledSeconds_ = (hour, minute, role, compare) => {
        const defaultDisable = disabledSeconds ? disabledSeconds(hour, minute, role) : [];
        const isStart = role === "start";
        const compareDate = compare || (isStart ? endTime.value : startTime.value);
        const compareHour = compareDate.hour();
        const compareMinute = compareDate.minute();
        if (hour !== compareHour || minute !== compareMinute) {
          return defaultDisable;
        }
        const compareSecond = compareDate.second();
        const nextDisable = isStart ? makeSelectRange(compareSecond + 1, 59) : makeSelectRange(0, compareSecond - 1);
        return union(defaultDisable, nextDisable);
      };
      const getRangeAvailableTime = ([start, end]) => {
        return [
          getAvailableTime(start, "start", true, end),
          getAvailableTime(end, "end", false, start)
        ];
      };
      const { getAvailableHours, getAvailableMinutes, getAvailableSeconds } = buildAvailableTimeSlotGetter(
        disabledHours_,
        disabledMinutes_,
        disabledSeconds_
      );
      const {
        timePickerOptions,
        getAvailableTime,
        onSetOption
      } = useTimePanel({
        getAvailableHours,
        getAvailableMinutes,
        getAvailableSeconds
      });
      const parseUserInput = (days) => {
        if (!days) return null;
        if (isArray$1(days)) {
          return days.map((d2) => dayjs(d2, props2.format).locale(lang.value));
        }
        return dayjs(days, props2.format).locale(lang.value);
      };
      const getDefaultValue2 = () => {
        if (isArray$1(defaultValue)) {
          return defaultValue.map((d2) => dayjs(d2).locale(lang.value));
        }
        const defaultDay = dayjs(defaultValue).locale(lang.value);
        return [defaultDay, defaultDay.add(60, "m")];
      };
      emit2("set-picker-option", ["parseUserInput", parseUserInput]);
      emit2("set-picker-option", ["isValidValue", isValidValue2]);
      emit2("set-picker-option", ["handleKeydownInput", handleKeydown]);
      emit2("set-picker-option", ["getDefaultValue", getDefaultValue2]);
      emit2("set-picker-option", ["getRangeAvailableTime", getRangeAvailableTime]);
      return (_ctx, _cache) => {
        return _ctx.actualVisible ? (openBlock(), createElementBlock(
          "div",
          {
            key: 0,
            class: normalizeClass([unref(nsTime).b("range-picker"), unref(nsPicker).b("panel")])
          },
          [
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(nsTime).be("range-picker", "content"))
              },
              [
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass(unref(nsTime).be("range-picker", "cell"))
                  },
                  [
                    createBaseVNode(
                      "div",
                      {
                        class: normalizeClass(unref(nsTime).be("range-picker", "header"))
                      },
                      toDisplayString(unref(t)("el.datepicker.startTime")),
                      3
                      /* TEXT, CLASS */
                    ),
                    createBaseVNode(
                      "div",
                      {
                        class: normalizeClass(startContainerKls.value)
                      },
                      [
                        createVNode(_sfc_main$2o, {
                          ref: "minSpinner",
                          role: "start",
                          "show-seconds": showSeconds.value,
                          "am-pm-mode": amPmMode.value,
                          "arrow-control": unref(arrowControl),
                          "spinner-date": startTime.value,
                          "disabled-hours": disabledHours_,
                          "disabled-minutes": disabledMinutes_,
                          "disabled-seconds": disabledSeconds_,
                          onChange: handleMinChange,
                          onSetOption: unref(onSetOption),
                          onSelectRange: setMinSelectionRange
                        }, null, 8, ["show-seconds", "am-pm-mode", "arrow-control", "spinner-date", "onSetOption"])
                      ],
                      2
                      /* CLASS */
                    )
                  ],
                  2
                  /* CLASS */
                ),
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass(unref(nsTime).be("range-picker", "cell"))
                  },
                  [
                    createBaseVNode(
                      "div",
                      {
                        class: normalizeClass(unref(nsTime).be("range-picker", "header"))
                      },
                      toDisplayString(unref(t)("el.datepicker.endTime")),
                      3
                      /* TEXT, CLASS */
                    ),
                    createBaseVNode(
                      "div",
                      {
                        class: normalizeClass(endContainerKls.value)
                      },
                      [
                        createVNode(_sfc_main$2o, {
                          ref: "maxSpinner",
                          role: "end",
                          "show-seconds": showSeconds.value,
                          "am-pm-mode": amPmMode.value,
                          "arrow-control": unref(arrowControl),
                          "spinner-date": endTime.value,
                          "disabled-hours": disabledHours_,
                          "disabled-minutes": disabledMinutes_,
                          "disabled-seconds": disabledSeconds_,
                          onChange: handleMaxChange,
                          onSetOption: unref(onSetOption),
                          onSelectRange: setMaxSelectionRange
                        }, null, 8, ["show-seconds", "am-pm-mode", "arrow-control", "spinner-date", "onSetOption"])
                      ],
                      2
                      /* CLASS */
                    )
                  ],
                  2
                  /* CLASS */
                )
              ],
              2
              /* CLASS */
            ),
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(nsTime).be("panel", "footer"))
              },
              [
                createBaseVNode(
                  "button",
                  {
                    type: "button",
                    class: normalizeClass([unref(nsTime).be("panel", "btn"), "cancel"]),
                    onClick: _cache[0] || (_cache[0] = ($event) => handleCancel())
                  },
                  toDisplayString(unref(t)("el.datepicker.cancel")),
                  3
                  /* TEXT, CLASS */
                ),
                createBaseVNode("button", {
                  type: "button",
                  class: normalizeClass([unref(nsTime).be("panel", "btn"), "confirm"]),
                  disabled: btnConfirmDisabled.value,
                  onClick: _cache[1] || (_cache[1] = ($event) => handleConfirm())
                }, toDisplayString(unref(t)("el.datepicker.confirm")), 11, _hoisted_1$1F)
              ],
              2
              /* CLASS */
            )
          ],
          2
          /* CLASS */
        )) : createCommentVNode("v-if", true);
      };
    }
  });
  dayjs.extend(customParseFormat);
  var TimePicker = /* @__PURE__ */ defineComponent({
    name: "ElTimePicker",
    install: null,
    props: {
      ...timePickerDefaultProps,
      /**
       * @description whether to pick a time range
       */
      isRange: Boolean
    },
    emits: [UPDATE_MODEL_EVENT],
    setup(props2, ctx) {
      const commonPicker = ref();
      const [type, Panel] = props2.isRange ? ["timerange", _sfc_main$2m] : ["time", _sfc_main$2n];
      const modelUpdater = (value) => ctx.emit(UPDATE_MODEL_EVENT, value);
      provide(PICKER_POPPER_OPTIONS_INJECTION_KEY, props2.popperOptions);
      ctx.expose({
        /**
         * @description focus the Input component
         */
        focus: () => {
          var _a;
          (_a = commonPicker.value) == null ? void 0 : _a.focus();
        },
        /**
         * @description blur the Input component
         */
        blur: () => {
          var _a;
          (_a = commonPicker.value) == null ? void 0 : _a.blur();
        },
        /**
         * @description open the TimePicker popper
         */
        handleOpen: () => {
          var _a;
          (_a = commonPicker.value) == null ? void 0 : _a.handleOpen();
        },
        /**
         * @description close the TimePicker popper
         */
        handleClose: () => {
          var _a;
          (_a = commonPicker.value) == null ? void 0 : _a.handleClose();
        }
      });
      return () => {
        var _a;
        const format2 = (_a = props2.format) != null ? _a : DEFAULT_FORMATS_TIME;
        return createVNode(_sfc_main$2p, mergeProps(props2, {
          "ref": commonPicker,
          "type": type,
          "format": format2,
          "onUpdate:modelValue": modelUpdater
        }), {
          default: (props22) => createVNode(Panel, props22, null)
        });
      };
    }
  });
  const ElTimePicker = withInstall(TimePicker);
  var advancedFormat$2 = { exports: {} };
  var advancedFormat$1 = advancedFormat$2.exports;
  var hasRequiredAdvancedFormat;
  function requireAdvancedFormat() {
    if (hasRequiredAdvancedFormat) return advancedFormat$2.exports;
    hasRequiredAdvancedFormat = 1;
    (function(module2, exports$1) {
      !(function(e, t) {
        module2.exports = t();
      })(advancedFormat$1, (function() {
        return function(e, t) {
          var r = t.prototype, n = r.format;
          r.format = function(e2) {
            var t2 = this, r2 = this.$locale();
            if (!this.isValid()) return n.bind(this)(e2);
            var s2 = this.$utils(), a2 = (e2 || "YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g, (function(e3) {
              switch (e3) {
                case "Q":
                  return Math.ceil((t2.$M + 1) / 3);
                case "Do":
                  return r2.ordinal(t2.$D);
                case "gggg":
                  return t2.weekYear();
                case "GGGG":
                  return t2.isoWeekYear();
                case "wo":
                  return r2.ordinal(t2.week(), "W");
                case "w":
                case "ww":
                  return s2.s(t2.week(), "w" === e3 ? 1 : 2, "0");
                case "W":
                case "WW":
                  return s2.s(t2.isoWeek(), "W" === e3 ? 1 : 2, "0");
                case "k":
                case "kk":
                  return s2.s(String(0 === t2.$H ? 24 : t2.$H), "k" === e3 ? 1 : 2, "0");
                case "X":
                  return Math.floor(t2.$d.getTime() / 1e3);
                case "x":
                  return t2.$d.getTime();
                case "z":
                  return "[" + t2.offsetName() + "]";
                case "zzz":
                  return "[" + t2.offsetName("long") + "]";
                default:
                  return e3;
              }
            }));
            return n.bind(this)(a2);
          };
        };
      }));
    })(advancedFormat$2);
    return advancedFormat$2.exports;
  }
  var advancedFormatExports = requireAdvancedFormat();
  const advancedFormat = /* @__PURE__ */ getDefaultExportFromCjs(advancedFormatExports);
  var weekOfYear$2 = { exports: {} };
  var weekOfYear$1 = weekOfYear$2.exports;
  var hasRequiredWeekOfYear;
  function requireWeekOfYear() {
    if (hasRequiredWeekOfYear) return weekOfYear$2.exports;
    hasRequiredWeekOfYear = 1;
    (function(module2, exports$1) {
      !(function(e, t) {
        module2.exports = t();
      })(weekOfYear$1, (function() {
        var e = "week", t = "year";
        return function(i, n, r) {
          var f2 = n.prototype;
          f2.week = function(i2) {
            if (void 0 === i2 && (i2 = null), null !== i2) return this.add(7 * (i2 - this.week()), "day");
            var n2 = this.$locale().yearStart || 1;
            if (11 === this.month() && this.date() > 25) {
              var f3 = r(this).startOf(t).add(1, t).date(n2), s2 = r(this).endOf(e);
              if (f3.isBefore(s2)) return 1;
            }
            var a2 = r(this).startOf(t).date(n2).startOf(e).subtract(1, "millisecond"), o2 = this.diff(a2, e, true);
            return o2 < 0 ? r(this).startOf("week").week() : Math.ceil(o2);
          }, f2.weeks = function(e2) {
            return void 0 === e2 && (e2 = null), this.week(e2);
          };
        };
      }));
    })(weekOfYear$2);
    return weekOfYear$2.exports;
  }
  var weekOfYearExports = requireWeekOfYear();
  const weekOfYear = /* @__PURE__ */ getDefaultExportFromCjs(weekOfYearExports);
  var weekYear$2 = { exports: {} };
  var weekYear$1 = weekYear$2.exports;
  var hasRequiredWeekYear;
  function requireWeekYear() {
    if (hasRequiredWeekYear) return weekYear$2.exports;
    hasRequiredWeekYear = 1;
    (function(module2, exports$1) {
      !(function(e, t) {
        module2.exports = t();
      })(weekYear$1, (function() {
        return function(e, t) {
          t.prototype.weekYear = function() {
            var e2 = this.month(), t2 = this.week(), n = this.year();
            return 1 === t2 && 11 === e2 ? n + 1 : 0 === e2 && t2 >= 52 ? n - 1 : n;
          };
        };
      }));
    })(weekYear$2);
    return weekYear$2.exports;
  }
  var weekYearExports = requireWeekYear();
  const weekYear = /* @__PURE__ */ getDefaultExportFromCjs(weekYearExports);
  var dayOfYear$2 = { exports: {} };
  var dayOfYear$1 = dayOfYear$2.exports;
  var hasRequiredDayOfYear;
  function requireDayOfYear() {
    if (hasRequiredDayOfYear) return dayOfYear$2.exports;
    hasRequiredDayOfYear = 1;
    (function(module2, exports$1) {
      !(function(e, t) {
        module2.exports = t();
      })(dayOfYear$1, (function() {
        return function(e, t, n) {
          t.prototype.dayOfYear = function(e2) {
            var t2 = Math.round((n(this).startOf("day") - n(this).startOf("year")) / 864e5) + 1;
            return null == e2 ? t2 : this.add(e2 - t2, "day");
          };
        };
      }));
    })(dayOfYear$2);
    return dayOfYear$2.exports;
  }
  var dayOfYearExports = requireDayOfYear();
  const dayOfYear = /* @__PURE__ */ getDefaultExportFromCjs(dayOfYearExports);
  var isSameOrAfter$2 = { exports: {} };
  var isSameOrAfter$1 = isSameOrAfter$2.exports;
  var hasRequiredIsSameOrAfter;
  function requireIsSameOrAfter() {
    if (hasRequiredIsSameOrAfter) return isSameOrAfter$2.exports;
    hasRequiredIsSameOrAfter = 1;
    (function(module2, exports$1) {
      !(function(e, t) {
        module2.exports = t();
      })(isSameOrAfter$1, (function() {
        return function(e, t) {
          t.prototype.isSameOrAfter = function(e2, t2) {
            return this.isSame(e2, t2) || this.isAfter(e2, t2);
          };
        };
      }));
    })(isSameOrAfter$2);
    return isSameOrAfter$2.exports;
  }
  var isSameOrAfterExports = requireIsSameOrAfter();
  const isSameOrAfter = /* @__PURE__ */ getDefaultExportFromCjs(isSameOrAfterExports);
  var isSameOrBefore$2 = { exports: {} };
  var isSameOrBefore$1 = isSameOrBefore$2.exports;
  var hasRequiredIsSameOrBefore;
  function requireIsSameOrBefore() {
    if (hasRequiredIsSameOrBefore) return isSameOrBefore$2.exports;
    hasRequiredIsSameOrBefore = 1;
    (function(module2, exports$1) {
      !(function(e, i) {
        module2.exports = i();
      })(isSameOrBefore$1, (function() {
        return function(e, i) {
          i.prototype.isSameOrBefore = function(e2, i2) {
            return this.isSame(e2, i2) || this.isBefore(e2, i2);
          };
        };
      }));
    })(isSameOrBefore$2);
    return isSameOrBefore$2.exports;
  }
  var isSameOrBeforeExports = requireIsSameOrBefore();
  const isSameOrBefore = /* @__PURE__ */ getDefaultExportFromCjs(isSameOrBeforeExports);
  const datePickerPanelProps = buildProps({
    /**
     * @description optional, format of binding value. If not specified, the binding value will be a Date object
     */
    valueFormat: String,
    /**
     * @description optional, format of the date displayed in input's inner panel
     */
    dateFormat: String,
    /**
     * @description optional, format of the time displayed in input's inner panel
     */
    timeFormat: String,
    /**
     * @description whether picker is disabled
     */
    disabled: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description binding value, if it is an array, the length should be 2
     */
    modelValue: {
      type: definePropType([Date, Array, String, Number]),
      default: ""
    },
    /**
     * @description optional, default date of the calendar
     */
    defaultValue: {
      type: definePropType([Date, Array])
    },
    /**
     * @description optional, the time value to use when selecting date range
     */
    defaultTime: {
      type: definePropType([Date, Array])
    },
    /**
     * @description whether to pick a time range
     */
    isRange: Boolean,
    ...disabledTimeListsProps,
    /**
     * @description a function determining if a date is disabled with that date as its parameter. Should return a Boolean
     */
    disabledDate: {
      type: Function
    },
    /**
     * @description set custom className
     */
    cellClassName: {
      type: Function
    },
    /**
     * @description an object array to set shortcut options
     */
    shortcuts: {
      type: Array,
      default: () => []
    },
    /**
     * @description whether to pick time using arrow buttons
     */
    arrowControl: Boolean,
    /**
     * @description unlink two date-panels in range-picker
     */
    unlinkPanels: Boolean,
    /**
     * @description whether to show the now button
     */
    showNow: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether to show the confirm button
     */
    showConfirm: Boolean,
    /**
     * @description whether to show footer
     */
    showFooter: Boolean,
    /**
     * @description whether to show the number of the calendar week
     */
    showWeekNumber: Boolean,
    /**
     * @description type of the picker
     */
    type: {
      type: definePropType(String),
      default: "date"
    },
    /**
     * @description whether to show clear button in range mode
     */
    clearable: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether the date picker is bordered
     */
    border: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether the input is editable
     */
    editable: {
      type: Boolean,
      default: true
    }
  });
  const ROOT_PICKER_INJECTION_KEY = /* @__PURE__ */ Symbol("rootPickerContextKey");
  const ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY = "ElIsDefaultFormat";
  const selectionModes = [
    "date",
    "dates",
    "year",
    "years",
    "month",
    "months",
    "week",
    "range"
  ];
  const datePickerSharedProps = buildProps({
    cellClassName: {
      type: definePropType(Function)
    },
    disabledDate: {
      type: definePropType(Function)
    },
    date: {
      type: definePropType(Object),
      required: true
    },
    minDate: {
      type: definePropType(Object)
    },
    maxDate: {
      type: definePropType(Object)
    },
    parsedValue: {
      type: definePropType([Object, Array])
    },
    rangeState: {
      type: definePropType(Object),
      default: () => ({
        endDate: null,
        selecting: false
      })
    },
    disabled: Boolean
  });
  const panelSharedProps = buildProps({
    type: {
      type: definePropType(String),
      required: true,
      values: datePickTypes
    },
    dateFormat: String,
    timeFormat: String,
    showNow: {
      type: Boolean,
      default: true
    },
    showConfirm: Boolean,
    showFooter: {
      type: Boolean,
      default: true
    },
    showWeekNumber: Boolean,
    border: Boolean,
    disabled: Boolean,
    editable: {
      type: Boolean,
      default: true
    }
  });
  const panelRangeSharedProps = buildProps({
    unlinkPanels: Boolean,
    visible: {
      type: Boolean,
      default: true
    },
    showConfirm: Boolean,
    showFooter: {
      type: Boolean,
      default: true
    },
    border: Boolean,
    disabled: Boolean,
    parsedValue: {
      type: definePropType(Array)
    }
  });
  const selectionModeWithDefault = (mode) => {
    return {
      type: String,
      values: selectionModes,
      default: mode
    };
  };
  const panelDatePickProps = buildProps({
    ...panelSharedProps,
    parsedValue: {
      type: definePropType([Object, Array])
    },
    visible: {
      type: Boolean,
      default: true
    },
    format: {
      type: String,
      default: ""
    }
  });
  const isValidRange = (range2) => {
    if (!isArray$1(range2)) return false;
    const [left, right] = range2;
    return dayjs.isDayjs(left) && dayjs.isDayjs(right) && dayjs(left).isValid() && dayjs(right).isValid() && left.isSameOrBefore(right);
  };
  const getDefaultValue = (defaultValue, { lang, step: step2 = 1, unit: unit2, unlinkPanels }) => {
    let start;
    if (isArray$1(defaultValue)) {
      let [left, right] = defaultValue.map((d2) => dayjs(d2).locale(lang));
      if (!unlinkPanels) {
        right = left.add(step2, unit2);
      }
      return [left, right];
    } else if (defaultValue) {
      start = dayjs(defaultValue);
    } else {
      start = dayjs();
    }
    start = start.locale(lang);
    return [start, start.add(step2, unit2)];
  };
  const buildPickerTable = (dimension, rows, {
    columnIndexOffset,
    startDate,
    nextEndDate,
    now: now2,
    unit: unit2,
    relativeDateGetter,
    setCellMetadata,
    setRowMetadata
  }) => {
    for (let rowIndex = 0; rowIndex < dimension.row; rowIndex++) {
      const row = rows[rowIndex];
      for (let columnIndex = 0; columnIndex < dimension.column; columnIndex++) {
        let cell = row[columnIndex + columnIndexOffset];
        if (!cell) {
          cell = {
            row: rowIndex,
            column: columnIndex,
            type: "normal",
            inRange: false,
            start: false,
            end: false
          };
        }
        const index = rowIndex * dimension.column + columnIndex;
        const nextStartDate = relativeDateGetter(index);
        cell.dayjs = nextStartDate;
        cell.date = nextStartDate.toDate();
        cell.timestamp = nextStartDate.valueOf();
        cell.type = "normal";
        cell.inRange = !!(startDate && nextStartDate.isSameOrAfter(startDate, unit2) && nextEndDate && nextStartDate.isSameOrBefore(nextEndDate, unit2)) || !!(startDate && nextStartDate.isSameOrBefore(startDate, unit2) && nextEndDate && nextStartDate.isSameOrAfter(nextEndDate, unit2));
        if (startDate == null ? void 0 : startDate.isSameOrAfter(nextEndDate)) {
          cell.start = !!nextEndDate && nextStartDate.isSame(nextEndDate, unit2);
          cell.end = startDate && nextStartDate.isSame(startDate, unit2);
        } else {
          cell.start = !!startDate && nextStartDate.isSame(startDate, unit2);
          cell.end = !!nextEndDate && nextStartDate.isSame(nextEndDate, unit2);
        }
        const isToday = nextStartDate.isSame(now2, unit2);
        if (isToday) {
          cell.type = "today";
        }
        setCellMetadata == null ? void 0 : setCellMetadata(cell, { rowIndex, columnIndex });
        row[columnIndex + columnIndexOffset] = cell;
      }
      setRowMetadata == null ? void 0 : setRowMetadata(row);
    }
  };
  const datesInMonth = (date, year, month, lang) => {
    const firstDay = dayjs().locale(lang).startOf("month").month(month).year(year).hour(date.hour()).minute(date.minute()).second(date.second());
    const numOfDays = firstDay.daysInMonth();
    return rangeArr(numOfDays).map((n) => firstDay.add(n, "day").toDate());
  };
  const getValidDateOfMonth = (date, year, month, lang, disabledDate) => {
    const _value = dayjs().year(year).month(month).startOf("month").hour(date.hour()).minute(date.minute()).second(date.second());
    const _date = datesInMonth(date, year, month, lang).find((date22) => {
      return !(disabledDate == null ? void 0 : disabledDate(date22));
    });
    if (_date) {
      return dayjs(_date).locale(lang);
    }
    return _value.locale(lang);
  };
  const getValidDateOfYear = (value, lang, disabledDate) => {
    const year = value.year();
    if (!(disabledDate == null ? void 0 : disabledDate(value.toDate()))) {
      return value.locale(lang);
    }
    const month = value.month();
    if (!datesInMonth(value, year, month, lang).every(disabledDate)) {
      return getValidDateOfMonth(value, year, month, lang, disabledDate);
    }
    for (let i = 0; i < 12; i++) {
      if (!datesInMonth(value, year, i, lang).every(disabledDate)) {
        return getValidDateOfMonth(value, year, i, lang, disabledDate);
      }
    }
    return value;
  };
  const correctlyParseUserInput = (value, format2, lang, defaultFormat) => {
    if (isArray$1(value)) {
      return value.map(
        (v2) => correctlyParseUserInput(v2, format2, lang, defaultFormat)
      );
    }
    if (isString(value)) {
      const dayjsValue = (defaultFormat == null ? void 0 : defaultFormat.value) ? dayjs(value) : dayjs(value, format2);
      if (!dayjsValue.isValid()) {
        return dayjsValue;
      }
    }
    return dayjs(value, format2).locale(lang);
  };
  const basicDateTableProps = buildProps({
    ...datePickerSharedProps,
    showWeekNumber: Boolean,
    selectionMode: selectionModeWithDefault("date")
  });
  const basicDateTableEmits = ["changerange", "pick", "select"];
  const isNormalDay = (type = "") => {
    return ["normal", "today"].includes(type);
  };
  const useBasicDateTable = (props2, emit2) => {
    const { lang } = useLocale();
    const tbodyRef = ref();
    const currentCellRef = ref();
    const lastRow = ref();
    const lastColumn = ref();
    const tableRows = ref([[], [], [], [], [], []]);
    let focusWithClick = false;
    const firstDayOfWeek = props2.date.$locale().weekStart || 7;
    const WEEKS_CONSTANT = props2.date.locale("en").localeData().weekdaysShort().map((_2) => _2.toLowerCase());
    const offsetDay = computed(() => {
      return firstDayOfWeek > 3 ? 7 - firstDayOfWeek : -firstDayOfWeek;
    });
    const startDate = computed(() => {
      const startDayOfMonth = props2.date.startOf("month");
      return startDayOfMonth.subtract(startDayOfMonth.day() || 7, "day");
    });
    const WEEKS = computed(() => {
      return WEEKS_CONSTANT.concat(WEEKS_CONSTANT).slice(
        firstDayOfWeek,
        firstDayOfWeek + 7
      );
    });
    const hasCurrent = computed(() => {
      return flatten(unref(rows)).some((row) => {
        return row.isCurrent;
      });
    });
    const days = computed(() => {
      const startOfMonth = props2.date.startOf("month");
      const startOfMonthDay = startOfMonth.day() || 7;
      const dateCountOfMonth = startOfMonth.daysInMonth();
      const dateCountOfLastMonth = startOfMonth.subtract(1, "month").daysInMonth();
      return {
        startOfMonthDay,
        dateCountOfMonth,
        dateCountOfLastMonth
      };
    });
    const selectedDate = computed(() => {
      return props2.selectionMode === "dates" ? castArray(props2.parsedValue) : [];
    });
    const setDateText = (cell, { count, rowIndex, columnIndex }) => {
      const { startOfMonthDay, dateCountOfMonth, dateCountOfLastMonth } = unref(days);
      const offset2 = unref(offsetDay);
      if (rowIndex >= 0 && rowIndex <= 1) {
        const numberOfDaysFromPreviousMonth = startOfMonthDay + offset2 < 0 ? 7 + startOfMonthDay + offset2 : startOfMonthDay + offset2;
        if (columnIndex + rowIndex * 7 >= numberOfDaysFromPreviousMonth) {
          cell.text = count;
          return true;
        } else {
          cell.text = dateCountOfLastMonth - (numberOfDaysFromPreviousMonth - columnIndex % 7) + 1 + rowIndex * 7;
          cell.type = "prev-month";
        }
      } else {
        if (count <= dateCountOfMonth) {
          cell.text = count;
        } else {
          cell.text = count - dateCountOfMonth;
          cell.type = "next-month";
        }
        return true;
      }
      return false;
    };
    const setCellMetadata = (cell, { columnIndex, rowIndex }, count) => {
      const { disabledDate, cellClassName } = props2;
      const _selectedDate = unref(selectedDate);
      const shouldIncrement = setDateText(cell, { count, rowIndex, columnIndex });
      const cellDate = cell.dayjs.toDate();
      cell.selected = _selectedDate.find((d2) => d2.isSame(cell.dayjs, "day"));
      cell.isSelected = !!cell.selected;
      cell.isCurrent = isCurrent(cell);
      cell.disabled = disabledDate == null ? void 0 : disabledDate(cellDate);
      cell.customClass = cellClassName == null ? void 0 : cellClassName(cellDate);
      return shouldIncrement;
    };
    const setRowMetadata = (row) => {
      if (props2.selectionMode === "week") {
        const [start, end] = props2.showWeekNumber ? [1, 7] : [0, 6];
        const isActive = isWeekActive(row[start + 1]);
        row[start].inRange = isActive;
        row[start].start = isActive;
        row[end].inRange = isActive;
        row[end].end = isActive;
      }
    };
    const rows = computed(() => {
      const { minDate, maxDate, rangeState, showWeekNumber } = props2;
      const offset2 = unref(offsetDay);
      const rows_ = unref(tableRows);
      const dateUnit = "day";
      let count = 1;
      buildPickerTable({ row: 6, column: 7 }, rows_, {
        startDate: minDate,
        columnIndexOffset: showWeekNumber ? 1 : 0,
        nextEndDate: rangeState.endDate || maxDate || rangeState.selecting && minDate || null,
        now: dayjs().locale(unref(lang)).startOf(dateUnit),
        unit: dateUnit,
        relativeDateGetter: (idx) => unref(startDate).add(idx - offset2, dateUnit),
        setCellMetadata: (...args) => {
          if (setCellMetadata(...args, count)) {
            count += 1;
          }
        },
        setRowMetadata
      });
      if (showWeekNumber) {
        for (let rowIndex = 0; rowIndex < 6; rowIndex++) {
          if (rows_[rowIndex][1].dayjs) {
            rows_[rowIndex][0] = {
              type: "week",
              text: rows_[rowIndex][1].dayjs.week()
            };
          }
        }
      }
      return rows_;
    });
    watch(
      () => props2.date,
      async () => {
        var _a;
        if ((_a = unref(tbodyRef)) == null ? void 0 : _a.contains(document.activeElement)) {
          await nextTick();
          await focus();
        }
      }
    );
    const focus = async () => {
      var _a;
      return (_a = unref(currentCellRef)) == null ? void 0 : _a.focus();
    };
    const isCurrent = (cell) => {
      return props2.selectionMode === "date" && isNormalDay(cell.type) && cellMatchesDate(cell, props2.parsedValue);
    };
    const cellMatchesDate = (cell, date) => {
      if (!date) return false;
      return dayjs(date).locale(unref(lang)).isSame(props2.date.date(Number(cell.text)), "day");
    };
    const getDateOfCell = (row, column) => {
      const startOfMonthDay = unref(days).startOfMonthDay;
      const offset2 = unref(offsetDay);
      const numberOfDaysFromPreviousMonth = startOfMonthDay + offset2 < 0 ? 7 + startOfMonthDay + offset2 : startOfMonthDay + offset2;
      const offsetFromStart = row * 7 + (column - (props2.showWeekNumber ? 1 : 0));
      return props2.date.startOf("month").subtract(numberOfDaysFromPreviousMonth, "day").add(offsetFromStart, "day");
    };
    const handleMouseMove = (event) => {
      var _a;
      if (!props2.rangeState.selecting) return;
      let target = event.target;
      if (target.tagName === "SPAN") {
        target = (_a = target.parentNode) == null ? void 0 : _a.parentNode;
      }
      if (target.tagName === "DIV") {
        target = target.parentNode;
      }
      if (target.tagName !== "TD") return;
      const row = target.parentNode.rowIndex - 1;
      const column = target.cellIndex;
      if (unref(rows)[row][column].disabled) return;
      if (row !== unref(lastRow) || column !== unref(lastColumn)) {
        lastRow.value = row;
        lastColumn.value = column;
        emit2("changerange", {
          selecting: true,
          endDate: getDateOfCell(row, column)
        });
      }
    };
    const isSelectedCell = (cell) => {
      return !unref(hasCurrent) && (cell == null ? void 0 : cell.text) === 1 && isNormalDay(cell.type) || cell.isCurrent;
    };
    const handleFocus = (event) => {
      if (focusWithClick || unref(hasCurrent) || props2.selectionMode !== "date")
        return;
      handlePickDate(event, true);
    };
    const handleMouseDown = (event) => {
      const target = event.target.closest("td");
      if (!target) return;
      focusWithClick = true;
    };
    const handleMouseUp = (event) => {
      const target = event.target.closest("td");
      if (!target) return;
      focusWithClick = false;
    };
    const handleRangePick = (newDate) => {
      if (!props2.rangeState.selecting || !props2.minDate) {
        emit2("pick", { minDate: newDate, maxDate: null });
        emit2("select", true);
      } else {
        if (newDate >= props2.minDate) {
          emit2("pick", { minDate: props2.minDate, maxDate: newDate });
        } else {
          emit2("pick", { minDate: newDate, maxDate: props2.minDate });
        }
        emit2("select", false);
      }
    };
    const handleWeekPick = (newDate) => {
      const weekNumber = newDate.week();
      const value = `${newDate.year()}w${weekNumber}`;
      emit2("pick", {
        year: newDate.year(),
        week: weekNumber,
        value,
        date: newDate.startOf("week")
      });
    };
    const handleDatesPick = (newDate, selected) => {
      const newValue = selected ? castArray(props2.parsedValue).filter(
        (d2) => (d2 == null ? void 0 : d2.valueOf()) !== newDate.valueOf()
      ) : castArray(props2.parsedValue).concat([newDate]);
      emit2("pick", newValue);
    };
    const handlePickDate = (event, isKeyboardMovement = false) => {
      if (props2.disabled) return;
      const target = event.target.closest("td");
      if (!target) return;
      const row = target.parentNode.rowIndex - 1;
      const column = target.cellIndex;
      const cell = unref(rows)[row][column];
      if (cell.disabled || cell.type === "week") return;
      const newDate = getDateOfCell(row, column);
      switch (props2.selectionMode) {
        case "range": {
          handleRangePick(newDate);
          break;
        }
        case "date": {
          emit2("pick", newDate, isKeyboardMovement);
          break;
        }
        case "week": {
          handleWeekPick(newDate);
          break;
        }
        case "dates": {
          handleDatesPick(newDate, !!cell.selected);
          break;
        }
      }
    };
    const isWeekActive = (cell) => {
      if (props2.selectionMode !== "week") return false;
      let newDate = props2.date.startOf("day");
      if (cell.type === "prev-month") {
        newDate = newDate.subtract(1, "month");
      }
      if (cell.type === "next-month") {
        newDate = newDate.add(1, "month");
      }
      newDate = newDate.date(Number.parseInt(cell.text, 10));
      if (props2.parsedValue && !isArray$1(props2.parsedValue)) {
        const dayOffset = (props2.parsedValue.day() - firstDayOfWeek + 7) % 7 - 1;
        const weekDate = props2.parsedValue.subtract(dayOffset, "day");
        return weekDate.isSame(newDate, "day");
      }
      return false;
    };
    return {
      WEEKS,
      rows,
      tbodyRef,
      currentCellRef,
      // cellMatchesDate,
      // getDateOfCell,
      focus,
      isCurrent,
      isWeekActive,
      isSelectedCell,
      handlePickDate,
      handleMouseUp,
      handleMouseDown,
      handleMouseMove,
      handleFocus
    };
  };
  const useBasicDateTableDOM = (props2, {
    isCurrent,
    isWeekActive
  }) => {
    const ns = useNamespace("date-table");
    const { t } = useLocale();
    const tableKls = computed(() => [
      ns.b(),
      ns.is("week-mode", props2.selectionMode === "week" && !props2.disabled)
    ]);
    const tableLabel = computed(() => t("el.datepicker.dateTablePrompt"));
    const getCellClasses = (cell) => {
      const classes = [];
      if (isNormalDay(cell.type) && !cell.disabled) {
        classes.push("available");
        if (cell.type === "today") {
          classes.push("today");
        }
      } else {
        classes.push(cell.type);
      }
      if (isCurrent(cell)) {
        classes.push("current");
      }
      if (cell.inRange && (isNormalDay(cell.type) || props2.selectionMode === "week")) {
        classes.push("in-range");
        if (cell.start) {
          classes.push("start-date");
        }
        if (cell.end) {
          classes.push("end-date");
        }
      }
      if (cell.disabled || props2.disabled) {
        classes.push("disabled");
      }
      if (cell.selected) {
        classes.push("selected");
      }
      if (cell.customClass) {
        classes.push(cell.customClass);
      }
      return classes.join(" ");
    };
    const getRowKls = (cell) => [
      ns.e("row"),
      { current: isWeekActive(cell) }
    ];
    return {
      tableKls,
      tableLabel,
      weekHeaderClass: ns.e("week-header"),
      getCellClasses,
      getRowKls,
      t
    };
  };
  const basicCellProps = buildProps({
    cell: {
      type: definePropType(Object)
    }
  });
  var ElDatePickerCell = /* @__PURE__ */ defineComponent({
    name: "ElDatePickerCell",
    props: basicCellProps,
    setup(props2) {
      const ns = useNamespace("date-table-cell");
      const {
        slots
      } = inject(ROOT_PICKER_INJECTION_KEY);
      return () => {
        const {
          cell
        } = props2;
        return renderSlot(slots, "default", {
          ...cell
        }, () => {
          var _a;
          return [createVNode("div", {
            "class": ns.b()
          }, [createVNode("span", {
            "class": ns.e("text")
          }, [(_a = cell == null ? void 0 : cell.renderText) != null ? _a : cell == null ? void 0 : cell.text])])];
        });
      };
    }
  });
  const _hoisted_1$1E = ["aria-label"];
  const _hoisted_2$1k = ["aria-label"];
  const _hoisted_3$$ = ["aria-current", "aria-selected", "tabindex", "aria-disabled"];
  var _sfc_main$2l = /* @__PURE__ */ defineComponent({
    __name: "basic-date-table",
    props: basicDateTableProps,
    emits: basicDateTableEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const {
        WEEKS,
        rows,
        tbodyRef,
        currentCellRef,
        focus,
        isCurrent,
        isWeekActive,
        isSelectedCell,
        handlePickDate,
        handleMouseUp,
        handleMouseDown,
        handleMouseMove,
        handleFocus
      } = useBasicDateTable(props2, emit2);
      const { tableLabel, tableKls, getCellClasses, getRowKls, weekHeaderClass, t } = useBasicDateTableDOM(props2, {
        isCurrent,
        isWeekActive
      });
      let isUnmounting = false;
      onBeforeUnmount(() => {
        isUnmounting = true;
      });
      __expose({
        /**
         * @description focus on current cell
         */
        focus
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock("table", {
          "aria-label": unref(tableLabel),
          class: normalizeClass(unref(tableKls)),
          cellspacing: "0",
          cellpadding: "0",
          role: "grid",
          onClick: _cache[1] || (_cache[1] = //@ts-ignore
          (...args) => unref(handlePickDate) && unref(handlePickDate)(...args)),
          onMousemove: _cache[2] || (_cache[2] = //@ts-ignore
          (...args) => unref(handleMouseMove) && unref(handleMouseMove)(...args)),
          onMousedown: _cache[3] || (_cache[3] = //@ts-ignore
          (...args) => unref(handleMouseDown) && unref(handleMouseDown)(...args)),
          onMouseup: _cache[4] || (_cache[4] = //@ts-ignore
          (...args) => unref(handleMouseUp) && unref(handleMouseUp)(...args))
        }, [
          createBaseVNode(
            "tbody",
            {
              ref_key: "tbodyRef",
              ref: tbodyRef
            },
            [
              createBaseVNode("tr", null, [
                _ctx.showWeekNumber ? (openBlock(), createElementBlock(
                  "th",
                  {
                    key: 0,
                    scope: "col",
                    class: normalizeClass(unref(weekHeaderClass))
                  },
                  null,
                  2
                  /* CLASS */
                )) : createCommentVNode("v-if", true),
                (openBlock(true), createElementBlock(
                  Fragment,
                  null,
                  renderList(unref(WEEKS), (week, key) => {
                    return openBlock(), createElementBlock("th", {
                      key,
                      "aria-label": unref(t)("el.datepicker.weeksFull." + week),
                      scope: "col"
                    }, toDisplayString(unref(t)("el.datepicker.weeks." + week)), 9, _hoisted_2$1k);
                  }),
                  128
                  /* KEYED_FRAGMENT */
                ))
              ]),
              (openBlock(true), createElementBlock(
                Fragment,
                null,
                renderList(unref(rows), (row, rowKey2) => {
                  return openBlock(), createElementBlock(
                    "tr",
                    {
                      key: rowKey2,
                      class: normalizeClass(unref(getRowKls)(_ctx.showWeekNumber ? row[2] : row[1]))
                    },
                    [
                      (openBlock(true), createElementBlock(
                        Fragment,
                        null,
                        renderList(row, (cell, columnKey) => {
                          return openBlock(), createElementBlock("td", {
                            key: `${rowKey2}.${columnKey}`,
                            ref_for: true,
                            ref: (el) => !unref(isUnmounting) && unref(isSelectedCell)(cell) && (currentCellRef.value = el),
                            class: normalizeClass(unref(getCellClasses)(cell)),
                            "aria-current": cell.isCurrent ? "date" : void 0,
                            "aria-selected": cell.isCurrent,
                            tabindex: _ctx.disabled ? void 0 : unref(isSelectedCell)(cell) ? 0 : -1,
                            "aria-disabled": _ctx.disabled,
                            onFocus: _cache[0] || (_cache[0] = //@ts-ignore
                            (...args) => unref(handleFocus) && unref(handleFocus)(...args))
                          }, [
                            createVNode(unref(ElDatePickerCell), { cell }, null, 8, ["cell"])
                          ], 42, _hoisted_3$$);
                        }),
                        128
                        /* KEYED_FRAGMENT */
                      ))
                    ],
                    2
                    /* CLASS */
                  );
                }),
                128
                /* KEYED_FRAGMENT */
              ))
            ],
            512
            /* NEED_PATCH */
          )
        ], 42, _hoisted_1$1E);
      };
    }
  });
  const basicMonthTableProps = buildProps({
    ...datePickerSharedProps,
    selectionMode: selectionModeWithDefault("month")
  });
  const _hoisted_1$1D = ["aria-label"];
  const _hoisted_2$1j = ["aria-selected", "aria-label", "tabindex", "onKeydown"];
  var _sfc_main$2k = /* @__PURE__ */ defineComponent({
    __name: "basic-month-table",
    props: basicMonthTableProps,
    emits: ["changerange", "pick", "select"],
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const ns = useNamespace("month-table");
      const { t, lang } = useLocale();
      const tbodyRef = ref();
      const currentCellRef = ref();
      const months = ref(
        props2.date.locale("en").localeData().monthsShort().map((_2) => _2.toLowerCase())
      );
      const tableRows = ref([[], [], []]);
      const lastRow = ref();
      const lastColumn = ref();
      const rows = computed(() => {
        var _a, _b, _c;
        const rows2 = tableRows.value;
        const now2 = dayjs().locale(lang.value).startOf("month");
        for (let i = 0; i < 3; i++) {
          const row = rows2[i];
          for (let j = 0; j < 4; j++) {
            const cell = row[j] || (row[j] = {
              row: i,
              column: j,
              type: "normal",
              inRange: false,
              start: false,
              end: false,
              text: -1,
              disabled: false,
              isSelected: false,
              customClass: void 0,
              date: void 0,
              dayjs: void 0,
              isCurrent: void 0,
              selected: void 0,
              renderText: void 0,
              timestamp: void 0
            });
            cell.type = "normal";
            const index = i * 4 + j;
            const calTime = props2.date.startOf("year").month(index);
            const calEndDate = props2.rangeState.endDate || props2.maxDate || props2.rangeState.selecting && props2.minDate || null;
            cell.inRange = !!(props2.minDate && calTime.isSameOrAfter(props2.minDate, "month") && calEndDate && calTime.isSameOrBefore(calEndDate, "month")) || !!(props2.minDate && calTime.isSameOrBefore(props2.minDate, "month") && calEndDate && calTime.isSameOrAfter(calEndDate, "month"));
            if ((_a = props2.minDate) == null ? void 0 : _a.isSameOrAfter(calEndDate)) {
              cell.start = !!(calEndDate && calTime.isSame(calEndDate, "month"));
              cell.end = props2.minDate && calTime.isSame(props2.minDate, "month");
            } else {
              cell.start = !!(props2.minDate && calTime.isSame(props2.minDate, "month"));
              cell.end = !!(calEndDate && calTime.isSame(calEndDate, "month"));
            }
            const isToday = now2.isSame(calTime);
            if (isToday) {
              cell.type = "today";
            }
            const cellDate = calTime.toDate();
            cell.text = index;
            cell.disabled = ((_b = props2.disabledDate) == null ? void 0 : _b.call(props2, cellDate)) || false;
            cell.date = cellDate;
            cell.customClass = (_c = props2.cellClassName) == null ? void 0 : _c.call(props2, cellDate);
            cell.dayjs = calTime;
            cell.timestamp = calTime.valueOf();
            cell.isSelected = isSelectedCell(cell);
          }
        }
        return rows2;
      });
      const focus = () => {
        var _a;
        (_a = currentCellRef.value) == null ? void 0 : _a.focus();
      };
      const getCellStyle = (cell) => {
        const style = {};
        const year = props2.date.year();
        const today = /* @__PURE__ */ new Date();
        const month = cell.text;
        style.disabled = props2.disabled || (props2.disabledDate ? datesInMonth(props2.date, year, month, lang.value).every(
          props2.disabledDate
        ) : false);
        style.current = castArray(props2.parsedValue).some(
          (date) => dayjs.isDayjs(date) && date.year() === year && date.month() === month
        );
        style.today = today.getFullYear() === year && today.getMonth() === month;
        if (cell.customClass) {
          style[cell.customClass] = true;
        }
        if (cell.inRange) {
          style["in-range"] = true;
          if (cell.start) {
            style["start-date"] = true;
          }
          if (cell.end) {
            style["end-date"] = true;
          }
        }
        return style;
      };
      const isSelectedCell = (cell) => {
        const year = props2.date.year();
        const month = cell.text;
        return castArray(props2.date).some(
          (date) => date.year() === year && date.month() === month
        );
      };
      const handleMouseMove = (event) => {
        var _a;
        if (!props2.rangeState.selecting) return;
        let target = event.target;
        if (target.tagName === "SPAN") {
          target = (_a = target.parentNode) == null ? void 0 : _a.parentNode;
        }
        if (target.tagName === "DIV") {
          target = target.parentNode;
        }
        if (target.tagName !== "TD") return;
        const row = target.parentNode.rowIndex;
        const column = target.cellIndex;
        if (rows.value[row][column].disabled) return;
        if (row !== lastRow.value || column !== lastColumn.value) {
          lastRow.value = row;
          lastColumn.value = column;
          emit2("changerange", {
            selecting: true,
            endDate: props2.date.startOf("year").month(row * 4 + column)
          });
        }
      };
      const handleMonthTableClick = (event) => {
        var _a;
        if (props2.disabled) return;
        const target = (_a = event.target) == null ? void 0 : _a.closest(
          "td"
        );
        if ((target == null ? void 0 : target.tagName) !== "TD") return;
        if (hasClass(target, "disabled")) return;
        const column = target.cellIndex;
        const row = target.parentNode.rowIndex;
        const month = row * 4 + column;
        const newDate = props2.date.startOf("year").month(month);
        if (props2.selectionMode === "months") {
          if (event.type === "keydown") {
            emit2("pick", castArray(props2.parsedValue), false);
            return;
          }
          const newMonth = getValidDateOfMonth(
            props2.date,
            props2.date.year(),
            month,
            lang.value,
            props2.disabledDate
          );
          const newValue = hasClass(target, "current") ? castArray(props2.parsedValue).filter(
            (d2) => (
              // Filter out the selected month only when both year and month match
              // This allows remove same months from different years #20019
              (d2 == null ? void 0 : d2.year()) !== newMonth.year() || (d2 == null ? void 0 : d2.month()) !== newMonth.month()
            )
          ) : castArray(props2.parsedValue).concat([dayjs(newMonth)]);
          emit2("pick", newValue);
        } else if (props2.selectionMode === "range") {
          if (!props2.rangeState.selecting) {
            emit2("pick", { minDate: newDate, maxDate: null });
            emit2("select", true);
          } else {
            if (props2.minDate && newDate >= props2.minDate) {
              emit2("pick", { minDate: props2.minDate, maxDate: newDate });
            } else {
              emit2("pick", { minDate: newDate, maxDate: props2.minDate });
            }
            emit2("select", false);
          }
        } else {
          emit2("pick", month);
        }
      };
      watch(
        () => props2.date,
        async () => {
          var _a, _b;
          if ((_a = tbodyRef.value) == null ? void 0 : _a.contains(document.activeElement)) {
            await nextTick();
            (_b = currentCellRef.value) == null ? void 0 : _b.focus();
          }
        }
      );
      __expose({
        /**
         * @description focus current cell
         */
        focus
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock("table", {
          role: "grid",
          "aria-label": unref(t)("el.datepicker.monthTablePrompt"),
          class: normalizeClass(unref(ns).b()),
          onClick: handleMonthTableClick,
          onMousemove: handleMouseMove
        }, [
          createBaseVNode(
            "tbody",
            {
              ref_key: "tbodyRef",
              ref: tbodyRef
            },
            [
              (openBlock(true), createElementBlock(
                Fragment,
                null,
                renderList(rows.value, (row, key) => {
                  return openBlock(), createElementBlock("tr", { key }, [
                    (openBlock(true), createElementBlock(
                      Fragment,
                      null,
                      renderList(row, (cell, key_) => {
                        return openBlock(), createElementBlock("td", {
                          key: key_,
                          ref_for: true,
                          ref: (el) => cell.isSelected && (currentCellRef.value = el),
                          class: normalizeClass(getCellStyle(cell)),
                          "aria-selected": !!cell.isSelected,
                          "aria-label": unref(t)(`el.datepicker.month${+cell.text + 1}`),
                          tabindex: cell.isSelected ? 0 : -1,
                          onKeydown: [
                            withKeys(withModifiers(handleMonthTableClick, ["prevent", "stop"]), ["space"]),
                            withKeys(withModifiers(handleMonthTableClick, ["prevent", "stop"]), ["enter"])
                          ]
                        }, [
                          createVNode(unref(ElDatePickerCell), {
                            cell: {
                              ...cell,
                              renderText: unref(t)("el.datepicker.months." + months.value[cell.text])
                            }
                          }, null, 8, ["cell"])
                        ], 42, _hoisted_2$1j);
                      }),
                      128
                      /* KEYED_FRAGMENT */
                    ))
                  ]);
                }),
                128
                /* KEYED_FRAGMENT */
              ))
            ],
            512
            /* NEED_PATCH */
          )
        ], 42, _hoisted_1$1D);
      };
    }
  });
  const basicYearTableProps = buildProps({
    ...datePickerSharedProps,
    selectionMode: selectionModeWithDefault("year")
  });
  const _hoisted_1$1C = ["aria-label"];
  const _hoisted_2$1i = ["aria-selected", "aria-label", "tabindex", "onKeydown"];
  var _sfc_main$2j = /* @__PURE__ */ defineComponent({
    __name: "basic-year-table",
    props: basicYearTableProps,
    emits: ["changerange", "pick", "select"],
    setup(__props, { expose: __expose, emit: __emit }) {
      const datesInYear = (year, lang2) => {
        const firstDay = dayjs(String(year)).locale(lang2).startOf("year");
        const lastDay = firstDay.endOf("year");
        const numOfDays = lastDay.dayOfYear();
        return rangeArr(numOfDays).map((n) => firstDay.add(n, "day").toDate());
      };
      const props2 = __props;
      const emit2 = __emit;
      const ns = useNamespace("year-table");
      const { t, lang } = useLocale();
      const tbodyRef = ref();
      const currentCellRef = ref();
      const startYear = computed(() => {
        return Math.floor(props2.date.year() / 10) * 10;
      });
      const tableRows = ref([[], [], []]);
      const lastRow = ref();
      const lastColumn = ref();
      const rows = computed(() => {
        var _a, _b, _c;
        const rows2 = tableRows.value;
        const now2 = dayjs().locale(lang.value).startOf("year");
        for (let i = 0; i < 3; i++) {
          const row = rows2[i];
          for (let j = 0; j < 4; j++) {
            if (i * 4 + j >= 10) {
              break;
            }
            let cell = row[j];
            if (!cell) {
              cell = {
                row: i,
                column: j,
                type: "normal",
                inRange: false,
                start: false,
                end: false,
                text: -1,
                disabled: false,
                isSelected: false,
                customClass: void 0,
                date: void 0,
                dayjs: void 0,
                isCurrent: void 0,
                selected: void 0,
                renderText: void 0,
                timestamp: void 0
              };
            }
            cell.type = "normal";
            const index = i * 4 + j + startYear.value;
            const calTime = dayjs().year(index);
            const calEndDate = props2.rangeState.endDate || props2.maxDate || props2.rangeState.selecting && props2.minDate || null;
            cell.inRange = !!(props2.minDate && calTime.isSameOrAfter(props2.minDate, "year") && calEndDate && calTime.isSameOrBefore(calEndDate, "year")) || !!(props2.minDate && calTime.isSameOrBefore(props2.minDate, "year") && calEndDate && calTime.isSameOrAfter(calEndDate, "year"));
            if ((_a = props2.minDate) == null ? void 0 : _a.isSameOrAfter(calEndDate)) {
              cell.start = !!(calEndDate && calTime.isSame(calEndDate, "year"));
              cell.end = !!(props2.minDate && calTime.isSame(props2.minDate, "year"));
            } else {
              cell.start = !!(props2.minDate && calTime.isSame(props2.minDate, "year"));
              cell.end = !!(calEndDate && calTime.isSame(calEndDate, "year"));
            }
            const isToday = now2.isSame(calTime);
            if (isToday) {
              cell.type = "today";
            }
            cell.text = index;
            const cellDate = calTime.toDate();
            cell.disabled = ((_b = props2.disabledDate) == null ? void 0 : _b.call(props2, cellDate)) || false;
            cell.date = cellDate;
            cell.customClass = (_c = props2.cellClassName) == null ? void 0 : _c.call(props2, cellDate);
            cell.dayjs = calTime;
            cell.timestamp = calTime.valueOf();
            cell.isSelected = isSelectedCell(cell);
            row[j] = cell;
          }
        }
        return rows2;
      });
      const focus = () => {
        var _a;
        (_a = currentCellRef.value) == null ? void 0 : _a.focus();
      };
      const getCellKls = (cell) => {
        const kls = {};
        const today = dayjs().locale(lang.value);
        const year = cell.text;
        kls.disabled = props2.disabled || (props2.disabledDate ? datesInYear(year, lang.value).every(props2.disabledDate) : false);
        kls.today = today.year() === year;
        kls.current = castArray(props2.parsedValue).some((d2) => d2.year() === year);
        if (cell.customClass) {
          kls[cell.customClass] = true;
        }
        if (cell.inRange) {
          kls["in-range"] = true;
          if (cell.start) {
            kls["start-date"] = true;
          }
          if (cell.end) {
            kls["end-date"] = true;
          }
        }
        return kls;
      };
      const isSelectedCell = (cell) => {
        const year = cell.text;
        return castArray(props2.date).some((date) => date.year() === year);
      };
      const handleYearTableClick = (event) => {
        var _a;
        if (props2.disabled) return;
        const target = (_a = event.target) == null ? void 0 : _a.closest(
          "td"
        );
        if (!target || !target.textContent || hasClass(target, "disabled")) return;
        const column = target.cellIndex;
        const row = target.parentNode.rowIndex;
        const selectedYear = row * 4 + column + startYear.value;
        const newDate = dayjs().year(selectedYear);
        if (props2.selectionMode === "range") {
          if (!props2.rangeState.selecting) {
            emit2("pick", { minDate: newDate, maxDate: null });
            emit2("select", true);
          } else {
            if (props2.minDate && newDate >= props2.minDate) {
              emit2("pick", { minDate: props2.minDate, maxDate: newDate });
            } else {
              emit2("pick", { minDate: newDate, maxDate: props2.minDate });
            }
            emit2("select", false);
          }
        } else if (props2.selectionMode === "years") {
          if (event.type === "keydown") {
            emit2("pick", castArray(props2.parsedValue), false);
            return;
          }
          const vaildYear = getValidDateOfYear(
            newDate.startOf("year"),
            lang.value,
            props2.disabledDate
          );
          const newValue = hasClass(target, "current") ? castArray(props2.parsedValue).filter((d2) => (d2 == null ? void 0 : d2.year()) !== selectedYear) : castArray(props2.parsedValue).concat([vaildYear]);
          emit2("pick", newValue);
        } else {
          emit2("pick", selectedYear);
        }
      };
      const handleMouseMove = (event) => {
        var _a;
        if (!props2.rangeState.selecting) return;
        const target = (_a = event.target) == null ? void 0 : _a.closest(
          "td"
        );
        if (!target) return;
        const row = target.parentNode.rowIndex;
        const column = target.cellIndex;
        if (rows.value[row][column].disabled) return;
        if (row !== lastRow.value || column !== lastColumn.value) {
          lastRow.value = row;
          lastColumn.value = column;
          emit2("changerange", {
            selecting: true,
            endDate: dayjs().year(startYear.value).add(row * 4 + column, "year")
          });
        }
      };
      watch(
        () => props2.date,
        async () => {
          var _a, _b;
          if ((_a = tbodyRef.value) == null ? void 0 : _a.contains(document.activeElement)) {
            await nextTick();
            (_b = currentCellRef.value) == null ? void 0 : _b.focus();
          }
        }
      );
      __expose({
        /**
         * @description focus on the current cell
         */
        focus
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock("table", {
          role: "grid",
          "aria-label": unref(t)("el.datepicker.yearTablePrompt"),
          class: normalizeClass(unref(ns).b()),
          onClick: handleYearTableClick,
          onMousemove: handleMouseMove
        }, [
          createBaseVNode(
            "tbody",
            {
              ref_key: "tbodyRef",
              ref: tbodyRef
            },
            [
              (openBlock(true), createElementBlock(
                Fragment,
                null,
                renderList(rows.value, (row, rowKey2) => {
                  return openBlock(), createElementBlock("tr", { key: rowKey2 }, [
                    (openBlock(true), createElementBlock(
                      Fragment,
                      null,
                      renderList(row, (cell, cellKey) => {
                        return openBlock(), createElementBlock("td", {
                          key: `${rowKey2}_${cellKey}`,
                          ref_for: true,
                          ref: (el) => cell.isSelected && (currentCellRef.value = el),
                          class: normalizeClass(["available", getCellKls(cell)]),
                          "aria-selected": cell.isSelected,
                          "aria-label": String(cell.text),
                          tabindex: cell.isSelected ? 0 : -1,
                          onKeydown: [
                            withKeys(withModifiers(handleYearTableClick, ["prevent", "stop"]), ["space"]),
                            withKeys(withModifiers(handleYearTableClick, ["prevent", "stop"]), ["enter"])
                          ]
                        }, [
                          createVNode(unref(ElDatePickerCell), { cell }, null, 8, ["cell"])
                        ], 42, _hoisted_2$1i);
                      }),
                      128
                      /* KEYED_FRAGMENT */
                    ))
                  ]);
                }),
                128
                /* KEYED_FRAGMENT */
              ))
            ],
            512
            /* NEED_PATCH */
          )
        ], 42, _hoisted_1$1C);
      };
    }
  });
  const _hoisted_1$1B = ["disabled", "onClick"];
  const _hoisted_2$1h = ["aria-label", "disabled"];
  const _hoisted_3$_ = ["aria-label", "disabled"];
  const _hoisted_4$U = ["tabindex", "aria-disabled"];
  const _hoisted_5$K = ["tabindex", "aria-disabled"];
  const _hoisted_6$o = ["aria-label", "disabled"];
  const _hoisted_7$l = ["aria-label", "disabled"];
  var _sfc_main$2i = /* @__PURE__ */ defineComponent({
    __name: "panel-date-pick",
    props: panelDatePickProps,
    emits: ["pick", "set-picker-option", "panel-change"],
    setup(__props, { emit: __emit }) {
      const timeWithinRange = (_2, __, ___) => true;
      const props2 = __props;
      const contextEmit = __emit;
      const ppNs = useNamespace("picker-panel");
      const dpNs = useNamespace("date-picker");
      const attrs = useAttrs$1();
      const slots = useSlots();
      const { t, lang } = useLocale();
      const pickerBase = inject(PICKER_BASE_INJECTION_KEY);
      const isDefaultFormat = inject(
        ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY,
        void 0
      );
      const { shortcuts, disabledDate, cellClassName, defaultTime } = pickerBase.props;
      const defaultValue = toRef(pickerBase.props, "defaultValue");
      const currentViewRef = ref();
      const innerDate = ref(dayjs().locale(lang.value));
      const isChangeToNow = ref(false);
      let isShortcut = false;
      const defaultTimeD = computed(() => {
        return dayjs(defaultTime).locale(lang.value);
      });
      const month = computed(() => {
        return innerDate.value.month();
      });
      const year = computed(() => {
        return innerDate.value.year();
      });
      const selectableRange = ref([]);
      const userInputDate = ref(null);
      const userInputTime = ref(null);
      const checkDateWithinRange = (date) => {
        return selectableRange.value.length > 0 ? timeWithinRange(date, selectableRange.value, props2.format || "HH:mm:ss") : true;
      };
      const formatEmit = (emitDayjs) => {
        if (defaultTime && !visibleTime.value && !isChangeToNow.value && !isShortcut) {
          return defaultTimeD.value.year(emitDayjs.year()).month(emitDayjs.month()).date(emitDayjs.date());
        }
        if (showTime.value) return emitDayjs.millisecond(0);
        return emitDayjs.startOf("day");
      };
      const emit2 = (value, ...args) => {
        if (!value) {
          contextEmit("pick", value, ...args);
        } else if (isArray$1(value)) {
          const dates = value.map(formatEmit);
          contextEmit("pick", dates, ...args);
        } else {
          contextEmit("pick", formatEmit(value), ...args);
        }
        userInputDate.value = null;
        userInputTime.value = null;
        isChangeToNow.value = false;
        isShortcut = false;
      };
      const handleDatePick = async (value, keepOpen) => {
        if (selectionMode.value === "date" && dayjs.isDayjs(value)) {
          const parsedDateValue = extractFirst(props2.parsedValue);
          let newDate = parsedDateValue ? parsedDateValue.year(value.year()).month(value.month()).date(value.date()) : value;
          if (!checkDateWithinRange(newDate)) ;
          innerDate.value = newDate;
          emit2(newDate, showTime.value || keepOpen);
        } else if (selectionMode.value === "week") {
          emit2(value.date);
        } else if (selectionMode.value === "dates") {
          emit2(value, true);
        }
      };
      const moveByMonth = (forward) => {
        const action = forward ? "add" : "subtract";
        innerDate.value = innerDate.value[action](1, "month");
        handlePanelChange("month");
      };
      const moveByYear = (forward) => {
        const currentDate = innerDate.value;
        const action = forward ? "add" : "subtract";
        innerDate.value = currentView2.value === "year" ? currentDate[action](10, "year") : currentDate[action](1, "year");
        handlePanelChange("year");
      };
      const currentView2 = ref("date");
      const yearLabel = computed(() => {
        const yearTranslation = t("el.datepicker.year");
        if (currentView2.value === "year") {
          const startYear = Math.floor(year.value / 10) * 10;
          if (yearTranslation) {
            return `${startYear} ${yearTranslation} - ${startYear + 9} ${yearTranslation}`;
          }
          return `${startYear} - ${startYear + 9}`;
        }
        return `${year.value} ${yearTranslation}`;
      });
      const handleShortcutClick = (shortcut) => {
        const shortcutValue = isFunction$1(shortcut.value) ? shortcut.value() : shortcut.value;
        if (shortcutValue) {
          isShortcut = true;
          emit2(dayjs(shortcutValue).locale(lang.value));
          return;
        }
        if (shortcut.onClick) {
          shortcut.onClick({
            attrs,
            slots,
            emit: contextEmit
          });
        }
      };
      const selectionMode = computed(() => {
        const { type } = props2;
        if (["week", "month", "months", "year", "years", "dates"].includes(type))
          return type;
        return "date";
      });
      const isMultipleType = computed(() => {
        return selectionMode.value === "dates" || selectionMode.value === "months" || selectionMode.value === "years";
      });
      const keyboardMode = computed(() => {
        return selectionMode.value === "date" ? currentView2.value : selectionMode.value;
      });
      const hasShortcuts = computed(() => !!shortcuts.length);
      const handleMonthPick = async (month2, keepOpen) => {
        if (selectionMode.value === "month") {
          innerDate.value = getValidDateOfMonth(
            innerDate.value,
            innerDate.value.year(),
            month2,
            lang.value,
            disabledDate
          );
          emit2(innerDate.value, false);
        } else if (selectionMode.value === "months") {
          emit2(month2, keepOpen != null ? keepOpen : true);
        } else {
          innerDate.value = getValidDateOfMonth(
            innerDate.value,
            innerDate.value.year(),
            month2,
            lang.value,
            disabledDate
          );
          currentView2.value = "date";
          if (["month", "year", "date", "week"].includes(selectionMode.value)) {
            emit2(innerDate.value, true);
            await nextTick();
            handleFocusPicker();
          }
        }
        handlePanelChange("month");
      };
      const handleYearPick = async (year2, keepOpen) => {
        if (selectionMode.value === "year") {
          const data = innerDate.value.startOf("year").year(year2);
          innerDate.value = getValidDateOfYear(data, lang.value, disabledDate);
          emit2(innerDate.value, false);
        } else if (selectionMode.value === "years") {
          emit2(year2, keepOpen != null ? keepOpen : true);
        } else {
          const data = innerDate.value.year(year2);
          innerDate.value = getValidDateOfYear(data, lang.value, disabledDate);
          currentView2.value = "month";
          if (["month", "year", "date", "week"].includes(selectionMode.value)) {
            emit2(innerDate.value, true);
            await nextTick();
            handleFocusPicker();
          }
        }
        handlePanelChange("year");
      };
      const dateDisabled = useFormDisabled();
      const showPicker = async (view) => {
        if (dateDisabled.value) return;
        currentView2.value = view;
        await nextTick();
        handleFocusPicker();
      };
      const showTime = computed(
        () => props2.type === "datetime" || props2.type === "datetimerange"
      );
      const footerVisible = computed(() => {
        const showDateFooter = showTime.value || selectionMode.value === "dates";
        const showYearFooter = selectionMode.value === "years";
        const showMonthFooter = selectionMode.value === "months";
        const isDateView = currentView2.value === "date";
        const isYearView = currentView2.value === "year";
        const isMonthView = currentView2.value === "month";
        return showDateFooter && isDateView || showYearFooter && isYearView || showMonthFooter && isMonthView;
      });
      const footerFilled = computed(
        () => !isMultipleType.value && props2.showNow || props2.showConfirm
      );
      const disabledConfirm = computed(() => {
        if (!disabledDate) return false;
        if (!props2.parsedValue) return true;
        if (isArray$1(props2.parsedValue)) {
          return disabledDate(props2.parsedValue[0].toDate());
        }
        return disabledDate(props2.parsedValue.toDate());
      });
      const onConfirm = () => {
        if (isMultipleType.value) {
          emit2(props2.parsedValue);
        } else {
          let result = extractFirst(props2.parsedValue);
          if (!result) {
            const defaultTimeD2 = dayjs(defaultTime).locale(lang.value);
            const defaultValueD = getDefaultValue2();
            result = defaultTimeD2.year(defaultValueD.year()).month(defaultValueD.month()).date(defaultValueD.date());
          }
          innerDate.value = result;
          emit2(result);
        }
      };
      const disabledNow = computed(() => {
        if (!disabledDate) return false;
        return disabledDate(dayjs().locale(lang.value).toDate());
      });
      const changeToNow = () => {
        const now2 = dayjs().locale(lang.value);
        const nowDate = now2.toDate();
        isChangeToNow.value = true;
        if ((!disabledDate || !disabledDate(nowDate)) && checkDateWithinRange(nowDate)) {
          innerDate.value = dayjs().locale(lang.value);
          emit2(innerDate.value);
        }
      };
      const timeFormat = computed(() => {
        return props2.timeFormat || extractTimeFormat(props2.format) || DEFAULT_FORMATS_TIME;
      });
      const dateFormat = computed(() => {
        return props2.dateFormat || extractDateFormat(props2.format) || DEFAULT_FORMATS_DATE;
      });
      const visibleTime = computed(() => {
        if (userInputTime.value) return userInputTime.value;
        if (!props2.parsedValue && !defaultValue.value) return;
        const dateValue = extractFirst(props2.parsedValue) || innerDate.value;
        return dateValue.format(timeFormat.value);
      });
      const visibleDate = computed(() => {
        if (userInputDate.value) return userInputDate.value;
        if (!props2.parsedValue && !defaultValue.value) return;
        const dateValue = extractFirst(props2.parsedValue) || innerDate.value;
        return dateValue.format(dateFormat.value);
      });
      const timePickerVisible = ref(false);
      const onTimePickerInputFocus = () => {
        timePickerVisible.value = true;
      };
      const handleTimePickClose = () => {
        timePickerVisible.value = false;
      };
      const getUnits = (date) => {
        return {
          hour: date.hour(),
          minute: date.minute(),
          second: date.second(),
          year: date.year(),
          month: date.month(),
          date: date.date()
        };
      };
      const handleTimePick = (value, visible, first) => {
        const { hour, minute, second } = getUnits(value);
        const parsedDateValue = extractFirst(props2.parsedValue);
        const newDate = parsedDateValue ? parsedDateValue.hour(hour).minute(minute).second(second) : value;
        innerDate.value = newDate;
        emit2(innerDate.value, true);
        if (!first) {
          timePickerVisible.value = visible;
        }
      };
      const handleVisibleTimeChange = (value) => {
        const newDate = dayjs(value, timeFormat.value).locale(lang.value);
        if (newDate.isValid() && checkDateWithinRange(newDate)) {
          const { year: year2, month: month2, date } = getUnits(innerDate.value);
          innerDate.value = newDate.year(year2).month(month2).date(date);
          userInputTime.value = null;
          timePickerVisible.value = false;
          emit2(innerDate.value, true);
        }
      };
      const handleVisibleDateChange = (value) => {
        const newDate = correctlyParseUserInput(
          value,
          dateFormat.value,
          lang.value,
          isDefaultFormat
        );
        if (newDate.isValid()) {
          if (disabledDate && disabledDate(newDate.toDate())) {
            return;
          }
          const { hour, minute, second } = getUnits(innerDate.value);
          innerDate.value = newDate.hour(hour).minute(minute).second(second);
          userInputDate.value = null;
          emit2(innerDate.value, true);
        }
      };
      const isValidValue2 = (date) => {
        return dayjs.isDayjs(date) && date.isValid() && (disabledDate ? !disabledDate(date.toDate()) : true);
      };
      const parseUserInput = (value) => {
        return correctlyParseUserInput(
          value,
          props2.format,
          lang.value,
          isDefaultFormat
        );
      };
      const getDefaultValue2 = () => {
        const parseDate2 = dayjs(defaultValue.value).locale(lang.value);
        if (!defaultValue.value) {
          const defaultTimeDValue = defaultTimeD.value;
          return dayjs().hour(defaultTimeDValue.hour()).minute(defaultTimeDValue.minute()).second(defaultTimeDValue.second()).locale(lang.value);
        }
        return parseDate2;
      };
      const handleFocusPicker = () => {
        var _a;
        if (["week", "month", "year", "date"].includes(selectionMode.value)) {
          (_a = currentViewRef.value) == null ? void 0 : _a.focus();
        }
      };
      const _handleFocusPicker = () => {
        handleFocusPicker();
        if (selectionMode.value === "week") {
          handleKeyControl(EVENT_CODE.down);
        }
      };
      const handleKeydownTable = (event) => {
        const code = getEventCode(event);
        const validCode = [
          EVENT_CODE.up,
          EVENT_CODE.down,
          EVENT_CODE.left,
          EVENT_CODE.right,
          EVENT_CODE.home,
          EVENT_CODE.end,
          EVENT_CODE.pageUp,
          EVENT_CODE.pageDown
        ];
        if (validCode.includes(code)) {
          handleKeyControl(code);
          event.stopPropagation();
          event.preventDefault();
        }
        if ([EVENT_CODE.enter, EVENT_CODE.space, EVENT_CODE.numpadEnter].includes(
          code
        ) && userInputDate.value === null && userInputTime.value === null) {
          event.preventDefault();
          emit2(innerDate.value, false);
        }
      };
      const handleKeyControl = (code) => {
        var _a;
        const { up, down, left, right, home, end, pageUp, pageDown } = EVENT_CODE;
        const mapping = {
          year: {
            [up]: -4,
            [down]: 4,
            [left]: -1,
            [right]: 1,
            offset: (date, step2) => date.setFullYear(date.getFullYear() + step2)
          },
          month: {
            [up]: -4,
            [down]: 4,
            [left]: -1,
            [right]: 1,
            offset: (date, step2) => date.setMonth(date.getMonth() + step2)
          },
          week: {
            [up]: -1,
            [down]: 1,
            [left]: -1,
            [right]: 1,
            offset: (date, step2) => date.setDate(date.getDate() + step2 * 7)
          },
          date: {
            [up]: -7,
            [down]: 7,
            [left]: -1,
            [right]: 1,
            [home]: (date) => -date.getDay(),
            [end]: (date) => -date.getDay() + 6,
            [pageUp]: (date) => -new Date(date.getFullYear(), date.getMonth(), 0).getDate(),
            [pageDown]: (date) => new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate(),
            offset: (date, step2) => date.setDate(date.getDate() + step2)
          }
        };
        const newDate = innerDate.value.toDate();
        while (Math.abs(innerDate.value.diff(newDate, "year", true)) < 1) {
          const map2 = mapping[keyboardMode.value];
          if (!map2) return;
          map2.offset(
            newDate,
            isFunction$1(map2[code]) ? map2[code](newDate) : (_a = map2[code]) != null ? _a : 0
          );
          if (disabledDate && disabledDate(newDate)) {
            break;
          }
          const result = dayjs(newDate).locale(lang.value);
          innerDate.value = result;
          contextEmit("pick", result, true);
          break;
        }
      };
      const handlePanelChange = (mode) => {
        contextEmit("panel-change", innerDate.value.toDate(), mode, currentView2.value);
      };
      watch(
        () => selectionMode.value,
        (val) => {
          if (["month", "year"].includes(val)) {
            currentView2.value = val;
            return;
          } else if (val === "years") {
            currentView2.value = "year";
            return;
          } else if (val === "months") {
            currentView2.value = "month";
            return;
          }
          currentView2.value = "date";
        },
        { immediate: true }
      );
      watch(
        () => defaultValue.value,
        (val) => {
          if (val) {
            innerDate.value = getDefaultValue2();
          }
        },
        { immediate: true }
      );
      watch(
        () => props2.parsedValue,
        (val) => {
          if (val) {
            if (isMultipleType.value) return;
            if (isArray$1(val)) return;
            innerDate.value = val;
          } else {
            innerDate.value = getDefaultValue2();
          }
        },
        { immediate: true }
      );
      contextEmit("set-picker-option", ["isValidValue", isValidValue2]);
      contextEmit("set-picker-option", ["parseUserInput", parseUserInput]);
      contextEmit("set-picker-option", ["handleFocusPicker", _handleFocusPicker]);
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass([
              unref(ppNs).b(),
              unref(dpNs).b(),
              unref(ppNs).is("border", _ctx.border),
              unref(ppNs).is("disabled", unref(dateDisabled)),
              {
                "has-sidebar": _ctx.$slots.sidebar || hasShortcuts.value,
                "has-time": showTime.value
              }
            ])
          },
          [
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(ppNs).e("body-wrapper"))
              },
              [
                renderSlot(_ctx.$slots, "sidebar", {
                  class: normalizeClass(unref(ppNs).e("sidebar"))
                }),
                hasShortcuts.value ? (openBlock(), createElementBlock(
                  "div",
                  {
                    key: 0,
                    class: normalizeClass(unref(ppNs).e("sidebar"))
                  },
                  [
                    (openBlock(true), createElementBlock(
                      Fragment,
                      null,
                      renderList(unref(shortcuts), (shortcut, key) => {
                        return openBlock(), createElementBlock("button", {
                          key,
                          type: "button",
                          disabled: unref(dateDisabled),
                          class: normalizeClass(unref(ppNs).e("shortcut")),
                          onClick: ($event) => handleShortcutClick(shortcut)
                        }, toDisplayString(shortcut.text), 11, _hoisted_1$1B);
                      }),
                      128
                      /* KEYED_FRAGMENT */
                    ))
                  ],
                  2
                  /* CLASS */
                )) : createCommentVNode("v-if", true),
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass(unref(ppNs).e("body"))
                  },
                  [
                    showTime.value ? (openBlock(), createElementBlock(
                      "div",
                      {
                        key: 0,
                        class: normalizeClass(unref(dpNs).e("time-header"))
                      },
                      [
                        createBaseVNode(
                          "span",
                          {
                            class: normalizeClass(unref(dpNs).e("editor-wrap"))
                          },
                          [
                            createVNode(unref(ElInput), {
                              placeholder: unref(t)("el.datepicker.selectDate"),
                              "model-value": visibleDate.value,
                              size: "small",
                              "validate-event": false,
                              disabled: unref(dateDisabled),
                              readonly: !_ctx.editable,
                              onInput: _cache[0] || (_cache[0] = (val) => userInputDate.value = val),
                              onChange: handleVisibleDateChange
                            }, null, 8, ["placeholder", "model-value", "disabled", "readonly"])
                          ],
                          2
                          /* CLASS */
                        ),
                        withDirectives((openBlock(), createElementBlock(
                          "span",
                          {
                            class: normalizeClass(unref(dpNs).e("editor-wrap"))
                          },
                          [
                            createVNode(unref(ElInput), {
                              placeholder: unref(t)("el.datepicker.selectTime"),
                              "model-value": visibleTime.value,
                              size: "small",
                              "validate-event": false,
                              disabled: unref(dateDisabled),
                              readonly: !_ctx.editable,
                              onFocus: onTimePickerInputFocus,
                              onInput: _cache[1] || (_cache[1] = (val) => userInputTime.value = val),
                              onChange: handleVisibleTimeChange
                            }, null, 8, ["placeholder", "model-value", "disabled", "readonly"]),
                            createVNode(unref(_sfc_main$2n), {
                              visible: timePickerVisible.value,
                              format: timeFormat.value,
                              "parsed-value": innerDate.value,
                              onPick: handleTimePick
                            }, null, 8, ["visible", "format", "parsed-value"])
                          ],
                          2
                          /* CLASS */
                        )), [
                          [unref(ClickOutside), handleTimePickClose]
                        ])
                      ],
                      2
                      /* CLASS */
                    )) : createCommentVNode("v-if", true),
                    withDirectives(createBaseVNode(
                      "div",
                      {
                        class: normalizeClass([
                          unref(dpNs).e("header"),
                          (currentView2.value === "year" || currentView2.value === "month") && unref(dpNs).em("header", "bordered")
                        ])
                      },
                      [
                        createBaseVNode(
                          "span",
                          {
                            class: normalizeClass(unref(dpNs).e("prev-btn"))
                          },
                          [
                            createBaseVNode("button", {
                              type: "button",
                              "aria-label": unref(t)(`el.datepicker.prevYear`),
                              class: normalizeClass(["d-arrow-left", unref(ppNs).e("icon-btn")]),
                              disabled: unref(dateDisabled),
                              onClick: _cache[2] || (_cache[2] = ($event) => moveByYear(false))
                            }, [
                              renderSlot(_ctx.$slots, "prev-year", {}, () => [
                                createVNode(unref(ElIcon), null, {
                                  default: withCtx(() => [
                                    createVNode(unref(d_arrow_left_default))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                })
                              ])
                            ], 10, _hoisted_2$1h),
                            withDirectives(createBaseVNode("button", {
                              type: "button",
                              "aria-label": unref(t)(`el.datepicker.prevMonth`),
                              class: normalizeClass([unref(ppNs).e("icon-btn"), "arrow-left"]),
                              disabled: unref(dateDisabled),
                              onClick: _cache[3] || (_cache[3] = ($event) => moveByMonth(false))
                            }, [
                              renderSlot(_ctx.$slots, "prev-month", {}, () => [
                                createVNode(unref(ElIcon), null, {
                                  default: withCtx(() => [
                                    createVNode(unref(arrow_left_default))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                })
                              ])
                            ], 10, _hoisted_3$_), [
                              [vShow, currentView2.value === "date"]
                            ])
                          ],
                          2
                          /* CLASS */
                        ),
                        createBaseVNode("span", {
                          role: "button",
                          class: normalizeClass(unref(dpNs).e("header-label")),
                          "aria-live": "polite",
                          tabindex: _ctx.disabled ? void 0 : 0,
                          "aria-disabled": _ctx.disabled,
                          onKeydown: _cache[4] || (_cache[4] = withKeys(($event) => showPicker("year"), ["enter"])),
                          onClick: _cache[5] || (_cache[5] = ($event) => showPicker("year"))
                        }, toDisplayString(yearLabel.value), 43, _hoisted_4$U),
                        withDirectives(createBaseVNode("span", {
                          role: "button",
                          "aria-live": "polite",
                          tabindex: _ctx.disabled ? void 0 : 0,
                          "aria-disabled": _ctx.disabled,
                          class: normalizeClass([
                            unref(dpNs).e("header-label"),
                            { active: currentView2.value === "month" }
                          ]),
                          onKeydown: _cache[6] || (_cache[6] = withKeys(($event) => showPicker("month"), ["enter"])),
                          onClick: _cache[7] || (_cache[7] = ($event) => showPicker("month"))
                        }, toDisplayString(unref(t)(`el.datepicker.month${month.value + 1}`)), 43, _hoisted_5$K), [
                          [vShow, currentView2.value === "date"]
                        ]),
                        createBaseVNode(
                          "span",
                          {
                            class: normalizeClass(unref(dpNs).e("next-btn"))
                          },
                          [
                            withDirectives(createBaseVNode("button", {
                              type: "button",
                              "aria-label": unref(t)(`el.datepicker.nextMonth`),
                              class: normalizeClass([unref(ppNs).e("icon-btn"), "arrow-right"]),
                              disabled: unref(dateDisabled),
                              onClick: _cache[8] || (_cache[8] = ($event) => moveByMonth(true))
                            }, [
                              renderSlot(_ctx.$slots, "next-month", {}, () => [
                                createVNode(unref(ElIcon), null, {
                                  default: withCtx(() => [
                                    createVNode(unref(arrow_right_default))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                })
                              ])
                            ], 10, _hoisted_6$o), [
                              [vShow, currentView2.value === "date"]
                            ]),
                            createBaseVNode("button", {
                              type: "button",
                              "aria-label": unref(t)(`el.datepicker.nextYear`),
                              class: normalizeClass([unref(ppNs).e("icon-btn"), "d-arrow-right"]),
                              disabled: unref(dateDisabled),
                              onClick: _cache[9] || (_cache[9] = ($event) => moveByYear(true))
                            }, [
                              renderSlot(_ctx.$slots, "next-year", {}, () => [
                                createVNode(unref(ElIcon), null, {
                                  default: withCtx(() => [
                                    createVNode(unref(d_arrow_right_default))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                })
                              ])
                            ], 10, _hoisted_7$l)
                          ],
                          2
                          /* CLASS */
                        )
                      ],
                      2
                      /* CLASS */
                    ), [
                      [vShow, currentView2.value !== "time"]
                    ]),
                    createBaseVNode(
                      "div",
                      {
                        class: normalizeClass(unref(ppNs).e("content")),
                        onKeydown: handleKeydownTable
                      },
                      [
                        currentView2.value === "date" ? (openBlock(), createBlock(_sfc_main$2l, {
                          key: 0,
                          ref_key: "currentViewRef",
                          ref: currentViewRef,
                          "selection-mode": selectionMode.value,
                          date: innerDate.value,
                          "parsed-value": _ctx.parsedValue,
                          "disabled-date": unref(disabledDate),
                          disabled: unref(dateDisabled),
                          "cell-class-name": unref(cellClassName),
                          "show-week-number": _ctx.showWeekNumber,
                          onPick: handleDatePick
                        }, null, 8, ["selection-mode", "date", "parsed-value", "disabled-date", "disabled", "cell-class-name", "show-week-number"])) : createCommentVNode("v-if", true),
                        currentView2.value === "year" ? (openBlock(), createBlock(_sfc_main$2j, {
                          key: 1,
                          ref_key: "currentViewRef",
                          ref: currentViewRef,
                          "selection-mode": selectionMode.value,
                          date: innerDate.value,
                          "disabled-date": unref(disabledDate),
                          disabled: unref(dateDisabled),
                          "parsed-value": _ctx.parsedValue,
                          "cell-class-name": unref(cellClassName),
                          onPick: handleYearPick
                        }, null, 8, ["selection-mode", "date", "disabled-date", "disabled", "parsed-value", "cell-class-name"])) : createCommentVNode("v-if", true),
                        currentView2.value === "month" ? (openBlock(), createBlock(_sfc_main$2k, {
                          key: 2,
                          ref_key: "currentViewRef",
                          ref: currentViewRef,
                          "selection-mode": selectionMode.value,
                          date: innerDate.value,
                          "parsed-value": _ctx.parsedValue,
                          "disabled-date": unref(disabledDate),
                          disabled: unref(dateDisabled),
                          "cell-class-name": unref(cellClassName),
                          onPick: handleMonthPick
                        }, null, 8, ["selection-mode", "date", "parsed-value", "disabled-date", "disabled", "cell-class-name"])) : createCommentVNode("v-if", true)
                      ],
                      34
                      /* CLASS, NEED_HYDRATION */
                    )
                  ],
                  2
                  /* CLASS */
                )
              ],
              2
              /* CLASS */
            ),
            _ctx.showFooter && footerVisible.value && footerFilled.value ? (openBlock(), createElementBlock(
              "div",
              {
                key: 0,
                class: normalizeClass(unref(ppNs).e("footer"))
              },
              [
                withDirectives(createVNode(unref(ElButton), {
                  text: "",
                  size: "small",
                  class: normalizeClass(unref(ppNs).e("link-btn")),
                  disabled: disabledNow.value,
                  onClick: changeToNow
                }, {
                  default: withCtx(() => [
                    createTextVNode(
                      toDisplayString(unref(t)("el.datepicker.now")),
                      1
                      /* TEXT */
                    )
                  ]),
                  _: 1
                  /* STABLE */
                }, 8, ["class", "disabled"]), [
                  [vShow, !isMultipleType.value && _ctx.showNow]
                ]),
                _ctx.showConfirm ? (openBlock(), createBlock(unref(ElButton), {
                  key: 0,
                  plain: "",
                  size: "small",
                  class: normalizeClass(unref(ppNs).e("link-btn")),
                  disabled: disabledConfirm.value,
                  onClick: onConfirm
                }, {
                  default: withCtx(() => [
                    createTextVNode(
                      toDisplayString(unref(t)("el.datepicker.confirm")),
                      1
                      /* TEXT */
                    )
                  ]),
                  _: 1
                  /* STABLE */
                }, 8, ["class", "disabled"])) : createCommentVNode("v-if", true)
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true)
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const panelDateRangeProps = buildProps({
    ...panelSharedProps,
    ...panelRangeSharedProps
  });
  const useShortcut = (lang) => {
    const { emit: emit2 } = getCurrentInstance();
    const attrs = useAttrs$1();
    const slots = useSlots();
    const handleShortcutClick = (shortcut) => {
      const shortcutValues = isFunction$1(shortcut.value) ? shortcut.value() : shortcut.value;
      if (shortcutValues) {
        emit2("pick", [
          dayjs(shortcutValues[0]).locale(lang.value),
          dayjs(shortcutValues[1]).locale(lang.value)
        ]);
        return;
      }
      if (shortcut.onClick) {
        shortcut.onClick({
          attrs,
          slots,
          emit: emit2
        });
      }
    };
    return handleShortcutClick;
  };
  const useRangePicker = (props2, {
    defaultValue,
    defaultTime,
    leftDate,
    rightDate,
    step: step2,
    unit: unit2,
    sortDates
  }) => {
    const { emit: emit2 } = getCurrentInstance();
    const { pickerNs } = inject(ROOT_PICKER_INJECTION_KEY);
    const drpNs = useNamespace("date-range-picker");
    const { t, lang } = useLocale();
    const handleShortcutClick = useShortcut(lang);
    const minDate = ref();
    const maxDate = ref();
    const rangeState = ref({
      endDate: null,
      selecting: false
    });
    const handleChangeRange = (val) => {
      rangeState.value = val;
    };
    const handleRangeConfirm = (visible = false) => {
      const _minDate = unref(minDate);
      const _maxDate = unref(maxDate);
      if (isValidRange([_minDate, _maxDate])) {
        emit2("pick", [_minDate, _maxDate], visible);
      }
    };
    const onSelect = (selecting) => {
      rangeState.value.selecting = selecting;
      if (!selecting) {
        rangeState.value.endDate = null;
      }
    };
    const parseValue = (parsedValue) => {
      if (isArray$1(parsedValue) && parsedValue.length === 2) {
        const [start, end] = parsedValue;
        minDate.value = start;
        leftDate.value = start;
        maxDate.value = end;
        sortDates(unref(minDate), unref(maxDate));
      } else {
        restoreDefault();
      }
    };
    const restoreDefault = () => {
      let [start, end] = getDefaultValue(unref(defaultValue), {
        lang: unref(lang),
        step: step2,
        unit: unit2,
        unlinkPanels: props2.unlinkPanels
      });
      const getShift = (day) => {
        return day.diff(day.startOf("d"), "ms");
      };
      const maybeTimes = unref(defaultTime);
      if (maybeTimes) {
        let leftShift = 0;
        let rightShift = 0;
        if (isArray$1(maybeTimes)) {
          const [timeStart, timeEnd] = maybeTimes.map(dayjs);
          leftShift = getShift(timeStart);
          rightShift = getShift(timeEnd);
        } else {
          const shift2 = getShift(dayjs(maybeTimes));
          leftShift = shift2;
          rightShift = shift2;
        }
        start = start.startOf("d").add(leftShift, "ms");
        end = end.startOf("d").add(rightShift, "ms");
      }
      minDate.value = void 0;
      maxDate.value = void 0;
      leftDate.value = start;
      rightDate.value = end;
    };
    watch(
      defaultValue,
      (val) => {
        if (val) {
          restoreDefault();
        }
      },
      { immediate: true }
    );
    watch(
      () => props2.parsedValue,
      (parsedValue) => {
        if (!(parsedValue == null ? void 0 : parsedValue.length) || !isEqual$1(parsedValue, [minDate.value, maxDate.value])) {
          parseValue(parsedValue);
        }
      },
      {
        immediate: true
      }
    );
    watch(
      () => props2.visible,
      () => {
        if (props2.visible) {
          parseValue(props2.parsedValue);
        }
      },
      { immediate: true }
    );
    return {
      minDate,
      maxDate,
      rangeState,
      lang,
      ppNs: pickerNs,
      drpNs,
      handleChangeRange,
      handleRangeConfirm,
      handleShortcutClick,
      onSelect,
      parseValue,
      t
    };
  };
  const usePanelDateRange = (props2, emit2, leftDate, rightDate) => {
    const leftCurrentView = ref("date");
    const leftCurrentViewRef = ref();
    const rightCurrentView = ref("date");
    const rightCurrentViewRef = ref();
    const pickerBase = inject(PICKER_BASE_INJECTION_KEY);
    const { disabledDate } = pickerBase.props;
    const { t, lang } = useLocale();
    const leftYear = computed(() => {
      return leftDate.value.year();
    });
    const leftMonth = computed(() => {
      return leftDate.value.month();
    });
    const rightYear = computed(() => {
      return rightDate.value.year();
    });
    const rightMonth = computed(() => {
      return rightDate.value.month();
    });
    function computedYearLabel(currentView2, yearValue) {
      const yearTranslation = t("el.datepicker.year");
      if (currentView2.value === "year") {
        const startYear = Math.floor(yearValue.value / 10) * 10;
        return yearTranslation ? `${startYear} ${yearTranslation} - ${startYear + 9} ${yearTranslation}` : `${startYear} - ${startYear + 9}`;
      }
      return `${yearValue.value} ${yearTranslation}`;
    }
    function focusPicker(currentViewRef) {
      currentViewRef == null ? void 0 : currentViewRef.focus();
    }
    async function showPicker(pickerType, view) {
      if (props2.disabled) return;
      const currentView2 = pickerType === "left" ? leftCurrentView : rightCurrentView;
      const currentViewRef = pickerType === "left" ? leftCurrentViewRef : rightCurrentViewRef;
      currentView2.value = view;
      await nextTick();
      focusPicker(currentViewRef.value);
    }
    async function handlePick(mode, pickerType, value) {
      if (props2.disabled) return;
      const isLeftPicker = pickerType === "left";
      const startDate = isLeftPicker ? leftDate : rightDate;
      const endDate = isLeftPicker ? rightDate : leftDate;
      const currentView2 = isLeftPicker ? leftCurrentView : rightCurrentView;
      const currentViewRef = isLeftPicker ? leftCurrentViewRef : rightCurrentViewRef;
      if (mode === "year") {
        const data = startDate.value.year(value);
        startDate.value = getValidDateOfYear(data, lang.value, disabledDate);
      }
      if (mode === "month") {
        startDate.value = getValidDateOfMonth(
          startDate.value,
          startDate.value.year(),
          value,
          lang.value,
          disabledDate
        );
      }
      if (!props2.unlinkPanels) {
        endDate.value = pickerType === "left" ? startDate.value.add(1, "month") : startDate.value.subtract(1, "month");
      }
      currentView2.value = mode === "year" ? "month" : "date";
      await nextTick();
      focusPicker(currentViewRef.value);
      handlePanelChange(mode);
    }
    function handlePanelChange(mode) {
      emit2(
        "panel-change",
        [leftDate.value.toDate(), rightDate.value.toDate()],
        mode
      );
    }
    function adjustDateByView(currentView2, date, forward) {
      const action = forward ? "add" : "subtract";
      return currentView2 === "year" ? date[action](10, "year") : date[action](1, "year");
    }
    return {
      leftCurrentView,
      rightCurrentView,
      leftCurrentViewRef,
      rightCurrentViewRef,
      leftYear,
      rightYear,
      leftMonth,
      rightMonth,
      leftYearLabel: computed(() => computedYearLabel(leftCurrentView, leftYear)),
      rightYearLabel: computed(
        () => computedYearLabel(rightCurrentView, rightYear)
      ),
      showLeftPicker: (view) => showPicker("left", view),
      showRightPicker: (view) => showPicker("right", view),
      handleLeftYearPick: (year) => handlePick("year", "left", year),
      handleRightYearPick: (year) => handlePick("year", "right", year),
      handleLeftMonthPick: (month) => handlePick("month", "left", month),
      handleRightMonthPick: (month) => handlePick("month", "right", month),
      handlePanelChange,
      adjustDateByView
    };
  };
  const _hoisted_1$1A = ["disabled", "onClick"];
  const _hoisted_2$1g = ["aria-label", "disabled"];
  const _hoisted_3$Z = ["aria-label", "disabled"];
  const _hoisted_4$T = ["disabled", "aria-label"];
  const _hoisted_5$J = ["disabled", "aria-label"];
  const _hoisted_6$n = ["tabindex", "aria-disabled"];
  const _hoisted_7$k = ["tabindex", "aria-disabled"];
  const _hoisted_8$k = ["disabled", "aria-label"];
  const _hoisted_9$j = ["disabled", "aria-label"];
  const _hoisted_10$g = ["aria-label", "disabled"];
  const _hoisted_11$g = ["disabled", "aria-label"];
  const _hoisted_12$d = ["tabindex", "aria-disabled"];
  const _hoisted_13$c = ["tabindex", "aria-disabled"];
  const unit$2 = "month";
  var _sfc_main$2h = /* @__PURE__ */ defineComponent({
    __name: "panel-date-range",
    props: panelDateRangeProps,
    emits: [
      "pick",
      "set-picker-option",
      "calendar-change",
      "panel-change",
      "clear"
    ],
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const pickerBase = inject(PICKER_BASE_INJECTION_KEY);
      const isDefaultFormat = inject(
        ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY,
        void 0
      );
      const { disabledDate, cellClassName, defaultTime, clearable } = pickerBase.props;
      const format2 = toRef(pickerBase.props, "format");
      const shortcuts = toRef(pickerBase.props, "shortcuts");
      const defaultValue = toRef(pickerBase.props, "defaultValue");
      const { lang } = useLocale();
      const leftDate = ref(dayjs().locale(lang.value));
      const rightDate = ref(dayjs().locale(lang.value).add(1, unit$2));
      const {
        minDate,
        maxDate,
        rangeState,
        ppNs,
        drpNs,
        handleChangeRange,
        handleRangeConfirm,
        handleShortcutClick,
        onSelect,
        parseValue,
        t
      } = useRangePicker(props2, {
        defaultValue,
        defaultTime,
        leftDate,
        rightDate,
        unit: unit$2,
        sortDates
      });
      watch(
        () => props2.visible,
        (visible) => {
          if (!visible && rangeState.value.selecting) {
            parseValue(props2.parsedValue);
            onSelect(false);
          }
        }
      );
      const dateUserInput = ref({
        min: null,
        max: null
      });
      const timeUserInput = ref({
        min: null,
        max: null
      });
      const {
        leftCurrentView,
        rightCurrentView,
        leftCurrentViewRef,
        rightCurrentViewRef,
        leftYear,
        rightYear,
        leftMonth,
        rightMonth,
        leftYearLabel,
        rightYearLabel,
        showLeftPicker,
        showRightPicker,
        handleLeftYearPick,
        handleRightYearPick,
        handleLeftMonthPick,
        handleRightMonthPick,
        handlePanelChange,
        adjustDateByView
      } = usePanelDateRange(props2, emit2, leftDate, rightDate);
      const hasShortcuts = computed(() => !!shortcuts.value.length);
      const minVisibleDate = computed(() => {
        if (dateUserInput.value.min !== null) return dateUserInput.value.min;
        if (minDate.value) return minDate.value.format(dateFormat.value);
        return "";
      });
      const maxVisibleDate = computed(() => {
        if (dateUserInput.value.max !== null) return dateUserInput.value.max;
        if (maxDate.value || minDate.value)
          return (maxDate.value || minDate.value).format(dateFormat.value);
        return "";
      });
      const minVisibleTime = computed(() => {
        if (timeUserInput.value.min !== null) return timeUserInput.value.min;
        if (minDate.value) return minDate.value.format(timeFormat.value);
        return "";
      });
      const maxVisibleTime = computed(() => {
        if (timeUserInput.value.max !== null) return timeUserInput.value.max;
        if (maxDate.value || minDate.value)
          return (maxDate.value || minDate.value).format(timeFormat.value);
        return "";
      });
      const timeFormat = computed(() => {
        return props2.timeFormat || extractTimeFormat(format2.value || "") || DEFAULT_FORMATS_TIME;
      });
      const dateFormat = computed(() => {
        return props2.dateFormat || extractDateFormat(format2.value || "") || DEFAULT_FORMATS_DATE;
      });
      const isValidValue2 = (date) => {
        return isValidRange(date) && (disabledDate ? !disabledDate(date[0].toDate()) && !disabledDate(date[1].toDate()) : true);
      };
      const leftPrevYear = () => {
        leftDate.value = adjustDateByView(
          leftCurrentView.value,
          leftDate.value,
          false
        );
        if (!props2.unlinkPanels) {
          rightDate.value = leftDate.value.add(1, "month");
        }
        handlePanelChange("year");
      };
      const leftPrevMonth = () => {
        leftDate.value = leftDate.value.subtract(1, "month");
        if (!props2.unlinkPanels) {
          rightDate.value = leftDate.value.add(1, "month");
        }
        handlePanelChange("month");
      };
      const rightNextYear = () => {
        if (!props2.unlinkPanels) {
          leftDate.value = adjustDateByView(
            rightCurrentView.value,
            leftDate.value,
            true
          );
          rightDate.value = leftDate.value.add(1, "month");
        } else {
          rightDate.value = adjustDateByView(
            rightCurrentView.value,
            rightDate.value,
            true
          );
        }
        handlePanelChange("year");
      };
      const rightNextMonth = () => {
        if (!props2.unlinkPanels) {
          leftDate.value = leftDate.value.add(1, "month");
          rightDate.value = leftDate.value.add(1, "month");
        } else {
          rightDate.value = rightDate.value.add(1, "month");
        }
        handlePanelChange("month");
      };
      const leftNextYear = () => {
        leftDate.value = adjustDateByView(leftCurrentView.value, leftDate.value, true);
        handlePanelChange("year");
      };
      const leftNextMonth = () => {
        leftDate.value = leftDate.value.add(1, "month");
        handlePanelChange("month");
      };
      const rightPrevYear = () => {
        rightDate.value = adjustDateByView(
          rightCurrentView.value,
          rightDate.value,
          false
        );
        handlePanelChange("year");
      };
      const rightPrevMonth = () => {
        rightDate.value = rightDate.value.subtract(1, "month");
        handlePanelChange("month");
      };
      const enableMonthArrow = computed(() => {
        const nextMonth = (leftMonth.value + 1) % 12;
        const yearOffset = leftMonth.value + 1 >= 12 ? 1 : 0;
        return props2.unlinkPanels && new Date(leftYear.value + yearOffset, nextMonth) < new Date(rightYear.value, rightMonth.value);
      });
      const enableYearArrow = computed(() => {
        return props2.unlinkPanels && rightYear.value * 12 + rightMonth.value - (leftYear.value * 12 + leftMonth.value + 1) >= 12;
      });
      const dateRangeDisabled = useFormDisabled();
      const btnDisabled = computed(() => {
        return !(minDate.value && maxDate.value && !rangeState.value.selecting && isValidRange([minDate.value, maxDate.value]) && !dateRangeDisabled.value);
      });
      const showTime = computed(
        () => props2.type === "datetime" || props2.type === "datetimerange"
      );
      const formatEmit = (emitDayjs, index) => {
        if (!emitDayjs) return;
        if (defaultTime) {
          const defaultTimeD = dayjs(
            defaultTime[index] || defaultTime
          ).locale(lang.value);
          return defaultTimeD.year(emitDayjs.year()).month(emitDayjs.month()).date(emitDayjs.date());
        }
        return emitDayjs;
      };
      const handleRangePick = (val, close2 = true) => {
        const min_ = val.minDate;
        const max_ = val.maxDate;
        const minDate_ = formatEmit(min_, 0);
        const maxDate_ = formatEmit(max_, 1);
        if (maxDate.value === maxDate_ && minDate.value === minDate_) {
          return;
        }
        emit2("calendar-change", [min_.toDate(), max_ && max_.toDate()]);
        maxDate.value = maxDate_;
        minDate.value = minDate_;
        if (!showTime.value && close2) {
          close2 = !minDate_ || !maxDate_;
        }
        handleRangeConfirm(close2);
      };
      const minTimePickerVisible = ref(false);
      const maxTimePickerVisible = ref(false);
      const handleMinTimeClose = () => {
        minTimePickerVisible.value = false;
      };
      const handleMaxTimeClose = () => {
        maxTimePickerVisible.value = false;
      };
      const handleDateInput = (value, type) => {
        dateUserInput.value[type] = value;
        const parsedValueD = dayjs(value, dateFormat.value).locale(lang.value);
        if (parsedValueD.isValid()) {
          if (disabledDate && disabledDate(parsedValueD.toDate())) {
            return;
          }
          if (type === "min") {
            leftDate.value = parsedValueD;
            minDate.value = (minDate.value || leftDate.value).year(parsedValueD.year()).month(parsedValueD.month()).date(parsedValueD.date());
            if (!props2.unlinkPanels && (!maxDate.value || maxDate.value.isBefore(minDate.value))) {
              rightDate.value = parsedValueD.add(1, "month");
              maxDate.value = minDate.value.add(1, "month");
            }
          } else {
            rightDate.value = parsedValueD;
            maxDate.value = (maxDate.value || rightDate.value).year(parsedValueD.year()).month(parsedValueD.month()).date(parsedValueD.date());
            if (!props2.unlinkPanels && (!minDate.value || minDate.value.isAfter(maxDate.value))) {
              leftDate.value = parsedValueD.subtract(1, "month");
              minDate.value = maxDate.value.subtract(1, "month");
            }
          }
          sortDates(minDate.value, maxDate.value);
          handleRangeConfirm(true);
        }
      };
      const handleDateChange = (_2, type) => {
        dateUserInput.value[type] = null;
      };
      const handleTimeInput = (value, type) => {
        timeUserInput.value[type] = value;
        const parsedValueD = dayjs(value, timeFormat.value).locale(lang.value);
        if (parsedValueD.isValid()) {
          if (type === "min") {
            minTimePickerVisible.value = true;
            minDate.value = (minDate.value || leftDate.value).hour(parsedValueD.hour()).minute(parsedValueD.minute()).second(parsedValueD.second());
            leftDate.value = minDate.value;
          } else {
            maxTimePickerVisible.value = true;
            maxDate.value = (maxDate.value || rightDate.value).hour(parsedValueD.hour()).minute(parsedValueD.minute()).second(parsedValueD.second());
            rightDate.value = maxDate.value;
          }
        }
      };
      const handleTimeChange = (_value, type) => {
        timeUserInput.value[type] = null;
        if (type === "min") {
          leftDate.value = minDate.value;
          minTimePickerVisible.value = false;
          if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {
            maxDate.value = minDate.value;
          }
        } else {
          rightDate.value = maxDate.value;
          maxTimePickerVisible.value = false;
          if (maxDate.value && maxDate.value.isBefore(minDate.value)) {
            minDate.value = maxDate.value;
          }
        }
        handleRangeConfirm(true);
      };
      const handleMinTimePick = (value, visible, first) => {
        if (timeUserInput.value.min) return;
        if (value) {
          minDate.value = (minDate.value || leftDate.value).hour(value.hour()).minute(value.minute()).second(value.second());
        }
        if (!first) {
          minTimePickerVisible.value = visible;
        }
        if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {
          maxDate.value = minDate.value;
          rightDate.value = value;
          nextTick(() => {
            parseValue(props2.parsedValue);
          });
        }
        handleRangeConfirm(true);
      };
      const handleMaxTimePick = (value, visible, first) => {
        if (timeUserInput.value.max) return;
        if (value) {
          maxDate.value = (maxDate.value || rightDate.value).hour(value.hour()).minute(value.minute()).second(value.second());
        }
        if (!first) {
          maxTimePickerVisible.value = visible;
        }
        if (maxDate.value && maxDate.value.isBefore(minDate.value)) {
          minDate.value = maxDate.value;
        }
        handleRangeConfirm(true);
      };
      const onClear = () => {
        handleClear();
        emit2("clear");
      };
      const handleClear = () => {
        let valueOnClear = null;
        if (pickerBase == null ? void 0 : pickerBase.emptyValues) {
          valueOnClear = pickerBase.emptyValues.valueOnClear.value;
        }
        leftDate.value = getDefaultValue(unref(defaultValue), {
          lang: unref(lang),
          unit: "month",
          unlinkPanels: props2.unlinkPanels
        })[0];
        rightDate.value = leftDate.value.add(1, "month");
        maxDate.value = void 0;
        minDate.value = void 0;
        handleRangeConfirm(true);
        emit2("pick", valueOnClear);
      };
      const parseUserInput = (value) => {
        return correctlyParseUserInput(
          value,
          format2.value || "",
          lang.value,
          isDefaultFormat
        );
      };
      function sortDates(minDate2, maxDate2) {
        if (props2.unlinkPanels && maxDate2) {
          const minDateYear = (minDate2 == null ? void 0 : minDate2.year()) || 0;
          const minDateMonth = (minDate2 == null ? void 0 : minDate2.month()) || 0;
          const maxDateYear = maxDate2.year();
          const maxDateMonth = maxDate2.month();
          rightDate.value = minDateYear === maxDateYear && minDateMonth === maxDateMonth ? maxDate2.add(1, unit$2) : maxDate2;
        } else {
          rightDate.value = leftDate.value.add(1, unit$2);
          if (maxDate2) {
            rightDate.value = rightDate.value.hour(maxDate2.hour()).minute(maxDate2.minute()).second(maxDate2.second());
          }
        }
      }
      emit2("set-picker-option", ["isValidValue", isValidValue2]);
      emit2("set-picker-option", ["parseUserInput", parseUserInput]);
      emit2("set-picker-option", ["handleClear", handleClear]);
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass([
              unref(ppNs).b(),
              unref(drpNs).b(),
              unref(ppNs).is("border", _ctx.border),
              unref(ppNs).is("disabled", unref(dateRangeDisabled)),
              {
                "has-sidebar": _ctx.$slots.sidebar || hasShortcuts.value,
                "has-time": showTime.value
              }
            ])
          },
          [
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(ppNs).e("body-wrapper"))
              },
              [
                renderSlot(_ctx.$slots, "sidebar", {
                  class: normalizeClass(unref(ppNs).e("sidebar"))
                }),
                hasShortcuts.value ? (openBlock(), createElementBlock(
                  "div",
                  {
                    key: 0,
                    class: normalizeClass(unref(ppNs).e("sidebar"))
                  },
                  [
                    (openBlock(true), createElementBlock(
                      Fragment,
                      null,
                      renderList(shortcuts.value, (shortcut, key) => {
                        return openBlock(), createElementBlock("button", {
                          key,
                          type: "button",
                          disabled: unref(dateRangeDisabled),
                          class: normalizeClass(unref(ppNs).e("shortcut")),
                          onClick: ($event) => unref(handleShortcutClick)(shortcut)
                        }, toDisplayString(shortcut.text), 11, _hoisted_1$1A);
                      }),
                      128
                      /* KEYED_FRAGMENT */
                    ))
                  ],
                  2
                  /* CLASS */
                )) : createCommentVNode("v-if", true),
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass(unref(ppNs).e("body"))
                  },
                  [
                    showTime.value ? (openBlock(), createElementBlock(
                      "div",
                      {
                        key: 0,
                        class: normalizeClass(unref(drpNs).e("time-header"))
                      },
                      [
                        createBaseVNode(
                          "span",
                          {
                            class: normalizeClass(unref(drpNs).e("editors-wrap"))
                          },
                          [
                            createBaseVNode(
                              "span",
                              {
                                class: normalizeClass(unref(drpNs).e("time-picker-wrap"))
                              },
                              [
                                createVNode(unref(ElInput), {
                                  size: "small",
                                  disabled: unref(rangeState).selecting || unref(dateRangeDisabled),
                                  placeholder: unref(t)("el.datepicker.startDate"),
                                  class: normalizeClass(unref(drpNs).e("editor")),
                                  "model-value": minVisibleDate.value,
                                  "validate-event": false,
                                  readonly: !_ctx.editable,
                                  onInput: _cache[0] || (_cache[0] = (val) => handleDateInput(val, "min")),
                                  onChange: _cache[1] || (_cache[1] = (val) => handleDateChange(val, "min"))
                                }, null, 8, ["disabled", "placeholder", "class", "model-value", "readonly"])
                              ],
                              2
                              /* CLASS */
                            ),
                            withDirectives((openBlock(), createElementBlock(
                              "span",
                              {
                                class: normalizeClass(unref(drpNs).e("time-picker-wrap"))
                              },
                              [
                                createVNode(unref(ElInput), {
                                  size: "small",
                                  class: normalizeClass(unref(drpNs).e("editor")),
                                  disabled: unref(rangeState).selecting || unref(dateRangeDisabled),
                                  placeholder: unref(t)("el.datepicker.startTime"),
                                  "model-value": minVisibleTime.value,
                                  "validate-event": false,
                                  readonly: !_ctx.editable,
                                  onFocus: _cache[2] || (_cache[2] = ($event) => minTimePickerVisible.value = true),
                                  onInput: _cache[3] || (_cache[3] = (val) => handleTimeInput(val, "min")),
                                  onChange: _cache[4] || (_cache[4] = (val) => handleTimeChange(val, "min"))
                                }, null, 8, ["class", "disabled", "placeholder", "model-value", "readonly"]),
                                createVNode(unref(_sfc_main$2n), {
                                  visible: minTimePickerVisible.value,
                                  format: timeFormat.value,
                                  "datetime-role": "start",
                                  "parsed-value": unref(minDate) || leftDate.value,
                                  onPick: handleMinTimePick
                                }, null, 8, ["visible", "format", "parsed-value"])
                              ],
                              2
                              /* CLASS */
                            )), [
                              [unref(ClickOutside), handleMinTimeClose]
                            ])
                          ],
                          2
                          /* CLASS */
                        ),
                        createBaseVNode("span", null, [
                          createVNode(unref(ElIcon), null, {
                            default: withCtx(() => [
                              createVNode(unref(arrow_right_default))
                            ]),
                            _: 1
                            /* STABLE */
                          })
                        ]),
                        createBaseVNode(
                          "span",
                          {
                            class: normalizeClass([unref(drpNs).e("editors-wrap"), "is-right"])
                          },
                          [
                            createBaseVNode(
                              "span",
                              {
                                class: normalizeClass(unref(drpNs).e("time-picker-wrap"))
                              },
                              [
                                createVNode(unref(ElInput), {
                                  size: "small",
                                  class: normalizeClass(unref(drpNs).e("editor")),
                                  disabled: unref(rangeState).selecting || unref(dateRangeDisabled),
                                  placeholder: unref(t)("el.datepicker.endDate"),
                                  "model-value": maxVisibleDate.value,
                                  readonly: !unref(minDate) || !_ctx.editable,
                                  "validate-event": false,
                                  onInput: _cache[5] || (_cache[5] = (val) => handleDateInput(val, "max")),
                                  onChange: _cache[6] || (_cache[6] = (val) => handleDateChange(val, "max"))
                                }, null, 8, ["class", "disabled", "placeholder", "model-value", "readonly"])
                              ],
                              2
                              /* CLASS */
                            ),
                            withDirectives((openBlock(), createElementBlock(
                              "span",
                              {
                                class: normalizeClass(unref(drpNs).e("time-picker-wrap"))
                              },
                              [
                                createVNode(unref(ElInput), {
                                  size: "small",
                                  class: normalizeClass(unref(drpNs).e("editor")),
                                  disabled: unref(rangeState).selecting || unref(dateRangeDisabled),
                                  placeholder: unref(t)("el.datepicker.endTime"),
                                  "model-value": maxVisibleTime.value,
                                  readonly: !unref(minDate) || !_ctx.editable,
                                  "validate-event": false,
                                  onFocus: _cache[7] || (_cache[7] = ($event) => unref(minDate) && (maxTimePickerVisible.value = true)),
                                  onInput: _cache[8] || (_cache[8] = (val) => handleTimeInput(val, "max")),
                                  onChange: _cache[9] || (_cache[9] = (val) => handleTimeChange(val, "max"))
                                }, null, 8, ["class", "disabled", "placeholder", "model-value", "readonly"]),
                                createVNode(unref(_sfc_main$2n), {
                                  "datetime-role": "end",
                                  visible: maxTimePickerVisible.value,
                                  format: timeFormat.value,
                                  "parsed-value": unref(maxDate) || rightDate.value,
                                  onPick: handleMaxTimePick
                                }, null, 8, ["visible", "format", "parsed-value"])
                              ],
                              2
                              /* CLASS */
                            )), [
                              [unref(ClickOutside), handleMaxTimeClose]
                            ])
                          ],
                          2
                          /* CLASS */
                        )
                      ],
                      2
                      /* CLASS */
                    )) : createCommentVNode("v-if", true),
                    createBaseVNode(
                      "div",
                      {
                        class: normalizeClass([[unref(ppNs).e("content"), unref(drpNs).e("content")], "is-left"])
                      },
                      [
                        createBaseVNode(
                          "div",
                          {
                            class: normalizeClass(unref(drpNs).e("header"))
                          },
                          [
                            createBaseVNode("button", {
                              type: "button",
                              class: normalizeClass([unref(ppNs).e("icon-btn"), "d-arrow-left"]),
                              "aria-label": unref(t)(`el.datepicker.prevYear`),
                              disabled: unref(dateRangeDisabled),
                              onClick: leftPrevYear
                            }, [
                              renderSlot(_ctx.$slots, "prev-year", {}, () => [
                                createVNode(unref(ElIcon), null, {
                                  default: withCtx(() => [
                                    createVNode(unref(d_arrow_left_default))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                })
                              ])
                            ], 10, _hoisted_2$1g),
                            withDirectives(createBaseVNode("button", {
                              type: "button",
                              class: normalizeClass([unref(ppNs).e("icon-btn"), "arrow-left"]),
                              "aria-label": unref(t)(`el.datepicker.prevMonth`),
                              disabled: unref(dateRangeDisabled),
                              onClick: leftPrevMonth
                            }, [
                              renderSlot(_ctx.$slots, "prev-month", {}, () => [
                                createVNode(unref(ElIcon), null, {
                                  default: withCtx(() => [
                                    createVNode(unref(arrow_left_default))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                })
                              ])
                            ], 10, _hoisted_3$Z), [
                              [vShow, unref(leftCurrentView) === "date"]
                            ]),
                            _ctx.unlinkPanels ? (openBlock(), createElementBlock("button", {
                              key: 0,
                              type: "button",
                              disabled: !enableYearArrow.value || unref(dateRangeDisabled),
                              class: normalizeClass([[
                                unref(ppNs).e("icon-btn"),
                                unref(ppNs).is("disabled", !enableYearArrow.value || unref(dateRangeDisabled))
                              ], "d-arrow-right"]),
                              "aria-label": unref(t)(`el.datepicker.nextYear`),
                              onClick: leftNextYear
                            }, [
                              renderSlot(_ctx.$slots, "next-year", {}, () => [
                                createVNode(unref(ElIcon), null, {
                                  default: withCtx(() => [
                                    createVNode(unref(d_arrow_right_default))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                })
                              ])
                            ], 10, _hoisted_4$T)) : createCommentVNode("v-if", true),
                            _ctx.unlinkPanels && unref(leftCurrentView) === "date" ? (openBlock(), createElementBlock("button", {
                              key: 1,
                              type: "button",
                              disabled: !enableMonthArrow.value || unref(dateRangeDisabled),
                              class: normalizeClass([[
                                unref(ppNs).e("icon-btn"),
                                unref(ppNs).is("disabled", !enableMonthArrow.value || unref(dateRangeDisabled))
                              ], "arrow-right"]),
                              "aria-label": unref(t)(`el.datepicker.nextMonth`),
                              onClick: leftNextMonth
                            }, [
                              renderSlot(_ctx.$slots, "next-month", {}, () => [
                                createVNode(unref(ElIcon), null, {
                                  default: withCtx(() => [
                                    createVNode(unref(arrow_right_default))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                })
                              ])
                            ], 10, _hoisted_5$J)) : createCommentVNode("v-if", true),
                            createBaseVNode("div", null, [
                              createBaseVNode("span", {
                                role: "button",
                                class: normalizeClass(unref(drpNs).e("header-label")),
                                "aria-live": "polite",
                                tabindex: _ctx.disabled ? void 0 : 0,
                                "aria-disabled": _ctx.disabled,
                                onKeydown: _cache[10] || (_cache[10] = withKeys(($event) => unref(showLeftPicker)("year"), ["enter"])),
                                onClick: _cache[11] || (_cache[11] = ($event) => unref(showLeftPicker)("year"))
                              }, toDisplayString(unref(leftYearLabel)), 43, _hoisted_6$n),
                              withDirectives(createBaseVNode("span", {
                                role: "button",
                                "aria-live": "polite",
                                tabindex: _ctx.disabled ? void 0 : 0,
                                "aria-disabled": _ctx.disabled,
                                class: normalizeClass([
                                  unref(drpNs).e("header-label"),
                                  { active: unref(leftCurrentView) === "month" }
                                ]),
                                onKeydown: _cache[12] || (_cache[12] = withKeys(($event) => unref(showLeftPicker)("month"), ["enter"])),
                                onClick: _cache[13] || (_cache[13] = ($event) => unref(showLeftPicker)("month"))
                              }, toDisplayString(unref(t)(`el.datepicker.month${leftDate.value.month() + 1}`)), 43, _hoisted_7$k), [
                                [vShow, unref(leftCurrentView) === "date"]
                              ])
                            ])
                          ],
                          2
                          /* CLASS */
                        ),
                        unref(leftCurrentView) === "date" ? (openBlock(), createBlock(_sfc_main$2l, {
                          key: 0,
                          ref_key: "leftCurrentViewRef",
                          ref: leftCurrentViewRef,
                          "selection-mode": "range",
                          date: leftDate.value,
                          "min-date": unref(minDate),
                          "max-date": unref(maxDate),
                          "range-state": unref(rangeState),
                          "disabled-date": unref(disabledDate),
                          "cell-class-name": unref(cellClassName),
                          "show-week-number": _ctx.showWeekNumber,
                          disabled: unref(dateRangeDisabled),
                          onChangerange: unref(handleChangeRange),
                          onPick: handleRangePick,
                          onSelect: unref(onSelect)
                        }, null, 8, ["date", "min-date", "max-date", "range-state", "disabled-date", "cell-class-name", "show-week-number", "disabled", "onChangerange", "onSelect"])) : createCommentVNode("v-if", true),
                        unref(leftCurrentView) === "year" ? (openBlock(), createBlock(_sfc_main$2j, {
                          key: 1,
                          ref_key: "leftCurrentViewRef",
                          ref: leftCurrentViewRef,
                          "selection-mode": "year",
                          date: leftDate.value,
                          "disabled-date": unref(disabledDate),
                          "parsed-value": _ctx.parsedValue,
                          disabled: unref(dateRangeDisabled),
                          onPick: unref(handleLeftYearPick)
                        }, null, 8, ["date", "disabled-date", "parsed-value", "disabled", "onPick"])) : createCommentVNode("v-if", true),
                        unref(leftCurrentView) === "month" ? (openBlock(), createBlock(_sfc_main$2k, {
                          key: 2,
                          ref_key: "leftCurrentViewRef",
                          ref: leftCurrentViewRef,
                          "selection-mode": "month",
                          date: leftDate.value,
                          "parsed-value": _ctx.parsedValue,
                          "disabled-date": unref(disabledDate),
                          disabled: unref(dateRangeDisabled),
                          onPick: unref(handleLeftMonthPick)
                        }, null, 8, ["date", "parsed-value", "disabled-date", "disabled", "onPick"])) : createCommentVNode("v-if", true)
                      ],
                      2
                      /* CLASS */
                    ),
                    createBaseVNode(
                      "div",
                      {
                        class: normalizeClass([[unref(ppNs).e("content"), unref(drpNs).e("content")], "is-right"])
                      },
                      [
                        createBaseVNode(
                          "div",
                          {
                            class: normalizeClass(unref(drpNs).e("header"))
                          },
                          [
                            _ctx.unlinkPanels ? (openBlock(), createElementBlock("button", {
                              key: 0,
                              type: "button",
                              disabled: !enableYearArrow.value || unref(dateRangeDisabled),
                              class: normalizeClass([[
                                unref(ppNs).e("icon-btn"),
                                unref(ppNs).is("disabled", !enableYearArrow.value || unref(dateRangeDisabled))
                              ], "d-arrow-left"]),
                              "aria-label": unref(t)(`el.datepicker.prevYear`),
                              onClick: rightPrevYear
                            }, [
                              renderSlot(_ctx.$slots, "prev-year", {}, () => [
                                createVNode(unref(ElIcon), null, {
                                  default: withCtx(() => [
                                    createVNode(unref(d_arrow_left_default))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                })
                              ])
                            ], 10, _hoisted_8$k)) : createCommentVNode("v-if", true),
                            _ctx.unlinkPanels && unref(rightCurrentView) === "date" ? (openBlock(), createElementBlock("button", {
                              key: 1,
                              type: "button",
                              disabled: !enableMonthArrow.value || unref(dateRangeDisabled),
                              class: normalizeClass([[
                                unref(ppNs).e("icon-btn"),
                                unref(ppNs).is("disabled", !enableMonthArrow.value || unref(dateRangeDisabled))
                              ], "arrow-left"]),
                              "aria-label": unref(t)(`el.datepicker.prevMonth`),
                              onClick: rightPrevMonth
                            }, [
                              renderSlot(_ctx.$slots, "prev-month", {}, () => [
                                createVNode(unref(ElIcon), null, {
                                  default: withCtx(() => [
                                    createVNode(unref(arrow_left_default))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                })
                              ])
                            ], 10, _hoisted_9$j)) : createCommentVNode("v-if", true),
                            createBaseVNode("button", {
                              type: "button",
                              "aria-label": unref(t)(`el.datepicker.nextYear`),
                              class: normalizeClass([unref(ppNs).e("icon-btn"), "d-arrow-right"]),
                              disabled: unref(dateRangeDisabled),
                              onClick: rightNextYear
                            }, [
                              renderSlot(_ctx.$slots, "next-year", {}, () => [
                                createVNode(unref(ElIcon), null, {
                                  default: withCtx(() => [
                                    createVNode(unref(d_arrow_right_default))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                })
                              ])
                            ], 10, _hoisted_10$g),
                            withDirectives(createBaseVNode("button", {
                              type: "button",
                              class: normalizeClass([unref(ppNs).e("icon-btn"), "arrow-right"]),
                              disabled: unref(dateRangeDisabled),
                              "aria-label": unref(t)(`el.datepicker.nextMonth`),
                              onClick: rightNextMonth
                            }, [
                              renderSlot(_ctx.$slots, "next-month", {}, () => [
                                createVNode(unref(ElIcon), null, {
                                  default: withCtx(() => [
                                    createVNode(unref(arrow_right_default))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                })
                              ])
                            ], 10, _hoisted_11$g), [
                              [vShow, unref(rightCurrentView) === "date"]
                            ]),
                            createBaseVNode("div", null, [
                              createBaseVNode("span", {
                                role: "button",
                                class: normalizeClass(unref(drpNs).e("header-label")),
                                "aria-live": "polite",
                                tabindex: _ctx.disabled ? void 0 : 0,
                                "aria-disabled": _ctx.disabled,
                                onKeydown: _cache[14] || (_cache[14] = withKeys(($event) => unref(showRightPicker)("year"), ["enter"])),
                                onClick: _cache[15] || (_cache[15] = ($event) => unref(showRightPicker)("year"))
                              }, toDisplayString(unref(rightYearLabel)), 43, _hoisted_12$d),
                              withDirectives(createBaseVNode("span", {
                                role: "button",
                                "aria-live": "polite",
                                tabindex: _ctx.disabled ? void 0 : 0,
                                "aria-disabled": _ctx.disabled,
                                class: normalizeClass([
                                  unref(drpNs).e("header-label"),
                                  { active: unref(rightCurrentView) === "month" }
                                ]),
                                onKeydown: _cache[16] || (_cache[16] = withKeys(($event) => unref(showRightPicker)("month"), ["enter"])),
                                onClick: _cache[17] || (_cache[17] = ($event) => unref(showRightPicker)("month"))
                              }, toDisplayString(unref(t)(`el.datepicker.month${rightDate.value.month() + 1}`)), 43, _hoisted_13$c), [
                                [vShow, unref(rightCurrentView) === "date"]
                              ])
                            ])
                          ],
                          2
                          /* CLASS */
                        ),
                        unref(rightCurrentView) === "date" ? (openBlock(), createBlock(_sfc_main$2l, {
                          key: 0,
                          ref_key: "rightCurrentViewRef",
                          ref: rightCurrentViewRef,
                          "selection-mode": "range",
                          date: rightDate.value,
                          "min-date": unref(minDate),
                          "max-date": unref(maxDate),
                          "range-state": unref(rangeState),
                          "disabled-date": unref(disabledDate),
                          "cell-class-name": unref(cellClassName),
                          "show-week-number": _ctx.showWeekNumber,
                          disabled: unref(dateRangeDisabled),
                          onChangerange: unref(handleChangeRange),
                          onPick: handleRangePick,
                          onSelect: unref(onSelect)
                        }, null, 8, ["date", "min-date", "max-date", "range-state", "disabled-date", "cell-class-name", "show-week-number", "disabled", "onChangerange", "onSelect"])) : createCommentVNode("v-if", true),
                        unref(rightCurrentView) === "year" ? (openBlock(), createBlock(_sfc_main$2j, {
                          key: 1,
                          ref_key: "rightCurrentViewRef",
                          ref: rightCurrentViewRef,
                          "selection-mode": "year",
                          date: rightDate.value,
                          "disabled-date": unref(disabledDate),
                          "parsed-value": _ctx.parsedValue,
                          disabled: unref(dateRangeDisabled),
                          onPick: unref(handleRightYearPick)
                        }, null, 8, ["date", "disabled-date", "parsed-value", "disabled", "onPick"])) : createCommentVNode("v-if", true),
                        unref(rightCurrentView) === "month" ? (openBlock(), createBlock(_sfc_main$2k, {
                          key: 2,
                          ref_key: "rightCurrentViewRef",
                          ref: rightCurrentViewRef,
                          "selection-mode": "month",
                          date: rightDate.value,
                          "parsed-value": _ctx.parsedValue,
                          "disabled-date": unref(disabledDate),
                          disabled: unref(dateRangeDisabled),
                          onPick: unref(handleRightMonthPick)
                        }, null, 8, ["date", "parsed-value", "disabled-date", "disabled", "onPick"])) : createCommentVNode("v-if", true)
                      ],
                      2
                      /* CLASS */
                    )
                  ],
                  2
                  /* CLASS */
                )
              ],
              2
              /* CLASS */
            ),
            _ctx.showFooter && showTime.value && (_ctx.showConfirm || unref(clearable)) ? (openBlock(), createElementBlock(
              "div",
              {
                key: 0,
                class: normalizeClass(unref(ppNs).e("footer"))
              },
              [
                unref(clearable) ? (openBlock(), createBlock(unref(ElButton), {
                  key: 0,
                  text: "",
                  size: "small",
                  class: normalizeClass(unref(ppNs).e("link-btn")),
                  onClick: onClear
                }, {
                  default: withCtx(() => [
                    createTextVNode(
                      toDisplayString(unref(t)("el.datepicker.clear")),
                      1
                      /* TEXT */
                    )
                  ]),
                  _: 1
                  /* STABLE */
                }, 8, ["class"])) : createCommentVNode("v-if", true),
                _ctx.showConfirm ? (openBlock(), createBlock(unref(ElButton), {
                  key: 1,
                  plain: "",
                  size: "small",
                  class: normalizeClass(unref(ppNs).e("link-btn")),
                  disabled: btnDisabled.value,
                  onClick: _cache[18] || (_cache[18] = ($event) => unref(handleRangeConfirm)(false))
                }, {
                  default: withCtx(() => [
                    createTextVNode(
                      toDisplayString(unref(t)("el.datepicker.confirm")),
                      1
                      /* TEXT */
                    )
                  ]),
                  _: 1
                  /* STABLE */
                }, 8, ["class", "disabled"])) : createCommentVNode("v-if", true)
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true)
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const panelMonthRangeProps = buildProps({
    ...panelRangeSharedProps
  });
  const panelMonthRangeEmits = [
    "pick",
    "set-picker-option",
    "calendar-change"
  ];
  const useMonthRangeHeader = ({
    unlinkPanels,
    leftDate,
    rightDate
  }) => {
    const { t } = useLocale();
    const leftPrevYear = () => {
      leftDate.value = leftDate.value.subtract(1, "year");
      if (!unlinkPanels.value) {
        rightDate.value = rightDate.value.subtract(1, "year");
      }
    };
    const rightNextYear = () => {
      if (!unlinkPanels.value) {
        leftDate.value = leftDate.value.add(1, "year");
      }
      rightDate.value = rightDate.value.add(1, "year");
    };
    const leftNextYear = () => {
      leftDate.value = leftDate.value.add(1, "year");
    };
    const rightPrevYear = () => {
      rightDate.value = rightDate.value.subtract(1, "year");
    };
    const leftLabel = computed(() => {
      return `${leftDate.value.year()} ${t("el.datepicker.year")}`;
    });
    const rightLabel = computed(() => {
      return `${rightDate.value.year()} ${t("el.datepicker.year")}`;
    });
    const leftYear = computed(() => {
      return leftDate.value.year();
    });
    const rightYear = computed(() => {
      return rightDate.value.year() === leftDate.value.year() ? leftDate.value.year() + 1 : rightDate.value.year();
    });
    return {
      leftPrevYear,
      rightNextYear,
      leftNextYear,
      rightPrevYear,
      leftLabel,
      rightLabel,
      leftYear,
      rightYear
    };
  };
  const _hoisted_1$1z = ["disabled", "onClick"];
  const _hoisted_2$1f = ["disabled"];
  const _hoisted_3$Y = ["disabled"];
  const _hoisted_4$S = ["disabled"];
  const _hoisted_5$I = ["disabled"];
  const unit$1 = "year";
  var _sfc_main$2g = /* @__PURE__ */ defineComponent({
    ...{
      name: "DatePickerMonthRange"
    },
    __name: "panel-month-range",
    props: panelMonthRangeProps,
    emits: panelMonthRangeEmits,
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const { lang } = useLocale();
      const pickerBase = inject(PICKER_BASE_INJECTION_KEY);
      const isDefaultFormat = inject(
        ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY,
        void 0
      );
      const { shortcuts, disabledDate, cellClassName } = pickerBase.props;
      const format2 = toRef(pickerBase.props, "format");
      const defaultValue = toRef(pickerBase.props, "defaultValue");
      const leftDate = ref(dayjs().locale(lang.value));
      const rightDate = ref(dayjs().locale(lang.value).add(1, unit$1));
      const {
        minDate,
        maxDate,
        rangeState,
        ppNs,
        drpNs,
        handleChangeRange,
        handleRangeConfirm,
        handleShortcutClick,
        onSelect,
        parseValue
      } = useRangePicker(props2, {
        defaultValue,
        leftDate,
        rightDate,
        unit: unit$1,
        sortDates
      });
      const hasShortcuts = computed(() => !!shortcuts.length);
      const {
        leftPrevYear,
        rightNextYear,
        leftNextYear,
        rightPrevYear,
        leftLabel,
        rightLabel,
        leftYear,
        rightYear
      } = useMonthRangeHeader({
        unlinkPanels: toRef(props2, "unlinkPanels"),
        leftDate,
        rightDate
      });
      const enableYearArrow = computed(() => {
        return props2.unlinkPanels && rightYear.value > leftYear.value + 1;
      });
      const handleRangePick = (val, close2 = true) => {
        const minDate_ = val.minDate;
        const maxDate_ = val.maxDate;
        if (maxDate.value === maxDate_ && minDate.value === minDate_) {
          return;
        }
        emit2("calendar-change", [minDate_.toDate(), maxDate_ && maxDate_.toDate()]);
        maxDate.value = maxDate_;
        minDate.value = minDate_;
        if (!close2) return;
        handleRangeConfirm();
      };
      const handleClear = () => {
        let valueOnClear = null;
        if (pickerBase == null ? void 0 : pickerBase.emptyValues) {
          valueOnClear = pickerBase.emptyValues.valueOnClear.value;
        }
        leftDate.value = getDefaultValue(unref(defaultValue), {
          lang: unref(lang),
          unit: "year",
          unlinkPanels: props2.unlinkPanels
        })[0];
        rightDate.value = leftDate.value.add(1, "year");
        emit2("pick", valueOnClear);
      };
      const parseUserInput = (value) => {
        return correctlyParseUserInput(
          value,
          format2.value,
          lang.value,
          isDefaultFormat
        );
      };
      function sortDates(minDate2, maxDate2) {
        if (props2.unlinkPanels && maxDate2) {
          const minDateYear = (minDate2 == null ? void 0 : minDate2.year()) || 0;
          const maxDateYear = maxDate2.year();
          rightDate.value = minDateYear === maxDateYear ? maxDate2.add(1, unit$1) : maxDate2;
        } else {
          rightDate.value = leftDate.value.add(1, unit$1);
        }
      }
      const monthRangeDisabled = useFormDisabled();
      watch(
        () => props2.visible,
        (visible) => {
          if (!visible && rangeState.value.selecting) {
            parseValue(props2.parsedValue);
            onSelect(false);
          }
        }
      );
      emit2("set-picker-option", ["isValidValue", isValidRange]);
      emit2("set-picker-option", ["parseUserInput", parseUserInput]);
      emit2("set-picker-option", ["handleClear", handleClear]);
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass([
              unref(ppNs).b(),
              unref(drpNs).b(),
              unref(ppNs).is("border", _ctx.border),
              unref(ppNs).is("disabled", unref(monthRangeDisabled)),
              {
                "has-sidebar": Boolean(_ctx.$slots.sidebar) || hasShortcuts.value
              }
            ])
          },
          [
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(ppNs).e("body-wrapper"))
              },
              [
                renderSlot(_ctx.$slots, "sidebar", {
                  class: normalizeClass(unref(ppNs).e("sidebar"))
                }),
                hasShortcuts.value ? (openBlock(), createElementBlock(
                  "div",
                  {
                    key: 0,
                    class: normalizeClass(unref(ppNs).e("sidebar"))
                  },
                  [
                    (openBlock(true), createElementBlock(
                      Fragment,
                      null,
                      renderList(unref(shortcuts), (shortcut, key) => {
                        return openBlock(), createElementBlock("button", {
                          key,
                          type: "button",
                          class: normalizeClass(unref(ppNs).e("shortcut")),
                          disabled: unref(monthRangeDisabled),
                          onClick: ($event) => unref(handleShortcutClick)(shortcut)
                        }, toDisplayString(shortcut.text), 11, _hoisted_1$1z);
                      }),
                      128
                      /* KEYED_FRAGMENT */
                    ))
                  ],
                  2
                  /* CLASS */
                )) : createCommentVNode("v-if", true),
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass(unref(ppNs).e("body"))
                  },
                  [
                    createBaseVNode(
                      "div",
                      {
                        class: normalizeClass([[unref(ppNs).e("content"), unref(drpNs).e("content")], "is-left"])
                      },
                      [
                        createBaseVNode(
                          "div",
                          {
                            class: normalizeClass(unref(drpNs).e("header"))
                          },
                          [
                            createBaseVNode("button", {
                              type: "button",
                              class: normalizeClass([unref(ppNs).e("icon-btn"), "d-arrow-left"]),
                              disabled: unref(monthRangeDisabled),
                              onClick: _cache[0] || (_cache[0] = //@ts-ignore
                              (...args) => unref(leftPrevYear) && unref(leftPrevYear)(...args))
                            }, [
                              renderSlot(_ctx.$slots, "prev-year", {}, () => [
                                createVNode(unref(ElIcon), null, {
                                  default: withCtx(() => [
                                    createVNode(unref(d_arrow_left_default))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                })
                              ])
                            ], 10, _hoisted_2$1f),
                            _ctx.unlinkPanels ? (openBlock(), createElementBlock("button", {
                              key: 0,
                              type: "button",
                              disabled: !enableYearArrow.value || unref(monthRangeDisabled),
                              class: normalizeClass([[
                                unref(ppNs).e("icon-btn"),
                                unref(ppNs).is("disabled", !enableYearArrow.value || unref(monthRangeDisabled))
                              ], "d-arrow-right"]),
                              onClick: _cache[1] || (_cache[1] = //@ts-ignore
                              (...args) => unref(leftNextYear) && unref(leftNextYear)(...args))
                            }, [
                              renderSlot(_ctx.$slots, "next-year", {}, () => [
                                createVNode(unref(ElIcon), null, {
                                  default: withCtx(() => [
                                    createVNode(unref(d_arrow_right_default))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                })
                              ])
                            ], 10, _hoisted_3$Y)) : createCommentVNode("v-if", true),
                            createBaseVNode(
                              "div",
                              null,
                              toDisplayString(unref(leftLabel)),
                              1
                              /* TEXT */
                            )
                          ],
                          2
                          /* CLASS */
                        ),
                        createVNode(_sfc_main$2k, {
                          "selection-mode": "range",
                          date: leftDate.value,
                          "min-date": unref(minDate),
                          "max-date": unref(maxDate),
                          "range-state": unref(rangeState),
                          "disabled-date": unref(disabledDate),
                          disabled: unref(monthRangeDisabled),
                          "cell-class-name": unref(cellClassName),
                          onChangerange: unref(handleChangeRange),
                          onPick: handleRangePick,
                          onSelect: unref(onSelect)
                        }, null, 8, ["date", "min-date", "max-date", "range-state", "disabled-date", "disabled", "cell-class-name", "onChangerange", "onSelect"])
                      ],
                      2
                      /* CLASS */
                    ),
                    createBaseVNode(
                      "div",
                      {
                        class: normalizeClass([[unref(ppNs).e("content"), unref(drpNs).e("content")], "is-right"])
                      },
                      [
                        createBaseVNode(
                          "div",
                          {
                            class: normalizeClass(unref(drpNs).e("header"))
                          },
                          [
                            _ctx.unlinkPanels ? (openBlock(), createElementBlock("button", {
                              key: 0,
                              type: "button",
                              disabled: !enableYearArrow.value || unref(monthRangeDisabled),
                              class: normalizeClass([[
                                unref(ppNs).e("icon-btn"),
                                unref(ppNs).is("disabled", !enableYearArrow.value || unref(monthRangeDisabled))
                              ], "d-arrow-left"]),
                              onClick: _cache[2] || (_cache[2] = //@ts-ignore
                              (...args) => unref(rightPrevYear) && unref(rightPrevYear)(...args))
                            }, [
                              renderSlot(_ctx.$slots, "prev-year", {}, () => [
                                createVNode(unref(ElIcon), null, {
                                  default: withCtx(() => [
                                    createVNode(unref(d_arrow_left_default))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                })
                              ])
                            ], 10, _hoisted_4$S)) : createCommentVNode("v-if", true),
                            createBaseVNode("button", {
                              type: "button",
                              class: normalizeClass([unref(ppNs).e("icon-btn"), "d-arrow-right"]),
                              disabled: unref(monthRangeDisabled),
                              onClick: _cache[3] || (_cache[3] = //@ts-ignore
                              (...args) => unref(rightNextYear) && unref(rightNextYear)(...args))
                            }, [
                              renderSlot(_ctx.$slots, "next-year", {}, () => [
                                createVNode(unref(ElIcon), null, {
                                  default: withCtx(() => [
                                    createVNode(unref(d_arrow_right_default))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                })
                              ])
                            ], 10, _hoisted_5$I),
                            createBaseVNode(
                              "div",
                              null,
                              toDisplayString(unref(rightLabel)),
                              1
                              /* TEXT */
                            )
                          ],
                          2
                          /* CLASS */
                        ),
                        createVNode(_sfc_main$2k, {
                          "selection-mode": "range",
                          date: rightDate.value,
                          "min-date": unref(minDate),
                          "max-date": unref(maxDate),
                          "range-state": unref(rangeState),
                          "disabled-date": unref(disabledDate),
                          disabled: unref(monthRangeDisabled),
                          "cell-class-name": unref(cellClassName),
                          onChangerange: unref(handleChangeRange),
                          onPick: handleRangePick,
                          onSelect: unref(onSelect)
                        }, null, 8, ["date", "min-date", "max-date", "range-state", "disabled-date", "disabled", "cell-class-name", "onChangerange", "onSelect"])
                      ],
                      2
                      /* CLASS */
                    )
                  ],
                  2
                  /* CLASS */
                )
              ],
              2
              /* CLASS */
            )
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const panelYearRangeProps = buildProps({
    ...panelRangeSharedProps
  });
  const panelYearRangeEmits = [
    "pick",
    "set-picker-option",
    "calendar-change"
  ];
  const useYearRangeHeader = ({
    unlinkPanels,
    leftDate,
    rightDate
  }) => {
    const leftPrevYear = () => {
      leftDate.value = leftDate.value.subtract(10, "year");
      if (!unlinkPanels.value) {
        rightDate.value = rightDate.value.subtract(10, "year");
      }
    };
    const rightNextYear = () => {
      if (!unlinkPanels.value) {
        leftDate.value = leftDate.value.add(10, "year");
      }
      rightDate.value = rightDate.value.add(10, "year");
    };
    const leftNextYear = () => {
      leftDate.value = leftDate.value.add(10, "year");
    };
    const rightPrevYear = () => {
      rightDate.value = rightDate.value.subtract(10, "year");
    };
    const leftLabel = computed(() => {
      const leftStartDate = Math.floor(leftDate.value.year() / 10) * 10;
      return `${leftStartDate}-${leftStartDate + 9}`;
    });
    const rightLabel = computed(() => {
      const rightStartDate = Math.floor(rightDate.value.year() / 10) * 10;
      return `${rightStartDate}-${rightStartDate + 9}`;
    });
    const leftYear = computed(() => {
      const leftEndDate = Math.floor(leftDate.value.year() / 10) * 10 + 9;
      return leftEndDate;
    });
    const rightYear = computed(() => {
      const rightStartDate = Math.floor(rightDate.value.year() / 10) * 10;
      return rightStartDate;
    });
    return {
      leftPrevYear,
      rightNextYear,
      leftNextYear,
      rightPrevYear,
      leftLabel,
      rightLabel,
      leftYear,
      rightYear
    };
  };
  const _hoisted_1$1y = ["disabled", "onClick"];
  const _hoisted_2$1e = ["disabled"];
  const _hoisted_3$X = ["disabled"];
  const _hoisted_4$R = ["disabled"];
  const _hoisted_5$H = ["disabled"];
  const step = 10;
  const unit = "year";
  var _sfc_main$2f = /* @__PURE__ */ defineComponent({
    ...{
      name: "DatePickerYearRange"
    },
    __name: "panel-year-range",
    props: panelYearRangeProps,
    emits: panelYearRangeEmits,
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const { lang } = useLocale();
      const leftDate = ref(dayjs().locale(lang.value));
      const rightDate = ref(dayjs().locale(lang.value).add(step, unit));
      const isDefaultFormat = inject(
        ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY,
        void 0
      );
      const pickerBase = inject(PICKER_BASE_INJECTION_KEY);
      const { shortcuts, disabledDate, cellClassName } = pickerBase.props;
      const format2 = toRef(pickerBase.props, "format");
      const defaultValue = toRef(pickerBase.props, "defaultValue");
      const {
        minDate,
        maxDate,
        rangeState,
        ppNs,
        drpNs,
        handleChangeRange,
        handleRangeConfirm,
        handleShortcutClick,
        onSelect,
        parseValue
      } = useRangePicker(props2, {
        defaultValue,
        leftDate,
        rightDate,
        step,
        unit,
        sortDates
      });
      const {
        leftPrevYear,
        rightNextYear,
        leftNextYear,
        rightPrevYear,
        leftLabel,
        rightLabel,
        leftYear,
        rightYear
      } = useYearRangeHeader({
        unlinkPanels: toRef(props2, "unlinkPanels"),
        leftDate,
        rightDate
      });
      const yearRangeDisabled = useFormDisabled();
      const hasShortcuts = computed(() => !!shortcuts.length);
      const panelKls = computed(() => [
        ppNs.b(),
        drpNs.b(),
        ppNs.is("border", props2.border),
        ppNs.is("disabled", yearRangeDisabled.value),
        {
          "has-sidebar": Boolean(useSlots().sidebar) || hasShortcuts.value
        }
      ]);
      const leftPanelKls = computed(() => {
        return {
          content: [ppNs.e("content"), drpNs.e("content"), "is-left"],
          arrowLeftBtn: [ppNs.e("icon-btn"), "d-arrow-left"],
          arrowRightBtn: [
            ppNs.e("icon-btn"),
            ppNs.is("disabled", !enableYearArrow.value || yearRangeDisabled.value),
            "d-arrow-right"
          ]
        };
      });
      const rightPanelKls = computed(() => {
        return {
          content: [ppNs.e("content"), drpNs.e("content"), "is-right"],
          arrowLeftBtn: [
            ppNs.e("icon-btn"),
            ppNs.is("disabled", !enableYearArrow.value || yearRangeDisabled.value),
            "d-arrow-left"
          ],
          arrowRightBtn: [ppNs.e("icon-btn"), "d-arrow-right"]
        };
      });
      const enableYearArrow = computed(() => {
        return props2.unlinkPanels && rightYear.value > leftYear.value + 1;
      });
      const handleRangePick = (val, close2 = true) => {
        const minDate_ = val.minDate;
        const maxDate_ = val.maxDate;
        if (maxDate.value === maxDate_ && minDate.value === minDate_) {
          return;
        }
        emit2("calendar-change", [minDate_.toDate(), maxDate_ && maxDate_.toDate()]);
        maxDate.value = maxDate_;
        minDate.value = minDate_;
        if (!close2) return;
        handleRangeConfirm();
      };
      const parseUserInput = (value) => {
        return correctlyParseUserInput(
          value,
          format2.value,
          lang.value,
          isDefaultFormat
        );
      };
      const isValidValue2 = (date) => {
        return isValidRange(date) && (disabledDate ? !disabledDate(date[0].toDate()) && !disabledDate(date[1].toDate()) : true);
      };
      const handleClear = () => {
        let valueOnClear = null;
        if (pickerBase == null ? void 0 : pickerBase.emptyValues) {
          valueOnClear = pickerBase.emptyValues.valueOnClear.value;
        }
        const defaultArr = getDefaultValue(unref(defaultValue), {
          lang: unref(lang),
          step,
          unit,
          unlinkPanels: props2.unlinkPanels
        });
        leftDate.value = defaultArr[0];
        rightDate.value = defaultArr[1];
        emit2("pick", valueOnClear);
      };
      function sortDates(minDate2, maxDate2) {
        if (props2.unlinkPanels && maxDate2) {
          const minDateYear = (minDate2 == null ? void 0 : minDate2.year()) || 0;
          const maxDateYear = maxDate2.year();
          rightDate.value = minDateYear + step > maxDateYear ? maxDate2.add(step, unit) : maxDate2;
        } else {
          rightDate.value = leftDate.value.add(step, unit);
        }
      }
      watch(
        () => props2.visible,
        (visible) => {
          if (!visible && rangeState.value.selecting) {
            parseValue(props2.parsedValue);
            onSelect(false);
          }
        }
      );
      emit2("set-picker-option", ["isValidValue", isValidValue2]);
      emit2("set-picker-option", ["parseUserInput", parseUserInput]);
      emit2("set-picker-option", ["handleClear", handleClear]);
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass(panelKls.value)
          },
          [
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(ppNs).e("body-wrapper"))
              },
              [
                renderSlot(_ctx.$slots, "sidebar", {
                  class: normalizeClass(unref(ppNs).e("sidebar"))
                }),
                hasShortcuts.value ? (openBlock(), createElementBlock(
                  "div",
                  {
                    key: 0,
                    class: normalizeClass(unref(ppNs).e("sidebar"))
                  },
                  [
                    (openBlock(true), createElementBlock(
                      Fragment,
                      null,
                      renderList(unref(shortcuts), (shortcut, key) => {
                        return openBlock(), createElementBlock("button", {
                          key,
                          type: "button",
                          class: normalizeClass(unref(ppNs).e("shortcut")),
                          disabled: unref(yearRangeDisabled),
                          onClick: ($event) => unref(handleShortcutClick)(shortcut)
                        }, toDisplayString(shortcut.text), 11, _hoisted_1$1y);
                      }),
                      128
                      /* KEYED_FRAGMENT */
                    ))
                  ],
                  2
                  /* CLASS */
                )) : createCommentVNode("v-if", true),
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass(unref(ppNs).e("body"))
                  },
                  [
                    createBaseVNode(
                      "div",
                      {
                        class: normalizeClass(leftPanelKls.value.content)
                      },
                      [
                        createBaseVNode(
                          "div",
                          {
                            class: normalizeClass(unref(drpNs).e("header"))
                          },
                          [
                            createBaseVNode("button", {
                              type: "button",
                              class: normalizeClass(leftPanelKls.value.arrowLeftBtn),
                              disabled: unref(yearRangeDisabled),
                              onClick: _cache[0] || (_cache[0] = //@ts-ignore
                              (...args) => unref(leftPrevYear) && unref(leftPrevYear)(...args))
                            }, [
                              renderSlot(_ctx.$slots, "prev-year", {}, () => [
                                createVNode(unref(ElIcon), null, {
                                  default: withCtx(() => [
                                    createVNode(unref(d_arrow_left_default))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                })
                              ])
                            ], 10, _hoisted_2$1e),
                            _ctx.unlinkPanels ? (openBlock(), createElementBlock("button", {
                              key: 0,
                              type: "button",
                              disabled: !enableYearArrow.value || unref(yearRangeDisabled),
                              class: normalizeClass(leftPanelKls.value.arrowRightBtn),
                              onClick: _cache[1] || (_cache[1] = //@ts-ignore
                              (...args) => unref(leftNextYear) && unref(leftNextYear)(...args))
                            }, [
                              renderSlot(_ctx.$slots, "next-year", {}, () => [
                                createVNode(unref(ElIcon), null, {
                                  default: withCtx(() => [
                                    createVNode(unref(d_arrow_right_default))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                })
                              ])
                            ], 10, _hoisted_3$X)) : createCommentVNode("v-if", true),
                            createBaseVNode(
                              "div",
                              null,
                              toDisplayString(unref(leftLabel)),
                              1
                              /* TEXT */
                            )
                          ],
                          2
                          /* CLASS */
                        ),
                        createVNode(_sfc_main$2j, {
                          "selection-mode": "range",
                          date: leftDate.value,
                          "min-date": unref(minDate),
                          "max-date": unref(maxDate),
                          "range-state": unref(rangeState),
                          "disabled-date": unref(disabledDate),
                          disabled: unref(yearRangeDisabled),
                          "cell-class-name": unref(cellClassName),
                          onChangerange: unref(handleChangeRange),
                          onPick: handleRangePick,
                          onSelect: unref(onSelect)
                        }, null, 8, ["date", "min-date", "max-date", "range-state", "disabled-date", "disabled", "cell-class-name", "onChangerange", "onSelect"])
                      ],
                      2
                      /* CLASS */
                    ),
                    createBaseVNode(
                      "div",
                      {
                        class: normalizeClass(rightPanelKls.value.content)
                      },
                      [
                        createBaseVNode(
                          "div",
                          {
                            class: normalizeClass(unref(drpNs).e("header"))
                          },
                          [
                            _ctx.unlinkPanels ? (openBlock(), createElementBlock("button", {
                              key: 0,
                              type: "button",
                              disabled: !enableYearArrow.value || unref(yearRangeDisabled),
                              class: normalizeClass(rightPanelKls.value.arrowLeftBtn),
                              onClick: _cache[2] || (_cache[2] = //@ts-ignore
                              (...args) => unref(rightPrevYear) && unref(rightPrevYear)(...args))
                            }, [
                              renderSlot(_ctx.$slots, "prev-year", {}, () => [
                                createVNode(unref(ElIcon), null, {
                                  default: withCtx(() => [
                                    createVNode(unref(d_arrow_left_default))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                })
                              ])
                            ], 10, _hoisted_4$R)) : createCommentVNode("v-if", true),
                            createBaseVNode("button", {
                              type: "button",
                              class: normalizeClass(rightPanelKls.value.arrowRightBtn),
                              disabled: unref(yearRangeDisabled),
                              onClick: _cache[3] || (_cache[3] = //@ts-ignore
                              (...args) => unref(rightNextYear) && unref(rightNextYear)(...args))
                            }, [
                              renderSlot(_ctx.$slots, "next-year", {}, () => [
                                createVNode(unref(ElIcon), null, {
                                  default: withCtx(() => [
                                    createVNode(unref(d_arrow_right_default))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                })
                              ])
                            ], 10, _hoisted_5$H),
                            createBaseVNode(
                              "div",
                              null,
                              toDisplayString(unref(rightLabel)),
                              1
                              /* TEXT */
                            )
                          ],
                          2
                          /* CLASS */
                        ),
                        createVNode(_sfc_main$2j, {
                          "selection-mode": "range",
                          date: rightDate.value,
                          "min-date": unref(minDate),
                          "max-date": unref(maxDate),
                          "range-state": unref(rangeState),
                          "disabled-date": unref(disabledDate),
                          disabled: unref(yearRangeDisabled),
                          "cell-class-name": unref(cellClassName),
                          onChangerange: unref(handleChangeRange),
                          onPick: handleRangePick,
                          onSelect: unref(onSelect)
                        }, null, 8, ["date", "min-date", "max-date", "range-state", "disabled-date", "disabled", "cell-class-name", "onChangerange", "onSelect"])
                      ],
                      2
                      /* CLASS */
                    )
                  ],
                  2
                  /* CLASS */
                )
              ],
              2
              /* CLASS */
            )
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const getPanel = function(type) {
    switch (type) {
      case "daterange":
      case "datetimerange": {
        return _sfc_main$2h;
      }
      case "monthrange": {
        return _sfc_main$2g;
      }
      case "yearrange": {
        return _sfc_main$2f;
      }
      default: {
        return _sfc_main$2i;
      }
    }
  };
  function _isSlot$7(s2) {
    return typeof s2 === "function" || Object.prototype.toString.call(s2) === "[object Object]" && !isVNode(s2);
  }
  dayjs.extend(localeData);
  dayjs.extend(advancedFormat);
  dayjs.extend(customParseFormat);
  dayjs.extend(weekOfYear);
  dayjs.extend(weekYear);
  dayjs.extend(dayOfYear);
  dayjs.extend(isSameOrAfter);
  dayjs.extend(isSameOrBefore);
  var DatePickerPanel = /* @__PURE__ */ defineComponent({
    name: "ElDatePickerPanel",
    install: null,
    inheritAttrs: false,
    props: datePickerPanelProps,
    emits: [UPDATE_MODEL_EVENT, "calendar-change", "panel-change", "visible-change", "clear"],
    setup(props2, {
      slots,
      emit: emit2,
      attrs
    }) {
      const ns = useNamespace("picker-panel");
      const pickerInjection = inject(PICKER_BASE_INJECTION_KEY, void 0);
      if (isUndefined(pickerInjection)) {
        const _props = reactive({
          ...toRefs(props2)
        });
        provide(PICKER_BASE_INJECTION_KEY, {
          props: _props
        });
      }
      provide(ROOT_PICKER_INJECTION_KEY, {
        slots,
        pickerNs: ns
      });
      const {
        parsedValue,
        onCalendarChange,
        onPanelChange,
        onSetPickerOption,
        onPick
      } = inject(ROOT_COMMON_PICKER_INJECTION_KEY, () => useCommonPicker(props2, emit2), true);
      return () => {
        const Component = getPanel(props2.type);
        return createVNode(Component, mergeProps(omit(attrs, "onPick"), props2, {
          "parsedValue": parsedValue.value,
          "onSet-picker-option": onSetPickerOption,
          "onCalendar-change": onCalendarChange,
          "onPanel-change": onPanelChange,
          "onClear": () => emit2("clear"),
          "onPick": onPick
        }), _isSlot$7(slots) ? slots : {
          default: () => [slots]
        });
      };
    }
  });
  const ElDatePickerPanel = withInstall(DatePickerPanel);
  const datePickerProps = buildProps({
    ...timePickerDefaultProps,
    /**
     * @description type of the picker
     */
    type: {
      type: definePropType(String),
      default: "date"
    }
  });
  function _isSlot$6(s2) {
    return typeof s2 === "function" || Object.prototype.toString.call(s2) === "[object Object]" && !isVNode(s2);
  }
  var DatePicker = /* @__PURE__ */ defineComponent({
    name: "ElDatePicker",
    install: null,
    props: datePickerProps,
    emits: [UPDATE_MODEL_EVENT],
    setup(props2, {
      expose,
      emit: emit2,
      slots
    }) {
      const isDefaultFormat = computed(() => {
        return !props2.format;
      });
      provide(ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY, isDefaultFormat);
      provide(PICKER_POPPER_OPTIONS_INJECTION_KEY, reactive(toRef(props2, "popperOptions")));
      const commonPicker = ref();
      const refProps = {
        focus: () => {
          var _a;
          (_a = commonPicker.value) == null ? void 0 : _a.focus();
        },
        blur: () => {
          var _a;
          (_a = commonPicker.value) == null ? void 0 : _a.blur();
        },
        handleOpen: () => {
          var _a;
          (_a = commonPicker.value) == null ? void 0 : _a.handleOpen();
        },
        handleClose: () => {
          var _a;
          (_a = commonPicker.value) == null ? void 0 : _a.handleClose();
        }
      };
      expose(refProps);
      const onModelValueUpdated = (val) => {
        emit2(UPDATE_MODEL_EVENT, val);
      };
      return () => {
        var _a;
        const format2 = (_a = props2.format) != null ? _a : DEFAULT_FORMATS_DATEPICKER[props2.type] || DEFAULT_FORMATS_DATE;
        return createVNode(_sfc_main$2p, mergeProps(props2, {
          "format": format2,
          "type": props2.type,
          "ref": commonPicker,
          "onUpdate:modelValue": onModelValueUpdated
        }), {
          default: (scopedProps) => createVNode(ElDatePickerPanel, mergeProps({
            "disabled": props2.disabled,
            "editable": props2.editable,
            "border": false
          }, scopedProps), _isSlot$6(slots) ? slots : {
            default: () => [slots]
          }),
          "range-separator": slots["range-separator"]
        });
      };
    }
  });
  const ElDatePicker = withInstall(DatePicker);
  const descriptionProps = buildProps({
    /**
     * @description with or without border
     */
    border: Boolean,
    /**
     * @description numbers of `Descriptions Item` in one line
     */
    column: {
      type: Number,
      default: 3
    },
    /**
     * @description direction of list
     */
    direction: {
      type: String,
      values: ["horizontal", "vertical"],
      default: "horizontal"
    },
    /**
     * @description size of list
     */
    size: useSizeProp,
    /**
     * @description title text, display on the top left
     */
    title: {
      type: String,
      default: ""
    },
    /**
     * @description extra text, display on the top right
     */
    extra: {
      type: String,
      default: ""
    },
    /**
     * @description width of every label column
     */
    labelWidth: {
      type: [String, Number]
    }
  });
  const descriptionsRowProps = buildProps({
    row: {
      type: definePropType(Array),
      default: () => []
    }
  });
  const descriptionsKey = /* @__PURE__ */ Symbol("elDescriptions");
  var ElDescriptionsCell = /* @__PURE__ */ defineComponent({
    name: "ElDescriptionsCell",
    props: {
      cell: {
        type: Object
      },
      tag: {
        type: String,
        default: "td"
      },
      type: {
        type: String
      }
    },
    setup() {
      const descriptions = inject(descriptionsKey, {});
      return {
        descriptions
      };
    },
    render() {
      var _a, _b, _c, _d;
      const item = getNormalizedProps(
        this.cell
      );
      const directives = (((_a = this.cell) == null ? void 0 : _a.dirs) || []).map((dire) => {
        const { dir, arg, modifiers, value } = dire;
        return [dir, value, arg, modifiers];
      });
      const { border, direction: direction2 } = this.descriptions;
      const isVertical = direction2 === "vertical";
      const renderLabel = () => {
        var _a2, _b2, _c2;
        return ((_c2 = (_b2 = (_a2 = this.cell) == null ? void 0 : _a2.children) == null ? void 0 : _b2.label) == null ? void 0 : _c2.call(_b2)) || item.label;
      };
      const renderContent = () => {
        var _a2, _b2, _c2;
        return (_c2 = (_b2 = (_a2 = this.cell) == null ? void 0 : _a2.children) == null ? void 0 : _b2.default) == null ? void 0 : _c2.call(_b2);
      };
      const span = item.span;
      const rowspan = item.rowspan;
      const align = item.align ? `is-${item.align}` : "";
      const labelAlign = item.labelAlign ? `is-${item.labelAlign}` : align;
      const className = item.className;
      const labelClassName = item.labelClassName;
      const width = this.type === "label" ? (_c = (_b = item.labelWidth) != null ? _b : this.descriptions.labelWidth) != null ? _c : item.width : item.width;
      const style = {
        width: addUnit(width),
        minWidth: addUnit(item.minWidth)
      };
      const ns = useNamespace("descriptions");
      switch (this.type) {
        case "label":
          return withDirectives(
            h$1(
              this.tag,
              {
                style,
                class: [
                  ns.e("cell"),
                  ns.e("label"),
                  ns.is("bordered-label", border),
                  ns.is("vertical-label", isVertical),
                  labelAlign,
                  labelClassName
                ],
                colSpan: isVertical ? span : 1,
                rowspan: isVertical ? 1 : rowspan
              },
              renderLabel()
            ),
            directives
          );
        case "content":
          return withDirectives(
            h$1(
              this.tag,
              {
                style,
                class: [
                  ns.e("cell"),
                  ns.e("content"),
                  ns.is("bordered-content", border),
                  ns.is("vertical-content", isVertical),
                  align,
                  className
                ],
                colSpan: isVertical ? span : span * 2 - 1,
                rowspan: isVertical ? rowspan * 2 - 1 : rowspan
              },
              renderContent()
            ),
            directives
          );
        default: {
          const label = renderLabel();
          const labelStyle = {};
          const width2 = addUnit((_d = item.labelWidth) != null ? _d : this.descriptions.labelWidth);
          if (width2) {
            labelStyle.width = width2;
            labelStyle.display = "inline-block";
          }
          return withDirectives(
            h$1(
              "td",
              {
                style,
                class: [ns.e("cell"), align],
                colSpan: span,
                rowspan
              },
              [
                !isNil(label) ? h$1(
                  "span",
                  {
                    style: labelStyle,
                    class: [ns.e("label"), labelClassName]
                  },
                  label
                ) : void 0,
                h$1(
                  "span",
                  {
                    class: [ns.e("content"), className]
                  },
                  renderContent()
                )
              ]
            ),
            directives
          );
        }
      }
    }
  });
  const _hoisted_1$1x = { key: 1 };
  var _sfc_main$2e = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElDescriptionsRow"
    },
    __name: "descriptions-row",
    props: descriptionsRowProps,
    setup(__props) {
      const descriptions = inject(descriptionsKey, {});
      return (_ctx, _cache) => {
        return unref(descriptions).direction === "vertical" ? (openBlock(), createElementBlock(
          Fragment,
          { key: 0 },
          [
            createBaseVNode("tr", null, [
              (openBlock(true), createElementBlock(
                Fragment,
                null,
                renderList(__props.row, (cell, _index) => {
                  return openBlock(), createBlock(unref(ElDescriptionsCell), {
                    key: `tr1-${_index}`,
                    cell,
                    tag: "th",
                    type: "label"
                  }, null, 8, ["cell"]);
                }),
                128
                /* KEYED_FRAGMENT */
              ))
            ]),
            createBaseVNode("tr", null, [
              (openBlock(true), createElementBlock(
                Fragment,
                null,
                renderList(__props.row, (cell, _index) => {
                  return openBlock(), createBlock(unref(ElDescriptionsCell), {
                    key: `tr2-${_index}`,
                    cell,
                    tag: "td",
                    type: "content"
                  }, null, 8, ["cell"]);
                }),
                128
                /* KEYED_FRAGMENT */
              ))
            ])
          ],
          64
          /* STABLE_FRAGMENT */
        )) : (openBlock(), createElementBlock("tr", _hoisted_1$1x, [
          (openBlock(true), createElementBlock(
            Fragment,
            null,
            renderList(__props.row, (cell, _index) => {
              return openBlock(), createElementBlock(
                Fragment,
                {
                  key: `tr3-${_index}`
                },
                [
                  unref(descriptions).border ? (openBlock(), createElementBlock(
                    Fragment,
                    { key: 0 },
                    [
                      createVNode(unref(ElDescriptionsCell), {
                        cell,
                        tag: "td",
                        type: "label"
                      }, null, 8, ["cell"]),
                      createVNode(unref(ElDescriptionsCell), {
                        cell,
                        tag: "td",
                        type: "content"
                      }, null, 8, ["cell"])
                    ],
                    64
                    /* STABLE_FRAGMENT */
                  )) : (openBlock(), createBlock(unref(ElDescriptionsCell), {
                    key: 1,
                    cell,
                    tag: "td",
                    type: "both"
                  }, null, 8, ["cell"]))
                ],
                64
                /* STABLE_FRAGMENT */
              );
            }),
            128
            /* KEYED_FRAGMENT */
          ))
        ]));
      };
    }
  });
  const COMPONENT_NAME$e = "ElDescriptionsItem";
  var _sfc_main$2d = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElDescriptions"
    },
    __name: "description",
    props: descriptionProps,
    setup(__props) {
      const props2 = __props;
      const ns = useNamespace("descriptions");
      const descriptionsSize = useFormSize();
      const slots = useSlots();
      provide(descriptionsKey, props2);
      const descriptionKls = computed(() => [ns.b(), ns.m(descriptionsSize.value)]);
      const filledNode = (node, span, count, isLast = false) => {
        if (!node.props) {
          node.props = {};
        }
        if (span > count) {
          node.props.span = count;
        }
        if (isLast) {
          node.props.span = span;
        }
        return node;
      };
      const getRows = () => {
        if (!slots.default) return [];
        const children = flattedChildren(slots.default()).filter(
          (node) => {
            var _a;
            return ((_a = node == null ? void 0 : node.type) == null ? void 0 : _a.name) === COMPONENT_NAME$e;
          }
        );
        const rows = [];
        let temp = [];
        let count = props2.column;
        let totalSpan = 0;
        const rowspanTemp = [];
        children.forEach((node, index) => {
          var _a, _b, _c;
          const span = ((_a = node.props) == null ? void 0 : _a.span) || 1;
          const rowspan = ((_b = node.props) == null ? void 0 : _b.rowspan) || 1;
          const rowNo = rows.length;
          rowspanTemp[rowNo] || (rowspanTemp[rowNo] = 0);
          if (rowspan > 1) {
            for (let i = 1; i < rowspan; i++) {
              rowspanTemp[_c = rowNo + i] || (rowspanTemp[_c] = 0);
              rowspanTemp[rowNo + i]++;
              totalSpan++;
            }
          }
          if (rowspanTemp[rowNo] > 0) {
            count -= rowspanTemp[rowNo];
            rowspanTemp[rowNo] = 0;
          }
          if (index < children.length - 1) {
            totalSpan += span > count ? count : span;
          }
          if (index === children.length - 1) {
            const lastSpan = props2.column - totalSpan % props2.column;
            temp.push(filledNode(node, lastSpan, count, true));
            rows.push(temp);
            return;
          }
          if (span < count) {
            count -= span;
            temp.push(node);
          } else {
            temp.push(filledNode(node, span, count));
            rows.push(temp);
            count = props2.column;
            temp = [];
          }
        });
        return rows;
      };
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass(descriptionKls.value)
          },
          [
            __props.title || __props.extra || _ctx.$slots.title || _ctx.$slots.extra ? (openBlock(), createElementBlock(
              "div",
              {
                key: 0,
                class: normalizeClass(unref(ns).e("header"))
              },
              [
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass(unref(ns).e("title"))
                  },
                  [
                    renderSlot(_ctx.$slots, "title", {}, () => [
                      createTextVNode(
                        toDisplayString(__props.title),
                        1
                        /* TEXT */
                      )
                    ])
                  ],
                  2
                  /* CLASS */
                ),
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass(unref(ns).e("extra"))
                  },
                  [
                    renderSlot(_ctx.$slots, "extra", {}, () => [
                      createTextVNode(
                        toDisplayString(__props.extra),
                        1
                        /* TEXT */
                      )
                    ])
                  ],
                  2
                  /* CLASS */
                )
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true),
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(ns).e("body"))
              },
              [
                createBaseVNode(
                  "table",
                  {
                    class: normalizeClass([unref(ns).e("table"), unref(ns).is("bordered", __props.border)])
                  },
                  [
                    createBaseVNode("tbody", null, [
                      (openBlock(true), createElementBlock(
                        Fragment,
                        null,
                        renderList(getRows(), (row, _index) => {
                          return openBlock(), createBlock(_sfc_main$2e, {
                            key: _index,
                            row
                          }, null, 8, ["row"]);
                        }),
                        128
                        /* KEYED_FRAGMENT */
                      ))
                    ])
                  ],
                  2
                  /* CLASS */
                )
              ],
              2
              /* CLASS */
            )
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const columnAlignment = ["left", "center", "right"];
  const descriptionItemProps = buildProps({
    /**
     * @description label text
     */
    label: {
      type: String,
      default: ""
    },
    /**
     * @description colspan of column
     */
    span: {
      type: Number,
      default: 1
    },
    /**
     * @description the number of rows a cell should span
     */
    rowspan: {
      type: Number,
      default: 1
    },
    /**
     * @description column width, the width of the same column in different rows is set by the max value (If no `border`, width contains label and content)
     */
    width: {
      type: [String, Number],
      default: ""
    },
    /**
     * @description column minimum width, columns with `width` has a fixed width, while columns with `min-width` has a width that is distributed in proportion (If no`border`, width contains label and content)
     */
    minWidth: {
      type: [String, Number],
      default: ""
    },
    /**
     * @description column label width, if not set, it will be the same as the width of the column. Higher priority than the `label-width` of `Descriptions`
     */
    labelWidth: {
      type: [String, Number]
    },
    /**
     * @description column content alignment (If no `border`, effective for both label and content)
     */
    align: {
      type: String,
      values: columnAlignment,
      default: "left"
    },
    /**
     * @description column label alignment, if omitted, the value of the above `align` attribute will be applied (If no `border`, please use `align` attribute)
     */
    labelAlign: {
      type: String,
      values: columnAlignment
    },
    /**
     * @description column content custom class name
     */
    className: {
      type: String,
      default: ""
    },
    /**
     * @description column label custom class name
     */
    labelClassName: {
      type: String,
      default: ""
    }
  });
  const DescriptionItem = /* @__PURE__ */ defineComponent({
    name: COMPONENT_NAME$e,
    props: descriptionItemProps
  });
  const ElDescriptions = withInstall(_sfc_main$2d, {
    DescriptionsItem: DescriptionItem
  });
  const ElDescriptionsItem = withNoopInstall(DescriptionItem);
  const dialogContentProps = buildProps({
    /**
     * @description whether to align the header and footer in center
     */
    center: Boolean,
    /**
     * @description whether to align the dialog both horizontally and vertically
     */
    alignCenter: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description custom close icon, default is Close
     */
    closeIcon: {
      type: iconPropType
    },
    /**
     * @description enable dragging feature for Dialog
     */
    draggable: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description draggable Dialog can overflow the viewport
     */
    overflow: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description whether the Dialog takes up full screen
     */
    fullscreen: Boolean,
    /**
     * @description custom class names for header wrapper
     */
    headerClass: String,
    /**
     * @description custom class names for body wrapper
     */
    bodyClass: String,
    /**
     * @description custom class names for footer wrapper
     */
    footerClass: String,
    /**
     * @description whether to show a close button
     */
    showClose: {
      type: Boolean,
      default: true
    },
    /**
     * @description title of Dialog. Can also be passed with a named slot (see the following table)
     */
    title: {
      type: String,
      default: ""
    },
    /**
     * @description header's aria-level attribute
     */
    ariaLevel: {
      type: String,
      default: "2"
    }
  });
  const dialogContentEmits = {
    close: () => true
  };
  const dialogProps = buildProps({
    ...dialogContentProps,
    /**
     * @description whether to append Dialog itself to body. A nested Dialog should have this attribute set to `true`
     */
    appendToBody: Boolean,
    /**
     * @description which element the Dialog appends to
     */
    appendTo: {
      type: teleportProps.to.type,
      default: "body"
    },
    /**
     * @description callback before Dialog closes, and it will prevent Dialog from closing, use done to close the dialog
     */
    beforeClose: {
      type: definePropType(Function)
    },
    /**
     * @description destroy elements in Dialog when closed
     */
    destroyOnClose: Boolean,
    /**
     * @description whether the Dialog can be closed by clicking the mask
     */
    closeOnClickModal: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether the Dialog can be closed by pressing ESC
     */
    closeOnPressEscape: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether scroll of body is disabled while Dialog is displayed
     */
    lockScroll: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether a mask is displayed
     */
    modal: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether the mask is penetrable
     */
    modalPenetrable: Boolean,
    /**
     * @description the Time(milliseconds) before open
     */
    openDelay: {
      type: Number,
      default: 0
    },
    /**
     * @description the Time(milliseconds) before close
     */
    closeDelay: {
      type: Number,
      default: 0
    },
    /**
     * @description value for `margin-top` of Dialog CSS, default is 15vh
     */
    top: {
      type: String
    },
    /**
     * @description visibility of Dialog
     */
    modelValue: Boolean,
    /**
     * @description custom class names for mask
     */
    modalClass: String,
    /**
     * @description custom class names for header wrapper
     */
    headerClass: String,
    /**
     * @description custom class names for body wrapper
     */
    bodyClass: String,
    /**
     * @description custom class names for footer wrapper
     */
    footerClass: String,
    /**
     * @description width of Dialog, default is 50%
     */
    width: {
      type: [String, Number]
    },
    /**
     * @description same as z-index in native CSS, z-order of dialog
     */
    zIndex: {
      type: Number
    },
    trapFocus: Boolean,
    /**
     * @description header's aria-level attribute
     */
    headerAriaLevel: {
      type: String,
      default: "2"
    },
    /**
     * @description custom transition configuration for dialog animation, it can be a string (transition name) or an object with Vue transition props
     */
    transition: {
      type: definePropType([String, Object]),
      default: void 0
    }
  });
  const dialogEmits = {
    open: () => true,
    opened: () => true,
    close: () => true,
    closed: () => true,
    [UPDATE_MODEL_EVENT]: (value) => isBoolean(value),
    openAutoFocus: () => true,
    closeAutoFocus: () => true
  };
  const 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 };
  };
  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$1 = /* @__PURE__ */ defineComponent({
    name: "ElOverlay",
    props: overlayProps,
    emits: overlayEmits,
    setup(props2, { slots, emit: emit2 }) {
      const ns = useNamespace(BLOCK);
      const onMaskClick = (e) => {
        emit2("click", e);
      };
      const { onClick, onMousedown, onMouseup } = useSameTarget(
        props2.customMaskEvent ? void 0 : onMaskClick
      );
      return () => {
        return props2.mask ? createVNode(
          "div",
          {
            class: [ns.b(), props2.overlayClass],
            style: {
              zIndex: props2.zIndex
            },
            onClick,
            onMousedown,
            onMouseup
          },
          [renderSlot(slots, "default")],
          PatchFlags.STYLE | PatchFlags.CLASS | PatchFlags.PROPS,
          ["onClick", "onMouseup", "onMousedown"]
        ) : h$1(
          "div",
          {
            class: props2.overlayClass,
            style: {
              zIndex: props2.zIndex,
              position: "fixed",
              top: "0px",
              right: "0px",
              bottom: "0px",
              left: "0px"
            }
          },
          [renderSlot(slots, "default")]
        );
      };
    }
  });
  const ElOverlay = Overlay$1;
  const dialogInjectionKey = /* @__PURE__ */ Symbol("dialogInjectionKey");
  const DEFAULT_DIALOG_TRANSITION = "dialog-fade";
  const composeRefs = (...refs) => {
    return (el) => {
      refs.forEach((ref2) => {
        ref2.value = el;
      });
    };
  };
  const useDraggable = (targetRef, dragRef, draggable2, overflow) => {
    const transform = {
      offsetX: 0,
      offsetY: 0
    };
    const isDragging2 = ref(false);
    const adjustPosition = (moveX, moveY) => {
      if (targetRef.value) {
        const { offsetX, offsetY } = transform;
        const targetRect = targetRef.value.getBoundingClientRect();
        const targetLeft = targetRect.left;
        const targetTop = targetRect.top;
        const targetWidth = targetRect.width;
        const targetHeight = targetRect.height;
        const clientWidth = document.documentElement.clientWidth;
        const clientHeight = document.documentElement.clientHeight;
        const minLeft = -targetLeft + offsetX;
        const minTop = -targetTop + offsetY;
        const maxLeft = clientWidth - targetLeft - targetWidth + offsetX;
        const maxTop = clientHeight - targetTop - (targetHeight < clientHeight ? targetHeight : 0) + offsetY;
        if (!(overflow == null ? void 0 : overflow.value)) {
          moveX = Math.min(Math.max(moveX, minLeft), maxLeft);
          moveY = Math.min(Math.max(moveY, minTop), maxTop);
        }
        transform.offsetX = moveX;
        transform.offsetY = moveY;
        targetRef.value.style.transform = `translate(${addUnit(moveX)}, ${addUnit(
          moveY
        )})`;
      }
    };
    const onMousedown = (e) => {
      const downX = e.clientX;
      const downY = e.clientY;
      const { offsetX, offsetY } = transform;
      const onMousemove = (e2) => {
        if (!isDragging2.value) {
          isDragging2.value = true;
        }
        const moveX = offsetX + e2.clientX - downX;
        const moveY = offsetY + e2.clientY - downY;
        adjustPosition(moveX, moveY);
      };
      const onMouseup = () => {
        isDragging2.value = false;
        document.removeEventListener("mousemove", onMousemove);
        document.removeEventListener("mouseup", onMouseup);
      };
      document.addEventListener("mousemove", onMousemove);
      document.addEventListener("mouseup", onMouseup);
    };
    const onDraggable = () => {
      if (dragRef.value && targetRef.value) {
        dragRef.value.addEventListener("mousedown", onMousedown);
        window.addEventListener("resize", updatePosition);
      }
    };
    const offDraggable = () => {
      if (dragRef.value && targetRef.value) {
        dragRef.value.removeEventListener("mousedown", onMousedown);
        window.removeEventListener("resize", updatePosition);
      }
    };
    const resetPosition = () => {
      transform.offsetX = 0;
      transform.offsetY = 0;
      if (targetRef.value) {
        targetRef.value.style.transform = "";
      }
    };
    const updatePosition = () => {
      const { offsetX, offsetY } = transform;
      adjustPosition(offsetX, offsetY);
    };
    onMounted(() => {
      watchEffect(() => {
        if (draggable2.value) {
          onDraggable();
        } else {
          offDraggable();
        }
      });
    });
    onBeforeUnmount(() => {
      offDraggable();
    });
    return {
      isDragging: isDragging2,
      resetPosition,
      updatePosition
    };
  };
  const _hoisted_1$1w = ["aria-level"];
  const _hoisted_2$1d = ["aria-label"];
  const _hoisted_3$W = ["id"];
  var _sfc_main$2c = /* @__PURE__ */ defineComponent({
    ...{ name: "ElDialogContent" },
    __name: "dialog-content",
    props: dialogContentProps,
    emits: dialogContentEmits,
    setup(__props, { expose: __expose }) {
      const { t } = useLocale();
      const { Close } = CloseComponents;
      const props2 = __props;
      const { dialogRef, headerRef, bodyId, ns, style } = inject(dialogInjectionKey);
      const { focusTrapRef } = inject(FOCUS_TRAP_INJECTION_KEY);
      const composedDialogRef = composeRefs(focusTrapRef, dialogRef);
      const draggable2 = computed(() => !!props2.draggable);
      const overflow = computed(() => !!props2.overflow);
      const { resetPosition, updatePosition, isDragging: isDragging2 } = useDraggable(
        dialogRef,
        headerRef,
        draggable2,
        overflow
      );
      const dialogKls = computed(() => [
        ns.b(),
        ns.is("fullscreen", props2.fullscreen),
        ns.is("draggable", draggable2.value),
        ns.is("dragging", isDragging2.value),
        ns.is("align-center", !!props2.alignCenter),
        { [ns.m("center")]: props2.center }
      ]);
      __expose({
        resetPosition,
        updatePosition
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            ref: unref(composedDialogRef),
            class: normalizeClass(dialogKls.value),
            style: normalizeStyle(unref(style)),
            tabindex: "-1"
          },
          [
            createBaseVNode(
              "header",
              {
                ref_key: "headerRef",
                ref: headerRef,
                class: normalizeClass([unref(ns).e("header"), __props.headerClass, { "show-close": __props.showClose }])
              },
              [
                renderSlot(_ctx.$slots, "header", {}, () => [
                  createBaseVNode("span", {
                    role: "heading",
                    "aria-level": __props.ariaLevel,
                    class: normalizeClass(unref(ns).e("title"))
                  }, toDisplayString(__props.title), 11, _hoisted_1$1w)
                ]),
                __props.showClose ? (openBlock(), createElementBlock("button", {
                  key: 0,
                  "aria-label": unref(t)("el.dialog.close"),
                  class: normalizeClass(unref(ns).e("headerbtn")),
                  type: "button",
                  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("close"))
                }, [
                  createVNode(unref(ElIcon), {
                    class: normalizeClass(unref(ns).e("close"))
                  }, {
                    default: withCtx(() => [
                      (openBlock(), createBlock(resolveDynamicComponent(__props.closeIcon || unref(Close))))
                    ]),
                    _: 1
                    /* STABLE */
                  }, 8, ["class"])
                ], 10, _hoisted_2$1d)) : createCommentVNode("v-if", true)
              ],
              2
              /* CLASS */
            ),
            createBaseVNode("div", {
              id: unref(bodyId),
              class: normalizeClass([unref(ns).e("body"), __props.bodyClass])
            }, [
              renderSlot(_ctx.$slots, "default")
            ], 10, _hoisted_3$W),
            _ctx.$slots.footer ? (openBlock(), createElementBlock(
              "footer",
              {
                key: 0,
                class: normalizeClass([unref(ns).e("footer"), __props.footerClass])
              },
              [
                renderSlot(_ctx.$slots, "footer")
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true)
          ],
          6
          /* CLASS, STYLE */
        );
      };
    }
  });
  const useLockscreen = (trigger2, options = {}) => {
    if (!isRef(trigger2)) {
      throwError(
        "[useLockscreen]",
        "You need to pass a ref param to this function"
      );
    }
    const ns = options.ns || useNamespace("popup");
    const hiddenCls = computed(() => ns.bm("parent", "hidden"));
    let scrollBarWidth2 = 0;
    let withoutHiddenClass = false;
    let bodyWidth = "0";
    let cleaned = false;
    const cleanup = () => {
      if (cleaned) return;
      cleaned = true;
      setTimeout(() => {
        if (typeof document === "undefined") return;
        if (withoutHiddenClass && document) {
          document.body.style.width = bodyWidth;
          removeClass(document.body, hiddenCls.value);
        }
      }, 200);
    };
    watch(trigger2, (val) => {
      if (!val) {
        cleanup();
        return;
      }
      cleaned = false;
      withoutHiddenClass = !hasClass(document.body, hiddenCls.value);
      if (withoutHiddenClass) {
        bodyWidth = document.body.style.width;
        addClass(document.body, hiddenCls.value);
      }
      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)`;
      }
    });
    onScopeDispose(() => cleanup());
  };
  const useDialog = (props2, targetRef) => {
    var _a;
    const instance = getCurrentInstance();
    const emit2 = instance.emit;
    const { nextZIndex } = useZIndex();
    let lastPosition = "";
    const titleId = useId();
    const bodyId = useId();
    const visible = ref(false);
    const closed = ref(false);
    const rendered = ref(false);
    const zIndex2 = ref((_a = props2.zIndex) != null ? _a : nextZIndex());
    const closing = ref(false);
    let openTimer = void 0;
    let closeTimer = void 0;
    const config = useGlobalConfig();
    const namespace = computed(() => {
      var _a2, _b;
      return (_b = (_a2 = config.value) == null ? void 0 : _a2.namespace) != null ? _b : defaultNamespace;
    });
    const globalConfig2 = computed(() => {
      var _a2;
      return (_a2 = config.value) == null ? void 0 : _a2.dialog;
    });
    const style = computed(() => {
      const style2 = {};
      const varPrefix = `--${namespace.value}-dialog`;
      if (!props2.fullscreen) {
        if (props2.top) {
          style2[`${varPrefix}-margin-top`] = props2.top;
        }
        const width = addUnit(props2.width);
        if (width) {
          style2[`${varPrefix}-width`] = width;
        }
      }
      return style2;
    });
    const _draggable = computed(
      () => {
        var _a2, _b, _c;
        return ((_c = (_b = props2.draggable) != null ? _b : (_a2 = globalConfig2.value) == null ? void 0 : _a2.draggable) != null ? _c : false) && !props2.fullscreen;
      }
    );
    const _alignCenter = computed(
      () => {
        var _a2, _b, _c;
        return (_c = (_b = props2.alignCenter) != null ? _b : (_a2 = globalConfig2.value) == null ? void 0 : _a2.alignCenter) != null ? _c : false;
      }
    );
    const _overflow = computed(
      () => {
        var _a2, _b, _c;
        return (_c = (_b = props2.overflow) != null ? _b : (_a2 = globalConfig2.value) == null ? void 0 : _a2.overflow) != null ? _c : false;
      }
    );
    const overlayDialogStyle = computed(() => {
      if (_alignCenter.value) {
        return { display: "flex" };
      }
      return {};
    });
    const transitionConfig = computed(() => {
      var _a2, _b, _c;
      const transition = (_c = (_b = props2.transition) != null ? _b : (_a2 = globalConfig2.value) == null ? void 0 : _a2.transition) != null ? _c : DEFAULT_DIALOG_TRANSITION;
      const baseConfig = {
        name: transition,
        onAfterEnter: afterEnter,
        onBeforeLeave: beforeLeave,
        onAfterLeave: afterLeave
      };
      if (isObject$2(transition)) {
        const config2 = { ...transition };
        const _mergeHook = (userHook, defaultHook) => {
          return (el) => {
            if (isArray$1(userHook)) {
              userHook.forEach((fn2) => {
                if (isFunction$1(fn2)) fn2(el);
              });
            } else if (isFunction$1(userHook)) {
              userHook(el);
            }
            defaultHook();
          };
        };
        config2.onAfterEnter = _mergeHook(config2.onAfterEnter, afterEnter);
        config2.onBeforeLeave = _mergeHook(config2.onBeforeLeave, beforeLeave);
        config2.onAfterLeave = _mergeHook(config2.onAfterLeave, afterLeave);
        if (!config2.name) {
          config2.name = DEFAULT_DIALOG_TRANSITION;
        }
        return config2;
      }
      return baseConfig;
    });
    function afterEnter() {
      emit2("opened");
    }
    function afterLeave() {
      emit2("closed");
      emit2(UPDATE_MODEL_EVENT, false);
      if (props2.destroyOnClose) {
        rendered.value = false;
      }
      closing.value = false;
    }
    function beforeLeave() {
      closing.value = true;
      emit2("close");
    }
    function open() {
      closeTimer == null ? void 0 : closeTimer();
      openTimer == null ? void 0 : openTimer();
      if (props2.openDelay && props2.openDelay > 0) {
        ({ stop: openTimer } = useTimeoutFn(() => doOpen(), props2.openDelay));
      } else {
        doOpen();
      }
    }
    function close2() {
      openTimer == null ? void 0 : openTimer();
      closeTimer == null ? void 0 : closeTimer();
      if (props2.closeDelay && props2.closeDelay > 0) {
        ({ stop: closeTimer } = useTimeoutFn(() => doClose(), props2.closeDelay));
      } else {
        doClose();
      }
    }
    function handleClose() {
      function hide(shouldCancel) {
        if (shouldCancel) return;
        closed.value = true;
        visible.value = false;
      }
      if (props2.beforeClose) {
        props2.beforeClose(hide);
      } else {
        close2();
      }
    }
    function onModalClick() {
      if (props2.closeOnClickModal) {
        handleClose();
      }
    }
    function doOpen() {
      if (!isClient) return;
      visible.value = true;
    }
    function doClose() {
      visible.value = false;
    }
    function onOpenAutoFocus() {
      emit2("openAutoFocus");
    }
    function onCloseAutoFocus() {
      emit2("closeAutoFocus");
    }
    function onFocusoutPrevented(event) {
      var _a2;
      if (((_a2 = event.detail) == null ? void 0 : _a2.focusReason) === "pointer") {
        event.preventDefault();
      }
    }
    if (props2.lockScroll) {
      useLockscreen(visible);
    }
    function onCloseRequested() {
      if (props2.closeOnPressEscape) {
        handleClose();
      }
    }
    watch(
      () => props2.zIndex,
      () => {
        var _a2;
        zIndex2.value = (_a2 = props2.zIndex) != null ? _a2 : nextZIndex();
      }
    );
    watch(
      () => props2.modelValue,
      (val) => {
        var _a2;
        if (val) {
          closed.value = false;
          closing.value = false;
          open();
          rendered.value = true;
          zIndex2.value = (_a2 = props2.zIndex) != null ? _a2 : nextZIndex();
          nextTick(() => {
            emit2("open");
            if (targetRef.value) {
              targetRef.value.parentElement.scrollTop = 0;
              targetRef.value.parentElement.scrollLeft = 0;
              targetRef.value.scrollTop = 0;
            }
          });
        } else {
          if (visible.value) {
            close2();
          }
        }
      }
    );
    watch(
      () => props2.fullscreen,
      (val) => {
        if (!targetRef.value) return;
        if (val) {
          lastPosition = targetRef.value.style.transform;
          targetRef.value.style.transform = "";
        } else {
          targetRef.value.style.transform = lastPosition;
        }
      }
    );
    onMounted(() => {
      if (props2.modelValue) {
        visible.value = true;
        rendered.value = true;
        open();
      }
    });
    return {
      afterEnter,
      afterLeave,
      beforeLeave,
      handleClose,
      onModalClick,
      close: close2,
      doClose,
      onOpenAutoFocus,
      onCloseAutoFocus,
      onCloseRequested,
      onFocusoutPrevented,
      titleId,
      bodyId,
      closed,
      style,
      overlayDialogStyle,
      rendered,
      visible,
      zIndex: zIndex2,
      transitionConfig,
      _draggable,
      _alignCenter,
      _overflow,
      closing
    };
  };
  const _hoisted_1$1v = ["aria-label", "aria-labelledby", "aria-describedby"];
  var _sfc_main$2b = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElDialog",
      inheritAttrs: false
    },
    __name: "dialog",
    props: dialogProps,
    emits: dialogEmits,
    setup(__props, { expose: __expose }) {
      const props2 = __props;
      const slots = 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"
        },
        computed(() => !!slots.title)
      );
      const ns = useNamespace("dialog");
      const dialogRef = ref();
      const headerRef = ref();
      const dialogContentRef = ref();
      const {
        visible,
        titleId,
        bodyId,
        style,
        overlayDialogStyle,
        rendered,
        transitionConfig,
        zIndex: zIndex2,
        _draggable,
        _alignCenter,
        _overflow,
        handleClose,
        onModalClick,
        onOpenAutoFocus,
        onCloseAutoFocus,
        onCloseRequested,
        onFocusoutPrevented,
        closing
      } = useDialog(props2, dialogRef);
      provide(dialogInjectionKey, {
        dialogRef,
        headerRef,
        bodyId,
        ns,
        rendered,
        style
      });
      const overlayEvent = useSameTarget(onModalClick);
      const penetrable = computed(
        () => props2.modalPenetrable && !props2.modal && !props2.fullscreen
      );
      const resetPosition = () => {
        var _a;
        (_a = dialogContentRef.value) == null ? void 0 : _a.resetPosition();
      };
      __expose({
        /** @description whether the dialog is visible */
        visible,
        dialogContentRef,
        resetPosition,
        handleClose
      });
      return (_ctx, _cache) => {
        return openBlock(), createBlock(unref(ElTeleport), {
          to: __props.appendTo,
          disabled: __props.appendTo !== "body" ? false : !__props.appendToBody
        }, {
          default: withCtx(() => [
            createVNode(
              Transition,
              mergeProps(unref(transitionConfig), { persisted: "" }),
              {
                default: withCtx(() => {
                  var _a;
                  return [
                    withDirectives(createVNode(unref(ElOverlay), {
                      "custom-mask-event": "",
                      mask: __props.modal,
                      "overlay-class": [
                        (_a = __props.modalClass) != null ? _a : "",
                        `${unref(ns).namespace.value}-modal-dialog`,
                        unref(ns).is("penetrable", penetrable.value)
                      ],
                      "z-index": unref(zIndex2)
                    }, {
                      default: withCtx(() => [
                        createBaseVNode("div", {
                          role: "dialog",
                          "aria-modal": "true",
                          "aria-label": __props.title || void 0,
                          "aria-labelledby": !__props.title ? unref(titleId) : void 0,
                          "aria-describedby": unref(bodyId),
                          class: normalizeClass([
                            `${unref(ns).namespace.value}-overlay-dialog`,
                            unref(ns).is("closing", unref(closing))
                          ]),
                          style: normalizeStyle(unref(overlayDialogStyle)),
                          onClick: _cache[0] || (_cache[0] = //@ts-ignore
                          (...args) => unref(overlayEvent).onClick && unref(overlayEvent).onClick(...args)),
                          onMousedown: _cache[1] || (_cache[1] = //@ts-ignore
                          (...args) => unref(overlayEvent).onMousedown && unref(overlayEvent).onMousedown(...args)),
                          onMouseup: _cache[2] || (_cache[2] = //@ts-ignore
                          (...args) => unref(overlayEvent).onMouseup && unref(overlayEvent).onMouseup(...args))
                        }, [
                          createVNode(unref(ElFocusTrap), {
                            loop: "",
                            trapped: unref(visible),
                            "focus-start-el": "container",
                            onFocusAfterTrapped: unref(onOpenAutoFocus),
                            onFocusAfterReleased: unref(onCloseAutoFocus),
                            onFocusoutPrevented: unref(onFocusoutPrevented),
                            onReleaseRequested: unref(onCloseRequested)
                          }, {
                            default: withCtx(() => [
                              unref(rendered) ? (openBlock(), createBlock(_sfc_main$2c, mergeProps({
                                key: 0,
                                ref_key: "dialogContentRef",
                                ref: dialogContentRef
                              }, _ctx.$attrs, {
                                center: __props.center,
                                "align-center": unref(_alignCenter),
                                "close-icon": __props.closeIcon,
                                draggable: unref(_draggable),
                                overflow: unref(_overflow),
                                fullscreen: __props.fullscreen,
                                "header-class": __props.headerClass,
                                "body-class": __props.bodyClass,
                                "footer-class": __props.footerClass,
                                "show-close": __props.showClose,
                                title: __props.title,
                                "aria-level": __props.headerAriaLevel,
                                onClose: unref(handleClose)
                              }), createSlots({
                                header: withCtx(() => [
                                  !_ctx.$slots.title ? renderSlot(_ctx.$slots, "header", {
                                    key: 0,
                                    close: unref(handleClose),
                                    titleId: unref(titleId),
                                    titleClass: unref(ns).e("title")
                                  }) : renderSlot(_ctx.$slots, "title", { key: 1 })
                                ]),
                                default: withCtx(() => [
                                  renderSlot(_ctx.$slots, "default")
                                ]),
                                _: 2
                                /* DYNAMIC */
                              }, [
                                _ctx.$slots.footer ? {
                                  name: "footer",
                                  fn: withCtx(() => [
                                    renderSlot(_ctx.$slots, "footer")
                                  ]),
                                  key: "0"
                                } : void 0
                              ]), 1040, ["center", "align-center", "close-icon", "draggable", "overflow", "fullscreen", "header-class", "body-class", "footer-class", "show-close", "title", "aria-level", "onClose"])) : createCommentVNode("v-if", true)
                            ]),
                            _: 3
                            /* FORWARDED */
                          }, 8, ["trapped", "onFocusAfterTrapped", "onFocusAfterReleased", "onFocusoutPrevented", "onReleaseRequested"])
                        ], 46, _hoisted_1$1v)
                      ]),
                      _: 3
                      /* FORWARDED */
                    }, 8, ["mask", "overlay-class", "z-index"]), [
                      [vShow, unref(visible)]
                    ])
                  ];
                }),
                _: 3
                /* FORWARDED */
              },
              16
              /* FULL_PROPS */
            )
          ]),
          _: 3
          /* FORWARDED */
        }, 8, ["to", "disabled"]);
      };
    }
  });
  const ElDialog = withInstall(_sfc_main$2b);
  const dividerProps = buildProps({
    /**
     * @description Set divider's direction
     */
    direction: {
      type: String,
      values: ["horizontal", "vertical"],
      default: "horizontal"
    },
    /**
     * @description Set the style of divider
     */
    contentPosition: {
      type: String,
      values: ["left", "center", "right"],
      default: "center"
    },
    /**
     * @description the position of the customized content on the divider line
     */
    borderStyle: {
      type: definePropType(String),
      default: "solid"
    }
  });
  var _sfc_main$2a = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElDivider"
    },
    __name: "divider",
    props: dividerProps,
    setup(__props) {
      const props2 = __props;
      const ns = useNamespace("divider");
      const dividerStyle = computed(() => {
        return ns.cssVar({
          "border-style": props2.borderStyle
        });
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass([unref(ns).b(), unref(ns).m(__props.direction)]),
            style: normalizeStyle(dividerStyle.value),
            role: "separator"
          },
          [
            _ctx.$slots.default && __props.direction !== "vertical" ? (openBlock(), createElementBlock(
              "div",
              {
                key: 0,
                class: normalizeClass([unref(ns).e("text"), unref(ns).is(__props.contentPosition)])
              },
              [
                renderSlot(_ctx.$slots, "default")
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true)
          ],
          6
          /* CLASS, STYLE */
        );
      };
    }
  });
  const ElDivider = withInstall(_sfc_main$2a);
  const drawerProps = buildProps({
    ...dialogProps,
    direction: {
      type: String,
      default: "rtl",
      values: ["ltr", "rtl", "ttb", "btt"]
    },
    resizable: Boolean,
    size: {
      type: [String, Number],
      default: "30%"
    },
    withHeader: {
      type: Boolean,
      default: true
    },
    modalFade: {
      type: Boolean,
      default: true
    },
    headerAriaLevel: {
      type: String,
      default: "2"
    }
  });
  const drawerEmits = {
    ...dialogEmits,
    "resize-start": (evt, size) => evt instanceof MouseEvent && typeof size === "number",
    resize: (evt, size) => evt instanceof MouseEvent && typeof size === "number",
    "resize-end": (evt, size) => evt instanceof MouseEvent && typeof size === "number"
  };
  function useResizable(props2, target, emit2) {
    const { width, height } = useWindowSize();
    const isHorizontal2 = computed(() => ["ltr", "rtl"].includes(props2.direction));
    const sign = computed(
      () => ["ltr", "ttb"].includes(props2.direction) ? 1 : -1
    );
    const windowSize = computed(
      () => isHorizontal2.value ? width.value : height.value
    );
    const getSize = computed(() => {
      return clamp$1(
        startSize.value + sign.value * offset2.value,
        4,
        windowSize.value
      );
    });
    const startSize = ref(0);
    const offset2 = ref(0);
    const isResizing = ref(false);
    const hasStartedDragging = ref(false);
    let startPos = [];
    let cleanups = [];
    const getActualSize = () => {
      var _a;
      const drawerEl = (_a = target.value) == null ? void 0 : _a.closest('[aria-modal="true"]');
      if (drawerEl) {
        return isHorizontal2.value ? drawerEl.offsetWidth : drawerEl.offsetHeight;
      }
      return 100;
    };
    watch(
      () => [props2.size, props2.resizable],
      () => {
        hasStartedDragging.value = false;
        startSize.value = 0;
        offset2.value = 0;
        onMouseUp();
      }
    );
    const onMousedown = (e) => {
      if (!props2.resizable) return;
      if (!hasStartedDragging.value) {
        startSize.value = getActualSize();
        hasStartedDragging.value = true;
      }
      startPos = [e.pageX, e.pageY];
      isResizing.value = true;
      emit2("resize-start", e, startSize.value);
      cleanups.push(
        useEventListener(window, "mouseup", onMouseUp),
        useEventListener(window, "mousemove", onMouseMove)
      );
    };
    const onMouseMove = (e) => {
      const { pageX, pageY } = e;
      const offsetX = pageX - startPos[0];
      const offsetY = pageY - startPos[1];
      offset2.value = isHorizontal2.value ? offsetX : offsetY;
      emit2("resize", e, getSize.value);
    };
    const onMouseUp = (e) => {
      if (!isResizing.value) return;
      startPos = [];
      startSize.value = getSize.value;
      offset2.value = 0;
      isResizing.value = false;
      cleanups.forEach((cleanup2) => cleanup2 == null ? void 0 : cleanup2());
      cleanups = [];
      if (e) {
        emit2("resize-end", e, startSize.value);
      }
    };
    const cleanup = useEventListener(target, "mousedown", onMousedown);
    onBeforeUnmount(() => {
      cleanup();
      onMouseUp();
    });
    return {
      size: computed(() => {
        return hasStartedDragging.value ? `${getSize.value}px` : addUnit(props2.size);
      }),
      isResizing,
      isHorizontal: isHorizontal2
    };
  }
  const _hoisted_1$1u = ["aria-label", "aria-labelledby", "aria-describedby"];
  const _hoisted_2$1c = ["id", "aria-level"];
  const _hoisted_3$V = ["aria-label"];
  const _hoisted_4$Q = ["id"];
  var _sfc_main$29 = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElDrawer",
      inheritAttrs: false
    },
    __name: "drawer",
    props: drawerProps,
    emits: drawerEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const slots = useSlots();
      useDeprecated(
        {
          scope: "el-drawer",
          from: "the title slot",
          replacement: "the header slot",
          version: "3.0.0",
          ref: "https://element-plus.org/en-US/component/drawer.html#slots"
        },
        computed(() => !!slots.title)
      );
      const drawerRef = ref();
      const focusStartRef = ref();
      const draggerRef = ref();
      const ns = useNamespace("drawer");
      const { t } = useLocale();
      const {
        afterEnter,
        afterLeave,
        beforeLeave,
        visible,
        rendered,
        titleId,
        bodyId,
        zIndex: zIndex2,
        onModalClick,
        onOpenAutoFocus,
        onCloseAutoFocus,
        onFocusoutPrevented,
        onCloseRequested,
        handleClose
      } = useDialog(props2, drawerRef);
      const { isHorizontal: isHorizontal2, size, isResizing } = useResizable(props2, draggerRef, emit2);
      const penetrable = computed(() => props2.modalPenetrable && !props2.modal);
      __expose({
        handleClose,
        afterEnter,
        afterLeave
      });
      return (_ctx, _cache) => {
        return openBlock(), createBlock(unref(ElTeleport), {
          to: __props.appendTo,
          disabled: __props.appendTo !== "body" ? false : !__props.appendToBody
        }, {
          default: withCtx(() => [
            createVNode(Transition, {
              name: unref(ns).b("fade"),
              onAfterEnter: unref(afterEnter),
              onAfterLeave: unref(afterLeave),
              onBeforeLeave: unref(beforeLeave),
              persisted: ""
            }, {
              default: withCtx(() => {
                var _a;
                return [
                  withDirectives(createVNode(unref(ElOverlay), {
                    mask: __props.modal,
                    "overlay-class": [
                      unref(ns).is("drawer"),
                      (_a = __props.modalClass) != null ? _a : "",
                      `${unref(ns).namespace.value}-modal-drawer`,
                      unref(ns).is("penetrable", penetrable.value)
                    ],
                    "z-index": unref(zIndex2),
                    onClick: unref(onModalClick)
                  }, {
                    default: withCtx(() => [
                      createVNode(unref(ElFocusTrap), {
                        loop: "",
                        trapped: unref(visible),
                        "focus-trap-el": drawerRef.value,
                        "focus-start-el": focusStartRef.value,
                        onFocusAfterTrapped: unref(onOpenAutoFocus),
                        onFocusAfterReleased: unref(onCloseAutoFocus),
                        onFocusoutPrevented: unref(onFocusoutPrevented),
                        onReleaseRequested: unref(onCloseRequested)
                      }, {
                        default: withCtx(() => [
                          createBaseVNode("div", mergeProps({
                            ref_key: "drawerRef",
                            ref: drawerRef,
                            "aria-modal": "true",
                            "aria-label": __props.title || void 0,
                            "aria-labelledby": !__props.title ? unref(titleId) : void 0,
                            "aria-describedby": unref(bodyId)
                          }, _ctx.$attrs, {
                            class: [
                              unref(ns).b(),
                              __props.direction,
                              unref(visible) && "open",
                              unref(ns).is("dragging", unref(isResizing))
                            ],
                            style: { [unref(isHorizontal2) ? "width" : "height"]: unref(size) },
                            role: "dialog",
                            onClick: _cache[1] || (_cache[1] = withModifiers(() => {
                            }, ["stop"]))
                          }), [
                            createBaseVNode(
                              "span",
                              {
                                ref_key: "focusStartRef",
                                ref: focusStartRef,
                                class: normalizeClass(unref(ns).e("sr-focus")),
                                tabindex: "-1"
                              },
                              null,
                              2
                              /* CLASS */
                            ),
                            __props.withHeader ? (openBlock(), createElementBlock(
                              "header",
                              {
                                key: 0,
                                class: normalizeClass([unref(ns).e("header"), __props.headerClass])
                              },
                              [
                                !_ctx.$slots.title ? renderSlot(_ctx.$slots, "header", {
                                  key: 0,
                                  close: unref(handleClose),
                                  titleId: unref(titleId),
                                  titleClass: unref(ns).e("title")
                                }, () => [
                                  createBaseVNode("span", {
                                    id: unref(titleId),
                                    role: "heading",
                                    "aria-level": __props.headerAriaLevel,
                                    class: normalizeClass(unref(ns).e("title"))
                                  }, toDisplayString(__props.title), 11, _hoisted_2$1c)
                                ]) : renderSlot(_ctx.$slots, "title", { key: 1 }, () => [
                                  createCommentVNode(" DEPRECATED SLOT ")
                                ]),
                                __props.showClose ? (openBlock(), createElementBlock("button", {
                                  key: 2,
                                  "aria-label": unref(t)("el.drawer.close"),
                                  class: normalizeClass(unref(ns).e("close-btn")),
                                  type: "button",
                                  onClick: _cache[0] || (_cache[0] = //@ts-ignore
                                  (...args) => unref(handleClose) && unref(handleClose)(...args))
                                }, [
                                  createVNode(unref(ElIcon), {
                                    class: normalizeClass(unref(ns).e("close"))
                                  }, {
                                    default: withCtx(() => [
                                      createVNode(unref(close_default))
                                    ]),
                                    _: 1
                                    /* STABLE */
                                  }, 8, ["class"])
                                ], 10, _hoisted_3$V)) : createCommentVNode("v-if", true)
                              ],
                              2
                              /* CLASS */
                            )) : createCommentVNode("v-if", true),
                            unref(rendered) ? (openBlock(), createElementBlock("div", {
                              key: 1,
                              id: unref(bodyId),
                              class: normalizeClass([unref(ns).e("body"), __props.bodyClass])
                            }, [
                              renderSlot(_ctx.$slots, "default")
                            ], 10, _hoisted_4$Q)) : createCommentVNode("v-if", true),
                            _ctx.$slots.footer ? (openBlock(), createElementBlock(
                              "div",
                              {
                                key: 2,
                                class: normalizeClass([unref(ns).e("footer"), __props.footerClass])
                              },
                              [
                                renderSlot(_ctx.$slots, "footer")
                              ],
                              2
                              /* CLASS */
                            )) : createCommentVNode("v-if", true),
                            __props.resizable ? (openBlock(), createElementBlock(
                              "div",
                              {
                                key: 3,
                                ref_key: "draggerRef",
                                ref: draggerRef,
                                style: normalizeStyle({ zIndex: unref(zIndex2) }),
                                class: normalizeClass(unref(ns).e("dragger"))
                              },
                              null,
                              6
                              /* CLASS, STYLE */
                            )) : createCommentVNode("v-if", true)
                          ], 16, _hoisted_1$1u)
                        ]),
                        _: 3
                        /* FORWARDED */
                      }, 8, ["trapped", "focus-trap-el", "focus-start-el", "onFocusAfterTrapped", "onFocusAfterReleased", "onFocusoutPrevented", "onReleaseRequested"])
                    ]),
                    _: 3
                    /* FORWARDED */
                  }, 8, ["mask", "overlay-class", "z-index", "onClick"]), [
                    [vShow, unref(visible)]
                  ])
                ];
              }),
              _: 3
              /* FORWARDED */
            }, 8, ["name", "onAfterEnter", "onAfterLeave", "onBeforeLeave"])
          ]),
          _: 3
          /* FORWARDED */
        }, 8, ["to", "disabled"]);
      };
    }
  });
  const ElDrawer = withInstall(_sfc_main$29);
  var _sfc_main$28 = /* @__PURE__ */ defineComponent({
    inheritAttrs: false
  });
  function _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) {
    return renderSlot(_ctx.$slots, "default");
  }
  var Collection = /* @__PURE__ */ _export_sfc$1(_sfc_main$28, [["render", _sfc_render$h]]);
  var _sfc_main$27 = /* @__PURE__ */ defineComponent({
    name: "ElCollectionItem",
    inheritAttrs: false
  });
  function _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {
    return renderSlot(_ctx.$slots, "default");
  }
  var CollectionItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$27, [["render", _sfc_render$g]]);
  const COLLECTION_ITEM_SIGN = `data-el-collection-item`;
  const createCollectionWithScope = (name) => {
    const COLLECTION_NAME = `El${name}Collection`;
    const COLLECTION_ITEM_NAME = `${COLLECTION_NAME}Item`;
    const COLLECTION_INJECTION_KEY2 = Symbol(COLLECTION_NAME);
    const COLLECTION_ITEM_INJECTION_KEY2 = Symbol(COLLECTION_ITEM_NAME);
    const ElCollection2 = Object.assign({}, Collection, {
      name: COLLECTION_NAME,
      setup() {
        const collectionRef = ref();
        const itemMap = /* @__PURE__ */ new Map();
        const getItems = (() => {
          const collectionEl = unref(collectionRef);
          if (!collectionEl) return [];
          const orderedNodes = Array.from(
            collectionEl.querySelectorAll(`[${COLLECTION_ITEM_SIGN}]`)
          );
          const items = [...itemMap.values()];
          return items.sort(
            (a2, b2) => orderedNodes.indexOf(a2.ref) - orderedNodes.indexOf(b2.ref)
          );
        });
        provide(COLLECTION_INJECTION_KEY2, {
          itemMap,
          getItems,
          collectionRef
        });
      }
    });
    const ElCollectionItem2 = Object.assign({}, CollectionItem, {
      name: COLLECTION_ITEM_NAME,
      setup(_2, { attrs }) {
        const collectionItemRef = ref();
        const collectionInjection = inject(COLLECTION_INJECTION_KEY2, void 0);
        provide(COLLECTION_ITEM_INJECTION_KEY2, {
          collectionItemRef
        });
        onMounted(() => {
          const collectionItemEl = unref(collectionItemRef);
          if (collectionItemEl) {
            collectionInjection.itemMap.set(collectionItemEl, {
              ref: collectionItemEl,
              ...attrs
            });
          }
        });
        onBeforeUnmount(() => {
          const collectionItemEl = unref(collectionItemRef);
          collectionInjection.itemMap.delete(collectionItemEl);
        });
      }
    });
    return {
      COLLECTION_INJECTION_KEY: COLLECTION_INJECTION_KEY2,
      COLLECTION_ITEM_INJECTION_KEY: COLLECTION_ITEM_INJECTION_KEY2,
      ElCollection: ElCollection2,
      ElCollectionItem: ElCollectionItem2
    };
  };
  const rovingFocusGroupProps = buildProps({
    style: { type: definePropType([String, Array, Object]) },
    currentTabId: {
      type: definePropType(String)
    },
    defaultCurrentTabId: String,
    loop: Boolean,
    dir: {
      type: String,
      // left for direction support
      values: ["ltr", "rtl"],
      default: "ltr"
    },
    orientation: {
      // left for orientation support
      type: definePropType(String)
    },
    onBlur: Function,
    onFocus: Function,
    onMousedown: Function
  });
  const {
    ElCollection,
    ElCollectionItem,
    COLLECTION_INJECTION_KEY,
    COLLECTION_ITEM_INJECTION_KEY
  } = createCollectionWithScope("RovingFocusGroup");
  const ROVING_FOCUS_GROUP_INJECTION_KEY = /* @__PURE__ */ Symbol("elRovingFocusGroup");
  const ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY = /* @__PURE__ */ Symbol("elRovingFocusGroupItem");
  const MAP_KEY_TO_FOCUS_INTENT = {
    ArrowLeft: "prev",
    ArrowUp: "prev",
    ArrowRight: "next",
    ArrowDown: "next",
    PageUp: "first",
    Home: "first",
    PageDown: "last",
    End: "last"
  };
  const getDirectionAwareKey = (key, dir) => {
    return key;
  };
  const getFocusIntent = (event, orientation, dir) => {
    const code = getEventCode(event);
    const key = getDirectionAwareKey(code);
    return MAP_KEY_TO_FOCUS_INTENT[key];
  };
  const reorderArray = (array, atIdx) => {
    return array.map((_2, idx) => array[(idx + atIdx) % array.length]);
  };
  const focusFirst = (elements) => {
    const { activeElement: prevActive } = document;
    for (const element of elements) {
      if (element === prevActive) return;
      element.focus();
      if (prevActive !== document.activeElement) return;
    }
  };
  const CURRENT_TAB_ID_CHANGE_EVT = "currentTabIdChange";
  const ENTRY_FOCUS_EVT = "rovingFocusGroup.entryFocus";
  const EVT_OPTS = { bubbles: false, cancelable: true };
  var _sfc_main$26 = /* @__PURE__ */ defineComponent({
    name: "ElRovingFocusGroupImpl",
    inheritAttrs: false,
    props: rovingFocusGroupProps,
    emits: [CURRENT_TAB_ID_CHANGE_EVT, "entryFocus"],
    setup(props2, { emit: emit2 }) {
      var _a;
      const currentTabbedId = ref(
        (_a = props2.currentTabId || props2.defaultCurrentTabId) != null ? _a : null
      );
      const isBackingOut = ref(false);
      const isClickFocus = ref(false);
      const rovingFocusGroupRef = ref();
      const { getItems } = inject(
        COLLECTION_INJECTION_KEY,
        void 0
      );
      const rovingFocusGroupRootStyle = computed(() => {
        return [
          {
            outline: "none"
          },
          props2.style
        ];
      });
      const onItemFocus = (tabbedId) => {
        emit2(CURRENT_TAB_ID_CHANGE_EVT, tabbedId);
      };
      const onItemShiftTab = () => {
        isBackingOut.value = true;
      };
      const onMousedown = composeEventHandlers(
        (e) => {
          var _a2;
          (_a2 = props2.onMousedown) == null ? void 0 : _a2.call(props2, e);
        },
        () => {
          isClickFocus.value = true;
        }
      );
      const onFocus = composeEventHandlers(
        (e) => {
          var _a2;
          (_a2 = props2.onFocus) == null ? void 0 : _a2.call(props2, e);
        },
        (e) => {
          const isKeyboardFocus = !unref(isClickFocus);
          const { target, currentTarget } = e;
          if (target === currentTarget && isKeyboardFocus && !unref(isBackingOut)) {
            const entryFocusEvt = new Event(ENTRY_FOCUS_EVT, EVT_OPTS);
            currentTarget == null ? void 0 : currentTarget.dispatchEvent(entryFocusEvt);
            if (!entryFocusEvt.defaultPrevented) {
              const items = getItems().filter((item) => item.focusable);
              const activeItem = items.find((item) => item.active);
              const currentItem = items.find(
                (item) => item.id === unref(currentTabbedId)
              );
              const candidates = [activeItem, currentItem, ...items].filter(
                Boolean
              );
              const candidateNodes = candidates.map((item) => item.ref);
              focusFirst(candidateNodes);
            }
          }
          isClickFocus.value = false;
        }
      );
      const onBlur = composeEventHandlers(
        (e) => {
          var _a2;
          (_a2 = props2.onBlur) == null ? void 0 : _a2.call(props2, e);
        },
        () => {
          isBackingOut.value = false;
        }
      );
      const handleEntryFocus = (...args) => {
        emit2("entryFocus", ...args);
      };
      const onKeydown = (e) => {
        const focusIntent = getFocusIntent(e);
        if (focusIntent) {
          e.preventDefault();
          const items = getItems().filter((item) => item.focusable);
          let elements = items.map((item) => item.ref);
          switch (focusIntent) {
            case "last": {
              elements.reverse();
              break;
            }
            case "prev":
            case "next": {
              if (focusIntent === "prev") {
                elements.reverse();
              }
              const currentIdx = elements.indexOf(e.currentTarget);
              elements = props2.loop ? reorderArray(elements, currentIdx + 1) : elements.slice(currentIdx + 1);
              break;
            }
          }
          nextTick(() => {
            focusFirst(elements);
          });
        }
      };
      provide(ROVING_FOCUS_GROUP_INJECTION_KEY, {
        currentTabbedId: readonly(currentTabbedId),
        loop: toRef(props2, "loop"),
        tabIndex: computed(() => {
          return unref(isBackingOut) ? -1 : 0;
        }),
        rovingFocusGroupRef,
        rovingFocusGroupRootStyle,
        orientation: toRef(props2, "orientation"),
        dir: toRef(props2, "dir"),
        onItemFocus,
        onItemShiftTab,
        onBlur,
        onFocus,
        onMousedown,
        onKeydown
      });
      watch(
        () => props2.currentTabId,
        (val) => {
          currentTabbedId.value = val != null ? val : null;
        }
      );
      useEventListener(rovingFocusGroupRef, ENTRY_FOCUS_EVT, handleEntryFocus);
    }
  });
  function _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {
    return renderSlot(_ctx.$slots, "default");
  }
  var ElRovingFocusGroupImpl = /* @__PURE__ */ _export_sfc$1(_sfc_main$26, [["render", _sfc_render$f]]);
  var _sfc_main$25 = /* @__PURE__ */ defineComponent({
    name: "ElRovingFocusGroup",
    components: {
      ElFocusGroupCollection: ElCollection,
      ElRovingFocusGroupImpl
    }
  });
  function _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {
    const _component_el_roving_focus_group_impl = resolveComponent("el-roving-focus-group-impl");
    const _component_el_focus_group_collection = resolveComponent("el-focus-group-collection");
    return openBlock(), createBlock(_component_el_focus_group_collection, null, {
      default: withCtx(() => [
        createVNode(
          _component_el_roving_focus_group_impl,
          normalizeProps(guardReactiveProps(_ctx.$attrs)),
          {
            default: withCtx(() => [
              renderSlot(_ctx.$slots, "default")
            ]),
            _: 3
            /* FORWARDED */
          },
          16
          /* FULL_PROPS */
        )
      ]),
      _: 3
      /* FORWARDED */
    });
  }
  var ElRovingFocusGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$25, [["render", _sfc_render$e]]);
  const dropdownProps = buildProps({
    /**
     * @description how to trigger
     */
    trigger: {
      ...useTooltipTriggerProps.trigger,
      type: definePropType([
        String,
        Array
      ])
    },
    triggerKeys: {
      type: definePropType(Array),
      default: () => [
        EVENT_CODE.enter,
        EVENT_CODE.numpadEnter,
        EVENT_CODE.space,
        EVENT_CODE.down
      ]
    },
    /**
     * @description Indicates whether virtual triggering is enabled
     */
    virtualTriggering: useTooltipTriggerProps.virtualTriggering,
    /**
     * @description Indicates the reference element to which the dropdown is attached
     */
    virtualRef: useTooltipTriggerProps.virtualRef,
    /**
     * @description Tooltip theme, built-in theme: `dark` / `light`
     */
    effect: {
      ...useTooltipContentProps.effect,
      default: "light"
    },
    /**
     * @description menu button type, refer to `Button` Component, only works when `split-button` is true
     */
    type: {
      type: definePropType(String)
    },
    /**
     * @description placement of pop menu
     */
    placement: {
      type: definePropType(String),
      default: "bottom"
    },
    /**
     * @description [popper.js](https://popper.js.org/docs/v2/) parameters
     */
    popperOptions: {
      type: definePropType(Object),
      default: () => ({})
    },
    id: String,
    /**
     * @description menu size, also works on the split button
     */
    size: {
      type: String,
      default: ""
    },
    /**
     * @description whether a button group is displayed
     */
    splitButton: Boolean,
    /**
     * @description whether to hide menu after clicking menu-item
     */
    hideOnClick: {
      type: Boolean,
      default: true
    },
    loop: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether the tooltip content has an arrow
     */
    showArrow: {
      type: Boolean,
      default: true
    },
    /**
     * @description delay time before show a dropdown (only works when trigger is `hover`)
     */
    showTimeout: {
      type: Number,
      default: 150
    },
    /**
     * @description delay time before hide a dropdown (only works when trigger is `hover`)
     */
    hideTimeout: {
      type: Number,
      default: 150
    },
    /**
     * @description [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of Dropdown
     */
    tabindex: {
      type: definePropType([Number, String]),
      default: 0
    },
    /**
     * @description the max height of menu
     */
    maxHeight: {
      type: definePropType([Number, String]),
      default: ""
    },
    /**
     * @description custom class name for Dropdown's dropdown
     */
    popperClass: useTooltipContentProps.popperClass,
    /**
     * @description custom style for Dropdown's dropdown
     */
    popperStyle: useTooltipContentProps.popperStyle,
    /**
     * @description whether to disable
     */
    disabled: Boolean,
    /**
     * @description the ARIA role attribute for the dropdown menu. Depending on the use case, you may want to change this to 'navigation'
     */
    role: {
      type: String,
      values: roleTypes,
      default: "menu"
    },
    buttonProps: {
      type: definePropType(Object)
    },
    /**
     * @description whether the dropdown popup is teleported to the body
     */
    teleported: useTooltipContentProps.teleported,
    /**
     * @description which element the dropdown CONTENT appends to
     */
    appendTo: useTooltipContentProps.appendTo,
    /**
     * @description when dropdown inactive and `persistent` is `false` , dropdown menu will be destroyed
     */
    persistent: {
      type: Boolean,
      default: true
    }
  });
  const dropdownItemProps = buildProps({
    /**
     * @description a command to be dispatched to Dropdown's `command` callback
     */
    command: {
      type: [Object, String, Number],
      default: () => ({})
    },
    /**
     * @description whether the item is disabled
     */
    disabled: Boolean,
    /**
     * @description whether a divider is displayed
     */
    divided: Boolean,
    textValue: String,
    /**
     * @description custom icon
     */
    icon: {
      type: iconPropType
    }
  });
  const dropdownMenuProps = buildProps({
    onKeydown: { type: definePropType(Function) }
  });
  const DROPDOWN_INJECTION_KEY = /* @__PURE__ */ Symbol("elDropdown");
  const DROPDOWN_INSTANCE_INJECTION_KEY = "elDropdown";
  const { ButtonGroup: ElButtonGroup } = ElButton;
  var _sfc_main$24 = /* @__PURE__ */ defineComponent({
    name: "ElDropdown",
    components: {
      ElButton,
      ElButtonGroup,
      ElScrollbar,
      ElTooltip,
      ElRovingFocusGroup,
      ElOnlyChild: OnlyChild,
      ElIcon,
      ArrowDown: arrow_down_default
    },
    props: dropdownProps,
    emits: ["visible-change", "click", "command"],
    setup(props2, { emit: emit2 }) {
      const _instance = getCurrentInstance();
      const ns = useNamespace("dropdown");
      const { t } = useLocale();
      const triggeringElementRef = ref();
      const referenceElementRef = ref();
      const popperRef = ref();
      const contentRef = ref();
      const scrollbar = ref(null);
      const currentTabId = ref(null);
      const isUsingKeyboard = ref(false);
      const wrapStyle = computed(() => ({
        maxHeight: addUnit(props2.maxHeight)
      }));
      const dropdownTriggerKls = computed(() => [ns.m(dropdownSize.value)]);
      const trigger2 = computed(() => castArray$1(props2.trigger));
      const defaultTriggerId = useId().value;
      const triggerId = computed(() => props2.id || defaultTriggerId);
      function handleClick() {
        var _a;
        (_a = popperRef.value) == null ? void 0 : _a.onClose(void 0, 0);
      }
      function handleClose() {
        var _a;
        (_a = popperRef.value) == null ? void 0 : _a.onClose();
      }
      function handleOpen() {
        var _a;
        (_a = popperRef.value) == null ? void 0 : _a.onOpen();
      }
      const dropdownSize = useFormSize();
      function commandHandler(...args) {
        emit2("command", ...args);
      }
      function onItemEnter() {
      }
      function onItemLeave() {
        const contentEl = unref(contentRef);
        trigger2.value.includes("hover") && (contentEl == null ? void 0 : contentEl.focus({
          preventScroll: true
        }));
        currentTabId.value = null;
      }
      function handleCurrentTabIdChange(id) {
        currentTabId.value = id;
      }
      function handleBeforeShowTooltip() {
        emit2("visible-change", true);
      }
      function handleShowTooltip(event) {
        var _a;
        isUsingKeyboard.value = (event == null ? void 0 : event.type) === "keydown";
        (_a = contentRef.value) == null ? void 0 : _a.focus();
      }
      function handleBeforeHideTooltip() {
        emit2("visible-change", false);
      }
      provide(DROPDOWN_INJECTION_KEY, {
        contentRef,
        role: computed(() => props2.role),
        triggerId,
        isUsingKeyboard,
        onItemEnter,
        onItemLeave,
        handleClose
      });
      provide(DROPDOWN_INSTANCE_INJECTION_KEY, {
        instance: _instance,
        dropdownSize,
        handleClick,
        commandHandler,
        trigger: toRef(props2, "trigger"),
        hideOnClick: toRef(props2, "hideOnClick")
      });
      const handlerMainButtonClick = (event) => {
        emit2("click", event);
      };
      return {
        t,
        ns,
        scrollbar,
        wrapStyle,
        dropdownTriggerKls,
        dropdownSize,
        triggerId,
        currentTabId,
        handleCurrentTabIdChange,
        handlerMainButtonClick,
        handleClose,
        handleOpen,
        handleBeforeShowTooltip,
        handleShowTooltip,
        handleBeforeHideTooltip,
        popperRef,
        contentRef,
        triggeringElementRef,
        referenceElementRef
      };
    }
  });
  function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {
    var _a;
    const _component_el_roving_focus_group = resolveComponent("el-roving-focus-group");
    const _component_el_scrollbar = resolveComponent("el-scrollbar");
    const _component_el_only_child = resolveComponent("el-only-child");
    const _component_el_tooltip = resolveComponent("el-tooltip");
    const _component_el_button = resolveComponent("el-button");
    const _component_arrow_down = resolveComponent("arrow-down");
    const _component_el_icon = resolveComponent("el-icon");
    const _component_el_button_group = resolveComponent("el-button-group");
    return openBlock(), createElementBlock(
      "div",
      {
        class: normalizeClass([_ctx.ns.b(), _ctx.ns.is("disabled", _ctx.disabled)])
      },
      [
        createVNode(_component_el_tooltip, {
          ref: "popperRef",
          role: _ctx.role,
          effect: _ctx.effect,
          "fallback-placements": ["bottom", "top"],
          "popper-options": _ctx.popperOptions,
          "gpu-acceleration": false,
          placement: _ctx.placement,
          "popper-class": [_ctx.ns.e("popper"), _ctx.popperClass],
          "popper-style": _ctx.popperStyle,
          trigger: _ctx.trigger,
          "trigger-keys": _ctx.triggerKeys,
          "trigger-target-el": _ctx.contentRef,
          "show-arrow": _ctx.showArrow,
          "show-after": _ctx.trigger === "hover" ? _ctx.showTimeout : 0,
          "hide-after": _ctx.trigger === "hover" ? _ctx.hideTimeout : 0,
          "virtual-ref": (_a = _ctx.virtualRef) != null ? _a : _ctx.triggeringElementRef,
          "virtual-triggering": _ctx.virtualTriggering || _ctx.splitButton,
          disabled: _ctx.disabled,
          transition: `${_ctx.ns.namespace.value}-zoom-in-top`,
          teleported: _ctx.teleported,
          "append-to": _ctx.appendTo,
          pure: "",
          "focus-on-target": "",
          persistent: _ctx.persistent,
          onBeforeShow: _ctx.handleBeforeShowTooltip,
          onShow: _ctx.handleShowTooltip,
          onBeforeHide: _ctx.handleBeforeHideTooltip
        }, createSlots({
          content: withCtx(() => [
            createVNode(_component_el_scrollbar, {
              ref: "scrollbar",
              "wrap-style": _ctx.wrapStyle,
              tag: "div",
              "view-class": _ctx.ns.e("list")
            }, {
              default: withCtx(() => [
                createVNode(_component_el_roving_focus_group, {
                  loop: _ctx.loop,
                  "current-tab-id": _ctx.currentTabId,
                  orientation: "horizontal",
                  onCurrentTabIdChange: _ctx.handleCurrentTabIdChange
                }, {
                  default: withCtx(() => [
                    renderSlot(_ctx.$slots, "dropdown")
                  ]),
                  _: 3
                  /* FORWARDED */
                }, 8, ["loop", "current-tab-id", "onCurrentTabIdChange"])
              ]),
              _: 3
              /* FORWARDED */
            }, 8, ["wrap-style", "view-class"])
          ]),
          _: 2
          /* DYNAMIC */
        }, [
          !_ctx.splitButton ? {
            name: "default",
            fn: withCtx(() => [
              createVNode(_component_el_only_child, {
                id: _ctx.triggerId,
                ref: "triggeringElementRef",
                role: "button",
                tabindex: _ctx.tabindex
              }, {
                default: withCtx(() => [
                  renderSlot(_ctx.$slots, "default")
                ]),
                _: 3
                /* FORWARDED */
              }, 8, ["id", "tabindex"])
            ]),
            key: "0"
          } : void 0
        ]), 1032, ["role", "effect", "popper-options", "placement", "popper-class", "popper-style", "trigger", "trigger-keys", "trigger-target-el", "show-arrow", "show-after", "hide-after", "virtual-ref", "virtual-triggering", "disabled", "transition", "teleported", "append-to", "persistent", "onBeforeShow", "onShow", "onBeforeHide"]),
        _ctx.splitButton ? (openBlock(), createBlock(_component_el_button_group, { key: 0 }, {
          default: withCtx(() => [
            createVNode(_component_el_button, mergeProps({ ref: "referenceElementRef" }, _ctx.buttonProps, {
              size: _ctx.dropdownSize,
              type: _ctx.type,
              disabled: _ctx.disabled,
              tabindex: _ctx.tabindex,
              onClick: _ctx.handlerMainButtonClick
            }), {
              default: withCtx(() => [
                renderSlot(_ctx.$slots, "default")
              ]),
              _: 3
              /* FORWARDED */
            }, 16, ["size", "type", "disabled", "tabindex", "onClick"]),
            createVNode(_component_el_button, mergeProps({
              id: _ctx.triggerId,
              ref: "triggeringElementRef"
            }, _ctx.buttonProps, {
              role: "button",
              size: _ctx.dropdownSize,
              type: _ctx.type,
              class: _ctx.ns.e("caret-button"),
              disabled: _ctx.disabled,
              tabindex: _ctx.tabindex,
              "aria-label": _ctx.t("el.dropdown.toggleDropdown")
            }), {
              default: withCtx(() => [
                createVNode(_component_el_icon, {
                  class: normalizeClass(_ctx.ns.e("icon"))
                }, {
                  default: withCtx(() => [
                    createVNode(_component_arrow_down)
                  ]),
                  _: 1
                  /* STABLE */
                }, 8, ["class"])
              ]),
              _: 1
              /* STABLE */
            }, 16, ["id", "size", "type", "class", "disabled", "tabindex", "aria-label"])
          ]),
          _: 3
          /* FORWARDED */
        })) : createCommentVNode("v-if", true)
      ],
      2
      /* CLASS */
    );
  }
  var Dropdown = /* @__PURE__ */ _export_sfc$1(_sfc_main$24, [["render", _sfc_render$d]]);
  var _sfc_main$23 = /* @__PURE__ */ defineComponent({
    components: {
      ElRovingFocusCollectionItem: ElCollectionItem
    },
    props: {
      focusable: {
        type: Boolean,
        default: true
      },
      active: Boolean
    },
    emits: ["mousedown", "focus", "keydown"],
    setup(props2, { emit: emit2 }) {
      const { currentTabbedId, onItemFocus, onItemShiftTab, onKeydown } = inject(
        ROVING_FOCUS_GROUP_INJECTION_KEY,
        void 0
      );
      const id = useId();
      const rovingFocusGroupItemRef = ref();
      const handleMousedown = composeEventHandlers(
        (e) => {
          emit2("mousedown", e);
        },
        (e) => {
          if (!props2.focusable) {
            e.preventDefault();
          } else {
            onItemFocus(unref(id));
          }
        }
      );
      const handleFocus = composeEventHandlers(
        (e) => {
          emit2("focus", e);
        },
        () => {
          onItemFocus(unref(id));
        }
      );
      const handleKeydown = composeEventHandlers(
        (e) => {
          emit2("keydown", e);
        },
        (e) => {
          const { shiftKey, target, currentTarget } = e;
          const code = getEventCode(e);
          if (code === EVENT_CODE.tab && shiftKey) {
            onItemShiftTab();
            return;
          }
          if (target !== currentTarget) return;
          onKeydown(e);
        }
      );
      const isCurrentTab = computed(() => currentTabbedId.value === unref(id));
      provide(ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY, {
        rovingFocusGroupItemRef,
        tabIndex: computed(() => unref(isCurrentTab) ? 0 : -1),
        handleMousedown,
        handleFocus,
        handleKeydown
      });
      return {
        id,
        handleKeydown,
        handleFocus,
        handleMousedown
      };
    }
  });
  function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
    const _component_el_roving_focus_collection_item = resolveComponent("el-roving-focus-collection-item");
    return openBlock(), createBlock(_component_el_roving_focus_collection_item, {
      id: _ctx.id,
      focusable: _ctx.focusable,
      active: _ctx.active
    }, {
      default: withCtx(() => [
        renderSlot(_ctx.$slots, "default")
      ]),
      _: 3
      /* FORWARDED */
    }, 8, ["id", "focusable", "active"]);
  }
  var ElRovingFocusItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$23, [["render", _sfc_render$c]]);
  var _sfc_main$22 = /* @__PURE__ */ defineComponent({
    name: "DropdownItemImpl",
    components: {
      ElIcon
    },
    props: dropdownItemProps,
    emits: ["pointermove", "pointerleave", "click", "clickimpl"],
    setup(_2, { emit: emit2 }) {
      const ns = useNamespace("dropdown");
      const { role: menuRole } = inject(DROPDOWN_INJECTION_KEY, void 0);
      const { collectionItemRef: rovingFocusCollectionItemRef } = inject(
        COLLECTION_ITEM_INJECTION_KEY,
        void 0
      );
      const {
        rovingFocusGroupItemRef,
        tabIndex,
        handleFocus,
        handleKeydown: handleItemKeydown,
        handleMousedown
      } = inject(ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY, void 0);
      const itemRef = composeRefs(
        rovingFocusCollectionItemRef,
        rovingFocusGroupItemRef
      );
      const role = computed(() => {
        if (menuRole.value === "menu") {
          return "menuitem";
        } else if (menuRole.value === "navigation") {
          return "link";
        }
        return "button";
      });
      const handleKeydown = composeEventHandlers((e) => {
        const code = getEventCode(e);
        if ([EVENT_CODE.enter, EVENT_CODE.numpadEnter, EVENT_CODE.space].includes(
          code
        )) {
          e.preventDefault();
          e.stopImmediatePropagation();
          emit2("clickimpl", e);
          return true;
        }
      }, handleItemKeydown);
      return {
        ns,
        itemRef,
        dataset: {
          [COLLECTION_ITEM_SIGN]: ""
        },
        role,
        tabIndex,
        handleFocus,
        handleKeydown,
        handleMousedown
      };
    }
  });
  const _hoisted_1$1t = ["aria-disabled", "tabindex", "role"];
  function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
    const _component_el_icon = resolveComponent("el-icon");
    return openBlock(), createElementBlock(
      Fragment,
      null,
      [
        _ctx.divided ? (openBlock(), createElementBlock(
          "li",
          {
            key: 0,
            role: "separator",
            class: normalizeClass(_ctx.ns.bem("menu", "item", "divided"))
          },
          null,
          2
          /* CLASS */
        )) : createCommentVNode("v-if", true),
        createBaseVNode("li", mergeProps({ ref: _ctx.itemRef }, { ..._ctx.dataset, ..._ctx.$attrs }, {
          "aria-disabled": _ctx.disabled,
          class: [_ctx.ns.be("menu", "item"), _ctx.ns.is("disabled", _ctx.disabled)],
          tabindex: _ctx.tabIndex,
          role: _ctx.role,
          onClick: _cache[0] || (_cache[0] = (e) => _ctx.$emit("clickimpl", e)),
          onFocus: _cache[1] || (_cache[1] = (...args) => _ctx.handleFocus && _ctx.handleFocus(...args)),
          onKeydown: _cache[2] || (_cache[2] = withModifiers((...args) => _ctx.handleKeydown && _ctx.handleKeydown(...args), ["self"])),
          onMousedown: _cache[3] || (_cache[3] = (...args) => _ctx.handleMousedown && _ctx.handleMousedown(...args)),
          onPointermove: _cache[4] || (_cache[4] = (e) => _ctx.$emit("pointermove", e)),
          onPointerleave: _cache[5] || (_cache[5] = (e) => _ctx.$emit("pointerleave", e))
        }), [
          _ctx.icon || _ctx.$slots.icon ? (openBlock(), createBlock(_component_el_icon, { key: 0 }, {
            default: withCtx(() => [
              renderSlot(_ctx.$slots, "icon", {}, () => [
                (openBlock(), createBlock(resolveDynamicComponent(_ctx.icon)))
              ])
            ]),
            _: 3
            /* FORWARDED */
          })) : createCommentVNode("v-if", true),
          renderSlot(_ctx.$slots, "default")
        ], 16, _hoisted_1$1t)
      ],
      64
      /* STABLE_FRAGMENT */
    );
  }
  var ElDropdownItemImpl = /* @__PURE__ */ _export_sfc$1(_sfc_main$22, [["render", _sfc_render$b]]);
  const useDropdown = () => {
    const elDropdown = inject(
      DROPDOWN_INSTANCE_INJECTION_KEY,
      {}
    );
    const _elDropdownSize = computed(() => elDropdown == null ? void 0 : elDropdown.dropdownSize);
    return {
      elDropdown,
      _elDropdownSize
    };
  };
  var _sfc_main$21 = /* @__PURE__ */ defineComponent({
    name: "ElDropdownItem",
    components: {
      ElRovingFocusItem,
      ElDropdownItemImpl
    },
    inheritAttrs: false,
    props: dropdownItemProps,
    emits: ["pointermove", "pointerleave", "click"],
    setup(props2, { emit: emit2, attrs }) {
      const { elDropdown } = useDropdown();
      const _instance = getCurrentInstance();
      const { onItemEnter, onItemLeave } = inject(
        DROPDOWN_INJECTION_KEY,
        void 0
      );
      const handlePointerMove = composeEventHandlers(
        (e) => {
          emit2("pointermove", e);
          return e.defaultPrevented;
        },
        whenMouse((e) => {
          if (props2.disabled) {
            onItemLeave(e);
            return;
          }
          const target = e.currentTarget;
          if (target === document.activeElement || target.contains(document.activeElement)) {
            return;
          }
          onItemEnter(e);
          if (!e.defaultPrevented) {
            target == null ? void 0 : target.focus({
              preventScroll: true
            });
          }
        })
      );
      const handlePointerLeave = composeEventHandlers((e) => {
        emit2("pointerleave", e);
        return e.defaultPrevented;
      }, whenMouse(onItemLeave));
      const handleClick = composeEventHandlers(
        (e) => {
          if (props2.disabled) {
            return;
          }
          emit2("click", e);
          return e.type !== "keydown" && e.defaultPrevented;
        },
        (e) => {
          var _a, _b, _c;
          if (props2.disabled) {
            e.stopImmediatePropagation();
            return;
          }
          if ((_a = elDropdown == null ? void 0 : elDropdown.hideOnClick) == null ? void 0 : _a.value) {
            (_b = elDropdown.handleClick) == null ? void 0 : _b.call(elDropdown);
          }
          (_c = elDropdown.commandHandler) == null ? void 0 : _c.call(elDropdown, props2.command, _instance, e);
        }
      );
      const propsAndAttrs = computed(() => ({ ...props2, ...attrs }));
      return {
        handleClick,
        handlePointerMove,
        handlePointerLeave,
        propsAndAttrs
      };
    }
  });
  function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
    const _component_el_dropdown_item_impl = resolveComponent("el-dropdown-item-impl");
    const _component_el_roving_focus_item = resolveComponent("el-roving-focus-item");
    return openBlock(), createBlock(_component_el_roving_focus_item, {
      focusable: !_ctx.disabled
    }, {
      default: withCtx(() => [
        createVNode(_component_el_dropdown_item_impl, mergeProps(_ctx.propsAndAttrs, {
          onPointerleave: _ctx.handlePointerLeave,
          onPointermove: _ctx.handlePointerMove,
          onClickimpl: _ctx.handleClick
        }), createSlots({
          default: withCtx(() => [
            renderSlot(_ctx.$slots, "default")
          ]),
          _: 2
          /* DYNAMIC */
        }, [
          _ctx.$slots.icon ? {
            name: "icon",
            fn: withCtx(() => [
              renderSlot(_ctx.$slots, "icon")
            ]),
            key: "0"
          } : void 0
        ]), 1040, ["onPointerleave", "onPointermove", "onClickimpl"])
      ]),
      _: 3
      /* FORWARDED */
    }, 8, ["focusable"]);
  }
  var DropdownItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$21, [["render", _sfc_render$a]]);
  var _sfc_main$20 = /* @__PURE__ */ defineComponent({
    name: "ElDropdownMenu",
    props: dropdownMenuProps,
    setup(props2) {
      const ns = useNamespace("dropdown");
      const { _elDropdownSize } = useDropdown();
      const size = _elDropdownSize.value;
      const { contentRef, role, triggerId, isUsingKeyboard, handleClose } = inject(DROPDOWN_INJECTION_KEY, void 0);
      const {
        rovingFocusGroupRef,
        rovingFocusGroupRootStyle,
        onBlur,
        onFocus,
        onKeydown,
        onMousedown
      } = inject(ROVING_FOCUS_GROUP_INJECTION_KEY, void 0);
      const { collectionRef: rovingFocusGroupCollectionRef } = inject(
        COLLECTION_INJECTION_KEY,
        void 0
      );
      const dropdownKls = computed(() => {
        return [ns.b("menu"), ns.bm("menu", size == null ? void 0 : size.value)];
      });
      const dropdownListWrapperRef = composeRefs(
        contentRef,
        rovingFocusGroupRef,
        rovingFocusGroupCollectionRef
      );
      const handleKeydown = composeEventHandlers(
        (e) => {
          var _a;
          (_a = props2.onKeydown) == null ? void 0 : _a.call(props2, e);
        },
        (e) => {
          const { currentTarget, target } = e;
          const code = getEventCode(e);
          currentTarget.contains(
            target
          );
          if (EVENT_CODE.tab === code) {
            return handleClose();
          }
          onKeydown(e);
        }
      );
      function handleFocus(e) {
        isUsingKeyboard.value && onFocus(e);
      }
      return {
        size,
        rovingFocusGroupRootStyle,
        dropdownKls,
        role,
        triggerId,
        dropdownListWrapperRef,
        handleKeydown,
        onBlur,
        handleFocus,
        onMousedown
      };
    }
  });
  const _hoisted_1$1s = ["role", "aria-labelledby"];
  function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
    return openBlock(), createElementBlock("ul", {
      ref: _ctx.dropdownListWrapperRef,
      class: normalizeClass(_ctx.dropdownKls),
      style: normalizeStyle(_ctx.rovingFocusGroupRootStyle),
      tabindex: -1,
      role: _ctx.role,
      "aria-labelledby": _ctx.triggerId,
      onFocusin: _cache[0] || (_cache[0] = (...args) => _ctx.handleFocus && _ctx.handleFocus(...args)),
      onFocusout: _cache[1] || (_cache[1] = (...args) => _ctx.onBlur && _ctx.onBlur(...args)),
      onKeydown: _cache[2] || (_cache[2] = withModifiers((...args) => _ctx.handleKeydown && _ctx.handleKeydown(...args), ["self"])),
      onMousedown: _cache[3] || (_cache[3] = withModifiers((...args) => _ctx.onMousedown && _ctx.onMousedown(...args), ["self"]))
    }, [
      renderSlot(_ctx.$slots, "default")
    ], 46, _hoisted_1$1s);
  }
  var DropdownMenu = /* @__PURE__ */ _export_sfc$1(_sfc_main$20, [["render", _sfc_render$9]]);
  const ElDropdown = withInstall(Dropdown, {
    DropdownItem,
    DropdownMenu
  });
  const ElDropdownItem = withNoopInstall(DropdownItem);
  const ElDropdownMenu = withNoopInstall(DropdownMenu);
  const emptyProps = buildProps({
    /**
     * @description image URL of empty
     */
    image: {
      type: String,
      default: ""
    },
    /**
     * @description image size (width) of empty
     */
    imageSize: Number,
    /**
     * @description description of empty
     */
    description: {
      type: String,
      default: ""
    }
  });
  const _hoisted_1$1r = {
    viewBox: "0 0 79 86",
    version: "1.1",
    xmlns: "http://www.w3.org/2000/svg",
    "xmlns:xlink": "http://www.w3.org/1999/xlink"
  };
  const _hoisted_2$1b = ["id"];
  const _hoisted_3$U = ["stop-color"];
  const _hoisted_4$P = ["stop-color"];
  const _hoisted_5$G = ["id"];
  const _hoisted_6$m = ["stop-color"];
  const _hoisted_7$j = ["stop-color"];
  const _hoisted_8$j = ["id"];
  const _hoisted_9$i = {
    stroke: "none",
    "stroke-width": "1",
    fill: "none",
    "fill-rule": "evenodd"
  };
  const _hoisted_10$f = { transform: "translate(-1268.000000, -535.000000)" };
  const _hoisted_11$f = { transform: "translate(1268.000000, 535.000000)" };
  const _hoisted_12$c = ["fill"];
  const _hoisted_13$b = ["fill"];
  const _hoisted_14$9 = { transform: "translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)" };
  const _hoisted_15$9 = ["fill"];
  const _hoisted_16$9 = ["fill"];
  const _hoisted_17$8 = ["fill"];
  const _hoisted_18$7 = ["fill"];
  const _hoisted_19$7 = ["fill"];
  const _hoisted_20$7 = { transform: "translate(53.000000, 45.000000)" };
  const _hoisted_21$7 = ["fill", "xlink:href"];
  const _hoisted_22$7 = ["fill", "mask"];
  const _hoisted_23$5 = ["fill"];
  var _sfc_main$1$ = /* @__PURE__ */ defineComponent({
    ...{
      name: "ImgEmpty"
    },
    __name: "img-empty",
    setup(__props) {
      const ns = useNamespace("empty");
      const id = useId();
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock("svg", _hoisted_1$1r, [
          createBaseVNode("defs", null, [
            createBaseVNode("linearGradient", {
              id: `linearGradient-1-${unref(id)}`,
              x1: "38.8503086%",
              y1: "0%",
              x2: "61.1496914%",
              y2: "100%"
            }, [
              createBaseVNode("stop", {
                "stop-color": `var(${unref(ns).cssVarBlockName("fill-color-1")})`,
                offset: "0%"
              }, null, 8, _hoisted_3$U),
              createBaseVNode("stop", {
                "stop-color": `var(${unref(ns).cssVarBlockName("fill-color-4")})`,
                offset: "100%"
              }, null, 8, _hoisted_4$P)
            ], 8, _hoisted_2$1b),
            createBaseVNode("linearGradient", {
              id: `linearGradient-2-${unref(id)}`,
              x1: "0%",
              y1: "9.5%",
              x2: "100%",
              y2: "90.5%"
            }, [
              createBaseVNode("stop", {
                "stop-color": `var(${unref(ns).cssVarBlockName("fill-color-1")})`,
                offset: "0%"
              }, null, 8, _hoisted_6$m),
              createBaseVNode("stop", {
                "stop-color": `var(${unref(ns).cssVarBlockName("fill-color-6")})`,
                offset: "100%"
              }, null, 8, _hoisted_7$j)
            ], 8, _hoisted_5$G),
            createBaseVNode("rect", {
              id: `path-3-${unref(id)}`,
              x: "0",
              y: "0",
              width: "17",
              height: "36"
            }, null, 8, _hoisted_8$j)
          ]),
          createBaseVNode("g", _hoisted_9$i, [
            createBaseVNode("g", _hoisted_10$f, [
              createBaseVNode("g", _hoisted_11$f, [
                createBaseVNode("path", {
                  d: "M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z",
                  fill: `var(${unref(ns).cssVarBlockName("fill-color-3")})`
                }, null, 8, _hoisted_12$c),
                createBaseVNode("polygon", {
                  fill: `var(${unref(ns).cssVarBlockName("fill-color-7")})`,
                  transform: "translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) ",
                  points: "13 58 53 58 42 45 2 45"
                }, null, 8, _hoisted_13$b),
                createBaseVNode("g", _hoisted_14$9, [
                  createBaseVNode("polygon", {
                    fill: `var(${unref(ns).cssVarBlockName("fill-color-7")})`,
                    transform: "translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) ",
                    points: "2.84078316e-14 3 18 3 23 7 5 7"
                  }, null, 8, _hoisted_15$9),
                  createBaseVNode("polygon", {
                    fill: `var(${unref(ns).cssVarBlockName("fill-color-5")})`,
                    points: "-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43"
                  }, null, 8, _hoisted_16$9),
                  createBaseVNode("rect", {
                    fill: `url(#linearGradient-1-${unref(id)})`,
                    transform: "translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) ",
                    x: "38",
                    y: "7",
                    width: "17",
                    height: "36"
                  }, null, 8, _hoisted_17$8),
                  createBaseVNode("polygon", {
                    fill: `var(${unref(ns).cssVarBlockName("fill-color-2")})`,
                    transform: "translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) ",
                    points: "24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12"
                  }, null, 8, _hoisted_18$7)
                ]),
                createBaseVNode("rect", {
                  fill: `url(#linearGradient-2-${unref(id)})`,
                  x: "13",
                  y: "45",
                  width: "40",
                  height: "36"
                }, null, 8, _hoisted_19$7),
                createBaseVNode("g", _hoisted_20$7, [
                  createBaseVNode("use", {
                    fill: `var(${unref(ns).cssVarBlockName("fill-color-8")})`,
                    transform: "translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) ",
                    "xlink:href": `#path-3-${unref(id)}`
                  }, null, 8, _hoisted_21$7),
                  createBaseVNode("polygon", {
                    fill: `var(${unref(ns).cssVarBlockName("fill-color-9")})`,
                    mask: `url(#mask-4-${unref(id)})`,
                    transform: "translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) ",
                    points: "7 0 24 0 20 18 7 16.5"
                  }, null, 8, _hoisted_22$7)
                ]),
                createBaseVNode("polygon", {
                  fill: `var(${unref(ns).cssVarBlockName("fill-color-2")})`,
                  transform: "translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) ",
                  points: "62 45 79 45 70 58 53 58"
                }, null, 8, _hoisted_23$5)
              ])
            ])
          ])
        ]);
      };
    }
  });
  const _hoisted_1$1q = ["src"];
  const _hoisted_2$1a = { key: 1 };
  var _sfc_main$1_ = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElEmpty"
    },
    __name: "empty",
    props: emptyProps,
    setup(__props) {
      const props2 = __props;
      const { t } = useLocale();
      const ns = useNamespace("empty");
      const emptyDescription = computed(
        () => props2.description || t("el.table.emptyText")
      );
      const imageStyle = computed(() => ({
        width: addUnit(props2.imageSize)
      }));
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass(unref(ns).b())
          },
          [
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(ns).e("image")),
                style: normalizeStyle(imageStyle.value)
              },
              [
                __props.image ? (openBlock(), createElementBlock("img", {
                  key: 0,
                  src: __props.image,
                  ondragstart: "return false"
                }, null, 8, _hoisted_1$1q)) : renderSlot(_ctx.$slots, "image", { key: 1 }, () => [
                  createVNode(_sfc_main$1$)
                ])
              ],
              6
              /* CLASS, STYLE */
            ),
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(ns).e("description"))
              },
              [
                _ctx.$slots.description ? renderSlot(_ctx.$slots, "description", { key: 0 }) : (openBlock(), createElementBlock(
                  "p",
                  _hoisted_2$1a,
                  toDisplayString(emptyDescription.value),
                  1
                  /* TEXT */
                ))
              ],
              2
              /* CLASS */
            ),
            _ctx.$slots.default ? (openBlock(), createElementBlock(
              "div",
              {
                key: 0,
                class: normalizeClass(unref(ns).e("bottom"))
              },
              [
                renderSlot(_ctx.$slots, "default")
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true)
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const ElEmpty = withInstall(_sfc_main$1_);
  const formMetaProps = buildProps({
    /**
     * @description Control the size of components in this form.
     */
    size: {
      type: String,
      values: componentSizes
    },
    /**
     * @description Whether to disable all components in this form. If set to `true`, it will override the `disabled` prop of the inner component.
     */
    disabled: Boolean
  });
  const formProps = buildProps({
    ...formMetaProps,
    /**
     * @description Data of form component.
     */
    model: Object,
    /**
     * @description Validation rules of form.
     */
    rules: {
      type: definePropType(Object)
    },
    /**
     * @description Position of label. If set to `'left'` or `'right'`, `label-width` prop is also required.
     */
    labelPosition: {
      type: String,
      values: ["left", "right", "top"],
      default: "right"
    },
    /**
     * @description Position of asterisk.
     */
    requireAsteriskPosition: {
      type: String,
      values: ["left", "right"],
      default: "left"
    },
    /**
     * @description Width of label, e.g. `'50px'`. All its direct child form items will inherit this value. `auto` is supported.
     */
    labelWidth: {
      type: [String, Number],
      default: ""
    },
    /**
     * @description Suffix of the label.
     */
    labelSuffix: {
      type: String,
      default: ""
    },
    /**
     * @description Whether the form is inline.
     */
    inline: Boolean,
    /**
     * @description Whether to display the error message inline with the form item.
     */
    inlineMessage: Boolean,
    /**
     * @description Whether to display an icon indicating the validation result.
     */
    statusIcon: Boolean,
    /**
     * @description Whether to show the error message.
     */
    showMessage: {
      type: Boolean,
      default: true
    },
    /**
     * @description Whether to trigger validation when the `rules` prop is changed.
     */
    validateOnRuleChange: {
      type: Boolean,
      default: true
    },
    /**
     * @description Whether to hide required fields should have a red asterisk (star) beside their labels.
     */
    hideRequiredAsterisk: Boolean,
    /**
     * @description When validation fails, scroll to the first error form entry.
     */
    scrollToError: Boolean,
    /**
     * @description When validation fails, it scrolls to the first error item based on the scrollIntoView option.
     */
    scrollIntoViewOptions: {
      type: definePropType([Object, Boolean]),
      default: true
    }
  });
  const formEmits = {
    validate: (prop, isValid, message2) => (isArray$1(prop) || isString(prop)) && isBoolean(isValid) && isString(message2)
  };
  function useFormLabelWidth() {
    const potentialLabelWidthArr = ref([]);
    const autoLabelWidth = computed(() => {
      if (!potentialLabelWidthArr.value.length) return "0";
      const max2 = Math.max(...potentialLabelWidthArr.value);
      return max2 ? `${max2}px` : "";
    });
    function getLabelWidthIndex(width) {
      const index = potentialLabelWidthArr.value.indexOf(width);
      if (index === -1 && autoLabelWidth.value === "0") ;
      return index;
    }
    function registerLabelWidth(val, oldVal) {
      if (val && oldVal) {
        const index = getLabelWidthIndex(oldVal);
        potentialLabelWidthArr.value.splice(index, 1, val);
      } else if (val) {
        potentialLabelWidthArr.value.push(val);
      }
    }
    function deregisterLabelWidth(val) {
      const index = getLabelWidthIndex(val);
      if (index > -1) {
        potentialLabelWidthArr.value.splice(index, 1);
      }
    }
    return {
      autoLabelWidth,
      registerLabelWidth,
      deregisterLabelWidth
    };
  }
  const filterFields = (fields, props2) => {
    const normalized = castArray$1(props2).map(
      (prop) => isArray$1(prop) ? prop.join(".") : prop
    );
    return normalized.length > 0 ? fields.filter(
      (field) => field.propString && normalized.includes(field.propString)
    ) : fields;
  };
  const COMPONENT_NAME$d = "ElForm";
  var _sfc_main$1Z = /* @__PURE__ */ defineComponent({
    ...{
      name: COMPONENT_NAME$d
    },
    __name: "form",
    props: formProps,
    emits: formEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const formRef = ref();
      const fields = reactive([]);
      const formSize = useFormSize();
      const ns = useNamespace("form");
      const formClasses = computed(() => {
        const { labelPosition, inline } = props2;
        return [
          ns.b(),
          ns.m(formSize.value || "default"),
          {
            [ns.m(`label-${labelPosition}`)]: labelPosition,
            [ns.m("inline")]: inline
          }
        ];
      });
      const getField = (prop) => {
        return filterFields(fields, [prop])[0];
      };
      const addField = (field) => {
        fields.push(field);
      };
      const removeField = (field) => {
        if (field.prop) {
          fields.splice(fields.indexOf(field), 1);
        }
      };
      const setInitialValues = (initModel) => {
        if (!props2.model) {
          return;
        }
        if (!initModel) {
          return;
        }
        fields.forEach((field) => {
          if (field.prop) {
            if (has(initModel, field.prop)) {
              const initValue = getProp(initModel, field.prop).value;
              field.setInitialValue(initValue);
            }
          }
        });
      };
      const resetFields = (properties = []) => {
        if (!props2.model) {
          return;
        }
        filterFields(fields, properties).forEach((field) => field.resetField());
      };
      const clearValidate = (props22 = []) => {
        filterFields(fields, props22).forEach((field) => field.clearValidate());
      };
      const isValidatable = computed(() => {
        const hasModel = !!props2.model;
        return hasModel;
      });
      const obtainValidateFields = (props22) => {
        if (fields.length === 0) return [];
        const filteredFields = filterFields(fields, props22);
        if (!filteredFields.length) {
          return [];
        }
        return filteredFields;
      };
      const validate = async (callback) => validateField(void 0, callback);
      const doValidateField = async (props22 = []) => {
        if (!isValidatable.value) return false;
        const fields2 = obtainValidateFields(props22);
        if (fields2.length === 0) return true;
        let validationErrors = {};
        for (const field of fields2) {
          try {
            await field.validate("");
            if (field.validateState === "error" && !field.error) field.resetField();
          } catch (fields3) {
            validationErrors = {
              ...validationErrors,
              ...fields3
            };
          }
        }
        if (Object.keys(validationErrors).length === 0) return true;
        return Promise.reject(validationErrors);
      };
      const validateField = async (modelProps = [], callback) => {
        let result = false;
        const shouldThrow = !isFunction$1(callback);
        try {
          result = await doValidateField(modelProps);
          if (result === true) {
            await (callback == null ? void 0 : callback(result));
          }
          return result;
        } catch (e) {
          if (e instanceof Error) throw e;
          const invalidFields = e;
          if (props2.scrollToError) {
            if (formRef.value) {
              const formItem = formRef.value.querySelector(`.${ns.b()}-item.is-error`);
              formItem == null ? void 0 : formItem.scrollIntoView(props2.scrollIntoViewOptions);
            }
          }
          !result && await (callback == null ? void 0 : callback(false, invalidFields));
          return shouldThrow && Promise.reject(invalidFields);
        }
      };
      const scrollToField = (prop) => {
        var _a;
        const field = getField(prop);
        if (field) {
          (_a = field.$el) == null ? void 0 : _a.scrollIntoView(props2.scrollIntoViewOptions);
        }
      };
      watch(
        () => props2.rules,
        () => {
          if (props2.validateOnRuleChange) {
            validate().catch((err) => debugWarn());
          }
        },
        { deep: true, flush: "post" }
      );
      provide(
        formContextKey,
        reactive({
          ...toRefs(props2),
          emit: emit2,
          resetFields,
          clearValidate,
          validateField,
          getField,
          addField,
          removeField,
          setInitialValues,
          ...useFormLabelWidth()
        })
      );
      __expose({
        /**
         * @description Validate the whole form. Receives a callback or returns `Promise`.
         */
        validate,
        /**
         * @description Validate specified fields.
         */
        validateField,
        /**
         * @description Reset specified fields and remove validation result.
         */
        resetFields,
        /**
         * @description Clear validation message for specified fields.
         */
        clearValidate,
        /**
         * @description Scroll to the specified fields.
         */
        scrollToField,
        /**
         * @description Get a field context.
         */
        getField,
        /**
         * @description All fields context.
         */
        fields,
        /**
         * @description Set initial values for form fields. When `resetFields` is called, fields will reset to these values. Only fields present in `initModel` will be updated.
         */
        setInitialValues
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "form",
          {
            ref_key: "formRef",
            ref: formRef,
            class: normalizeClass(formClasses.value)
          },
          [
            renderSlot(_ctx.$slots, "default")
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const formItemValidateStates = [
    "",
    "error",
    "validating",
    "success"
  ];
  const formItemProps = buildProps({
    /**
     * @description Label text.
     */
    label: String,
    /**
     * @description Width of label, e.g. `'50px'`. `'auto'` is supported.
     */
    labelWidth: {
      type: [String, Number]
    },
    /**
     * @description Position of label. If set to `'left'` or `'right'`, `label-width` prop is also required. The default is extend from `form label-position`.
     */
    labelPosition: {
      type: String,
      values: ["left", "right", "top", ""],
      default: ""
    },
    /**
     * @description  A key of `model`. It could be an array of property paths (e.g `['a', 'b', '0']`). In the use of `validate` and `resetFields` method, the attribute is required.
     */
    prop: {
      type: definePropType([String, Array])
    },
    /**
     * @description Whether the field is required or not, will be determined by validation rules if omitted.
     */
    required: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description Validation rules of form, see the [following table](#formitemrule), more advanced usage at [async-validator](https://github.com/yiminghe/async-validator).
     */
    rules: {
      type: definePropType([Object, Array])
    },
    /**
     * @description Field error message, set its value and the field will validate error and show this message immediately.
     */
    error: String,
    /**
     * @description Validation state of formItem.
     */
    validateStatus: {
      type: String,
      values: formItemValidateStates
    },
    /**
     * @description Same as for in native label.
     */
    for: String,
    /**
     * @description Inline style validate message.
     */
    inlineMessage: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description Whether to show the error message.
     */
    showMessage: {
      type: Boolean,
      default: true
    },
    /**
     * @description Control the size of components in this form-item.
     */
    size: {
      type: String,
      values: componentSizes
    }
  });
  function _extends() {
    _extends = Object.assign ? Object.assign.bind() : function(target) {
      for (var i = 1; i < arguments.length; i++) {
        var source = arguments[i];
        for (var key in source) {
          if (Object.prototype.hasOwnProperty.call(source, key)) {
            target[key] = source[key];
          }
        }
      }
      return target;
    };
    return _extends.apply(this, arguments);
  }
  function _inheritsLoose(subClass, superClass) {
    subClass.prototype = Object.create(superClass.prototype);
    subClass.prototype.constructor = subClass;
    _setPrototypeOf(subClass, superClass);
  }
  function _getPrototypeOf(o2) {
    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf2(o22) {
      return o22.__proto__ || Object.getPrototypeOf(o22);
    };
    return _getPrototypeOf(o2);
  }
  function _setPrototypeOf(o2, p2) {
    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o22, p22) {
      o22.__proto__ = p22;
      return o22;
    };
    return _setPrototypeOf(o2, p2);
  }
  function _isNativeReflectConstruct() {
    if (typeof Reflect === "undefined" || !Reflect.construct) return false;
    if (Reflect.construct.sham) return false;
    if (typeof Proxy === "function") return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _construct(Parent, args, Class) {
    if (_isNativeReflectConstruct()) {
      _construct = Reflect.construct.bind();
    } else {
      _construct = function _construct2(Parent2, args2, Class2) {
        var a2 = [null];
        a2.push.apply(a2, args2);
        var Constructor = Function.bind.apply(Parent2, a2);
        var instance = new Constructor();
        if (Class2) _setPrototypeOf(instance, Class2.prototype);
        return instance;
      };
    }
    return _construct.apply(null, arguments);
  }
  function _isNativeFunction(fn2) {
    return Function.toString.call(fn2).indexOf("[native code]") !== -1;
  }
  function _wrapNativeSuper(Class) {
    var _cache = typeof Map === "function" ? /* @__PURE__ */ new Map() : void 0;
    _wrapNativeSuper = function _wrapNativeSuper2(Class2) {
      if (Class2 === null || !_isNativeFunction(Class2)) return Class2;
      if (typeof Class2 !== "function") {
        throw new TypeError("Super expression must either be null or a function");
      }
      if (typeof _cache !== "undefined") {
        if (_cache.has(Class2)) return _cache.get(Class2);
        _cache.set(Class2, Wrapper);
      }
      function Wrapper() {
        return _construct(Class2, arguments, _getPrototypeOf(this).constructor);
      }
      Wrapper.prototype = Object.create(Class2.prototype, {
        constructor: {
          value: Wrapper,
          enumerable: false,
          writable: true,
          configurable: true
        }
      });
      return _setPrototypeOf(Wrapper, Class2);
    };
    return _wrapNativeSuper(Class);
  }
  var formatRegExp = /%[sdj%]/g;
  var warning = function warning2() {
  };
  function convertFieldsError(errors) {
    if (!errors || !errors.length) return null;
    var fields = {};
    errors.forEach(function(error) {
      var field = error.field;
      fields[field] = fields[field] || [];
      fields[field].push(error);
    });
    return fields;
  }
  function format(template) {
    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
      args[_key - 1] = arguments[_key];
    }
    var i = 0;
    var len = args.length;
    if (typeof template === "function") {
      return template.apply(null, args);
    }
    if (typeof template === "string") {
      var str = template.replace(formatRegExp, function(x2) {
        if (x2 === "%%") {
          return "%";
        }
        if (i >= len) {
          return x2;
        }
        switch (x2) {
          case "%s":
            return String(args[i++]);
          case "%d":
            return Number(args[i++]);
          case "%j":
            try {
              return JSON.stringify(args[i++]);
            } catch (_2) {
              return "[Circular]";
            }
            break;
          default:
            return x2;
        }
      });
      return str;
    }
    return template;
  }
  function isNativeStringType(type4) {
    return type4 === "string" || type4 === "url" || type4 === "hex" || type4 === "email" || type4 === "date" || type4 === "pattern";
  }
  function isEmptyValue(value, type4) {
    if (value === void 0 || value === null) {
      return true;
    }
    if (type4 === "array" && Array.isArray(value) && !value.length) {
      return true;
    }
    if (isNativeStringType(type4) && typeof value === "string" && !value) {
      return true;
    }
    return false;
  }
  function asyncParallelArray(arr, func, callback) {
    var results = [];
    var total2 = 0;
    var arrLength = arr.length;
    function count(errors) {
      results.push.apply(results, errors || []);
      total2++;
      if (total2 === arrLength) {
        callback(results);
      }
    }
    arr.forEach(function(a2) {
      func(a2, count);
    });
  }
  function asyncSerialArray(arr, func, callback) {
    var index = 0;
    var arrLength = arr.length;
    function next(errors) {
      if (errors && errors.length) {
        callback(errors);
        return;
      }
      var original = index;
      index = index + 1;
      if (original < arrLength) {
        func(arr[original], next);
      } else {
        callback([]);
      }
    }
    next([]);
  }
  function flattenObjArr(objArr) {
    var ret = [];
    Object.keys(objArr).forEach(function(k) {
      ret.push.apply(ret, objArr[k] || []);
    });
    return ret;
  }
  var AsyncValidationError = /* @__PURE__ */ (function(_Error) {
    _inheritsLoose(AsyncValidationError2, _Error);
    function AsyncValidationError2(errors, fields) {
      var _this;
      _this = _Error.call(this, "Async Validation Error") || this;
      _this.errors = errors;
      _this.fields = fields;
      return _this;
    }
    return AsyncValidationError2;
  })(/* @__PURE__ */ _wrapNativeSuper(Error));
  function asyncMap(objArr, option, func, callback, source) {
    if (option.first) {
      var _pending = new Promise(function(resolve2, reject) {
        var next = function next2(errors) {
          callback(errors);
          return errors.length ? reject(new AsyncValidationError(errors, convertFieldsError(errors))) : resolve2(source);
        };
        var flattenArr = flattenObjArr(objArr);
        asyncSerialArray(flattenArr, func, next);
      });
      _pending["catch"](function(e) {
        return e;
      });
      return _pending;
    }
    var firstFields = option.firstFields === true ? Object.keys(objArr) : option.firstFields || [];
    var objArrKeys = Object.keys(objArr);
    var objArrLength = objArrKeys.length;
    var total2 = 0;
    var results = [];
    var pending = new Promise(function(resolve2, reject) {
      var next = function next2(errors) {
        results.push.apply(results, errors);
        total2++;
        if (total2 === objArrLength) {
          callback(results);
          return results.length ? reject(new AsyncValidationError(results, convertFieldsError(results))) : resolve2(source);
        }
      };
      if (!objArrKeys.length) {
        callback(results);
        resolve2(source);
      }
      objArrKeys.forEach(function(key) {
        var arr = objArr[key];
        if (firstFields.indexOf(key) !== -1) {
          asyncSerialArray(arr, func, next);
        } else {
          asyncParallelArray(arr, func, next);
        }
      });
    });
    pending["catch"](function(e) {
      return e;
    });
    return pending;
  }
  function isErrorObj(obj) {
    return !!(obj && obj.message !== void 0);
  }
  function getValue(value, path) {
    var v2 = value;
    for (var i = 0; i < path.length; i++) {
      if (v2 == void 0) {
        return v2;
      }
      v2 = v2[path[i]];
    }
    return v2;
  }
  function complementError(rule, source) {
    return function(oe2) {
      var fieldValue;
      if (rule.fullFields) {
        fieldValue = getValue(source, rule.fullFields);
      } else {
        fieldValue = source[oe2.field || rule.fullField];
      }
      if (isErrorObj(oe2)) {
        oe2.field = oe2.field || rule.fullField;
        oe2.fieldValue = fieldValue;
        return oe2;
      }
      return {
        message: typeof oe2 === "function" ? oe2() : oe2,
        fieldValue,
        field: oe2.field || rule.fullField
      };
    };
  }
  function deepMerge(target, source) {
    if (source) {
      for (var s2 in source) {
        if (source.hasOwnProperty(s2)) {
          var value = source[s2];
          if (typeof value === "object" && typeof target[s2] === "object") {
            target[s2] = _extends({}, target[s2], value);
          } else {
            target[s2] = value;
          }
        }
      }
    }
    return target;
  }
  var required$1 = function required(rule, value, source, errors, options, type4) {
    if (rule.required && (!source.hasOwnProperty(rule.field) || isEmptyValue(value, type4 || rule.type))) {
      errors.push(format(options.messages.required, rule.fullField));
    }
  };
  var whitespace = function whitespace2(rule, value, source, errors, options) {
    if (/^\s+$/.test(value) || value === "") {
      errors.push(format(options.messages.whitespace, rule.fullField));
    }
  };
  var urlReg;
  var getUrlRegex = (function() {
    if (urlReg) {
      return urlReg;
    }
    var word = "[a-fA-F\\d:]";
    var b2 = function b22(options) {
      return options && options.includeBoundaries ? "(?:(?<=\\s|^)(?=" + word + ")|(?<=" + word + ")(?=\\s|$))" : "";
    };
    var v4 = "(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}";
    var v6seg = "[a-fA-F\\d]{1,4}";
    var v6 = ("\n(?:\n(?:" + v6seg + ":){7}(?:" + v6seg + "|:)|                                    // 1:2:3:4:5:6:7::  1:2:3:4:5:6:7:8\n(?:" + v6seg + ":){6}(?:" + v4 + "|:" + v6seg + "|:)|                             // 1:2:3:4:5:6::    1:2:3:4:5:6::8   1:2:3:4:5:6::8  1:2:3:4:5:6::1.2.3.4\n(?:" + v6seg + ":){5}(?::" + v4 + "|(?::" + v6seg + "){1,2}|:)|                   // 1:2:3:4:5::      1:2:3:4:5::7:8   1:2:3:4:5::8    1:2:3:4:5::7:1.2.3.4\n(?:" + v6seg + ":){4}(?:(?::" + v6seg + "){0,1}:" + v4 + "|(?::" + v6seg + "){1,3}|:)| // 1:2:3:4::        1:2:3:4::6:7:8   1:2:3:4::8      1:2:3:4::6:7:1.2.3.4\n(?:" + v6seg + ":){3}(?:(?::" + v6seg + "){0,2}:" + v4 + "|(?::" + v6seg + "){1,4}|:)| // 1:2:3::          1:2:3::5:6:7:8   1:2:3::8        1:2:3::5:6:7:1.2.3.4\n(?:" + v6seg + ":){2}(?:(?::" + v6seg + "){0,3}:" + v4 + "|(?::" + v6seg + "){1,5}|:)| // 1:2::            1:2::4:5:6:7:8   1:2::8          1:2::4:5:6:7:1.2.3.4\n(?:" + v6seg + ":){1}(?:(?::" + v6seg + "){0,4}:" + v4 + "|(?::" + v6seg + "){1,6}|:)| // 1::              1::3:4:5:6:7:8   1::8            1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::" + v6seg + "){0,5}:" + v4 + "|(?::" + v6seg + "){1,7}|:))             // ::2:3:4:5:6:7:8  ::2:3:4:5:6:7:8  ::8             ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})?                                             // %eth0            %1\n").replace(/\s*\/\/.*$/gm, "").replace(/\n/g, "").trim();
    var v46Exact = new RegExp("(?:^" + v4 + "$)|(?:^" + v6 + "$)");
    var v4exact = new RegExp("^" + v4 + "$");
    var v6exact = new RegExp("^" + v6 + "$");
    var ip = function ip2(options) {
      return options && options.exact ? v46Exact : new RegExp("(?:" + b2(options) + v4 + b2(options) + ")|(?:" + b2(options) + v6 + b2(options) + ")", "g");
    };
    ip.v4 = function(options) {
      return options && options.exact ? v4exact : new RegExp("" + b2(options) + v4 + b2(options), "g");
    };
    ip.v6 = function(options) {
      return options && options.exact ? v6exact : new RegExp("" + b2(options) + v6 + b2(options), "g");
    };
    var protocol = "(?:(?:[a-z]+:)?//)";
    var auth = "(?:\\S+(?::\\S*)?@)?";
    var ipv4 = ip.v4().source;
    var ipv6 = ip.v6().source;
    var host = "(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)";
    var domain = "(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*";
    var tld = "(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))";
    var port = "(?::\\d{2,5})?";
    var path = '(?:[/?#][^\\s"]*)?';
    var regex = "(?:" + protocol + "|www\\.)" + auth + "(?:localhost|" + ipv4 + "|" + ipv6 + "|" + host + domain + tld + ")" + port + path;
    urlReg = new RegExp("(?:^" + regex + "$)", "i");
    return urlReg;
  });
  var pattern$2 = {
    // http://emailregex.com/
    email: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,
    // url: new RegExp(
    //   '^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$',
    //   'i',
    // ),
    hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i
  };
  var types = {
    integer: function integer(value) {
      return types.number(value) && parseInt(value, 10) === value;
    },
    "float": function float(value) {
      return types.number(value) && !types.integer(value);
    },
    array: function array(value) {
      return Array.isArray(value);
    },
    regexp: function regexp(value) {
      if (value instanceof RegExp) {
        return true;
      }
      try {
        return !!new RegExp(value);
      } catch (e) {
        return false;
      }
    },
    date: function date(value) {
      return typeof value.getTime === "function" && typeof value.getMonth === "function" && typeof value.getYear === "function" && !isNaN(value.getTime());
    },
    number: function number(value) {
      if (isNaN(value)) {
        return false;
      }
      return typeof value === "number";
    },
    object: function object(value) {
      return typeof value === "object" && !types.array(value);
    },
    method: function method(value) {
      return typeof value === "function";
    },
    email: function email(value) {
      return typeof value === "string" && value.length <= 320 && !!value.match(pattern$2.email);
    },
    url: function url(value) {
      return typeof value === "string" && value.length <= 2048 && !!value.match(getUrlRegex());
    },
    hex: function hex(value) {
      return typeof value === "string" && !!value.match(pattern$2.hex);
    }
  };
  var type$1 = function type(rule, value, source, errors, options) {
    if (rule.required && value === void 0) {
      required$1(rule, value, source, errors, options);
      return;
    }
    var custom = ["integer", "float", "array", "regexp", "object", "method", "email", "number", "date", "url", "hex"];
    var ruleType = rule.type;
    if (custom.indexOf(ruleType) > -1) {
      if (!types[ruleType](value)) {
        errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));
      }
    } else if (ruleType && typeof value !== rule.type) {
      errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));
    }
  };
  var range = function range2(rule, value, source, errors, options) {
    var len = typeof rule.len === "number";
    var min2 = typeof rule.min === "number";
    var max2 = typeof rule.max === "number";
    var spRegexp = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
    var val = value;
    var key = null;
    var num = typeof value === "number";
    var str = typeof value === "string";
    var arr = Array.isArray(value);
    if (num) {
      key = "number";
    } else if (str) {
      key = "string";
    } else if (arr) {
      key = "array";
    }
    if (!key) {
      return false;
    }
    if (arr) {
      val = value.length;
    }
    if (str) {
      val = value.replace(spRegexp, "_").length;
    }
    if (len) {
      if (val !== rule.len) {
        errors.push(format(options.messages[key].len, rule.fullField, rule.len));
      }
    } else if (min2 && !max2 && val < rule.min) {
      errors.push(format(options.messages[key].min, rule.fullField, rule.min));
    } else if (max2 && !min2 && val > rule.max) {
      errors.push(format(options.messages[key].max, rule.fullField, rule.max));
    } else if (min2 && max2 && (val < rule.min || val > rule.max)) {
      errors.push(format(options.messages[key].range, rule.fullField, rule.min, rule.max));
    }
  };
  var ENUM$1 = "enum";
  var enumerable$1 = function enumerable(rule, value, source, errors, options) {
    rule[ENUM$1] = Array.isArray(rule[ENUM$1]) ? rule[ENUM$1] : [];
    if (rule[ENUM$1].indexOf(value) === -1) {
      errors.push(format(options.messages[ENUM$1], rule.fullField, rule[ENUM$1].join(", ")));
    }
  };
  var pattern$1 = function pattern(rule, value, source, errors, options) {
    if (rule.pattern) {
      if (rule.pattern instanceof RegExp) {
        rule.pattern.lastIndex = 0;
        if (!rule.pattern.test(value)) {
          errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));
        }
      } else if (typeof rule.pattern === "string") {
        var _pattern = new RegExp(rule.pattern);
        if (!_pattern.test(value)) {
          errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));
        }
      }
    }
  };
  var rules = {
    required: required$1,
    whitespace,
    type: type$1,
    range,
    "enum": enumerable$1,
    pattern: pattern$1
  };
  var string = function string2(rule, value, callback, source, options) {
    var errors = [];
    var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
    if (validate) {
      if (isEmptyValue(value, "string") && !rule.required) {
        return callback();
      }
      rules.required(rule, value, source, errors, options, "string");
      if (!isEmptyValue(value, "string")) {
        rules.type(rule, value, source, errors, options);
        rules.range(rule, value, source, errors, options);
        rules.pattern(rule, value, source, errors, options);
        if (rule.whitespace === true) {
          rules.whitespace(rule, value, source, errors, options);
        }
      }
    }
    callback(errors);
  };
  var method2 = function method3(rule, value, callback, source, options) {
    var errors = [];
    var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
    if (validate) {
      if (isEmptyValue(value) && !rule.required) {
        return callback();
      }
      rules.required(rule, value, source, errors, options);
      if (value !== void 0) {
        rules.type(rule, value, source, errors, options);
      }
    }
    callback(errors);
  };
  var number2 = function number3(rule, value, callback, source, options) {
    var errors = [];
    var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
    if (validate) {
      if (value === "") {
        value = void 0;
      }
      if (isEmptyValue(value) && !rule.required) {
        return callback();
      }
      rules.required(rule, value, source, errors, options);
      if (value !== void 0) {
        rules.type(rule, value, source, errors, options);
        rules.range(rule, value, source, errors, options);
      }
    }
    callback(errors);
  };
  var _boolean = function _boolean2(rule, value, callback, source, options) {
    var errors = [];
    var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
    if (validate) {
      if (isEmptyValue(value) && !rule.required) {
        return callback();
      }
      rules.required(rule, value, source, errors, options);
      if (value !== void 0) {
        rules.type(rule, value, source, errors, options);
      }
    }
    callback(errors);
  };
  var regexp2 = function regexp3(rule, value, callback, source, options) {
    var errors = [];
    var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
    if (validate) {
      if (isEmptyValue(value) && !rule.required) {
        return callback();
      }
      rules.required(rule, value, source, errors, options);
      if (!isEmptyValue(value)) {
        rules.type(rule, value, source, errors, options);
      }
    }
    callback(errors);
  };
  var integer2 = function integer3(rule, value, callback, source, options) {
    var errors = [];
    var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
    if (validate) {
      if (isEmptyValue(value) && !rule.required) {
        return callback();
      }
      rules.required(rule, value, source, errors, options);
      if (value !== void 0) {
        rules.type(rule, value, source, errors, options);
        rules.range(rule, value, source, errors, options);
      }
    }
    callback(errors);
  };
  var floatFn = function floatFn2(rule, value, callback, source, options) {
    var errors = [];
    var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
    if (validate) {
      if (isEmptyValue(value) && !rule.required) {
        return callback();
      }
      rules.required(rule, value, source, errors, options);
      if (value !== void 0) {
        rules.type(rule, value, source, errors, options);
        rules.range(rule, value, source, errors, options);
      }
    }
    callback(errors);
  };
  var array2 = function array3(rule, value, callback, source, options) {
    var errors = [];
    var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
    if (validate) {
      if ((value === void 0 || value === null) && !rule.required) {
        return callback();
      }
      rules.required(rule, value, source, errors, options, "array");
      if (value !== void 0 && value !== null) {
        rules.type(rule, value, source, errors, options);
        rules.range(rule, value, source, errors, options);
      }
    }
    callback(errors);
  };
  var object2 = function object3(rule, value, callback, source, options) {
    var errors = [];
    var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
    if (validate) {
      if (isEmptyValue(value) && !rule.required) {
        return callback();
      }
      rules.required(rule, value, source, errors, options);
      if (value !== void 0) {
        rules.type(rule, value, source, errors, options);
      }
    }
    callback(errors);
  };
  var ENUM = "enum";
  var enumerable2 = function enumerable3(rule, value, callback, source, options) {
    var errors = [];
    var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
    if (validate) {
      if (isEmptyValue(value) && !rule.required) {
        return callback();
      }
      rules.required(rule, value, source, errors, options);
      if (value !== void 0) {
        rules[ENUM](rule, value, source, errors, options);
      }
    }
    callback(errors);
  };
  var pattern2 = function pattern3(rule, value, callback, source, options) {
    var errors = [];
    var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
    if (validate) {
      if (isEmptyValue(value, "string") && !rule.required) {
        return callback();
      }
      rules.required(rule, value, source, errors, options);
      if (!isEmptyValue(value, "string")) {
        rules.pattern(rule, value, source, errors, options);
      }
    }
    callback(errors);
  };
  var date2 = function date3(rule, value, callback, source, options) {
    var errors = [];
    var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
    if (validate) {
      if (isEmptyValue(value, "date") && !rule.required) {
        return callback();
      }
      rules.required(rule, value, source, errors, options);
      if (!isEmptyValue(value, "date")) {
        var dateObject;
        if (value instanceof Date) {
          dateObject = value;
        } else {
          dateObject = new Date(value);
        }
        rules.type(rule, dateObject, source, errors, options);
        if (dateObject) {
          rules.range(rule, dateObject.getTime(), source, errors, options);
        }
      }
    }
    callback(errors);
  };
  var required2 = function required3(rule, value, callback, source, options) {
    var errors = [];
    var type4 = Array.isArray(value) ? "array" : typeof value;
    rules.required(rule, value, source, errors, options, type4);
    callback(errors);
  };
  var type2 = function type3(rule, value, callback, source, options) {
    var ruleType = rule.type;
    var errors = [];
    var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
    if (validate) {
      if (isEmptyValue(value, ruleType) && !rule.required) {
        return callback();
      }
      rules.required(rule, value, source, errors, options, ruleType);
      if (!isEmptyValue(value, ruleType)) {
        rules.type(rule, value, source, errors, options);
      }
    }
    callback(errors);
  };
  var any = function any2(rule, value, callback, source, options) {
    var errors = [];
    var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
    if (validate) {
      if (isEmptyValue(value) && !rule.required) {
        return callback();
      }
      rules.required(rule, value, source, errors, options);
    }
    callback(errors);
  };
  var validators = {
    string,
    method: method2,
    number: number2,
    "boolean": _boolean,
    regexp: regexp2,
    integer: integer2,
    "float": floatFn,
    array: array2,
    object: object2,
    "enum": enumerable2,
    pattern: pattern2,
    date: date2,
    url: type2,
    hex: type2,
    email: type2,
    required: required2,
    any
  };
  function newMessages() {
    return {
      "default": "Validation error on field %s",
      required: "%s is required",
      "enum": "%s must be one of %s",
      whitespace: "%s cannot be empty",
      date: {
        format: "%s date %s is invalid for format %s",
        parse: "%s date could not be parsed, %s is invalid ",
        invalid: "%s date %s is invalid"
      },
      types: {
        string: "%s is not a %s",
        method: "%s is not a %s (function)",
        array: "%s is not an %s",
        object: "%s is not an %s",
        number: "%s is not a %s",
        date: "%s is not a %s",
        "boolean": "%s is not a %s",
        integer: "%s is not an %s",
        "float": "%s is not a %s",
        regexp: "%s is not a valid %s",
        email: "%s is not a valid %s",
        url: "%s is not a valid %s",
        hex: "%s is not a valid %s"
      },
      string: {
        len: "%s must be exactly %s characters",
        min: "%s must be at least %s characters",
        max: "%s cannot be longer than %s characters",
        range: "%s must be between %s and %s characters"
      },
      number: {
        len: "%s must equal %s",
        min: "%s cannot be less than %s",
        max: "%s cannot be greater than %s",
        range: "%s must be between %s and %s"
      },
      array: {
        len: "%s must be exactly %s in length",
        min: "%s cannot be less than %s in length",
        max: "%s cannot be greater than %s in length",
        range: "%s must be between %s and %s in length"
      },
      pattern: {
        mismatch: "%s value %s does not match pattern %s"
      },
      clone: function clone2() {
        var cloned = JSON.parse(JSON.stringify(this));
        cloned.clone = this.clone;
        return cloned;
      }
    };
  }
  var messages = newMessages();
  var Schema = /* @__PURE__ */ (function() {
    function Schema2(descriptor) {
      this.rules = null;
      this._messages = messages;
      this.define(descriptor);
    }
    var _proto = Schema2.prototype;
    _proto.define = function define(rules2) {
      var _this = this;
      if (!rules2) {
        throw new Error("Cannot configure a schema with no rules");
      }
      if (typeof rules2 !== "object" || Array.isArray(rules2)) {
        throw new Error("Rules must be an object");
      }
      this.rules = {};
      Object.keys(rules2).forEach(function(name) {
        var item = rules2[name];
        _this.rules[name] = Array.isArray(item) ? item : [item];
      });
    };
    _proto.messages = function messages2(_messages) {
      if (_messages) {
        this._messages = deepMerge(newMessages(), _messages);
      }
      return this._messages;
    };
    _proto.validate = function validate(source_, o2, oc) {
      var _this2 = this;
      if (o2 === void 0) {
        o2 = {};
      }
      if (oc === void 0) {
        oc = function oc2() {
        };
      }
      var source = source_;
      var options = o2;
      var callback = oc;
      if (typeof options === "function") {
        callback = options;
        options = {};
      }
      if (!this.rules || Object.keys(this.rules).length === 0) {
        if (callback) {
          callback(null, source);
        }
        return Promise.resolve(source);
      }
      function complete(results) {
        var errors = [];
        var fields = {};
        function add(e) {
          if (Array.isArray(e)) {
            var _errors;
            errors = (_errors = errors).concat.apply(_errors, e);
          } else {
            errors.push(e);
          }
        }
        for (var i = 0; i < results.length; i++) {
          add(results[i]);
        }
        if (!errors.length) {
          callback(null, source);
        } else {
          fields = convertFieldsError(errors);
          callback(errors, fields);
        }
      }
      if (options.messages) {
        var messages$1 = this.messages();
        if (messages$1 === messages) {
          messages$1 = newMessages();
        }
        deepMerge(messages$1, options.messages);
        options.messages = messages$1;
      } else {
        options.messages = this.messages();
      }
      var series = {};
      var keys2 = options.keys || Object.keys(this.rules);
      keys2.forEach(function(z) {
        var arr = _this2.rules[z];
        var value = source[z];
        arr.forEach(function(r) {
          var rule = r;
          if (typeof rule.transform === "function") {
            if (source === source_) {
              source = _extends({}, source);
            }
            value = source[z] = rule.transform(value);
          }
          if (typeof rule === "function") {
            rule = {
              validator: rule
            };
          } else {
            rule = _extends({}, rule);
          }
          rule.validator = _this2.getValidationMethod(rule);
          if (!rule.validator) {
            return;
          }
          rule.field = z;
          rule.fullField = rule.fullField || z;
          rule.type = _this2.getType(rule);
          series[z] = series[z] || [];
          series[z].push({
            rule,
            value,
            source,
            field: z
          });
        });
      });
      var errorFields = {};
      return asyncMap(series, options, function(data, doIt) {
        var rule = data.rule;
        var deep = (rule.type === "object" || rule.type === "array") && (typeof rule.fields === "object" || typeof rule.defaultField === "object");
        deep = deep && (rule.required || !rule.required && data.value);
        rule.field = data.field;
        function addFullField(key, schema) {
          return _extends({}, schema, {
            fullField: rule.fullField + "." + key,
            fullFields: rule.fullFields ? [].concat(rule.fullFields, [key]) : [key]
          });
        }
        function cb(e) {
          if (e === void 0) {
            e = [];
          }
          var errorList = Array.isArray(e) ? e : [e];
          if (!options.suppressWarning && errorList.length) {
            Schema2.warning("async-validator:", errorList);
          }
          if (errorList.length && rule.message !== void 0) {
            errorList = [].concat(rule.message);
          }
          var filledErrors = errorList.map(complementError(rule, source));
          if (options.first && filledErrors.length) {
            errorFields[rule.field] = 1;
            return doIt(filledErrors);
          }
          if (!deep) {
            doIt(filledErrors);
          } else {
            if (rule.required && !data.value) {
              if (rule.message !== void 0) {
                filledErrors = [].concat(rule.message).map(complementError(rule, source));
              } else if (options.error) {
                filledErrors = [options.error(rule, format(options.messages.required, rule.field))];
              }
              return doIt(filledErrors);
            }
            var fieldsSchema = {};
            if (rule.defaultField) {
              Object.keys(data.value).map(function(key) {
                fieldsSchema[key] = rule.defaultField;
              });
            }
            fieldsSchema = _extends({}, fieldsSchema, data.rule.fields);
            var paredFieldsSchema = {};
            Object.keys(fieldsSchema).forEach(function(field) {
              var fieldSchema = fieldsSchema[field];
              var fieldSchemaList = Array.isArray(fieldSchema) ? fieldSchema : [fieldSchema];
              paredFieldsSchema[field] = fieldSchemaList.map(addFullField.bind(null, field));
            });
            var schema = new Schema2(paredFieldsSchema);
            schema.messages(options.messages);
            if (data.rule.options) {
              data.rule.options.messages = options.messages;
              data.rule.options.error = options.error;
            }
            schema.validate(data.value, data.rule.options || options, function(errs) {
              var finalErrors = [];
              if (filledErrors && filledErrors.length) {
                finalErrors.push.apply(finalErrors, filledErrors);
              }
              if (errs && errs.length) {
                finalErrors.push.apply(finalErrors, errs);
              }
              doIt(finalErrors.length ? finalErrors : null);
            });
          }
        }
        var res;
        if (rule.asyncValidator) {
          res = rule.asyncValidator(rule, data.value, cb, data.source, options);
        } else if (rule.validator) {
          try {
            res = rule.validator(rule, data.value, cb, data.source, options);
          } catch (error) {
            console.error == null ? void 0 : console.error(error);
            if (!options.suppressValidatorError) {
              setTimeout(function() {
                throw error;
              }, 0);
            }
            cb(error.message);
          }
          if (res === true) {
            cb();
          } else if (res === false) {
            cb(typeof rule.message === "function" ? rule.message(rule.fullField || rule.field) : rule.message || (rule.fullField || rule.field) + " fails");
          } else if (res instanceof Array) {
            cb(res);
          } else if (res instanceof Error) {
            cb(res.message);
          }
        }
        if (res && res.then) {
          res.then(function() {
            return cb();
          }, function(e) {
            return cb(e);
          });
        }
      }, function(results) {
        complete(results);
      }, source);
    };
    _proto.getType = function getType(rule) {
      if (rule.type === void 0 && rule.pattern instanceof RegExp) {
        rule.type = "pattern";
      }
      if (typeof rule.validator !== "function" && rule.type && !validators.hasOwnProperty(rule.type)) {
        throw new Error(format("Unknown rule type %s", rule.type));
      }
      return rule.type || "string";
    };
    _proto.getValidationMethod = function getValidationMethod(rule) {
      if (typeof rule.validator === "function") {
        return rule.validator;
      }
      var keys2 = Object.keys(rule);
      var messageIndex = keys2.indexOf("message");
      if (messageIndex !== -1) {
        keys2.splice(messageIndex, 1);
      }
      if (keys2.length === 1 && keys2[0] === "required") {
        return validators.required;
      }
      return validators[this.getType(rule)] || void 0;
    };
    return Schema2;
  })();
  Schema.register = function register(type4, validator) {
    if (typeof validator !== "function") {
      throw new Error("Cannot register a validator by type, validator is not a function");
    }
    validators[type4] = validator;
  };
  Schema.warning = warning;
  Schema.messages = messages;
  Schema.validators = validators;
  const COMPONENT_NAME$c = "ElLabelWrap";
  var FormLabelWrap = /* @__PURE__ */ defineComponent({
    name: COMPONENT_NAME$c,
    props: {
      isAutoWidth: Boolean,
      updateAll: Boolean
    },
    setup(props2, {
      slots
    }) {
      const formContext = inject(formContextKey, void 0);
      const formItemContext = inject(formItemContextKey);
      if (!formItemContext) throwError(COMPONENT_NAME$c, "usage: <el-form-item><label-wrap /></el-form-item>");
      const ns = useNamespace("form");
      const el = ref();
      const computedWidth = ref(0);
      const getLabelWidth = () => {
        var _a;
        if ((_a = el.value) == null ? void 0 : _a.firstElementChild) {
          const width = window.getComputedStyle(el.value.firstElementChild).width;
          return Math.ceil(Number.parseFloat(width));
        } else {
          return 0;
        }
      };
      const updateLabelWidth = (action = "update") => {
        nextTick(() => {
          if (slots.default && props2.isAutoWidth) {
            if (action === "update") {
              computedWidth.value = getLabelWidth();
            } else if (action === "remove") {
              formContext == null ? void 0 : formContext.deregisterLabelWidth(computedWidth.value);
            }
          }
        });
      };
      const updateLabelWidthFn = () => updateLabelWidth("update");
      onMounted(() => {
        updateLabelWidthFn();
      });
      onBeforeUnmount(() => {
        updateLabelWidth("remove");
      });
      onUpdated(() => updateLabelWidthFn());
      watch(computedWidth, (val, oldVal) => {
        if (props2.updateAll) {
          formContext == null ? void 0 : formContext.registerLabelWidth(val, oldVal);
        }
      });
      useResizeObserver(computed(() => {
        var _a, _b;
        return (_b = (_a = el.value) == null ? void 0 : _a.firstElementChild) != null ? _b : null;
      }), updateLabelWidthFn);
      return () => {
        var _a, _b;
        if (!slots) return null;
        const {
          isAutoWidth
        } = props2;
        if (isAutoWidth) {
          const autoLabelWidth = formContext == null ? void 0 : formContext.autoLabelWidth;
          const hasLabel = formItemContext == null ? void 0 : formItemContext.hasLabel;
          const style = {};
          if (hasLabel && autoLabelWidth && autoLabelWidth !== "auto") {
            const marginWidth = Math.max(0, Number.parseInt(autoLabelWidth, 10) - computedWidth.value);
            const labelPosition = formItemContext.labelPosition || formContext.labelPosition;
            const marginPosition = labelPosition === "left" ? "marginRight" : "marginLeft";
            if (marginWidth) {
              style[marginPosition] = `${marginWidth}px`;
            }
          }
          return createVNode("div", {
            "ref": el,
            "class": [ns.be("item", "label-wrap")],
            "style": style
          }, [(_a = slots.default) == null ? void 0 : _a.call(slots)]);
        } else {
          return createVNode(Fragment, {
            "ref": el
          }, [(_b = slots.default) == null ? void 0 : _b.call(slots)]);
        }
      };
    }
  });
  const _hoisted_1$1p = ["role", "aria-labelledby"];
  var _sfc_main$1Y = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElFormItem"
    },
    __name: "form-item",
    props: formItemProps,
    setup(__props, { expose: __expose }) {
      const props2 = __props;
      const slots = useSlots();
      const formContext = inject(formContextKey, void 0);
      const parentFormItemContext = inject(formItemContextKey, void 0);
      const _size = useFormSize(void 0, { formItem: false });
      const ns = useNamespace("form-item");
      const labelId = useId().value;
      const inputIds = ref([]);
      const validateState = ref("");
      const validateStateDebounced = refDebounced(validateState, 100);
      const validateMessage = ref("");
      const formItemRef = ref();
      let initialValue = void 0;
      let isResettingField = false;
      const labelPosition = computed(
        () => props2.labelPosition || (formContext == null ? void 0 : formContext.labelPosition)
      );
      const labelStyle = computed(() => {
        var _a;
        if (labelPosition.value === "top") {
          return {};
        }
        const labelWidth = addUnit((_a = props2.labelWidth) != null ? _a : formContext == null ? void 0 : formContext.labelWidth);
        return { width: labelWidth };
      });
      const contentStyle = computed(() => {
        var _a;
        if (labelPosition.value === "top" || (formContext == null ? void 0 : formContext.inline)) {
          return {};
        }
        if (!props2.label && !props2.labelWidth && isNested) {
          return {};
        }
        const labelWidth = addUnit((_a = props2.labelWidth) != null ? _a : formContext == null ? void 0 : formContext.labelWidth);
        if (!props2.label && !slots.label) {
          return { marginLeft: labelWidth };
        }
        return {};
      });
      const formItemClasses = computed(() => [
        ns.b(),
        ns.m(_size.value),
        ns.is("error", validateState.value === "error"),
        ns.is("validating", validateState.value === "validating"),
        ns.is("success", validateState.value === "success"),
        ns.is("required", isRequired.value || props2.required),
        ns.is("no-asterisk", formContext == null ? void 0 : formContext.hideRequiredAsterisk),
        (formContext == null ? void 0 : formContext.requireAsteriskPosition) === "right" ? "asterisk-right" : "asterisk-left",
        {
          [ns.m("feedback")]: formContext == null ? void 0 : formContext.statusIcon,
          [ns.m(`label-${labelPosition.value}`)]: labelPosition.value
        }
      ]);
      const _inlineMessage = computed(
        () => isBoolean(props2.inlineMessage) ? props2.inlineMessage : (formContext == null ? void 0 : formContext.inlineMessage) || false
      );
      const validateClasses = computed(() => [
        ns.e("error"),
        { [ns.em("error", "inline")]: _inlineMessage.value }
      ]);
      const propString = computed(() => {
        if (!props2.prop) return "";
        return isArray$1(props2.prop) ? props2.prop.join(".") : props2.prop;
      });
      const hasLabel = computed(() => {
        return !!(props2.label || slots.label);
      });
      const labelFor = computed(() => {
        var _a;
        return (_a = props2.for) != null ? _a : inputIds.value.length === 1 ? inputIds.value[0] : void 0;
      });
      const isGroup = computed(() => {
        return !labelFor.value && hasLabel.value;
      });
      const isNested = !!parentFormItemContext;
      const fieldValue = computed(() => {
        const model = formContext == null ? void 0 : formContext.model;
        if (!model || !props2.prop) {
          return;
        }
        return getProp(model, props2.prop).value;
      });
      const normalizedRules = computed(() => {
        const { required } = props2;
        const rules2 = [];
        if (props2.rules) {
          rules2.push(...castArray$1(props2.rules));
        }
        const formRules = formContext == null ? void 0 : formContext.rules;
        if (formRules && props2.prop) {
          const _rules = getProp(
            formRules,
            props2.prop
          ).value;
          if (_rules) {
            rules2.push(...castArray$1(_rules));
          }
        }
        if (required !== void 0) {
          const requiredRules = rules2.map((rule, i) => [rule, i]).filter(([rule]) => "required" in rule);
          if (requiredRules.length > 0) {
            for (const [rule, i] of requiredRules) {
              if (rule.required === required) continue;
              rules2[i] = { ...rule, required };
            }
          } else {
            rules2.push({ required });
          }
        }
        return rules2;
      });
      const validateEnabled = computed(() => normalizedRules.value.length > 0);
      const getFilteredRule = (trigger2) => {
        const rules2 = normalizedRules.value;
        return rules2.filter((rule) => {
          if (!rule.trigger || !trigger2) return true;
          if (isArray$1(rule.trigger)) {
            return rule.trigger.includes(trigger2);
          } else {
            return rule.trigger === trigger2;
          }
        }).map(({ trigger: trigger22, ...rule }) => rule);
      };
      const isRequired = computed(
        () => normalizedRules.value.some((rule) => rule.required)
      );
      const shouldShowError = computed(
        () => {
          var _a;
          return validateStateDebounced.value === "error" && props2.showMessage && ((_a = formContext == null ? void 0 : formContext.showMessage) != null ? _a : true);
        }
      );
      const currentLabel = computed(
        () => `${props2.label || ""}${(formContext == null ? void 0 : formContext.labelSuffix) || ""}`
      );
      const setValidationState = (state) => {
        validateState.value = state;
      };
      const onValidationFailed = (error) => {
        var _a, _b;
        const { errors, fields } = error;
        if (!errors || !fields) {
          console.error(error);
        }
        setValidationState("error");
        validateMessage.value = errors ? (_b = (_a = errors == null ? void 0 : errors[0]) == null ? void 0 : _a.message) != null ? _b : `${props2.prop} is required` : "";
        formContext == null ? void 0 : formContext.emit("validate", props2.prop, false, validateMessage.value);
      };
      const onValidationSucceeded = () => {
        setValidationState("success");
        formContext == null ? void 0 : formContext.emit("validate", props2.prop, true, "");
      };
      const doValidate = async (rules2) => {
        const modelName = propString.value;
        const validator = new Schema({
          [modelName]: rules2
        });
        return validator.validate({ [modelName]: fieldValue.value }, { firstFields: true }).then(() => {
          onValidationSucceeded();
          return true;
        }).catch((err) => {
          onValidationFailed(err);
          return Promise.reject(err);
        });
      };
      const validate = async (trigger2, callback) => {
        if (isResettingField || !props2.prop) {
          return false;
        }
        const hasCallback = isFunction$1(callback);
        if (!validateEnabled.value) {
          callback == null ? void 0 : callback(false);
          return false;
        }
        const rules2 = getFilteredRule(trigger2);
        if (rules2.length === 0) {
          callback == null ? void 0 : callback(true);
          return true;
        }
        setValidationState("validating");
        return doValidate(rules2).then(() => {
          callback == null ? void 0 : callback(true);
          return true;
        }).catch((err) => {
          const { fields } = err;
          callback == null ? void 0 : callback(false, fields);
          return hasCallback ? false : Promise.reject(fields);
        });
      };
      const clearValidate = () => {
        setValidationState("");
        validateMessage.value = "";
        isResettingField = false;
      };
      const resetField = async () => {
        const model = formContext == null ? void 0 : formContext.model;
        if (!model || !props2.prop) return;
        const computedValue = getProp(model, props2.prop);
        isResettingField = true;
        computedValue.value = clone(initialValue);
        await nextTick();
        clearValidate();
        isResettingField = false;
      };
      const addInputId = (id) => {
        if (!inputIds.value.includes(id)) {
          inputIds.value.push(id);
        }
      };
      const removeInputId = (id) => {
        inputIds.value = inputIds.value.filter((listId) => listId !== id);
      };
      const setInitialValue = (value) => {
        initialValue = clone(value);
      };
      watch(
        () => props2.error,
        (val) => {
          validateMessage.value = val || "";
          setValidationState(val ? "error" : "");
        },
        { immediate: true }
      );
      watch(
        () => props2.validateStatus,
        (val) => setValidationState(val || "")
      );
      const context = reactive({
        ...toRefs(props2),
        $el: formItemRef,
        size: _size,
        validateMessage,
        validateState,
        labelId,
        inputIds,
        isGroup,
        hasLabel,
        fieldValue,
        addInputId,
        removeInputId,
        resetField,
        clearValidate,
        validate,
        propString,
        setInitialValue
      });
      provide(formItemContextKey, context);
      onMounted(() => {
        if (props2.prop) {
          formContext == null ? void 0 : formContext.addField(context);
          initialValue = clone(fieldValue.value);
        }
      });
      onBeforeUnmount(() => {
        formContext == null ? void 0 : formContext.removeField(context);
      });
      __expose({
        /**
         * @description Form item size.
         */
        size: _size,
        /**
         * @description Validation message.
         */
        validateMessage,
        /**
         * @description Validation state.
         */
        validateState,
        /**
         * @description Validate form item.
         */
        validate,
        /**
         * @description Remove validation status of the field.
         */
        clearValidate,
        /**
         * @description Reset current field and remove validation result.
         */
        resetField,
        /**
         * @description Set initial value for this field. When `resetField` is called, the field will reset to this value.
         */
        setInitialValue
      });
      return (_ctx, _cache) => {
        var _a;
        return openBlock(), createElementBlock("div", {
          ref_key: "formItemRef",
          ref: formItemRef,
          class: normalizeClass(formItemClasses.value),
          role: isGroup.value ? "group" : void 0,
          "aria-labelledby": isGroup.value ? unref(labelId) : void 0
        }, [
          createVNode(unref(FormLabelWrap), {
            "is-auto-width": labelStyle.value.width === "auto",
            "update-all": ((_a = unref(formContext)) == null ? void 0 : _a.labelWidth) === "auto"
          }, {
            default: withCtx(() => [
              !!(__props.label || _ctx.$slots.label) ? (openBlock(), createBlock(resolveDynamicComponent(labelFor.value ? "label" : "div"), {
                key: 0,
                id: unref(labelId),
                for: labelFor.value,
                class: normalizeClass(unref(ns).e("label")),
                style: normalizeStyle(labelStyle.value)
              }, {
                default: withCtx(() => [
                  renderSlot(_ctx.$slots, "label", { label: currentLabel.value }, () => [
                    createTextVNode(
                      toDisplayString(currentLabel.value),
                      1
                      /* TEXT */
                    )
                  ])
                ]),
                _: 3
                /* FORWARDED */
              }, 8, ["id", "for", "class", "style"])) : createCommentVNode("v-if", true)
            ]),
            _: 3
            /* FORWARDED */
          }, 8, ["is-auto-width", "update-all"]),
          createBaseVNode(
            "div",
            {
              class: normalizeClass(unref(ns).e("content")),
              style: normalizeStyle(contentStyle.value)
            },
            [
              renderSlot(_ctx.$slots, "default"),
              createVNode(TransitionGroup, {
                name: `${unref(ns).namespace.value}-zoom-in-top`
              }, {
                default: withCtx(() => [
                  shouldShowError.value ? renderSlot(_ctx.$slots, "error", {
                    key: 0,
                    error: validateMessage.value
                  }, () => [
                    createBaseVNode(
                      "div",
                      {
                        class: normalizeClass(validateClasses.value)
                      },
                      toDisplayString(validateMessage.value),
                      3
                      /* TEXT, CLASS */
                    )
                  ]) : createCommentVNode("v-if", true)
                ]),
                _: 3
                /* FORWARDED */
              }, 8, ["name"])
            ],
            6
            /* CLASS, STYLE */
          )
        ], 10, _hoisted_1$1p);
      };
    }
  });
  const ElForm = withInstall(_sfc_main$1Z, {
    FormItem: _sfc_main$1Y
  });
  const ElFormItem = withNoopInstall(_sfc_main$1Y);
  const imageProps = buildProps({
    /**
     * @description when enabling preview, use this flag to control whether clicking on backdrop can exit preview mode.
     */
    hideOnClickModal: Boolean,
    /**
     * @description image source, same as native.
     */
    src: {
      type: String,
      default: ""
    },
    /**
     * @description indicate how the image should be resized to fit its container, same as [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit).
     */
    fit: {
      type: String,
      values: ["", "contain", "cover", "fill", "none", "scale-down"],
      default: ""
    },
    /**
     * @description Indicates how the browser should load the image, same as [native](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/img#loading)
     */
    loading: {
      type: String,
      values: ["eager", "lazy"]
    },
    /**
     * @description whether to use lazy load.
     */
    lazy: Boolean,
    /**
     * @description the container to add scroll listener when using lazy load.
     */
    scrollContainer: {
      type: definePropType([String, Object])
    },
    /**
     * @description allow big image preview.
     */
    previewSrcList: {
      type: definePropType(Array),
      default: () => mutable([])
    },
    /**
     * @description whether to append image-viewer to body. A nested parent element attribute transform should have this attribute set to `true`.
     */
    previewTeleported: Boolean,
    /**
     * @description set image preview z-index.
     */
    zIndex: {
      type: Number
    },
    /**
     * @description initial preview image index, less than the length of `url-list`.
     */
    initialIndex: {
      type: Number,
      default: 0
    },
    /**
     * @description whether the viewer preview is infinite.
     */
    infinite: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether the image-viewer can be closed by pressing ESC.
     */
    closeOnPressEscape: {
      type: Boolean,
      default: true
    },
    /**
     * @description the zoom rate of the image viewer zoom event
     */
    zoomRate: {
      type: Number,
      default: 1.2
    },
    /**
     * @description preview image scale.
     */
    scale: {
      type: Number,
      default: 1
    },
    /**
     * @description the min scale of the image viewer zoom event.
     */
    minScale: {
      type: Number,
      default: 0.2
    },
    /**
     * @description the max scale of the image viewer zoom event.
     */
    maxScale: {
      type: Number,
      default: 7
    },
    /**
     * @description show preview image progress content.
     */
    showProgress: Boolean,
    /**
     * @description set HTML attribute: crossorigin.
     */
    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 imageViewerProps = buildProps({
    /**
     * @description preview link list.
     */
    urlList: {
      type: definePropType(Array),
      default: () => mutable([])
    },
    /**
     * @description preview backdrop z-index.
     */
    zIndex: {
      type: Number
    },
    /**
     * @description the initial preview image index, less than or equal to the length of `url-list`.
     */
    initialIndex: {
      type: Number,
      default: 0
    },
    /**
     * @description whether preview is infinite.
     */
    infinite: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether user can emit close event when clicking backdrop.
     */
    hideOnClickModal: Boolean,
    /**
     * @description whether to append image itself to body. A nested parent element attribute transform should have this attribute set to `true`.
     */
    teleported: Boolean,
    /**
     * @description whether the image-viewer can be closed by pressing ESC.
     */
    closeOnPressEscape: {
      type: Boolean,
      default: true
    },
    /**
     * @description the zoom rate of the image viewer zoom event.
     */
    zoomRate: {
      type: Number,
      default: 1.2
    },
    /**
     * @description preview image scale.
     */
    scale: {
      type: Number,
      default: 1
    },
    /**
     * @description the min scale of the image viewer zoom event.
     */
    minScale: {
      type: Number,
      default: 0.2
    },
    /**
     * @description the max scale of the image viewer zoom event.
     */
    maxScale: {
      type: Number,
      default: 7
    },
    /**
     * @description show preview image progress content.
     */
    showProgress: Boolean,
    /**
     * @description set HTML attribute: crossorigin.
     */
    crossorigin: {
      type: definePropType(String)
    }
  });
  const imageViewerEmits = {
    close: () => true,
    error: (evt) => evt instanceof Event,
    switch: (index) => isNumber(index),
    rotate: (deg) => isNumber(deg)
  };
  const _hoisted_1$1o = ["src", "crossorigin"];
  var _sfc_main$1X = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElImageViewer"
    },
    __name: "image-viewer",
    props: imageViewerProps,
    emits: imageViewerEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      var _a;
      const modes = {
        CONTAIN: {
          name: "contain",
          icon: markRaw(full_screen_default)
        },
        ORIGINAL: {
          name: "original",
          icon: markRaw(scale_to_original_default)
        }
      };
      const props2 = __props;
      const emit2 = __emit;
      let stopWheelListener;
      const { t } = useLocale();
      const ns = useNamespace("image-viewer");
      const { nextZIndex } = useZIndex();
      const wrapper = ref();
      const imgRef = ref();
      const scopeEventListener = effectScope();
      const scaleClamped = computed(() => {
        const { scale, minScale, maxScale } = props2;
        return clamp$1(scale, minScale, maxScale);
      });
      const loading = ref(true);
      const loadError = ref(false);
      const visible = ref(false);
      const activeIndex = ref(props2.initialIndex);
      const mode = shallowRef(modes.CONTAIN);
      const transform = ref({
        scale: scaleClamped.value,
        deg: 0,
        offsetX: 0,
        offsetY: 0,
        enableTransition: false
      });
      const zIndex2 = ref((_a = props2.zIndex) != null ? _a : nextZIndex());
      useLockscreen(visible, { ns });
      const isSingle = computed(() => {
        const { urlList } = props2;
        return urlList.length <= 1;
      });
      const isFirst = computed(() => activeIndex.value === 0);
      const isLast = computed(() => activeIndex.value === props2.urlList.length - 1);
      const currentImg = computed(() => props2.urlList[activeIndex.value]);
      const arrowPrevKls = computed(() => [
        ns.e("btn"),
        ns.e("prev"),
        ns.is("disabled", !props2.infinite && isFirst.value)
      ]);
      const arrowNextKls = computed(() => [
        ns.e("btn"),
        ns.e("next"),
        ns.is("disabled", !props2.infinite && isLast.value)
      ]);
      const imgStyle = computed(() => {
        const { scale, deg, offsetX, offsetY, enableTransition } = transform.value;
        let translateX = offsetX / scale;
        let translateY = offsetY / scale;
        const radian = deg * Math.PI / 180;
        const cosRadian = Math.cos(radian);
        const sinRadian = Math.sin(radian);
        translateX = translateX * cosRadian + translateY * sinRadian;
        translateY = translateY * cosRadian - offsetX / scale * sinRadian;
        const style = {
          transform: `scale(${scale}) rotate(${deg}deg) translate(${translateX}px, ${translateY}px)`,
          transition: enableTransition ? "transform .3s" : ""
        };
        if (mode.value.name === modes.CONTAIN.name) {
          style.maxWidth = style.maxHeight = "100%";
        }
        return style;
      });
      const progress = computed(
        () => `${activeIndex.value + 1} / ${props2.urlList.length}`
      );
      function hide() {
        unregisterEventListener();
        stopWheelListener == null ? void 0 : stopWheelListener();
        visible.value = false;
        emit2("close");
      }
      function registerEventListener() {
        const keydownHandler = throttle((e) => {
          const code = getEventCode(e);
          switch (code) {
            // ESC
            case EVENT_CODE.esc:
              props2.closeOnPressEscape && hide();
              break;
            // SPACE
            case EVENT_CODE.space:
              toggleMode();
              break;
            // LEFT_ARROW
            case EVENT_CODE.left:
              prev();
              break;
            // UP_ARROW
            case EVENT_CODE.up:
              handleActions("zoomIn");
              break;
            // RIGHT_ARROW
            case EVENT_CODE.right:
              next();
              break;
            // DOWN_ARROW
            case EVENT_CODE.down:
              handleActions("zoomOut");
              break;
          }
        });
        const mousewheelHandler = throttle((e) => {
          const delta = e.deltaY || e.deltaX;
          handleActions(delta < 0 ? "zoomIn" : "zoomOut", {
            zoomRate: props2.zoomRate,
            enableTransition: false
          });
        });
        scopeEventListener.run(() => {
          useEventListener(document, "keydown", keydownHandler);
          useEventListener(wrapper, "wheel", mousewheelHandler);
        });
      }
      function unregisterEventListener() {
        scopeEventListener.stop();
      }
      function handleImgLoad() {
        loading.value = false;
      }
      function handleImgError(e) {
        loadError.value = true;
        loading.value = false;
        emit2("error", e);
        e.target.alt = t("el.image.error");
      }
      function handleMouseDown(e) {
        if (loading.value || e.button !== 0 || !wrapper.value) return;
        transform.value.enableTransition = false;
        const { offsetX, offsetY } = transform.value;
        const startX = e.pageX;
        const startY = e.pageY;
        const dragHandler = throttle((ev) => {
          transform.value = {
            ...transform.value,
            offsetX: offsetX + ev.pageX - startX,
            offsetY: offsetY + ev.pageY - startY
          };
        });
        const removeMousemove = useEventListener(document, "mousemove", dragHandler);
        const removeMouseup = useEventListener(document, "mouseup", () => {
          removeMousemove();
          removeMouseup();
        });
        e.preventDefault();
      }
      function handleTouchStart(e) {
        if (loading.value || !wrapper.value || e.touches.length !== 1) return;
        transform.value.enableTransition = false;
        const { offsetX, offsetY } = transform.value;
        const { pageX: startX, pageY: startY } = e.touches[0];
        const dragHandler = throttle((ev) => {
          const targetTouch = ev.touches[0];
          transform.value = {
            ...transform.value,
            offsetX: offsetX + targetTouch.pageX - startX,
            offsetY: offsetY + targetTouch.pageY - startY
          };
        });
        const removeTouchmove = useEventListener(document, "touchmove", dragHandler);
        const removeTouchend = useEventListener(document, "touchend", () => {
          removeTouchmove();
          removeTouchend();
        });
        e.preventDefault();
      }
      function reset() {
        transform.value = {
          scale: scaleClamped.value,
          deg: 0,
          offsetX: 0,
          offsetY: 0,
          enableTransition: false
        };
      }
      function toggleMode() {
        if (loading.value || loadError.value) return;
        const modeNames = keysOf(modes);
        const modeValues = Object.values(modes);
        const currentMode = mode.value.name;
        const index = modeValues.findIndex((i) => i.name === currentMode);
        const nextIndex = (index + 1) % modeNames.length;
        mode.value = modes[modeNames[nextIndex]];
        reset();
      }
      function setActiveItem(index) {
        loadError.value = false;
        const len = props2.urlList.length;
        activeIndex.value = (index + len) % len;
      }
      function prev() {
        if (isFirst.value && !props2.infinite) return;
        setActiveItem(activeIndex.value - 1);
      }
      function next() {
        if (isLast.value && !props2.infinite) return;
        setActiveItem(activeIndex.value + 1);
      }
      function handleActions(action, options = {}) {
        if (loading.value || loadError.value) return;
        const { minScale, maxScale } = props2;
        const { zoomRate, rotateDeg, enableTransition } = {
          zoomRate: props2.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;
            emit2("rotate", transform.value.deg);
            break;
          case "anticlockwise":
            transform.value.deg -= rotateDeg;
            emit2("rotate", transform.value.deg);
            break;
        }
        transform.value.enableTransition = enableTransition;
      }
      function onFocusoutPrevented(event) {
        var _a2;
        if (((_a2 = event.detail) == null ? void 0 : _a2.focusReason) === "pointer") {
          event.preventDefault();
        }
      }
      function onCloseRequested() {
        if (props2.closeOnPressEscape) {
          hide();
        }
      }
      function wheelHandler(e) {
        if (!e.ctrlKey) return;
        if (e.deltaY < 0) {
          e.preventDefault();
          return false;
        } else if (e.deltaY > 0) {
          e.preventDefault();
          return false;
        }
      }
      watch(
        () => scaleClamped.value,
        (val) => {
          transform.value.scale = val;
        }
      );
      watch(currentImg, () => {
        nextTick(() => {
          const $img = imgRef.value;
          if (!($img == null ? void 0 : $img.complete)) {
            loading.value = true;
          }
        });
      });
      watch(activeIndex, (val) => {
        reset();
        emit2("switch", val);
      });
      onMounted(() => {
        visible.value = true;
        registerEventListener();
        stopWheelListener = useEventListener("wheel", wheelHandler, {
          passive: false
        });
      });
      __expose({
        /**
         * @description manually switch image
         */
        setActiveItem
      });
      return (_ctx, _cache) => {
        return openBlock(), createBlock(unref(ElTeleport), {
          to: "body",
          disabled: !__props.teleported
        }, {
          default: withCtx(() => [
            createVNode(Transition, {
              name: "viewer-fade",
              appear: ""
            }, {
              default: withCtx(() => [
                createBaseVNode(
                  "div",
                  {
                    ref_key: "wrapper",
                    ref: wrapper,
                    tabindex: -1,
                    class: normalizeClass(unref(ns).e("wrapper")),
                    style: normalizeStyle({ zIndex: zIndex2.value })
                  },
                  [
                    createVNode(unref(ElFocusTrap), {
                      loop: "",
                      trapped: "",
                      "focus-trap-el": wrapper.value,
                      "focus-start-el": "container",
                      onFocusoutPrevented,
                      onReleaseRequested: onCloseRequested
                    }, {
                      default: withCtx(() => [
                        createBaseVNode(
                          "div",
                          {
                            class: normalizeClass(unref(ns).e("mask")),
                            onClick: _cache[0] || (_cache[0] = withModifiers(($event) => __props.hideOnClickModal && hide(), ["self"]))
                          },
                          null,
                          2
                          /* CLASS */
                        ),
                        createCommentVNode(" CLOSE "),
                        createBaseVNode(
                          "span",
                          {
                            class: normalizeClass([unref(ns).e("btn"), unref(ns).e("close")]),
                            onClick: hide
                          },
                          [
                            createVNode(unref(ElIcon), null, {
                              default: withCtx(() => [
                                createVNode(unref(close_default))
                              ]),
                              _: 1
                              /* STABLE */
                            })
                          ],
                          2
                          /* CLASS */
                        ),
                        createCommentVNode(" ARROW "),
                        !isSingle.value ? (openBlock(), createElementBlock(
                          Fragment,
                          { key: 0 },
                          [
                            createBaseVNode(
                              "span",
                              {
                                class: normalizeClass(arrowPrevKls.value),
                                onClick: prev
                              },
                              [
                                createVNode(unref(ElIcon), null, {
                                  default: withCtx(() => [
                                    createVNode(unref(arrow_left_default))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                })
                              ],
                              2
                              /* CLASS */
                            ),
                            createBaseVNode(
                              "span",
                              {
                                class: normalizeClass(arrowNextKls.value),
                                onClick: next
                              },
                              [
                                createVNode(unref(ElIcon), null, {
                                  default: withCtx(() => [
                                    createVNode(unref(arrow_right_default))
                                  ]),
                                  _: 1
                                  /* STABLE */
                                })
                              ],
                              2
                              /* CLASS */
                            )
                          ],
                          64
                          /* STABLE_FRAGMENT */
                        )) : createCommentVNode("v-if", true),
                        _ctx.$slots.progress || __props.showProgress ? (openBlock(), createElementBlock(
                          "div",
                          {
                            key: 1,
                            class: normalizeClass([unref(ns).e("btn"), unref(ns).e("progress")])
                          },
                          [
                            renderSlot(_ctx.$slots, "progress", {
                              activeIndex: activeIndex.value,
                              total: __props.urlList.length
                            }, () => [
                              createTextVNode(
                                toDisplayString(progress.value),
                                1
                                /* TEXT */
                              )
                            ])
                          ],
                          2
                          /* CLASS */
                        )) : createCommentVNode("v-if", true),
                        createCommentVNode(" ACTIONS "),
                        createBaseVNode(
                          "div",
                          {
                            class: normalizeClass([unref(ns).e("btn"), unref(ns).e("actions")])
                          },
                          [
                            createBaseVNode(
                              "div",
                              {
                                class: normalizeClass(unref(ns).e("actions__inner"))
                              },
                              [
                                renderSlot(_ctx.$slots, "toolbar", {
                                  actions: handleActions,
                                  prev,
                                  next,
                                  reset: toggleMode,
                                  activeIndex: activeIndex.value,
                                  setActiveItem
                                }, () => [
                                  createVNode(unref(ElIcon), {
                                    onClick: _cache[1] || (_cache[1] = ($event) => handleActions("zoomOut"))
                                  }, {
                                    default: withCtx(() => [
                                      createVNode(unref(zoom_out_default))
                                    ]),
                                    _: 1
                                    /* STABLE */
                                  }),
                                  createVNode(unref(ElIcon), {
                                    onClick: _cache[2] || (_cache[2] = ($event) => handleActions("zoomIn"))
                                  }, {
                                    default: withCtx(() => [
                                      createVNode(unref(zoom_in_default))
                                    ]),
                                    _: 1
                                    /* STABLE */
                                  }),
                                  createBaseVNode(
                                    "i",
                                    {
                                      class: normalizeClass(unref(ns).e("actions__divider"))
                                    },
                                    null,
                                    2
                                    /* CLASS */
                                  ),
                                  createVNode(unref(ElIcon), { onClick: toggleMode }, {
                                    default: withCtx(() => [
                                      (openBlock(), createBlock(resolveDynamicComponent(mode.value.icon)))
                                    ]),
                                    _: 1
                                    /* STABLE */
                                  }),
                                  createBaseVNode(
                                    "i",
                                    {
                                      class: normalizeClass(unref(ns).e("actions__divider"))
                                    },
                                    null,
                                    2
                                    /* CLASS */
                                  ),
                                  createVNode(unref(ElIcon), {
                                    onClick: _cache[3] || (_cache[3] = ($event) => handleActions("anticlockwise"))
                                  }, {
                                    default: withCtx(() => [
                                      createVNode(unref(refresh_left_default))
                                    ]),
                                    _: 1
                                    /* STABLE */
                                  }),
                                  createVNode(unref(ElIcon), {
                                    onClick: _cache[4] || (_cache[4] = ($event) => handleActions("clockwise"))
                                  }, {
                                    default: withCtx(() => [
                                      createVNode(unref(refresh_right_default))
                                    ]),
                                    _: 1
                                    /* STABLE */
                                  })
                                ])
                              ],
                              2
                              /* CLASS */
                            )
                          ],
                          2
                          /* CLASS */
                        ),
                        createCommentVNode(" CANVAS "),
                        createBaseVNode(
                          "div",
                          {
                            class: normalizeClass(unref(ns).e("canvas"))
                          },
                          [
                            loadError.value && _ctx.$slots["viewer-error"] ? renderSlot(_ctx.$slots, "viewer-error", {
                              key: 0,
                              activeIndex: activeIndex.value,
                              src: currentImg.value
                            }) : (openBlock(), createElementBlock("img", {
                              ref_key: "imgRef",
                              ref: imgRef,
                              key: currentImg.value,
                              src: currentImg.value,
                              style: normalizeStyle(imgStyle.value),
                              class: normalizeClass(unref(ns).e("img")),
                              crossorigin: __props.crossorigin,
                              onLoad: handleImgLoad,
                              onError: handleImgError,
                              onMousedown: handleMouseDown,
                              onTouchstart: handleTouchStart
                            }, null, 46, _hoisted_1$1o))
                          ],
                          2
                          /* CLASS */
                        ),
                        renderSlot(_ctx.$slots, "default")
                      ]),
                      _: 3
                      /* FORWARDED */
                    }, 8, ["focus-trap-el"])
                  ],
                  6
                  /* CLASS, STYLE */
                )
              ]),
              _: 3
              /* FORWARDED */
            })
          ]),
          _: 3
          /* FORWARDED */
        }, 8, ["disabled"]);
      };
    }
  });
  const ElImageViewer = withInstall(_sfc_main$1X);
  const _hoisted_1$1n = ["src", "loading", "crossorigin"];
  const _hoisted_2$19 = { key: 0 };
  var _sfc_main$1W = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElImage",
      inheritAttrs: false
    },
    __name: "image",
    props: imageProps,
    emits: imageEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const { t } = useLocale();
      const ns = useNamespace("image");
      const rawAttrs = useAttrs$1();
      const containerAttrs = 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: computed(() => {
          return Object.keys(containerAttrs.value);
        })
      });
      const imageSrc = ref();
      const hasLoadError = ref(false);
      const isLoading2 = ref(true);
      const showViewer = ref(false);
      const container = ref();
      const _scrollContainer = ref();
      const supportLoading = isClient && "loading" in HTMLImageElement.prototype;
      let stopScrollListener;
      const imageKls = computed(() => [
        ns.e("inner"),
        preview.value && ns.e("preview"),
        isLoading2.value && ns.is("loading")
      ]);
      const imageStyle = computed(() => {
        const { fit } = props2;
        if (isClient && fit) {
          return { objectFit: fit };
        }
        return {};
      });
      const preview = computed(() => {
        const { previewSrcList } = props2;
        return isArray$1(previewSrcList) && previewSrcList.length > 0;
      });
      const imageIndex = computed(() => {
        const { previewSrcList, initialIndex } = props2;
        let previewIndex = initialIndex;
        if (initialIndex > previewSrcList.length - 1) {
          previewIndex = 0;
        }
        return previewIndex;
      });
      const isManual = computed(() => {
        if (props2.loading === "eager") return false;
        return !supportLoading && props2.loading === "lazy" || props2.lazy;
      });
      const loadImage = () => {
        if (!isClient) return;
        isLoading2.value = true;
        hasLoadError.value = false;
        imageSrc.value = props2.src;
      };
      function handleLoad(event) {
        isLoading2.value = false;
        hasLoadError.value = false;
        emit2("load", event);
      }
      function handleError2(event) {
        isLoading2.value = false;
        hasLoadError.value = true;
        emit2("error", event);
      }
      function handleLazyLoad(isIntersecting) {
        if (isIntersecting) {
          loadImage();
          removeLazyLoadListener();
        }
      }
      const lazyLoadHandler = useThrottleFn(handleLazyLoad, 200, true);
      async function addLazyLoadListener() {
        var _a;
        if (!isClient) return;
        await nextTick();
        const { scrollContainer } = props2;
        if (isElement$1(scrollContainer)) {
          _scrollContainer.value = scrollContainer;
        } else if (isString(scrollContainer) && scrollContainer !== "") {
          _scrollContainer.value = (_a = document.querySelector(scrollContainer)) != null ? _a : void 0;
        } else if (container.value) {
          const scrollContainer2 = getScrollContainer(container.value);
          _scrollContainer.value = isWindow(scrollContainer2) ? void 0 : scrollContainer2;
        }
        const { stop } = useIntersectionObserver(
          container,
          ([entry]) => {
            lazyLoadHandler(entry.isIntersecting);
          },
          { root: _scrollContainer }
        );
        stopScrollListener = stop;
      }
      function removeLazyLoadListener() {
        if (!isClient || !lazyLoadHandler) return;
        stopScrollListener == null ? void 0 : stopScrollListener();
        _scrollContainer.value = void 0;
        stopScrollListener = void 0;
      }
      function clickHandler() {
        if (!preview.value) return;
        showViewer.value = true;
        emit2("show");
      }
      function closeViewer() {
        showViewer.value = false;
        emit2("close");
      }
      function switchViewer(val) {
        emit2("switch", val);
      }
      watch(
        () => props2.src,
        () => {
          if (isManual.value) {
            isLoading2.value = true;
            hasLoadError.value = false;
            removeLazyLoadListener();
            addLazyLoadListener();
          } else {
            loadImage();
          }
        }
      );
      onMounted(() => {
        if (isManual.value) {
          addLazyLoadListener();
        } else {
          loadImage();
        }
      });
      __expose({
        /** @description manually open preview */
        showPreview: clickHandler
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          mergeProps({
            ref_key: "container",
            ref: container
          }, containerAttrs.value, {
            class: [unref(ns).b(), _ctx.$attrs.class]
          }),
          [
            hasLoadError.value ? renderSlot(_ctx.$slots, "error", { key: 0 }, () => [
              createBaseVNode(
                "div",
                {
                  class: normalizeClass(unref(ns).e("error"))
                },
                toDisplayString(unref(t)("el.image.error")),
                3
                /* TEXT, CLASS */
              )
            ]) : (openBlock(), createElementBlock(
              Fragment,
              { key: 1 },
              [
                imageSrc.value !== void 0 ? (openBlock(), createElementBlock("img", mergeProps({ key: 0 }, unref(imgAttrs), {
                  src: imageSrc.value,
                  loading: __props.loading,
                  style: imageStyle.value,
                  class: imageKls.value,
                  crossorigin: __props.crossorigin,
                  onClick: clickHandler,
                  onLoad: handleLoad,
                  onError: handleError2
                }), null, 16, _hoisted_1$1n)) : createCommentVNode("v-if", true),
                isLoading2.value ? (openBlock(), createElementBlock(
                  "div",
                  {
                    key: 1,
                    class: normalizeClass(unref(ns).e("wrapper"))
                  },
                  [
                    renderSlot(_ctx.$slots, "placeholder", {}, () => [
                      createBaseVNode(
                        "div",
                        {
                          class: normalizeClass(unref(ns).e("placeholder"))
                        },
                        null,
                        2
                        /* CLASS */
                      )
                    ])
                  ],
                  2
                  /* CLASS */
                )) : createCommentVNode("v-if", true)
              ],
              64
              /* STABLE_FRAGMENT */
            )),
            preview.value ? (openBlock(), createElementBlock(
              Fragment,
              { key: 2 },
              [
                showViewer.value ? (openBlock(), createBlock(unref(ElImageViewer), {
                  key: 0,
                  "z-index": __props.zIndex,
                  "initial-index": imageIndex.value,
                  infinite: __props.infinite,
                  "zoom-rate": __props.zoomRate,
                  "min-scale": __props.minScale,
                  "max-scale": __props.maxScale,
                  "show-progress": __props.showProgress,
                  "url-list": __props.previewSrcList,
                  scale: __props.scale,
                  crossorigin: __props.crossorigin,
                  "hide-on-click-modal": __props.hideOnClickModal,
                  teleported: __props.previewTeleported,
                  "close-on-press-escape": __props.closeOnPressEscape,
                  onClose: closeViewer,
                  onSwitch: switchViewer
                }, createSlots({
                  toolbar: withCtx((toolbar) => [
                    renderSlot(_ctx.$slots, "toolbar", normalizeProps(guardReactiveProps(toolbar)))
                  ]),
                  default: withCtx(() => [
                    _ctx.$slots.viewer ? (openBlock(), createElementBlock("div", _hoisted_2$19, [
                      renderSlot(_ctx.$slots, "viewer")
                    ])) : createCommentVNode("v-if", true)
                  ]),
                  _: 2
                  /* DYNAMIC */
                }, [
                  _ctx.$slots.progress ? {
                    name: "progress",
                    fn: withCtx((progress) => [
                      renderSlot(_ctx.$slots, "progress", normalizeProps(guardReactiveProps(progress)))
                    ]),
                    key: "0"
                  } : void 0,
                  _ctx.$slots["viewer-error"] ? {
                    name: "viewer-error",
                    fn: withCtx((viewerError) => [
                      renderSlot(_ctx.$slots, "viewer-error", normalizeProps(guardReactiveProps(viewerError)))
                    ]),
                    key: "1"
                  } : void 0
                ]), 1032, ["z-index", "initial-index", "infinite", "zoom-rate", "min-scale", "max-scale", "show-progress", "url-list", "scale", "crossorigin", "hide-on-click-modal", "teleported", "close-on-press-escape"])) : createCommentVNode("v-if", true)
              ],
              64
              /* STABLE_FRAGMENT */
            )) : createCommentVNode("v-if", true)
          ],
          16
          /* FULL_PROPS */
        );
      };
    }
  });
  const ElImage = withInstall(_sfc_main$1W);
  const inputNumberProps = buildProps({
    /**
     * @description same as `id` in native input
     */
    id: {
      type: String,
      default: void 0
    },
    /**
     * @description incremental step
     */
    step: {
      type: Number,
      default: 1
    },
    /**
     * @description whether input value can only be multiple of step
     */
    stepStrictly: Boolean,
    /**
     * @description the maximum allowed value
     */
    max: {
      type: Number,
      default: Number.MAX_SAFE_INTEGER
    },
    /**
     * @description the minimum allowed value
     */
    min: {
      type: Number,
      default: Number.MIN_SAFE_INTEGER
    },
    /**
     * @description binding value
     */
    modelValue: {
      type: [Number, null]
    },
    /**
     * @description same as `readonly` in native input
     */
    readonly: Boolean,
    /**
     * @description whether the component is disabled
     */
    disabled: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description size of the component
     */
    size: useSizeProp,
    /**
     * @description whether to enable the control buttons
     */
    controls: {
      type: Boolean,
      default: true
    },
    /**
     * @description position of the control buttons
     */
    controlsPosition: {
      type: String,
      default: "",
      values: ["", "right"]
    },
    /**
     * @description value should be set when input box is cleared
     */
    valueOnClear: {
      type: definePropType([String, Number, null]),
      validator: (val) => val === null || isNumber(val) || ["min", "max"].includes(val),
      default: null
    },
    /**
     * @description same as `name` in native input
     */
    name: String,
    /**
     * @description same as `placeholder` in native input
     */
    placeholder: String,
    /**
     * @description precision of input value
     */
    precision: {
      type: Number,
      validator: (val) => val >= 0 && val === Number.parseInt(`${val}`, 10)
    },
    /**
     * @description whether to trigger form validation
     */
    validateEvent: {
      type: Boolean,
      default: true
    },
    ...useAriaProps(["ariaLabel"]),
    /**
     * @description native input mode for virtual keyboards
     */
    inputmode: {
      type: definePropType(String),
      default: void 0
    },
    /**
     * @description alignment for the inner input text
     */
    align: {
      type: definePropType(String),
      default: "center"
    },
    /**
     * @description whether to disable scientific notation input (e.g. 'e', 'E')
     */
    disabledScientific: Boolean
  });
  const inputNumberEmits = {
    [CHANGE_EVENT]: (cur, prev) => prev !== cur,
    blur: (e) => e instanceof FocusEvent,
    focus: (e) => e instanceof FocusEvent,
    [INPUT_EVENT]: (val) => isNumber(val) || isNil(val),
    [UPDATE_MODEL_EVENT]: (val) => isNumber(val) || isNil(val)
  };
  const _hoisted_1$1m = ["aria-label"];
  const _hoisted_2$18 = ["aria-label"];
  var _sfc_main$1V = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElInputNumber"
    },
    __name: "input-number",
    props: inputNumberProps,
    emits: inputNumberEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const { t } = useLocale();
      const ns = useNamespace("input-number");
      const input = ref();
      const data = reactive({
        currentValue: props2.modelValue,
        userInput: null
      });
      const { formItem } = useFormItem();
      const minDisabled = computed(
        () => isNumber(props2.modelValue) && props2.modelValue <= props2.min
      );
      const maxDisabled = computed(
        () => isNumber(props2.modelValue) && props2.modelValue >= props2.max
      );
      const numPrecision = computed(() => {
        const stepPrecision = getPrecision(props2.step);
        if (!isUndefined(props2.precision)) {
          if (stepPrecision > props2.precision) ;
          return props2.precision;
        } else {
          return Math.max(getPrecision(props2.modelValue), stepPrecision);
        }
      });
      const controlsAtRight = computed(() => {
        return props2.controls && props2.controlsPosition === "right";
      });
      const inputNumberSize = useFormSize();
      const inputNumberDisabled = useFormDisabled();
      const displayValue = 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(props2.precision)) {
            currentValue = currentValue.toFixed(props2.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;
        if (val >= Number.MAX_SAFE_INTEGER && coefficient === 1) {
          return val;
        } else if (val <= Number.MIN_SAFE_INTEGER && coefficient === -1) {
          return val;
        }
        return toPrecision(val + props2.step * coefficient);
      };
      const handleKeydown = (event) => {
        const code = getEventCode(event);
        const key = getEventKey(event);
        if (props2.disabledScientific && ["e", "E"].includes(key)) {
          event.preventDefault();
          return;
        }
        switch (code) {
          case EVENT_CODE.up: {
            event.preventDefault();
            increase();
            break;
          }
          case EVENT_CODE.down: {
            event.preventDefault();
            decrease();
            break;
          }
        }
      };
      const increase = () => {
        if (props2.readonly || inputNumberDisabled.value || maxDisabled.value) return;
        const value = Number(displayValue.value) || 0;
        const newVal = ensurePrecision(value);
        setCurrentValue(newVal);
        emit2(INPUT_EVENT, data.currentValue);
        setCurrentValueToModelValue();
      };
      const decrease = () => {
        if (props2.readonly || inputNumberDisabled.value || minDisabled.value) return;
        const value = Number(displayValue.value) || 0;
        const newVal = ensurePrecision(value, -1);
        setCurrentValue(newVal);
        emit2(INPUT_EVENT, data.currentValue);
        setCurrentValueToModelValue();
      };
      const verifyValue = (value, update) => {
        const { max: max2, min: min2, step: step2, precision, stepStrictly, valueOnClear } = props2;
        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(toPrecision(newVal / step2)) * step2,
            precision
          );
          if (newVal !== value) {
            update && emit2(UPDATE_MODEL_EVENT, newVal);
          }
        }
        if (!isUndefined(precision)) {
          newVal = toPrecision(newVal, precision);
        }
        if (newVal > max2 || newVal < min2) {
          newVal = newVal > max2 ? max2 : min2;
          update && emit2(UPDATE_MODEL_EVENT, newVal);
        }
        return newVal;
      };
      const setCurrentValue = (value, emitChange = true) => {
        var _a;
        const oldVal = data.currentValue;
        const newVal = verifyValue(value);
        if (!emitChange) {
          emit2(UPDATE_MODEL_EVENT, newVal);
          return;
        }
        data.userInput = null;
        if (oldVal === newVal && value) return;
        emit2(UPDATE_MODEL_EVENT, newVal);
        if (oldVal !== newVal) {
          emit2(CHANGE_EVENT, newVal, oldVal);
        }
        if (props2.validateEvent) {
          (_a = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a.call(formItem, "change").catch((err) => debugWarn());
        }
        data.currentValue = newVal;
      };
      const handleInput = (value) => {
        data.userInput = value;
        const newVal = value === "" ? null : Number(value);
        emit2(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 _a, _b;
        (_b = (_a = input.value) == null ? void 0 : _a.focus) == null ? void 0 : _b.call(_a);
      };
      const blur = () => {
        var _a, _b;
        (_b = (_a = input.value) == null ? void 0 : _a.blur) == null ? void 0 : _b.call(_a);
      };
      const handleFocus = (event) => {
        emit2("focus", event);
      };
      const handleBlur = (event) => {
        var _a, _b;
        data.userInput = null;
        if (data.currentValue === null && ((_a = input.value) == null ? void 0 : _a.input)) {
          input.value.input.value = "";
        }
        emit2("blur", event);
        if (props2.validateEvent) {
          (_b = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _b.call(formItem, "blur").catch((err) => debugWarn());
        }
      };
      const setCurrentValueToModelValue = () => {
        if (data.currentValue !== props2.modelValue) {
          data.currentValue = props2.modelValue;
        }
      };
      const handleWheel = (e) => {
        if (document.activeElement === e.target) e.preventDefault();
      };
      watch(
        () => props2.modelValue,
        (value, oldValue) => {
          const newValue = verifyValue(value, true);
          if (data.userInput === null && newValue !== oldValue) {
            data.currentValue = newValue;
          }
        },
        { immediate: true }
      );
      watch(
        () => props2.precision,
        () => {
          data.currentValue = verifyValue(props2.modelValue);
        }
      );
      onMounted(() => {
        var _a;
        const { min: min2, max: max2, modelValue } = props2;
        const innerInput = (_a = input.value) == null ? void 0 : _a.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;
          }
          emit2(UPDATE_MODEL_EVENT, val);
        }
        innerInput.addEventListener("wheel", handleWheel, { passive: false });
      });
      onUpdated(() => {
        var _a, _b;
        const innerInput = (_a = input.value) == null ? void 0 : _a.input;
        innerInput == null ? void 0 : innerInput.setAttribute("aria-valuenow", `${(_b = data.currentValue) != null ? _b : ""}`);
      });
      __expose({
        /** @description get focus the input component */
        focus,
        /** @description remove focus the input component */
        blur
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass([
              unref(ns).b(),
              unref(ns).m(unref(inputNumberSize)),
              unref(ns).is("disabled", unref(inputNumberDisabled)),
              unref(ns).is("without-controls", !__props.controls),
              unref(ns).is("controls-right", controlsAtRight.value),
              unref(ns).is(__props.align, !!__props.align)
            ]),
            onDragstart: _cache[0] || (_cache[0] = withModifiers(() => {
            }, ["prevent"]))
          },
          [
            __props.controls ? withDirectives((openBlock(), createElementBlock("span", {
              key: 0,
              role: "button",
              "aria-label": unref(t)("el.inputNumber.decrease"),
              class: normalizeClass([unref(ns).e("decrease"), unref(ns).is("disabled", minDisabled.value)]),
              onKeydown: withKeys(decrease, ["enter"])
            }, [
              renderSlot(_ctx.$slots, "decrease-icon", {}, () => [
                createVNode(unref(ElIcon), null, {
                  default: withCtx(() => [
                    controlsAtRight.value ? (openBlock(), createBlock(unref(arrow_down_default), { key: 0 })) : (openBlock(), createBlock(unref(minus_default), { key: 1 }))
                  ]),
                  _: 1
                  /* STABLE */
                })
              ])
            ], 42, _hoisted_1$1m)), [
              [unref(vRepeatClick), decrease]
            ]) : createCommentVNode("v-if", true),
            __props.controls ? withDirectives((openBlock(), createElementBlock("span", {
              key: 1,
              role: "button",
              "aria-label": unref(t)("el.inputNumber.increase"),
              class: normalizeClass([unref(ns).e("increase"), unref(ns).is("disabled", maxDisabled.value)]),
              onKeydown: withKeys(increase, ["enter"])
            }, [
              renderSlot(_ctx.$slots, "increase-icon", {}, () => [
                createVNode(unref(ElIcon), null, {
                  default: withCtx(() => [
                    controlsAtRight.value ? (openBlock(), createBlock(unref(arrow_up_default), { key: 0 })) : (openBlock(), createBlock(unref(plus_default), { key: 1 }))
                  ]),
                  _: 1
                  /* STABLE */
                })
              ])
            ], 42, _hoisted_2$18)), [
              [unref(vRepeatClick), increase]
            ]) : createCommentVNode("v-if", true),
            createVNode(unref(ElInput), {
              id: __props.id,
              ref_key: "input",
              ref: input,
              type: "number",
              step: __props.step,
              "model-value": displayValue.value,
              placeholder: __props.placeholder,
              readonly: __props.readonly,
              disabled: unref(inputNumberDisabled),
              size: unref(inputNumberSize),
              max: __props.max,
              min: __props.min,
              name: __props.name,
              "aria-label": __props.ariaLabel,
              "validate-event": false,
              inputmode: __props.inputmode,
              onKeydown: handleKeydown,
              onBlur: handleBlur,
              onFocus: handleFocus,
              onInput: handleInput,
              onChange: handleInputChange
            }, createSlots({
              _: 2
              /* DYNAMIC */
            }, [
              _ctx.$slots.prefix ? {
                name: "prefix",
                fn: withCtx(() => [
                  renderSlot(_ctx.$slots, "prefix")
                ]),
                key: "0"
              } : void 0,
              _ctx.$slots.suffix ? {
                name: "suffix",
                fn: withCtx(() => [
                  renderSlot(_ctx.$slots, "suffix")
                ]),
                key: "1"
              } : void 0
            ]), 1032, ["id", "step", "model-value", "placeholder", "readonly", "disabled", "size", "max", "min", "name", "aria-label", "inputmode"])
          ],
          34
          /* CLASS, NEED_HYDRATION */
        );
      };
    }
  });
  const ElInputNumber = withInstall(_sfc_main$1V);
  const inputTagProps = buildProps({
    /**
     * @description binding value
     */
    modelValue: {
      type: definePropType(Array)
    },
    /**
     * @description max number tags that can be enter
     */
    max: Number,
    /**
     * @description tag type
     */
    tagType: { ...tagProps.type, default: "info" },
    /**
     * @description tag effect
     */
    tagEffect: tagProps.effect,
    /**
     * @description tooltip theme, built-in theme: `dark` / `light`
     */
    effect: {
      type: definePropType(String),
      default: "light"
    },
    /**
     * @description the key to trigger input tag
     */
    trigger: {
      type: definePropType(String),
      default: EVENT_CODE.enter
    },
    /**
     * @description whether tags can be dragged
     */
    draggable: Boolean,
    /**
     * @description add a tag when a delimiter is matched
     */
    delimiter: {
      type: [String, RegExp],
      default: ""
    },
    /**
     * @description input box size
     */
    size: useSizeProp,
    /**
     * @description whether to show clear button
     */
    clearable: Boolean,
    /**
     * @description custom clear icon component
     */
    clearIcon: {
      type: iconPropType,
      default: circle_close_default
    },
    /**
     * @description whether to disable input-tag
     */
    disabled: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description whether to trigger form validation
     */
    validateEvent: {
      type: Boolean,
      default: true
    },
    /**
     * @description native input readonly
     */
    readonly: Boolean,
    /**
     * @description native input autofocus
     */
    autofocus: Boolean,
    /**
     * @description same as `id` in native input
     */
    id: {
      type: String,
      default: void 0
    },
    /**
     * @description same as `tabindex` in native input
     */
    tabindex: {
      type: [String, Number],
      default: 0
    },
    /**
     * @description same as `maxlength` in native input
     */
    maxlength: {
      type: [String, Number]
    },
    /**
     * @description same as `minlength` in native input
     */
    minlength: {
      type: [String, Number]
    },
    /**
     * @description placeholder of input
     */
    placeholder: String,
    /**
     * @description native input autocomplete
     */
    autocomplete: {
      type: definePropType(String),
      default: "off"
    },
    /**
     * @description whether to save the input value when the input loses focus
     */
    saveOnBlur: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether to collapse tags to a text
     */
    collapseTags: Boolean,
    /**
     * @description whether show all selected tags when mouse hover text of collapse-tags. To use this, `collapse-tags` must be true
     */
    collapseTagsTooltip: Boolean,
    /**
     * @description the max tags number to be shown. To use this, `collapse-tags` must be true
     */
    maxCollapseTags: {
      type: Number,
      default: 1
    },
    /**
     * @description native `aria-label` attribute
     */
    ariaLabel: String
  });
  const inputTagEmits = {
    [UPDATE_MODEL_EVENT]: (value) => isArray$1(value) || isUndefined(value),
    [CHANGE_EVENT]: (value) => isArray$1(value) || isUndefined(value),
    [INPUT_EVENT]: (value) => isString(value),
    "add-tag": (value) => isString(value) || isArray$1(value),
    "remove-tag": (value, index) => isString(value) && isNumber(index),
    "drag-tag": (oldIndex, newIndex, value) => isNumber(oldIndex) && isNumber(newIndex) && isString(value),
    focus: (evt) => evt instanceof FocusEvent,
    blur: (evt) => evt instanceof FocusEvent,
    clear: () => true
  };
  function useInputTag({ props: props2, emit: emit2, formItem }) {
    const disabled = useFormDisabled();
    const size = useFormSize();
    const inputRef = shallowRef();
    const inputValue = ref();
    const tagTooltipRef = ref();
    const tagSize = computed(() => {
      return ["small"].includes(size.value) ? "small" : "default";
    });
    const placeholder = computed(() => {
      var _a;
      return ((_a = props2.modelValue) == null ? void 0 : _a.length) ? void 0 : props2.placeholder;
    });
    const closable = computed(() => !(props2.readonly || disabled.value));
    const inputLimit = computed(() => {
      var _a, _b;
      return isUndefined(props2.max) ? false : ((_b = (_a = props2.modelValue) == null ? void 0 : _a.length) != null ? _b : 0) >= props2.max;
    });
    const showTagList = computed(() => {
      var _a;
      return props2.collapseTags ? (_a = props2.modelValue) == null ? void 0 : _a.slice(0, props2.maxCollapseTags) : props2.modelValue;
    });
    const collapseTagList = computed(() => {
      var _a;
      return props2.collapseTags ? (_a = props2.modelValue) == null ? void 0 : _a.slice(props2.maxCollapseTags) : [];
    });
    const addTagsEmit = (value) => {
      var _a;
      const list = [...(_a = props2.modelValue) != null ? _a : [], ...castArray$1(value)];
      emit2(UPDATE_MODEL_EVENT, list);
      emit2(CHANGE_EVENT, list);
      emit2("add-tag", value);
      inputValue.value = void 0;
    };
    const getDelimitedTags = (input) => {
      var _a, _b;
      const tags = input.split(props2.delimiter).filter((val) => val && val !== input);
      if (props2.max) {
        const maxInsert = props2.max - ((_b = (_a = props2.modelValue) == null ? void 0 : _a.length) != null ? _b : 0);
        tags.splice(maxInsert);
      }
      return tags.length === 1 ? tags[0] : tags;
    };
    const handleInput = (event) => {
      if (inputLimit.value) {
        inputValue.value = void 0;
        return;
      }
      if (isComposing.value) return;
      if (props2.delimiter && inputValue.value) {
        const tags = getDelimitedTags(inputValue.value);
        if (tags.length) {
          addTagsEmit(tags);
        }
      }
      emit2(INPUT_EVENT, event.target.value);
    };
    const handleKeydown = (event) => {
      var _a;
      if (isComposing.value) return;
      const code = getEventCode(event);
      switch (code) {
        case props2.trigger:
          event.preventDefault();
          event.stopPropagation();
          handleAddTag();
          break;
        case EVENT_CODE.numpadEnter:
          if (props2.trigger === EVENT_CODE.enter) {
            event.preventDefault();
            event.stopPropagation();
            handleAddTag();
          }
          break;
        case EVENT_CODE.backspace:
          if (!inputValue.value && ((_a = props2.modelValue) == null ? void 0 : _a.length)) {
            event.preventDefault();
            event.stopPropagation();
            handleRemoveTag(props2.modelValue.length - 1);
          }
          break;
      }
    };
    const handleKeyup = (event) => {
      if (isComposing.value || !isAndroid()) return;
      const code = getEventCode(event);
      switch (code) {
        case EVENT_CODE.space:
          if (props2.trigger === EVENT_CODE.space) {
            event.preventDefault();
            event.stopPropagation();
            handleAddTag();
          }
          break;
      }
    };
    const handleAddTag = () => {
      var _a;
      const value = (_a = inputValue.value) == null ? void 0 : _a.trim();
      if (!value || inputLimit.value) return;
      addTagsEmit(value);
    };
    const handleRemoveTag = (index) => {
      var _a;
      const value = ((_a = props2.modelValue) != null ? _a : []).slice();
      const [item] = value.splice(index, 1);
      emit2(UPDATE_MODEL_EVENT, value);
      emit2(CHANGE_EVENT, value);
      emit2("remove-tag", item, index);
    };
    const handleClear = () => {
      inputValue.value = void 0;
      emit2(UPDATE_MODEL_EVENT, void 0);
      emit2(CHANGE_EVENT, void 0);
      emit2("clear");
    };
    const handleDragged = (draggingIndex, dropIndex, type) => {
      var _a;
      const value = ((_a = props2.modelValue) != null ? _a : []).slice();
      const [draggedItem] = value.splice(draggingIndex, 1);
      const step2 = dropIndex > draggingIndex && type === "before" ? -1 : dropIndex < draggingIndex && type === "after" ? 1 : 0;
      value.splice(dropIndex + step2, 0, draggedItem);
      emit2(UPDATE_MODEL_EVENT, value);
      emit2(CHANGE_EVENT, value);
      emit2("drag-tag", draggingIndex, dropIndex + step2, draggedItem);
    };
    const focus = () => {
      var _a;
      (_a = inputRef.value) == null ? void 0 : _a.focus();
    };
    const blur = () => {
      var _a;
      (_a = inputRef.value) == null ? void 0 : _a.blur();
    };
    const { wrapperRef, isFocused } = useFocusController(inputRef, {
      disabled,
      beforeBlur(event) {
        var _a;
        return (_a = tagTooltipRef.value) == null ? void 0 : _a.isFocusInsideContent(event);
      },
      afterBlur() {
        var _a;
        if (props2.saveOnBlur) {
          handleAddTag();
        } else {
          inputValue.value = void 0;
        }
        if (props2.validateEvent) {
          (_a = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a.call(formItem, "blur").catch((err) => debugWarn());
        }
      }
    });
    const {
      isComposing,
      handleCompositionStart,
      handleCompositionUpdate,
      handleCompositionEnd
    } = useComposition({ afterComposition: handleInput });
    watch(
      () => props2.modelValue,
      () => {
        var _a;
        if (props2.validateEvent) {
          (_a = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a.call(formItem, CHANGE_EVENT).catch((err) => debugWarn());
        }
      }
    );
    return {
      inputRef,
      wrapperRef,
      tagTooltipRef,
      isFocused,
      isComposing,
      inputValue,
      size,
      tagSize,
      placeholder,
      closable,
      disabled,
      inputLimit,
      showTagList,
      collapseTagList,
      handleDragged,
      handleInput,
      handleKeydown,
      handleKeyup,
      handleAddTag,
      handleRemoveTag,
      handleClear,
      handleCompositionStart,
      handleCompositionUpdate,
      handleCompositionEnd,
      focus,
      blur
    };
  }
  function useHovering() {
    const hovering = ref(false);
    const handleMouseEnter = () => {
      hovering.value = true;
    };
    const handleMouseLeave = () => {
      hovering.value = false;
    };
    return {
      hovering,
      handleMouseEnter,
      handleMouseLeave
    };
  }
  function useDragTag({
    wrapperRef,
    handleDragged,
    afterDragged
  }) {
    const ns = useNamespace("input-tag");
    const dropIndicatorRef = shallowRef();
    const showDropIndicator = ref(false);
    let draggingIndex;
    let draggingTag;
    let dropIndex;
    let dropType;
    function getTagClassName(index) {
      return `.${ns.e("inner")} .${ns.namespace.value}-tag:nth-child(${index + 1})`;
    }
    function handleDragStart(event, index) {
      draggingIndex = index;
      draggingTag = wrapperRef.value.querySelector(
        getTagClassName(index)
      );
      if (draggingTag) {
        draggingTag.style.opacity = "0.5";
      }
      event.dataTransfer.effectAllowed = "move";
    }
    function handleDragOver(event, index) {
      dropIndex = index;
      event.preventDefault();
      event.dataTransfer.dropEffect = "move";
      if (isUndefined(draggingIndex) || draggingIndex === index) {
        showDropIndicator.value = false;
        return;
      }
      const dropPosition = wrapperRef.value.querySelector(getTagClassName(index)).getBoundingClientRect();
      const dropPrev = !(draggingIndex + 1 === index);
      const dropNext = !(draggingIndex - 1 === index);
      const distance = event.clientX - dropPosition.left;
      const prevPercent = dropPrev ? dropNext ? 0.5 : 1 : -1;
      const nextPercent = dropNext ? dropPrev ? 0.5 : 0 : 1;
      if (distance <= dropPosition.width * prevPercent) {
        dropType = "before";
      } else if (distance > dropPosition.width * nextPercent) {
        dropType = "after";
      } else {
        dropType = void 0;
      }
      const innerEl = wrapperRef.value.querySelector(
        `.${ns.e("inner")}`
      );
      const innerPosition = innerEl.getBoundingClientRect();
      const gap = Number.parseFloat(getStyle(innerEl, "gap")) / 2;
      const indicatorTop = dropPosition.top - innerPosition.top;
      let indicatorLeft = -9999;
      if (dropType === "before") {
        indicatorLeft = Math.max(
          dropPosition.left - innerPosition.left - gap,
          Math.floor(-gap / 2)
        );
      } else if (dropType === "after") {
        const left = dropPosition.right - innerPosition.left;
        indicatorLeft = left + (innerPosition.width === left ? Math.floor(gap / 2) : gap);
      }
      setStyle(dropIndicatorRef.value, {
        top: `${indicatorTop}px`,
        left: `${indicatorLeft}px`
      });
      showDropIndicator.value = !!dropType;
    }
    function handleDragEnd(event) {
      event.preventDefault();
      if (draggingTag) {
        draggingTag.style.opacity = "";
      }
      if (dropType && !isUndefined(draggingIndex) && !isUndefined(dropIndex) && draggingIndex !== dropIndex) {
        handleDragged(draggingIndex, dropIndex, dropType);
      }
      showDropIndicator.value = false;
      draggingIndex = void 0;
      draggingTag = null;
      dropIndex = void 0;
      dropType = void 0;
      afterDragged == null ? void 0 : afterDragged();
    }
    return {
      dropIndicatorRef,
      showDropIndicator,
      handleDragStart,
      handleDragOver,
      handleDragEnd
    };
  }
  function useInputTagDom({
    props: props2,
    isFocused,
    hovering,
    disabled,
    inputValue,
    size,
    validateState,
    validateIcon,
    needStatusIcon
  }) {
    const attrs = useAttrs$1();
    const slots = useSlots();
    const ns = useNamespace("input-tag");
    const nsInput = useNamespace("input");
    const collapseItemRef = ref();
    const innerRef = ref();
    const containerKls = computed(() => [
      ns.b(),
      ns.is("focused", isFocused.value),
      ns.is("hovering", hovering.value),
      ns.is("disabled", disabled.value),
      ns.m(size.value),
      ns.e("wrapper"),
      attrs.class
    ]);
    const containerStyle = computed(() => [attrs.style]);
    const innerKls = computed(() => {
      var _a, _b;
      return [
        ns.e("inner"),
        ns.is("draggable", props2.draggable),
        ns.is("left-space", !((_a = props2.modelValue) == null ? void 0 : _a.length) && !slots.prefix),
        ns.is("right-space", !((_b = props2.modelValue) == null ? void 0 : _b.length) && !showSuffix.value)
      ];
    });
    const showClear = computed(() => {
      var _a;
      return props2.clearable && !disabled.value && !props2.readonly && (((_a = props2.modelValue) == null ? void 0 : _a.length) || inputValue.value) && (isFocused.value || hovering.value);
    });
    const showSuffix = computed(() => {
      return slots.suffix || showClear.value || validateState.value && validateIcon.value && needStatusIcon.value;
    });
    const states = reactive({
      innerWidth: 0,
      collapseItemWidth: 0
    });
    const getGapWidth = () => {
      if (!innerRef.value) return 0;
      const style = window.getComputedStyle(innerRef.value);
      return Number.parseFloat(style.gap || "6px");
    };
    const resetInnerWidth = () => {
      states.innerWidth = Number.parseFloat(
        window.getComputedStyle(innerRef.value).width
      );
    };
    const resetCollapseItemWidth = () => {
      states.collapseItemWidth = collapseItemRef.value.getBoundingClientRect().width;
    };
    const tagStyle = computed(() => {
      if (!props2.collapseTags) return {};
      const gapWidth = getGapWidth();
      const inputSlotWidth = gapWidth + MINIMUM_INPUT_WIDTH;
      const maxWidth = collapseItemRef.value && props2.maxCollapseTags === 1 ? states.innerWidth - states.collapseItemWidth - gapWidth - inputSlotWidth : states.innerWidth - inputSlotWidth;
      return { maxWidth: `${Math.max(maxWidth, 0)}px` };
    });
    useResizeObserver(innerRef, resetInnerWidth);
    useResizeObserver(collapseItemRef, resetCollapseItemWidth);
    return {
      ns,
      nsInput,
      containerKls,
      containerStyle,
      innerKls,
      showClear,
      showSuffix,
      tagStyle,
      collapseItemRef,
      innerRef
    };
  }
  const _hoisted_1$1l = ["id", "minlength", "maxlength", "disabled", "readonly", "autocomplete", "tabindex", "placeholder", "autofocus", "ariaLabel"];
  const _hoisted_2$17 = ["textContent"];
  var _sfc_main$1U = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElInputTag",
      inheritAttrs: false
    },
    __name: "input-tag",
    props: inputTagProps,
    emits: inputTagEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const attrs = useAttrs();
      const slots = useSlots();
      const { form, formItem } = useFormItem();
      const { inputId } = useFormItemInputId(props2, { formItemContext: formItem });
      const needStatusIcon = computed(() => {
        var _a;
        return (_a = form == null ? void 0 : form.statusIcon) != null ? _a : false;
      });
      const validateState = computed(() => (formItem == null ? void 0 : formItem.validateState) || "");
      const validateIcon = computed(() => {
        return validateState.value && ValidateComponentsMap[validateState.value];
      });
      const {
        inputRef,
        wrapperRef,
        tagTooltipRef,
        isFocused,
        inputValue,
        size,
        tagSize,
        placeholder,
        closable,
        disabled,
        showTagList,
        collapseTagList,
        handleDragged,
        handleInput,
        handleKeydown,
        handleKeyup,
        handleRemoveTag,
        handleClear,
        handleCompositionStart,
        handleCompositionUpdate,
        handleCompositionEnd,
        focus,
        blur
      } = useInputTag({ props: props2, emit: emit2, formItem });
      const { hovering, handleMouseEnter, handleMouseLeave } = useHovering();
      const { calculatorRef, inputStyle } = useCalcInputWidth();
      const {
        dropIndicatorRef,
        showDropIndicator,
        handleDragStart,
        handleDragOver,
        handleDragEnd
      } = useDragTag({ wrapperRef, handleDragged, afterDragged: focus });
      const {
        ns,
        nsInput,
        containerKls,
        containerStyle,
        innerKls,
        showClear,
        showSuffix,
        tagStyle,
        collapseItemRef,
        innerRef
      } = useInputTagDom({
        props: props2,
        hovering,
        isFocused,
        inputValue,
        disabled,
        size,
        validateState,
        validateIcon,
        needStatusIcon
      });
      __expose({
        focus,
        blur
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            ref_key: "wrapperRef",
            ref: wrapperRef,
            class: normalizeClass(unref(containerKls)),
            style: normalizeStyle(unref(containerStyle)),
            onMouseenter: _cache[8] || (_cache[8] = //@ts-ignore
            (...args) => unref(handleMouseEnter) && unref(handleMouseEnter)(...args)),
            onMouseleave: _cache[9] || (_cache[9] = //@ts-ignore
            (...args) => unref(handleMouseLeave) && unref(handleMouseLeave)(...args))
          },
          [
            unref(slots).prefix ? (openBlock(), createElementBlock(
              "div",
              {
                key: 0,
                class: normalizeClass(unref(ns).e("prefix"))
              },
              [
                renderSlot(_ctx.$slots, "prefix")
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true),
            createBaseVNode(
              "div",
              {
                ref_key: "innerRef",
                ref: innerRef,
                class: normalizeClass(unref(innerKls))
              },
              [
                (openBlock(true), createElementBlock(
                  Fragment,
                  null,
                  renderList(unref(showTagList), (item, index) => {
                    return openBlock(), createBlock(unref(ElTag), {
                      key: index,
                      size: unref(tagSize),
                      closable: unref(closable),
                      type: __props.tagType,
                      effect: __props.tagEffect,
                      draggable: unref(closable) && __props.draggable,
                      style: normalizeStyle(unref(tagStyle)),
                      "disable-transitions": "",
                      onClose: ($event) => unref(handleRemoveTag)(index),
                      onDragstart: (event) => unref(handleDragStart)(event, index),
                      onDragover: (event) => unref(handleDragOver)(event, index),
                      onDragend: unref(handleDragEnd),
                      onDrop: _cache[0] || (_cache[0] = withModifiers(() => {
                      }, ["stop"]))
                    }, {
                      default: withCtx(() => [
                        renderSlot(_ctx.$slots, "tag", {
                          value: item,
                          index
                        }, () => [
                          createTextVNode(
                            toDisplayString(item),
                            1
                            /* TEXT */
                          )
                        ])
                      ]),
                      _: 2
                      /* DYNAMIC */
                    }, 1032, ["size", "closable", "type", "effect", "draggable", "style", "onClose", "onDragstart", "onDragover", "onDragend"]);
                  }),
                  128
                  /* KEYED_FRAGMENT */
                )),
                __props.collapseTags && __props.modelValue && __props.modelValue.length > __props.maxCollapseTags ? (openBlock(), createBlock(unref(ElTooltip), {
                  key: 0,
                  ref_key: "tagTooltipRef",
                  ref: tagTooltipRef,
                  disabled: !__props.collapseTagsTooltip,
                  "fallback-placements": ["bottom", "top", "right", "left"],
                  effect: __props.effect,
                  placement: "bottom"
                }, {
                  default: withCtx(() => [
                    createBaseVNode(
                      "div",
                      {
                        ref_key: "collapseItemRef",
                        ref: collapseItemRef,
                        class: normalizeClass(unref(ns).e("collapse-tag"))
                      },
                      [
                        createVNode(unref(ElTag), {
                          closable: false,
                          size: unref(tagSize),
                          type: __props.tagType,
                          effect: __props.tagEffect,
                          "disable-transitions": ""
                        }, {
                          default: withCtx(() => [
                            createTextVNode(
                              " + " + toDisplayString(__props.modelValue.length - __props.maxCollapseTags),
                              1
                              /* TEXT */
                            )
                          ]),
                          _: 1
                          /* STABLE */
                        }, 8, ["size", "type", "effect"])
                      ],
                      2
                      /* CLASS */
                    )
                  ]),
                  content: withCtx(() => [
                    createBaseVNode(
                      "div",
                      {
                        class: normalizeClass(unref(ns).e("input-tag-list"))
                      },
                      [
                        (openBlock(true), createElementBlock(
                          Fragment,
                          null,
                          renderList(unref(collapseTagList), (item, index) => {
                            return openBlock(), createBlock(unref(ElTag), {
                              key: index,
                              size: unref(tagSize),
                              closable: unref(closable),
                              type: __props.tagType,
                              effect: __props.tagEffect,
                              "disable-transitions": "",
                              onClose: ($event) => unref(handleRemoveTag)(index + __props.maxCollapseTags)
                            }, {
                              default: withCtx(() => [
                                renderSlot(_ctx.$slots, "tag", {
                                  value: item,
                                  index: index + __props.maxCollapseTags
                                }, () => [
                                  createTextVNode(
                                    toDisplayString(item),
                                    1
                                    /* TEXT */
                                  )
                                ])
                              ]),
                              _: 2
                              /* DYNAMIC */
                            }, 1032, ["size", "closable", "type", "effect", "onClose"]);
                          }),
                          128
                          /* KEYED_FRAGMENT */
                        ))
                      ],
                      2
                      /* CLASS */
                    )
                  ]),
                  _: 3
                  /* FORWARDED */
                }, 8, ["disabled", "effect"])) : createCommentVNode("v-if", true),
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass(unref(ns).e("input-wrapper"))
                  },
                  [
                    withDirectives(createBaseVNode("input", mergeProps({
                      id: unref(inputId),
                      ref_key: "inputRef",
                      ref: inputRef,
                      "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => isRef(inputValue) ? inputValue.value = $event : null)
                    }, unref(attrs), {
                      type: "text",
                      minlength: __props.minlength,
                      maxlength: __props.maxlength,
                      disabled: unref(disabled),
                      readonly: __props.readonly,
                      autocomplete: __props.autocomplete,
                      tabindex: __props.tabindex,
                      placeholder: unref(placeholder),
                      autofocus: __props.autofocus,
                      ariaLabel: __props.ariaLabel,
                      class: unref(ns).e("input"),
                      style: unref(inputStyle),
                      onCompositionstart: _cache[2] || (_cache[2] = //@ts-ignore
                      (...args) => unref(handleCompositionStart) && unref(handleCompositionStart)(...args)),
                      onCompositionupdate: _cache[3] || (_cache[3] = //@ts-ignore
                      (...args) => unref(handleCompositionUpdate) && unref(handleCompositionUpdate)(...args)),
                      onCompositionend: _cache[4] || (_cache[4] = //@ts-ignore
                      (...args) => unref(handleCompositionEnd) && unref(handleCompositionEnd)(...args)),
                      onInput: _cache[5] || (_cache[5] = //@ts-ignore
                      (...args) => unref(handleInput) && unref(handleInput)(...args)),
                      onKeydown: _cache[6] || (_cache[6] = //@ts-ignore
                      (...args) => unref(handleKeydown) && unref(handleKeydown)(...args)),
                      onKeyup: _cache[7] || (_cache[7] = //@ts-ignore
                      (...args) => unref(handleKeyup) && unref(handleKeyup)(...args))
                    }), null, 16, _hoisted_1$1l), [
                      [vModelText, unref(inputValue)]
                    ]),
                    createBaseVNode("span", {
                      ref_key: "calculatorRef",
                      ref: calculatorRef,
                      "aria-hidden": "true",
                      class: normalizeClass(unref(ns).e("input-calculator")),
                      textContent: toDisplayString(unref(inputValue))
                    }, null, 10, _hoisted_2$17)
                  ],
                  2
                  /* CLASS */
                ),
                withDirectives(createBaseVNode(
                  "div",
                  {
                    ref_key: "dropIndicatorRef",
                    ref: dropIndicatorRef,
                    class: normalizeClass(unref(ns).e("drop-indicator"))
                  },
                  null,
                  2
                  /* CLASS */
                ), [
                  [vShow, unref(showDropIndicator)]
                ])
              ],
              2
              /* CLASS */
            ),
            unref(showSuffix) ? (openBlock(), createElementBlock(
              "div",
              {
                key: 1,
                class: normalizeClass(unref(ns).e("suffix"))
              },
              [
                renderSlot(_ctx.$slots, "suffix"),
                unref(showClear) ? (openBlock(), createBlock(unref(ElIcon), {
                  key: 0,
                  class: normalizeClass([unref(ns).e("icon"), unref(ns).e("clear")]),
                  onMousedown: withModifiers(unref(NOOP), ["prevent"]),
                  onClick: unref(handleClear)
                }, {
                  default: withCtx(() => [
                    (openBlock(), createBlock(resolveDynamicComponent(__props.clearIcon)))
                  ]),
                  _: 1
                  /* STABLE */
                }, 8, ["class", "onMousedown", "onClick"])) : createCommentVNode("v-if", true),
                validateState.value && validateIcon.value && needStatusIcon.value ? (openBlock(), createBlock(unref(ElIcon), {
                  key: 1,
                  class: normalizeClass([
                    unref(nsInput).e("icon"),
                    unref(nsInput).e("validateIcon"),
                    unref(nsInput).is("loading", validateState.value === "validating")
                  ])
                }, {
                  default: withCtx(() => [
                    (openBlock(), createBlock(resolveDynamicComponent(validateIcon.value)))
                  ]),
                  _: 1
                  /* STABLE */
                }, 8, ["class"])) : createCommentVNode("v-if", true)
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true)
          ],
          38
          /* CLASS, STYLE, NEED_HYDRATION */
        );
      };
    }
  });
  const ElInputTag = withInstall(_sfc_main$1U);
  const linkProps = buildProps({
    /**
     * @description type
     */
    type: {
      type: String,
      values: ["primary", "success", "warning", "info", "danger", "default"],
      default: void 0
    },
    /**
     * @description when underlines should appear
     */
    underline: {
      type: [Boolean, String],
      values: [true, false, "always", "never", "hover"],
      default: void 0
    },
    /**
     * @description whether the component is disabled
     */
    disabled: Boolean,
    /**
     * @description same as native hyperlink's `href`
     */
    href: { type: String, default: "" },
    /**
     * @description same as native hyperlink's `target`
     */
    target: {
      type: String,
      default: "_self"
    },
    /**
     * @description icon component
     */
    icon: {
      type: iconPropType
    }
  });
  const linkEmits = {
    click: (evt) => evt instanceof MouseEvent
  };
  const _hoisted_1$1k = ["href", "target"];
  var _sfc_main$1T = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElLink"
    },
    __name: "link",
    props: linkProps,
    emits: linkEmits,
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const globalConfig2 = useGlobalConfig("link");
      useDeprecated(
        {
          scope: "el-link",
          from: "The underline option (boolean)",
          replacement: "'always' | 'hover' | 'never'",
          version: "3.0.0",
          ref: "https://element-plus.org/en-US/component/link.html#underline"
        },
        computed(() => isBoolean(props2.underline))
      );
      const ns = useNamespace("link");
      const linkKls = computed(() => {
        var _a, _b, _c;
        return [
          ns.b(),
          ns.m((_c = (_b = props2.type) != null ? _b : (_a = globalConfig2.value) == null ? void 0 : _a.type) != null ? _c : "default"),
          ns.is("disabled", props2.disabled),
          ns.is("underline", underline.value === "always"),
          ns.is("hover-underline", underline.value === "hover" && !props2.disabled)
        ];
      });
      const underline = computed(() => {
        var _a, _b, _c;
        if (isBoolean(props2.underline)) {
          return props2.underline ? "hover" : "never";
        } else return (_c = (_b = props2.underline) != null ? _b : (_a = globalConfig2.value) == null ? void 0 : _a.underline) != null ? _c : "hover";
      });
      function handleClick(event) {
        if (!props2.disabled) emit2("click", event);
      }
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock("a", {
          class: normalizeClass(linkKls.value),
          href: __props.disabled || !__props.href ? void 0 : __props.href,
          target: __props.disabled || !__props.href ? void 0 : __props.target,
          onClick: handleClick
        }, [
          __props.icon ? (openBlock(), createBlock(unref(ElIcon), { key: 0 }, {
            default: withCtx(() => [
              (openBlock(), createBlock(resolveDynamicComponent(__props.icon)))
            ]),
            _: 1
            /* STABLE */
          })) : createCommentVNode("v-if", true),
          _ctx.$slots.default ? (openBlock(), createElementBlock(
            "span",
            {
              key: 1,
              class: normalizeClass(unref(ns).e("inner"))
            },
            [
              renderSlot(_ctx.$slots, "default")
            ],
            2
            /* CLASS */
          )) : createCommentVNode("v-if", true),
          _ctx.$slots.icon ? renderSlot(_ctx.$slots, "icon", { key: 2 }) : createCommentVNode("v-if", true)
        ], 10, _hoisted_1$1k);
      };
    }
  });
  const ElLink = withInstall(_sfc_main$1T);
  var __defProp$5 = Object.defineProperty;
  var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  var __publicField$5 = (obj, key, value) => __defNormalProp$5(obj, typeof key !== "symbol" ? key + "" : key, value);
  let SubMenu$1 = class SubMenu {
    constructor(parent2, domNode) {
      this.parent = parent2;
      this.domNode = domNode;
      __publicField$5(this, "subMenuItems");
      __publicField$5(this, "subIndex", 0);
      this.subIndex = 0;
      this.init();
    }
    init() {
      this.subMenuItems = this.domNode.querySelectorAll("li");
      this.addListeners();
    }
    gotoSubIndex(idx) {
      if (idx === this.subMenuItems.length) {
        idx = 0;
      } else if (idx < 0) {
        idx = this.subMenuItems.length - 1;
      }
      this.subMenuItems[idx].focus();
      this.subIndex = idx;
    }
    addListeners() {
      const parentNode = this.parent.domNode;
      Array.prototype.forEach.call(this.subMenuItems, (el) => {
        el.addEventListener("keydown", (event) => {
          const code = getEventCode(event);
          let prevDef = false;
          switch (code) {
            case EVENT_CODE.down: {
              this.gotoSubIndex(this.subIndex + 1);
              prevDef = true;
              break;
            }
            case EVENT_CODE.up: {
              this.gotoSubIndex(this.subIndex - 1);
              prevDef = true;
              break;
            }
            case EVENT_CODE.tab: {
              triggerEvent(parentNode, "mouseleave");
              break;
            }
            case EVENT_CODE.enter:
            case EVENT_CODE.numpadEnter:
            case EVENT_CODE.space: {
              prevDef = true;
              event.currentTarget.click();
              break;
            }
          }
          if (prevDef) {
            event.preventDefault();
            event.stopPropagation();
          }
          return false;
        });
      });
    }
  };
  var __defProp$4 = Object.defineProperty;
  var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  var __publicField$4 = (obj, key, value) => __defNormalProp$4(obj, key + "", value);
  class MenuItem {
    constructor(domNode, namespace) {
      this.domNode = domNode;
      __publicField$4(this, "submenu", null);
      this.submenu = null;
      this.init(namespace);
    }
    init(namespace) {
      this.domNode.setAttribute("tabindex", "0");
      const menuChild = this.domNode.querySelector(`.${namespace}-menu`);
      if (menuChild) {
        this.submenu = new SubMenu$1(this, menuChild);
      }
      this.addListeners();
    }
    addListeners() {
      this.domNode.addEventListener("keydown", (event) => {
        const code = getEventCode(event);
        let prevDef = false;
        switch (code) {
          case EVENT_CODE.down: {
            triggerEvent(event.currentTarget, "mouseenter");
            this.submenu && this.submenu.gotoSubIndex(0);
            prevDef = true;
            break;
          }
          case EVENT_CODE.up: {
            triggerEvent(event.currentTarget, "mouseenter");
            this.submenu && this.submenu.gotoSubIndex(this.submenu.subMenuItems.length - 1);
            prevDef = true;
            break;
          }
          case EVENT_CODE.tab: {
            triggerEvent(event.currentTarget, "mouseleave");
            break;
          }
          case EVENT_CODE.enter:
          case EVENT_CODE.numpadEnter:
          case EVENT_CODE.space: {
            prevDef = true;
            event.currentTarget.click();
            break;
          }
        }
        if (prevDef) {
          event.preventDefault();
        }
      });
    }
  }
  let Menu$1 = class Menu {
    constructor(domNode, namespace) {
      this.domNode = domNode;
      this.init(namespace);
    }
    init(namespace) {
      const menuChildren = this.domNode.childNodes;
      Array.from(menuChildren).forEach((child) => {
        if (child.nodeType === 1) {
          new MenuItem(child, namespace);
        }
      });
    }
  };
  var _sfc_main$1S = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElMenuCollapseTransition"
    },
    __name: "menu-collapse-transition",
    setup(__props) {
      const ns = useNamespace("menu");
      const listeners = {
        onBeforeEnter: (el) => el.style.opacity = "0.2",
        onEnter(el, done) {
          addClass(el, `${ns.namespace.value}-opacity-transition`);
          el.style.opacity = "1";
          done();
        },
        onAfterEnter(el) {
          removeClass(el, `${ns.namespace.value}-opacity-transition`);
          el.style.opacity = "";
        },
        onBeforeLeave(el) {
          if (!el.dataset) el.dataset = {};
          if (hasClass(el, ns.m("collapse"))) {
            removeClass(el, ns.m("collapse"));
            el.dataset.oldOverflow = el.style.overflow;
            el.dataset.scrollWidth = el.clientWidth.toString();
            addClass(el, ns.m("collapse"));
          } else {
            addClass(el, ns.m("collapse"));
            el.dataset.oldOverflow = el.style.overflow;
            el.dataset.scrollWidth = el.clientWidth.toString();
            removeClass(el, ns.m("collapse"));
          }
          el.style.width = `${el.scrollWidth}px`;
          el.style.overflow = "hidden";
        },
        onLeave(el) {
          addClass(el, "horizontal-collapse-transition");
          el.style.width = `${el.dataset.scrollWidth}px`;
        }
      };
      return (_ctx, _cache) => {
        return openBlock(), createBlock(
          Transition,
          mergeProps({ mode: "out-in" }, listeners),
          {
            default: withCtx(() => [
              renderSlot(_ctx.$slots, "default")
            ]),
            _: 3
            /* FORWARDED */
          },
          16
          /* FULL_PROPS */
        );
      };
    }
  });
  function useMenu(instance, currentIndex) {
    const indexPath = computed(() => {
      let parent2 = instance.parent;
      const path = [currentIndex.value];
      while (parent2.type.name !== "ElMenu") {
        if (parent2.props.index) {
          path.unshift(parent2.props.index);
        }
        parent2 = parent2.parent;
      }
      return path;
    });
    const parentMenu = computed(() => {
      let parent2 = instance.parent;
      while (parent2 && !["ElMenu", "ElSubMenu"].includes(parent2.type.name)) {
        parent2 = parent2.parent;
      }
      return parent2;
    });
    return {
      parentMenu,
      indexPath
    };
  }
  function useMenuColor(props2) {
    const menuBarColor = computed(() => {
      const color = props2.backgroundColor;
      return color ? new TinyColor(color).shade(20).toString() : "";
    });
    return menuBarColor;
  }
  const useMenuCssVar = (props2, level) => {
    const ns = useNamespace("menu");
    return computed(
      () => ns.cssVarBlock({
        "text-color": props2.textColor || "",
        "hover-text-color": props2.textColor || "",
        "bg-color": props2.backgroundColor || "",
        "hover-bg-color": useMenuColor(props2).value || "",
        "active-color": props2.activeTextColor || "",
        level: `${level}`
      })
    );
  };
  const MENU_INJECTION_KEY = "rootMenu";
  const SUB_MENU_INJECTION_KEY = "subMenu:";
  const subMenuProps = buildProps({
    /**
     * @description unique identification
     */
    index: {
      type: String,
      required: true
    },
    /**
     * @description timeout before showing a sub-menu(inherit `show-timeout` of the menu by default.)
     */
    showTimeout: Number,
    /**
     * @description timeout before hiding a sub-menu(inherit `hide-timeout` of the menu by default.)
     */
    hideTimeout: Number,
    /**
     * @description custom class name for the popup menu
     */
    popperClass: String,
    /**
     * @description custom style for the popup menu
     */
    popperStyle: {
      type: definePropType([String, Object])
    },
    /**
     * @description whether the sub-menu is disabled
     */
    disabled: Boolean,
    /**
     * @description whether popup menu is teleported to the body
     */
    teleported: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description offset of the popper (overrides the `popper` of menu)
     */
    popperOffset: Number,
    /**
     * @description Icon when menu are expanded and submenu are closed, `expand-close-icon` and `expand-open-icon` need to be passed together to take effect
     */
    expandCloseIcon: {
      type: iconPropType
    },
    /**
     * @description Icon when menu are expanded and submenu are opened, `expand-open-icon` and `expand-close-icon` need to be passed together to take effect
     */
    expandOpenIcon: {
      type: iconPropType
    },
    /**
     * @description Icon when menu are collapsed and submenu are closed, `collapse-close-icon` and `collapse-open-icon` need to be passed together to take effect
     */
    collapseCloseIcon: {
      type: iconPropType
    },
    /**
     * @description Icon when menu are collapsed and submenu are opened, `collapse-open-icon` and `collapse-close-icon` need to be passed together to take effect
     */
    collapseOpenIcon: {
      type: iconPropType
    }
  });
  const COMPONENT_NAME$b = "ElSubMenu";
  var SubMenu = /* @__PURE__ */ defineComponent({
    name: COMPONENT_NAME$b,
    props: subMenuProps,
    setup(props2, { slots, expose }) {
      const instance = getCurrentInstance();
      const { indexPath, parentMenu } = useMenu(
        instance,
        computed(() => props2.index)
      );
      const nsMenu = useNamespace("menu");
      const nsSubMenu = useNamespace("sub-menu");
      const rootMenu = inject(MENU_INJECTION_KEY);
      if (!rootMenu) throwError(COMPONENT_NAME$b, "can not inject root menu");
      const subMenu = inject(
        `${SUB_MENU_INJECTION_KEY}${parentMenu.value.uid}`
      );
      if (!subMenu) throwError(COMPONENT_NAME$b, "can not inject sub menu");
      const items = ref({});
      const subMenus = ref({});
      let timeout;
      const mouseInChild = ref(false);
      const verticalTitleRef = ref();
      const vPopper = ref();
      const isFirstLevel = computed(() => subMenu.level === 0);
      const currentPlacement = computed(
        () => mode.value === "horizontal" && isFirstLevel.value ? "bottom-start" : "right-start"
      );
      const subMenuTitleIcon = computed(() => {
        const isExpandedMode = mode.value === "horizontal" && isFirstLevel.value || mode.value === "vertical" && !rootMenu.props.collapse;
        if (isExpandedMode) {
          if (props2.expandCloseIcon && props2.expandOpenIcon) {
            return opened.value ? props2.expandOpenIcon : props2.expandCloseIcon;
          }
          return arrow_down_default;
        } else {
          if (props2.collapseCloseIcon && props2.collapseOpenIcon) {
            return opened.value ? props2.collapseOpenIcon : props2.collapseCloseIcon;
          }
          return arrow_right_default;
        }
      });
      const appendToBody = computed(() => {
        const value = props2.teleported;
        return isUndefined(value) ? isFirstLevel.value : value;
      });
      const menuTransitionName = computed(
        () => rootMenu.props.collapse ? `${nsMenu.namespace.value}-zoom-in-left` : `${nsMenu.namespace.value}-zoom-in-top`
      );
      const fallbackPlacements = computed(
        () => mode.value === "horizontal" && isFirstLevel.value ? [
          "bottom-start",
          "bottom-end",
          "top-start",
          "top-end",
          "right-start",
          "left-start"
        ] : [
          "right-start",
          "right",
          "right-end",
          "left-start",
          "bottom-start",
          "bottom-end",
          "top-start",
          "top-end"
        ]
      );
      const opened = computed(() => rootMenu.openedMenus.includes(props2.index));
      const active = computed(
        () => [...Object.values(items.value), ...Object.values(subMenus.value)].some(
          ({ active: active2 }) => active2
        )
      );
      const mode = computed(() => rootMenu.props.mode);
      const persistent = computed(() => rootMenu.props.persistent);
      const item = reactive({
        index: props2.index,
        indexPath,
        active
      });
      const ulStyle = useMenuCssVar(rootMenu.props, subMenu.level + 1);
      const subMenuPopperOffset = computed(
        () => {
          var _a;
          return (_a = props2.popperOffset) != null ? _a : rootMenu.props.popperOffset;
        }
      );
      const subMenuPopperClass = computed(
        () => {
          var _a;
          return (_a = props2.popperClass) != null ? _a : rootMenu.props.popperClass;
        }
      );
      const subMenuPopperStyle = computed(
        () => {
          var _a;
          return (_a = props2.popperStyle) != null ? _a : rootMenu.props.popperStyle;
        }
      );
      const subMenuShowTimeout = computed(
        () => {
          var _a;
          return (_a = props2.showTimeout) != null ? _a : rootMenu.props.showTimeout;
        }
      );
      const subMenuHideTimeout = computed(
        () => {
          var _a;
          return (_a = props2.hideTimeout) != null ? _a : rootMenu.props.hideTimeout;
        }
      );
      const doDestroy = () => {
        var _a, _b, _c;
        return (_c = (_b = (_a = vPopper.value) == null ? void 0 : _a.popperRef) == null ? void 0 : _b.popperInstanceRef) == null ? void 0 : _c.destroy();
      };
      const handleCollapseToggle = (value) => {
        if (!value) {
          doDestroy();
        }
      };
      const handleClick = () => {
        if (rootMenu.props.menuTrigger === "hover" && rootMenu.props.mode === "horizontal" || rootMenu.props.collapse && rootMenu.props.mode === "vertical" || props2.disabled)
          return;
        rootMenu.handleSubMenuClick({
          index: props2.index,
          indexPath: indexPath.value,
          active: active.value
        });
      };
      const handleMouseenter = (event, showTimeout = subMenuShowTimeout.value) => {
        var _a;
        if (event.type === "focus") return;
        if (rootMenu.props.menuTrigger === "click" && rootMenu.props.mode === "horizontal" || !rootMenu.props.collapse && rootMenu.props.mode === "vertical" || props2.disabled) {
          subMenu.mouseInChild.value = true;
          return;
        }
        subMenu.mouseInChild.value = true;
        timeout == null ? void 0 : timeout();
        ({ stop: timeout } = useTimeoutFn(() => {
          rootMenu.openMenu(props2.index, indexPath.value);
        }, showTimeout));
        if (appendToBody.value) {
          (_a = parentMenu.value.vnode.el) == null ? void 0 : _a.dispatchEvent(new MouseEvent("mouseenter"));
        }
        if (event.type === "mouseenter" && event.target) {
          nextTick(() => {
            focusElement(event.target, { preventScroll: true });
          });
        }
      };
      const handleMouseleave = (deepDispatch = false) => {
        var _a;
        if (rootMenu.props.menuTrigger === "click" && rootMenu.props.mode === "horizontal" || !rootMenu.props.collapse && rootMenu.props.mode === "vertical") {
          subMenu.mouseInChild.value = false;
          return;
        }
        timeout == null ? void 0 : timeout();
        subMenu.mouseInChild.value = false;
        ({ stop: timeout } = useTimeoutFn(
          () => !mouseInChild.value && rootMenu.closeMenu(props2.index, indexPath.value),
          subMenuHideTimeout.value
        ));
        if (appendToBody.value && deepDispatch) {
          (_a = subMenu.handleMouseleave) == null ? void 0 : _a.call(subMenu, true);
        }
      };
      watch(
        () => rootMenu.props.collapse,
        (value) => handleCollapseToggle(Boolean(value))
      );
      {
        const addSubMenu = (item2) => {
          subMenus.value[item2.index] = item2;
        };
        const removeSubMenu = (item2) => {
          delete subMenus.value[item2.index];
        };
        provide(`${SUB_MENU_INJECTION_KEY}${instance.uid}`, {
          addSubMenu,
          removeSubMenu,
          handleMouseleave,
          mouseInChild,
          level: subMenu.level + 1
        });
      }
      expose({
        opened
      });
      onMounted(() => {
        rootMenu.addSubMenu(item);
        subMenu.addSubMenu(item);
      });
      onBeforeUnmount(() => {
        subMenu.removeSubMenu(item);
        rootMenu.removeSubMenu(item);
      });
      return () => {
        var _a;
        const titleTag = [
          (_a = slots.title) == null ? void 0 : _a.call(slots),
          h$1(
            ElIcon,
            {
              class: nsSubMenu.e("icon-arrow"),
              style: {
                transform: opened.value ? props2.expandCloseIcon && props2.expandOpenIcon || props2.collapseCloseIcon && props2.collapseOpenIcon && rootMenu.props.collapse ? "none" : "rotateZ(180deg)" : "none"
              }
            },
            {
              default: () => isString(subMenuTitleIcon.value) ? h$1(instance.appContext.components[subMenuTitleIcon.value]) : h$1(subMenuTitleIcon.value)
            }
          )
        ];
        const child = rootMenu.isMenuPopup ? h$1(
          ElTooltip,
          {
            ref: vPopper,
            visible: opened.value,
            effect: "light",
            pure: true,
            offset: subMenuPopperOffset.value,
            showArrow: false,
            persistent: persistent.value,
            popperClass: subMenuPopperClass.value,
            popperStyle: subMenuPopperStyle.value,
            placement: currentPlacement.value,
            teleported: appendToBody.value,
            fallbackPlacements: fallbackPlacements.value,
            transition: menuTransitionName.value,
            gpuAcceleration: false
          },
          {
            content: () => {
              var _a2;
              return h$1(
                "div",
                {
                  class: [
                    nsMenu.m(mode.value),
                    nsMenu.m("popup-container"),
                    subMenuPopperClass.value
                  ],
                  onMouseenter: (evt) => handleMouseenter(evt, 100),
                  onMouseleave: () => handleMouseleave(true),
                  onFocus: (evt) => handleMouseenter(evt, 100)
                },
                [
                  h$1(
                    "ul",
                    {
                      class: [
                        nsMenu.b(),
                        nsMenu.m("popup"),
                        nsMenu.m(`popup-${currentPlacement.value}`)
                      ],
                      style: ulStyle.value
                    },
                    [(_a2 = slots.default) == null ? void 0 : _a2.call(slots)]
                  )
                ]
              );
            },
            default: () => h$1(
              "div",
              {
                class: nsSubMenu.e("title"),
                onClick: handleClick
              },
              titleTag
            )
          }
        ) : h$1(Fragment, {}, [
          h$1(
            "div",
            {
              class: nsSubMenu.e("title"),
              ref: verticalTitleRef,
              onClick: handleClick
            },
            titleTag
          ),
          h$1(
            ElCollapseTransition,
            {},
            {
              default: () => {
                var _a2;
                return withDirectives(
                  h$1(
                    "ul",
                    {
                      role: "menu",
                      class: [nsMenu.b(), nsMenu.m("inline")],
                      style: ulStyle.value
                    },
                    [(_a2 = slots.default) == null ? void 0 : _a2.call(slots)]
                  ),
                  [[vShow, opened.value]]
                );
              }
            }
          )
        ]);
        return h$1(
          "li",
          {
            class: [
              nsSubMenu.b(),
              nsSubMenu.is("active", active.value),
              nsSubMenu.is("opened", opened.value),
              nsSubMenu.is("disabled", props2.disabled)
            ],
            role: "menuitem",
            ariaHaspopup: true,
            ariaExpanded: opened.value,
            onMouseenter: handleMouseenter,
            onMouseleave: () => handleMouseleave(),
            onFocus: handleMouseenter
          },
          [child]
        );
      };
    }
  });
  const menuProps = buildProps({
    /**
     * @description menu display mode
     */
    mode: {
      type: String,
      values: ["horizontal", "vertical"],
      default: "vertical"
    },
    /**
     * @description index of active menu on page load
     */
    defaultActive: {
      type: String,
      default: ""
    },
    /**
     * @description array that contains indexes of currently active sub-menus
     */
    defaultOpeneds: {
      type: definePropType(Array),
      default: () => mutable([])
    },
    /**
     * @description whether only one sub-menu can be active
     */
    uniqueOpened: Boolean,
    /**
     * @description whether `vue-router` mode is activated. If true, index will be used as 'path' to activate the route action. Use with `default-active` to set the active item on load.
     */
    router: Boolean,
    /**
     * @description how sub-menus are triggered, only works when `mode` is 'horizontal'
     */
    menuTrigger: {
      type: String,
      values: ["hover", "click"],
      default: "hover"
    },
    /**
     * @description whether the menu is collapsed (available only in vertical mode)
     */
    collapse: Boolean,
    /**
     * @description background color of Menu (hex format) (deprecated, use `--bg-color` instead)
     * @deprecated use `--bg-color` instead
     */
    backgroundColor: String,
    /**
     * @description text color of Menu (hex format) (deprecated, use `--text-color` instead)
     * @deprecated use `--text-color` instead
     */
    textColor: String,
    /**
     * @description text color of currently active menu item (hex format) (deprecated, use `--active-color` instead)
     * @deprecated use `--active-color` instead
     */
    activeTextColor: String,
    /**
     * @description optional, whether menu is collapsed when clicking outside
     */
    closeOnClickOutside: Boolean,
    /**
     * @description whether to enable the collapse transition
     */
    collapseTransition: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether the menu is ellipsis (available only in horizontal mode)
     */
    ellipsis: {
      type: Boolean,
      default: true
    },
    /**
     * @description offset of the popper (effective for all submenus)
     */
    popperOffset: {
      type: Number,
      default: 6
    },
    /**
     * @description custom ellipsis icon (available only in horizontal mode and ellipsis is true)
     */
    ellipsisIcon: {
      type: iconPropType,
      default: () => more_default
    },
    /**
     * @description Tooltip theme, built-in theme: `dark` / `light` when menu is collapsed
     */
    popperEffect: {
      type: definePropType(String),
      default: "dark"
    },
    /**
     * @description custom class name for all popup menus
     */
    popperClass: String,
    /**
     * @description custom style for all popup menus
     */
    popperStyle: {
      type: definePropType([String, Object])
    },
    /**
     * @description control timeout for all menus before showing
     */
    showTimeout: {
      type: Number,
      default: 300
    },
    /**
     * @description control timeout for all menus before hiding
     */
    hideTimeout: {
      type: Number,
      default: 300
    },
    /**
     * @description when menu inactive and `persistent` is `false` , dropdown menu will be destroyed
     */
    persistent: {
      type: Boolean,
      default: true
    }
  });
  const checkIndexPath = (indexPath) => isArray$1(indexPath) && indexPath.every((path) => isString(path));
  const menuEmits = {
    close: (index, indexPath) => isString(index) && checkIndexPath(indexPath),
    open: (index, indexPath) => isString(index) && checkIndexPath(indexPath),
    select: (index, indexPath, item, routerResult) => isString(index) && checkIndexPath(indexPath) && isObject$2(item) && (isUndefined(routerResult) || routerResult instanceof Promise)
  };
  const DEFAULT_MORE_ITEM_WIDTH = 64;
  var Menu = /* @__PURE__ */ defineComponent({
    name: "ElMenu",
    props: menuProps,
    emits: menuEmits,
    setup(props2, { emit: emit2, slots, expose }) {
      const instance = getCurrentInstance();
      const router = instance.appContext.config.globalProperties.$router;
      const menu = ref();
      const subMenu = ref();
      const nsMenu = useNamespace("menu");
      const nsSubMenu = useNamespace("sub-menu");
      let moreItemWidth = DEFAULT_MORE_ITEM_WIDTH;
      const sliceIndex = ref(-1);
      const openedMenus = ref(
        props2.defaultOpeneds && !props2.collapse ? props2.defaultOpeneds.slice(0) : []
      );
      const activeIndex = ref(props2.defaultActive);
      const items = ref({});
      const subMenus = ref({});
      const isMenuPopup = computed(
        () => props2.mode === "horizontal" || props2.mode === "vertical" && props2.collapse
      );
      const initMenu = () => {
        const activeItem = activeIndex.value && items.value[activeIndex.value];
        if (!activeItem || props2.mode === "horizontal" || props2.collapse) return;
        const indexPath = activeItem.indexPath;
        indexPath.forEach((index) => {
          const subMenu2 = subMenus.value[index];
          subMenu2 && openMenu(index, subMenu2.indexPath);
        });
      };
      const openMenu = (index, indexPath) => {
        if (openedMenus.value.includes(index)) return;
        if (props2.uniqueOpened) {
          openedMenus.value = openedMenus.value.filter(
            (index2) => indexPath.includes(index2)
          );
        }
        openedMenus.value.push(index);
        emit2("open", index, indexPath);
      };
      const close2 = (index) => {
        const i = openedMenus.value.indexOf(index);
        if (i !== -1) {
          openedMenus.value.splice(i, 1);
        }
      };
      const closeMenu = (index, indexPath) => {
        close2(index);
        emit2("close", index, indexPath);
      };
      const handleSubMenuClick = ({
        index,
        indexPath
      }) => {
        const isOpened = openedMenus.value.includes(index);
        isOpened ? closeMenu(index, indexPath) : openMenu(index, indexPath);
      };
      const handleMenuItemClick = (menuItem) => {
        if (props2.mode === "horizontal" || props2.collapse) {
          openedMenus.value = [];
        }
        const { index, indexPath } = menuItem;
        if (isNil(index) || isNil(indexPath)) return;
        if (props2.router && router) {
          const route = menuItem.route || index;
          const routerResult = router.push(route).then((res) => {
            if (!res) activeIndex.value = index;
            return res;
          });
          emit2(
            "select",
            index,
            indexPath,
            { index, indexPath, route },
            routerResult
          );
        } else {
          activeIndex.value = index;
          emit2("select", index, indexPath, { index, indexPath });
        }
      };
      const updateActiveIndex = (val) => {
        var _a;
        const itemsInData = items.value;
        const item = itemsInData[val] || activeIndex.value && itemsInData[activeIndex.value] || itemsInData[props2.defaultActive];
        activeIndex.value = (_a = item == null ? void 0 : item.index) != null ? _a : val;
      };
      const calcMenuItemWidth = (menuItem) => {
        const computedStyle = getComputedStyle(menuItem);
        const marginLeft = Number.parseInt(computedStyle.marginLeft, 10);
        const marginRight = Number.parseInt(computedStyle.marginRight, 10);
        return menuItem.offsetWidth + marginLeft + marginRight || 0;
      };
      const calcSliceIndex = () => {
        if (!menu.value) return -1;
        const items2 = Array.from(menu.value.childNodes).filter(
          (item) => item.nodeName !== "#comment" && (item.nodeName !== "#text" || item.nodeValue)
        );
        const computedMenuStyle = getComputedStyle(menu.value);
        const paddingLeft = Number.parseInt(computedMenuStyle.paddingLeft, 10);
        const paddingRight = Number.parseInt(computedMenuStyle.paddingRight, 10);
        const menuWidth = menu.value.clientWidth - paddingLeft - paddingRight;
        let calcWidth = 0;
        let sliceIndex2 = 0;
        items2.forEach((item, index) => {
          calcWidth += calcMenuItemWidth(item);
          if (calcWidth <= menuWidth - moreItemWidth) {
            sliceIndex2 = index + 1;
          }
        });
        return sliceIndex2 === items2.length ? -1 : sliceIndex2;
      };
      const getIndexPath = (index) => subMenus.value[index].indexPath;
      const debounce2 = (fn2, wait = 33.34) => {
        let timer;
        return () => {
          timer && clearTimeout(timer);
          timer = setTimeout(() => {
            fn2();
          }, wait);
        };
      };
      let isFirstTimeRender = true;
      const handleResize = () => {
        const el = unrefElement(subMenu);
        if (el) moreItemWidth = calcMenuItemWidth(el) || DEFAULT_MORE_ITEM_WIDTH;
        if (sliceIndex.value === calcSliceIndex()) return;
        const callback = () => {
          sliceIndex.value = -1;
          nextTick(() => {
            sliceIndex.value = calcSliceIndex();
          });
        };
        isFirstTimeRender ? callback() : debounce2(callback)();
        isFirstTimeRender = false;
      };
      watch(
        () => props2.defaultActive,
        (currentActive) => {
          if (!items.value[currentActive]) {
            activeIndex.value = "";
          }
          updateActiveIndex(currentActive);
        }
      );
      watch(
        () => props2.collapse,
        (value) => {
          if (value) openedMenus.value = [];
        }
      );
      watch(items.value, initMenu);
      let resizeStopper;
      watchEffect(() => {
        if (props2.mode === "horizontal" && props2.ellipsis)
          resizeStopper = useResizeObserver(menu, handleResize).stop;
        else resizeStopper == null ? void 0 : resizeStopper();
      });
      const mouseInChild = ref(false);
      {
        const addSubMenu = (item) => {
          subMenus.value[item.index] = item;
        };
        const removeSubMenu = (item) => {
          delete subMenus.value[item.index];
        };
        const addMenuItem = (item) => {
          items.value[item.index] = item;
        };
        const removeMenuItem = (item) => {
          delete items.value[item.index];
        };
        provide(
          MENU_INJECTION_KEY,
          reactive({
            props: props2,
            openedMenus,
            items,
            subMenus,
            activeIndex,
            isMenuPopup,
            addMenuItem,
            removeMenuItem,
            addSubMenu,
            removeSubMenu,
            openMenu,
            closeMenu,
            handleMenuItemClick,
            handleSubMenuClick
          })
        );
        provide(`${SUB_MENU_INJECTION_KEY}${instance.uid}`, {
          addSubMenu,
          removeSubMenu,
          mouseInChild,
          level: 0
        });
      }
      onMounted(() => {
        if (props2.mode === "horizontal") {
          new Menu$1(instance.vnode.el, nsMenu.namespace.value);
        }
      });
      {
        const open = (index) => {
          const { indexPath } = subMenus.value[index];
          indexPath.forEach((i) => openMenu(i, indexPath));
        };
        expose({
          open,
          close: close2,
          updateActiveIndex,
          handleResize
        });
      }
      const ulStyle = useMenuCssVar(props2, 0);
      return () => {
        var _a, _b;
        let slot = (_b = (_a = slots.default) == null ? void 0 : _a.call(slots)) != null ? _b : [];
        const vShowMore = [];
        if (props2.mode === "horizontal" && menu.value) {
          const originalSlot = flattedChildren(slot).filter((vnode) => {
            return (vnode == null ? void 0 : vnode.shapeFlag) !== 8;
          });
          const slotDefault = sliceIndex.value === -1 ? originalSlot : originalSlot.slice(0, sliceIndex.value);
          const slotMore = sliceIndex.value === -1 ? [] : originalSlot.slice(sliceIndex.value);
          if ((slotMore == null ? void 0 : slotMore.length) && props2.ellipsis) {
            slot = slotDefault;
            vShowMore.push(
              h$1(
                SubMenu,
                {
                  ref: subMenu,
                  index: "sub-menu-more",
                  class: nsSubMenu.e("hide-arrow"),
                  popperOffset: props2.popperOffset
                },
                {
                  title: () => h$1(
                    ElIcon,
                    {
                      class: nsSubMenu.e("icon-more")
                    },
                    {
                      default: () => h$1(props2.ellipsisIcon)
                    }
                  ),
                  default: () => slotMore
                }
              )
            );
          }
        }
        const directives = props2.closeOnClickOutside ? [
          [
            ClickOutside,
            () => {
              if (!openedMenus.value.length) return;
              if (!mouseInChild.value) {
                openedMenus.value.forEach(
                  (openedMenu) => emit2("close", openedMenu, getIndexPath(openedMenu))
                );
                openedMenus.value = [];
              }
            }
          ]
        ] : [];
        const vMenu = withDirectives(
          h$1(
            "ul",
            {
              key: String(props2.collapse),
              role: "menubar",
              ref: menu,
              style: ulStyle.value,
              class: {
                [nsMenu.b()]: true,
                [nsMenu.m(props2.mode)]: true,
                [nsMenu.m("collapse")]: props2.collapse
              }
            },
            [...slot, ...vShowMore]
          ),
          directives
        );
        if (props2.collapseTransition && props2.mode === "vertical") {
          return h$1(_sfc_main$1S, () => vMenu);
        }
        return vMenu;
      };
    }
  });
  const menuItemProps = buildProps({
    /**
     * @description unique identification
     */
    index: {
      type: definePropType([String, null]),
      // will be required in the next major version
      // required: true,
      default: null
    },
    /**
     * @description Vue Router object
     */
    route: {
      type: definePropType([String, Object])
    },
    /**
     * @description whether disabled
     */
    disabled: Boolean
  });
  const menuItemEmits = {
    click: (item) => isString(item.index) && isArray$1(item.indexPath)
  };
  const COMPONENT_NAME$a = "ElMenuItem";
  var _sfc_main$1R = /* @__PURE__ */ defineComponent({
    ...{
      name: COMPONENT_NAME$a
    },
    __name: "menu-item",
    props: menuItemProps,
    emits: menuItemEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      isPropAbsent(props2.index) && debugWarn();
      const instance = getCurrentInstance();
      const rootMenu = inject(MENU_INJECTION_KEY);
      const nsMenu = useNamespace("menu");
      const nsMenuItem = useNamespace("menu-item");
      if (!rootMenu) throwError(COMPONENT_NAME$a, "can not inject root menu");
      const { parentMenu, indexPath } = useMenu(instance, toRef(props2, "index"));
      const subMenu = inject(
        `${SUB_MENU_INJECTION_KEY}${parentMenu.value.uid}`
      );
      if (!subMenu) throwError(COMPONENT_NAME$a, "can not inject sub menu");
      const active = computed(() => props2.index === rootMenu.activeIndex);
      const item = reactive({
        index: props2.index,
        indexPath,
        active
      });
      const handleClick = () => {
        if (!props2.disabled) {
          rootMenu.handleMenuItemClick({
            index: props2.index,
            indexPath: indexPath.value,
            route: props2.route
          });
          emit2("click", item);
        }
      };
      onMounted(() => {
        subMenu.addSubMenu(item);
        rootMenu.addMenuItem(item);
      });
      onBeforeUnmount(() => {
        subMenu.removeSubMenu(item);
        rootMenu.removeMenuItem(item);
      });
      __expose({
        parentMenu,
        rootMenu,
        active,
        nsMenu,
        nsMenuItem,
        handleClick
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "li",
          {
            class: normalizeClass([
              unref(nsMenuItem).b(),
              unref(nsMenuItem).is("active", active.value),
              unref(nsMenuItem).is("disabled", __props.disabled)
            ]),
            role: "menuitem",
            tabindex: "-1",
            onClick: handleClick
          },
          [
            unref(parentMenu).type.name === "ElMenu" && unref(rootMenu).props.collapse && _ctx.$slots.title ? (openBlock(), createBlock(unref(ElTooltip), {
              key: 0,
              effect: unref(rootMenu).props.popperEffect,
              placement: "right",
              "fallback-placements": ["left"],
              "popper-class": unref(rootMenu).props.popperClass,
              "popper-style": unref(rootMenu).props.popperStyle,
              persistent: unref(rootMenu).props.persistent,
              "focus-on-target": ""
            }, {
              content: withCtx(() => [
                renderSlot(_ctx.$slots, "title")
              ]),
              default: withCtx(() => [
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass(unref(nsMenu).be("tooltip", "trigger"))
                  },
                  [
                    renderSlot(_ctx.$slots, "default")
                  ],
                  2
                  /* CLASS */
                )
              ]),
              _: 3
              /* FORWARDED */
            }, 8, ["effect", "popper-class", "popper-style", "persistent"])) : (openBlock(), createElementBlock(
              Fragment,
              { key: 1 },
              [
                renderSlot(_ctx.$slots, "default"),
                renderSlot(_ctx.$slots, "title")
              ],
              64
              /* STABLE_FRAGMENT */
            ))
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const menuItemGroupProps = {
    /**
     * @description group title
     */
    title: String
  };
  var _sfc_main$1Q = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElMenuItemGroup"
    },
    __name: "menu-item-group",
    props: menuItemGroupProps,
    setup(__props) {
      const ns = useNamespace("menu-item-group");
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "li",
          {
            class: normalizeClass(unref(ns).b())
          },
          [
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(ns).e("title"))
              },
              [
                !_ctx.$slots.title ? (openBlock(), createElementBlock(
                  Fragment,
                  { key: 0 },
                  [
                    createTextVNode(
                      toDisplayString(__props.title),
                      1
                      /* TEXT */
                    )
                  ],
                  64
                  /* STABLE_FRAGMENT */
                )) : renderSlot(_ctx.$slots, "title", { key: 1 })
              ],
              2
              /* CLASS */
            ),
            createBaseVNode("ul", null, [
              renderSlot(_ctx.$slots, "default")
            ])
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const ElMenu = withInstall(Menu, {
    MenuItem: _sfc_main$1R,
    MenuItemGroup: _sfc_main$1Q,
    SubMenu
  });
  const ElMenuItem = withNoopInstall(_sfc_main$1R);
  const ElMenuItemGroup = withNoopInstall(_sfc_main$1Q);
  const ElSubMenu = withNoopInstall(SubMenu);
  const pageHeaderProps = buildProps({
    /**
     * @description icon component of page header
     */
    icon: {
      type: iconPropType,
      default: () => back_default
    },
    /**
     * @description main title of page header
     */
    title: String,
    /**
     * @description content of page header
     */
    content: {
      type: String,
      default: ""
    }
  });
  const pageHeaderEmits = {
    back: () => true
  };
  const _hoisted_1$1j = ["aria-label"];
  var _sfc_main$1P = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElPageHeader"
    },
    __name: "page-header",
    props: pageHeaderProps,
    emits: pageHeaderEmits,
    setup(__props, { emit: __emit }) {
      const emit2 = __emit;
      const { t } = useLocale();
      const ns = useNamespace("page-header");
      function handleClick() {
        emit2("back");
      }
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass([
              unref(ns).b(),
              unref(ns).is("contentful", !!_ctx.$slots.default),
              {
                [unref(ns).m("has-breadcrumb")]: !!_ctx.$slots.breadcrumb,
                [unref(ns).m("has-extra")]: !!_ctx.$slots.extra
              }
            ])
          },
          [
            _ctx.$slots.breadcrumb ? (openBlock(), createElementBlock(
              "div",
              {
                key: 0,
                class: normalizeClass(unref(ns).e("breadcrumb"))
              },
              [
                renderSlot(_ctx.$slots, "breadcrumb")
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true),
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(ns).e("header"))
              },
              [
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass(unref(ns).e("left"))
                  },
                  [
                    createBaseVNode(
                      "div",
                      {
                        class: normalizeClass(unref(ns).e("back")),
                        role: "button",
                        tabindex: "0",
                        onClick: handleClick
                      },
                      [
                        __props.icon || _ctx.$slots.icon ? (openBlock(), createElementBlock("div", {
                          key: 0,
                          "aria-label": __props.title || unref(t)("el.pageHeader.title"),
                          class: normalizeClass(unref(ns).e("icon"))
                        }, [
                          renderSlot(_ctx.$slots, "icon", {}, () => [
                            __props.icon ? (openBlock(), createBlock(unref(ElIcon), { key: 0 }, {
                              default: withCtx(() => [
                                (openBlock(), createBlock(resolveDynamicComponent(__props.icon)))
                              ]),
                              _: 1
                              /* STABLE */
                            })) : createCommentVNode("v-if", true)
                          ])
                        ], 10, _hoisted_1$1j)) : createCommentVNode("v-if", true),
                        createBaseVNode(
                          "div",
                          {
                            class: normalizeClass(unref(ns).e("title"))
                          },
                          [
                            renderSlot(_ctx.$slots, "title", {}, () => [
                              createTextVNode(
                                toDisplayString(__props.title || unref(t)("el.pageHeader.title")),
                                1
                                /* TEXT */
                              )
                            ])
                          ],
                          2
                          /* CLASS */
                        )
                      ],
                      2
                      /* CLASS */
                    ),
                    createVNode(unref(ElDivider), { direction: "vertical" }),
                    createBaseVNode(
                      "div",
                      {
                        class: normalizeClass(unref(ns).e("content"))
                      },
                      [
                        renderSlot(_ctx.$slots, "content", {}, () => [
                          createTextVNode(
                            toDisplayString(__props.content),
                            1
                            /* TEXT */
                          )
                        ])
                      ],
                      2
                      /* CLASS */
                    )
                  ],
                  2
                  /* CLASS */
                ),
                _ctx.$slots.extra ? (openBlock(), createElementBlock(
                  "div",
                  {
                    key: 0,
                    class: normalizeClass(unref(ns).e("extra"))
                  },
                  [
                    renderSlot(_ctx.$slots, "extra")
                  ],
                  2
                  /* CLASS */
                )) : createCommentVNode("v-if", true)
              ],
              2
              /* CLASS */
            ),
            _ctx.$slots.default ? (openBlock(), createElementBlock(
              "div",
              {
                key: 1,
                class: normalizeClass(unref(ns).e("main"))
              },
              [
                renderSlot(_ctx.$slots, "default")
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true)
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const ElPageHeader = withInstall(_sfc_main$1P);
  const elPaginationKey = /* @__PURE__ */ Symbol("elPaginationKey");
  const paginationPrevProps = buildProps({
    disabled: Boolean,
    currentPage: {
      type: Number,
      default: 1
    },
    prevText: {
      type: String
    },
    prevIcon: {
      type: iconPropType
    }
  });
  const paginationPrevEmits = {
    click: (evt) => evt instanceof MouseEvent
  };
  const _hoisted_1$1i = ["disabled", "aria-label", "aria-disabled"];
  const _hoisted_2$16 = { key: 0 };
  var _sfc_main$1O = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElPaginationPrev"
    },
    __name: "prev",
    props: paginationPrevProps,
    emits: paginationPrevEmits,
    setup(__props) {
      const props2 = __props;
      const { t } = useLocale();
      const internalDisabled = computed(
        () => props2.disabled || props2.currentPage <= 1
      );
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock("button", {
          type: "button",
          class: "btn-prev",
          disabled: internalDisabled.value,
          "aria-label": _ctx.prevText || unref(t)("el.pagination.prev"),
          "aria-disabled": internalDisabled.value,
          onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("click", $event))
        }, [
          _ctx.prevText ? (openBlock(), createElementBlock(
            "span",
            _hoisted_2$16,
            toDisplayString(_ctx.prevText),
            1
            /* TEXT */
          )) : (openBlock(), createBlock(unref(ElIcon), { key: 1 }, {
            default: withCtx(() => [
              (openBlock(), createBlock(resolveDynamicComponent(_ctx.prevIcon)))
            ]),
            _: 1
            /* STABLE */
          }))
        ], 8, _hoisted_1$1i);
      };
    }
  });
  const paginationNextProps = buildProps({
    disabled: Boolean,
    currentPage: {
      type: Number,
      default: 1
    },
    pageCount: {
      type: Number,
      default: 50
    },
    nextText: {
      type: String
    },
    nextIcon: {
      type: iconPropType
    }
  });
  const _hoisted_1$1h = ["disabled", "aria-label", "aria-disabled"];
  const _hoisted_2$15 = { key: 0 };
  var _sfc_main$1N = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElPaginationNext"
    },
    __name: "next",
    props: paginationNextProps,
    emits: ["click"],
    setup(__props) {
      const props2 = __props;
      const { t } = useLocale();
      const internalDisabled = computed(
        () => props2.disabled || props2.currentPage === props2.pageCount || props2.pageCount === 0
      );
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock("button", {
          type: "button",
          class: "btn-next",
          disabled: internalDisabled.value,
          "aria-label": _ctx.nextText || unref(t)("el.pagination.next"),
          "aria-disabled": internalDisabled.value,
          onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("click", $event))
        }, [
          _ctx.nextText ? (openBlock(), createElementBlock(
            "span",
            _hoisted_2$15,
            toDisplayString(_ctx.nextText),
            1
            /* TEXT */
          )) : (openBlock(), createBlock(unref(ElIcon), { key: 1 }, {
            default: withCtx(() => [
              (openBlock(), createBlock(resolveDynamicComponent(_ctx.nextIcon)))
            ]),
            _: 1
            /* STABLE */
          }))
        ], 8, _hoisted_1$1h);
      };
    }
  });
  const usePagination = () => inject(elPaginationKey, {});
  const paginationSizesProps = buildProps({
    pageSize: {
      type: Number,
      required: true
    },
    pageSizes: {
      type: definePropType(Array),
      default: () => mutable([10, 20, 30, 40, 50, 100])
    },
    popperClass: {
      type: String
    },
    popperStyle: {
      type: definePropType([String, Object])
    },
    disabled: Boolean,
    teleported: Boolean,
    size: {
      type: String,
      values: componentSizes
    },
    appendSizeTo: String
  });
  var _sfc_main$1M = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElPaginationSizes"
    },
    __name: "sizes",
    props: paginationSizesProps,
    emits: ["page-size-change"],
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const { t } = useLocale();
      const ns = useNamespace("pagination");
      const pagination = usePagination();
      const innerPageSize = ref(props2.pageSize);
      watch(
        () => props2.pageSizes,
        (newVal, oldVal) => {
          if (isEqual$1(newVal, oldVal)) return;
          if (isArray$1(newVal)) {
            const pageSize = newVal.includes(props2.pageSize) ? props2.pageSize : props2.pageSizes[0];
            emit2("page-size-change", pageSize);
          }
        }
      );
      watch(
        () => props2.pageSize,
        (newVal) => {
          innerPageSize.value = newVal;
        }
      );
      const innerPageSizes = computed(() => props2.pageSizes);
      function handleChange(val) {
        var _a;
        if (val !== innerPageSize.value) {
          innerPageSize.value = val;
          (_a = pagination.handleSizeChange) == null ? void 0 : _a.call(pagination, Number(val));
        }
      }
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "span",
          {
            class: normalizeClass(unref(ns).e("sizes"))
          },
          [
            createVNode(unref(ElSelect), {
              "model-value": innerPageSize.value,
              disabled: _ctx.disabled,
              "popper-class": _ctx.popperClass,
              "popper-style": _ctx.popperStyle,
              size: _ctx.size,
              teleported: _ctx.teleported,
              "validate-event": false,
              "append-to": _ctx.appendSizeTo,
              onChange: handleChange
            }, {
              default: withCtx(() => [
                (openBlock(true), createElementBlock(
                  Fragment,
                  null,
                  renderList(innerPageSizes.value, (item) => {
                    return openBlock(), createBlock(unref(ElOption), {
                      key: item,
                      value: item,
                      label: item + unref(t)("el.pagination.pagesize")
                    }, null, 8, ["value", "label"]);
                  }),
                  128
                  /* KEYED_FRAGMENT */
                ))
              ]),
              _: 1
              /* STABLE */
            }, 8, ["model-value", "disabled", "popper-class", "popper-style", "size", "teleported", "append-to"])
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const paginationJumperProps = buildProps({
    size: {
      type: String,
      values: componentSizes
    }
  });
  const _hoisted_1$1g = ["disabled"];
  var _sfc_main$1L = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElPaginationJumper"
    },
    __name: "jumper",
    props: paginationJumperProps,
    setup(__props) {
      const { t } = useLocale();
      const ns = useNamespace("pagination");
      const { pageCount, disabled, currentPage, changeEvent } = usePagination();
      const userInput = ref();
      const innerValue = computed(() => {
        var _a;
        return (_a = userInput.value) != null ? _a : currentPage == null ? void 0 : currentPage.value;
      });
      function handleInput(val) {
        userInput.value = val ? +val : "";
      }
      function handleChange(val) {
        val = Math.trunc(+val);
        changeEvent == null ? void 0 : changeEvent(val);
        userInput.value = void 0;
      }
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock("span", {
          class: normalizeClass(unref(ns).e("jump")),
          disabled: unref(disabled)
        }, [
          createBaseVNode(
            "span",
            {
              class: normalizeClass([unref(ns).e("goto")])
            },
            toDisplayString(unref(t)("el.pagination.goto")),
            3
            /* TEXT, CLASS */
          ),
          createVNode(unref(ElInput), {
            size: _ctx.size,
            class: normalizeClass([unref(ns).e("editor"), unref(ns).is("in-pagination")]),
            min: 1,
            max: unref(pageCount),
            disabled: unref(disabled),
            "model-value": innerValue.value,
            "validate-event": false,
            "aria-label": unref(t)("el.pagination.page"),
            type: "number",
            "onUpdate:modelValue": handleInput,
            onChange: handleChange
          }, null, 8, ["size", "class", "max", "disabled", "model-value", "aria-label"]),
          createBaseVNode(
            "span",
            {
              class: normalizeClass([unref(ns).e("classifier")])
            },
            toDisplayString(unref(t)("el.pagination.pageClassifier")),
            3
            /* TEXT, CLASS */
          )
        ], 10, _hoisted_1$1g);
      };
    }
  });
  const paginationTotalProps = buildProps({
    total: {
      type: Number,
      default: 1e3
    }
  });
  const _hoisted_1$1f = ["disabled"];
  var _sfc_main$1K = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElPaginationTotal"
    },
    __name: "total",
    props: paginationTotalProps,
    setup(__props) {
      const { t } = useLocale();
      const ns = useNamespace("pagination");
      const { disabled } = usePagination();
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock("span", {
          class: normalizeClass(unref(ns).e("total")),
          disabled: unref(disabled)
        }, toDisplayString(unref(t)("el.pagination.total", {
          total: _ctx.total
        })), 11, _hoisted_1$1f);
      };
    }
  });
  const paginationPagerProps = buildProps({
    currentPage: {
      type: Number,
      default: 1
    },
    pageCount: {
      type: Number,
      required: true
    },
    pagerCount: {
      type: Number,
      default: 7
    },
    disabled: Boolean
  });
  const _hoisted_1$1e = ["aria-current", "aria-label", "tabindex"];
  const _hoisted_2$14 = ["tabindex", "aria-label"];
  const _hoisted_3$T = ["aria-current", "aria-label", "tabindex"];
  const _hoisted_4$O = ["tabindex", "aria-label"];
  const _hoisted_5$F = ["aria-current", "aria-label", "tabindex"];
  var _sfc_main$1J = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElPaginationPager"
    },
    __name: "pager",
    props: paginationPagerProps,
    emits: [CHANGE_EVENT],
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const nsPager = useNamespace("pager");
      const nsIcon = useNamespace("icon");
      const { t } = useLocale();
      const showPrevMore = ref(false);
      const showNextMore = ref(false);
      const quickPrevHover = ref(false);
      const quickNextHover = ref(false);
      const quickPrevFocus = ref(false);
      const quickNextFocus = ref(false);
      const pagers = computed(() => {
        const pagerCount = props2.pagerCount;
        const halfPagerCount = (pagerCount - 1) / 2;
        const currentPage = Number(props2.currentPage);
        const pageCount = Number(props2.pageCount);
        let showPrevMore2 = false;
        let showNextMore2 = false;
        if (pageCount > pagerCount) {
          if (currentPage > pagerCount - halfPagerCount) {
            showPrevMore2 = true;
          }
          if (currentPage < pageCount - halfPagerCount) {
            showNextMore2 = true;
          }
        }
        const array = [];
        if (showPrevMore2 && !showNextMore2) {
          const startPage = pageCount - (pagerCount - 2);
          for (let i = startPage; i < pageCount; i++) {
            array.push(i);
          }
        } else if (!showPrevMore2 && showNextMore2) {
          for (let i = 2; i < pagerCount; i++) {
            array.push(i);
          }
        } else if (showPrevMore2 && showNextMore2) {
          const offset2 = Math.floor(pagerCount / 2) - 1;
          for (let i = currentPage - offset2; i <= currentPage + offset2; i++) {
            array.push(i);
          }
        } else {
          for (let i = 2; i < pageCount; i++) {
            array.push(i);
          }
        }
        return array;
      });
      const prevMoreKls = computed(() => [
        "more",
        "btn-quickprev",
        nsIcon.b(),
        nsPager.is("disabled", props2.disabled)
      ]);
      const nextMoreKls = computed(() => [
        "more",
        "btn-quicknext",
        nsIcon.b(),
        nsPager.is("disabled", props2.disabled)
      ]);
      const tabindex = computed(() => props2.disabled ? -1 : 0);
      watch(
        () => [props2.pageCount, props2.pagerCount, props2.currentPage],
        ([pageCount, pagerCount, currentPage]) => {
          const halfPagerCount = (pagerCount - 1) / 2;
          let showPrev = false;
          let showNext = false;
          if (pageCount > pagerCount) {
            showPrev = currentPage > pagerCount - halfPagerCount;
            showNext = currentPage < pageCount - halfPagerCount;
          }
          quickPrevHover.value && (quickPrevHover.value = showPrev);
          quickNextHover.value && (quickNextHover.value = showNext);
          showPrevMore.value = showPrev;
          showNextMore.value = showNext;
        },
        { immediate: true }
      );
      function onMouseEnter(forward = false) {
        if (props2.disabled) return;
        if (forward) {
          quickPrevHover.value = true;
        } else {
          quickNextHover.value = true;
        }
      }
      function onFocus(forward = false) {
        if (forward) {
          quickPrevFocus.value = true;
        } else {
          quickNextFocus.value = true;
        }
      }
      function onEnter(e) {
        const target = e.target;
        if (target.tagName.toLowerCase() === "li" && Array.from(target.classList).includes("number")) {
          const newPage = Number(target.textContent);
          if (newPage !== props2.currentPage) {
            emit2(CHANGE_EVENT, newPage);
          }
        } else if (target.tagName.toLowerCase() === "li" && Array.from(target.classList).includes("more")) {
          onPagerClick(e);
        }
      }
      function onPagerClick(event) {
        const target = event.target;
        if (target.tagName.toLowerCase() === "ul" || props2.disabled) {
          return;
        }
        let newPage = Number(target.textContent);
        const pageCount = props2.pageCount;
        const currentPage = props2.currentPage;
        const pagerCountOffset = props2.pagerCount - 2;
        if (target.className.includes("more")) {
          if (target.className.includes("quickprev")) {
            newPage = currentPage - pagerCountOffset;
          } else if (target.className.includes("quicknext")) {
            newPage = currentPage + pagerCountOffset;
          }
        }
        if (!Number.isNaN(+newPage)) {
          if (newPage < 1) {
            newPage = 1;
          }
          if (newPage > pageCount) {
            newPage = pageCount;
          }
        }
        if (newPage !== currentPage) {
          emit2(CHANGE_EVENT, newPage);
        }
      }
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "ul",
          {
            class: normalizeClass(unref(nsPager).b()),
            onClick: onPagerClick,
            onKeyup: withKeys(onEnter, ["enter"])
          },
          [
            _ctx.pageCount > 0 ? (openBlock(), createElementBlock("li", {
              key: 0,
              class: normalizeClass([[
                unref(nsPager).is("active", _ctx.currentPage === 1),
                unref(nsPager).is("disabled", _ctx.disabled)
              ], "number"]),
              "aria-current": _ctx.currentPage === 1,
              "aria-label": unref(t)("el.pagination.currentPage", { pager: 1 }),
              tabindex: tabindex.value
            }, " 1 ", 10, _hoisted_1$1e)) : createCommentVNode("v-if", true),
            showPrevMore.value ? (openBlock(), createElementBlock("li", {
              key: 1,
              class: normalizeClass(prevMoreKls.value),
              tabindex: tabindex.value,
              "aria-label": unref(t)("el.pagination.prevPages", { pager: _ctx.pagerCount - 2 }),
              onMouseenter: _cache[0] || (_cache[0] = ($event) => onMouseEnter(true)),
              onMouseleave: _cache[1] || (_cache[1] = ($event) => quickPrevHover.value = false),
              onFocus: _cache[2] || (_cache[2] = ($event) => onFocus(true)),
              onBlur: _cache[3] || (_cache[3] = ($event) => quickPrevFocus.value = false)
            }, [
              (quickPrevHover.value || quickPrevFocus.value) && !_ctx.disabled ? (openBlock(), createBlock(unref(d_arrow_left_default), { key: 0 })) : (openBlock(), createBlock(unref(more_filled_default), { key: 1 }))
            ], 42, _hoisted_2$14)) : createCommentVNode("v-if", true),
            (openBlock(true), createElementBlock(
              Fragment,
              null,
              renderList(pagers.value, (pager) => {
                return openBlock(), createElementBlock("li", {
                  key: pager,
                  class: normalizeClass([[
                    unref(nsPager).is("active", _ctx.currentPage === pager),
                    unref(nsPager).is("disabled", _ctx.disabled)
                  ], "number"]),
                  "aria-current": _ctx.currentPage === pager,
                  "aria-label": unref(t)("el.pagination.currentPage", { pager }),
                  tabindex: tabindex.value
                }, toDisplayString(pager), 11, _hoisted_3$T);
              }),
              128
              /* KEYED_FRAGMENT */
            )),
            showNextMore.value ? (openBlock(), createElementBlock("li", {
              key: 2,
              class: normalizeClass(nextMoreKls.value),
              tabindex: tabindex.value,
              "aria-label": unref(t)("el.pagination.nextPages", { pager: _ctx.pagerCount - 2 }),
              onMouseenter: _cache[4] || (_cache[4] = ($event) => onMouseEnter()),
              onMouseleave: _cache[5] || (_cache[5] = ($event) => quickNextHover.value = false),
              onFocus: _cache[6] || (_cache[6] = ($event) => onFocus()),
              onBlur: _cache[7] || (_cache[7] = ($event) => quickNextFocus.value = false)
            }, [
              (quickNextHover.value || quickNextFocus.value) && !_ctx.disabled ? (openBlock(), createBlock(unref(d_arrow_right_default), { key: 0 })) : (openBlock(), createBlock(unref(more_filled_default), { key: 1 }))
            ], 42, _hoisted_4$O)) : createCommentVNode("v-if", true),
            _ctx.pageCount > 1 ? (openBlock(), createElementBlock("li", {
              key: 3,
              class: normalizeClass([[
                unref(nsPager).is("active", _ctx.currentPage === _ctx.pageCount),
                unref(nsPager).is("disabled", _ctx.disabled)
              ], "number"]),
              "aria-current": _ctx.currentPage === _ctx.pageCount,
              "aria-label": unref(t)("el.pagination.currentPage", { pager: _ctx.pageCount }),
              tabindex: tabindex.value
            }, toDisplayString(_ctx.pageCount), 11, _hoisted_5$F)) : createCommentVNode("v-if", true)
          ],
          34
          /* CLASS, NEED_HYDRATION */
        );
      };
    }
  });
  const isAbsent = (v2) => typeof v2 !== "number";
  const paginationProps = buildProps({
    /**
     * @description options of item count per page
     */
    pageSize: Number,
    /**
     * @description default initial value of page size, not setting is the same as setting 10
     */
    defaultPageSize: Number,
    /**
     * @description total item count
     */
    total: Number,
    /**
     * @description total page count. Set either `total` or `page-count` and pages will be displayed; if you need `page-sizes`, `total` is required
     */
    pageCount: Number,
    /**
     * @description number of pagers. Pagination collapses when the total page count exceeds this value
     */
    pagerCount: {
      type: Number,
      validator: (value) => {
        return isNumber(value) && Math.trunc(value) === value && value > 4 && value < 22 && value % 2 === 1;
      },
      default: 7
    },
    /**
     * @description current page number
     */
    currentPage: Number,
    /**
     * @description default initial value of current-page, not setting is the same as setting 1
     */
    defaultCurrentPage: Number,
    /**
     * @description layout of Pagination, elements separated with a comma
     */
    layout: {
      type: String,
      default: ["prev", "pager", "next", "jumper", "->", "total"].join(", ")
    },
    /**
     * @description item count of each page
     */
    pageSizes: {
      type: definePropType(Array),
      default: () => mutable([10, 20, 30, 40, 50, 100])
    },
    /**
     * @description custom class name for the page size Select's dropdown
     */
    popperClass: {
      type: String,
      default: ""
    },
    /**
     * @description custom style for the page size Select's dropdown
     */
    popperStyle: {
      type: definePropType([String, Object])
    },
    /**
     * @description text for the prev button
     */
    prevText: {
      type: String,
      default: ""
    },
    /**
     * @description icon for the prev button, higher priority of `prev-text`
     */
    prevIcon: {
      type: iconPropType,
      default: () => arrow_left_default
    },
    /**
     * @description text for the next button
     */
    nextText: {
      type: String,
      default: ""
    },
    /**
     * @description icon for the next button, higher priority of `next-text`
     */
    nextIcon: {
      type: iconPropType,
      default: () => arrow_right_default
    },
    /**
     * @description whether Pagination size is teleported to body
     */
    teleported: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether to use small pagination
     */
    small: Boolean,
    /**
     * @description set page size
     */
    size: useSizeProp,
    /**
     * @description whether the buttons have a background color
     */
    background: Boolean,
    /**
     * @description whether Pagination is disabled
     */
    disabled: Boolean,
    /**
     * @description whether to hide when there's only one page
     */
    hideOnSinglePage: Boolean,
    /**
     * @description which element the size dropdown appends to.
     */
    appendSizeTo: String
  });
  const paginationEmits = {
    "update:current-page": (val) => isNumber(val),
    "update:page-size": (val) => isNumber(val),
    "size-change": (val) => isNumber(val),
    change: (currentPage, pageSize) => isNumber(currentPage) && isNumber(pageSize),
    "current-change": (val) => isNumber(val),
    "prev-click": (val) => isNumber(val),
    "next-click": (val) => isNumber(val)
  };
  const componentName = "ElPagination";
  var Pagination = /* @__PURE__ */ defineComponent({
    name: componentName,
    props: paginationProps,
    emits: paginationEmits,
    setup(props2, { emit: emit2, slots }) {
      const { t } = useLocale();
      const ns = useNamespace("pagination");
      const vnodeProps = getCurrentInstance().vnode.props || {};
      const _globalSize = useGlobalSize();
      const _size = computed(
        () => {
          var _a;
          return props2.small ? "small" : (_a = props2.size) != null ? _a : _globalSize.value;
        }
      );
      useDeprecated(
        {
          from: "small",
          replacement: "size",
          version: "3.0.0",
          scope: "el-pagination",
          ref: "https://element-plus.org/zh-CN/component/pagination.html"
        },
        computed(() => !!props2.small)
      );
      const hasCurrentPageListener = "onUpdate:currentPage" in vnodeProps || "onUpdate:current-page" in vnodeProps || "onCurrentChange" in vnodeProps;
      const hasPageSizeListener = "onUpdate:pageSize" in vnodeProps || "onUpdate:page-size" in vnodeProps || "onSizeChange" in vnodeProps;
      const assertValidUsage = computed(() => {
        if (isAbsent(props2.total) && isAbsent(props2.pageCount)) return false;
        if (!isAbsent(props2.currentPage) && !hasCurrentPageListener) return false;
        if (props2.layout.includes("sizes")) {
          if (!isAbsent(props2.pageCount)) {
            if (!hasPageSizeListener) return false;
          } else if (!isAbsent(props2.total)) {
            if (!isAbsent(props2.pageSize)) {
              if (!hasPageSizeListener) {
                return false;
              }
            }
          }
        }
        return true;
      });
      const innerPageSize = ref(
        isAbsent(props2.defaultPageSize) ? 10 : props2.defaultPageSize
      );
      const innerCurrentPage = ref(
        isAbsent(props2.defaultCurrentPage) ? 1 : props2.defaultCurrentPage
      );
      const pageSizeBridge = computed({
        get() {
          return isAbsent(props2.pageSize) ? innerPageSize.value : props2.pageSize;
        },
        set(v2) {
          if (isAbsent(props2.pageSize)) {
            innerPageSize.value = v2;
          }
          if (hasPageSizeListener) {
            emit2("update:page-size", v2);
            emit2("size-change", v2);
          }
        }
      });
      const pageCountBridge = computed(() => {
        let pageCount = 0;
        if (!isAbsent(props2.pageCount)) {
          pageCount = props2.pageCount;
        } else if (!isAbsent(props2.total)) {
          pageCount = Math.max(1, Math.ceil(props2.total / pageSizeBridge.value));
        }
        return pageCount;
      });
      const currentPageBridge = computed({
        get() {
          return isAbsent(props2.currentPage) ? innerCurrentPage.value : props2.currentPage;
        },
        set(v2) {
          let newCurrentPage = v2;
          if (v2 < 1) {
            newCurrentPage = 1;
          } else if (v2 > pageCountBridge.value) {
            newCurrentPage = pageCountBridge.value;
          }
          if (isAbsent(props2.currentPage)) {
            innerCurrentPage.value = newCurrentPage;
          }
          if (hasCurrentPageListener) {
            emit2("update:current-page", newCurrentPage);
            emit2("current-change", newCurrentPage);
          }
        }
      });
      watch(pageCountBridge, (val) => {
        if (currentPageBridge.value > val) currentPageBridge.value = val;
      });
      watch(
        [currentPageBridge, pageSizeBridge],
        (value) => {
          emit2(CHANGE_EVENT, ...value);
        },
        { flush: "post" }
      );
      function handleCurrentChange2(val) {
        currentPageBridge.value = val;
      }
      function handleSizeChange(val) {
        pageSizeBridge.value = val;
        const newPageCount = pageCountBridge.value;
        if (currentPageBridge.value > newPageCount) {
          currentPageBridge.value = newPageCount;
        }
      }
      function prev() {
        if (props2.disabled) return;
        currentPageBridge.value -= 1;
        emit2("prev-click", currentPageBridge.value);
      }
      function next() {
        if (props2.disabled) return;
        currentPageBridge.value += 1;
        emit2("next-click", currentPageBridge.value);
      }
      function addClass2(element, cls) {
        if (element) {
          if (!element.props) {
            element.props = {};
          }
          element.props.class = [element.props.class, cls].join(" ");
        }
      }
      provide(elPaginationKey, {
        pageCount: pageCountBridge,
        disabled: computed(() => props2.disabled),
        currentPage: currentPageBridge,
        changeEvent: handleCurrentChange2,
        handleSizeChange
      });
      return () => {
        var _a, _b;
        if (!assertValidUsage.value) {
          debugWarn(componentName, t("el.pagination.deprecationWarning"));
          return null;
        }
        if (!props2.layout) return null;
        if (props2.hideOnSinglePage && pageCountBridge.value <= 1) return null;
        const rootChildren = [];
        const rightWrapperChildren = [];
        const rightWrapperRoot = h$1(
          "div",
          { class: ns.e("rightwrapper") },
          rightWrapperChildren
        );
        const TEMPLATE_MAP = {
          prev: h$1(_sfc_main$1O, {
            disabled: props2.disabled,
            currentPage: currentPageBridge.value,
            prevText: props2.prevText,
            prevIcon: props2.prevIcon,
            onClick: prev
          }),
          jumper: h$1(_sfc_main$1L, {
            size: _size.value
          }),
          pager: h$1(_sfc_main$1J, {
            currentPage: currentPageBridge.value,
            pageCount: pageCountBridge.value,
            pagerCount: props2.pagerCount,
            onChange: handleCurrentChange2,
            disabled: props2.disabled
          }),
          next: h$1(_sfc_main$1N, {
            disabled: props2.disabled,
            currentPage: currentPageBridge.value,
            pageCount: pageCountBridge.value,
            nextText: props2.nextText,
            nextIcon: props2.nextIcon,
            onClick: next
          }),
          sizes: h$1(_sfc_main$1M, {
            pageSize: pageSizeBridge.value,
            pageSizes: props2.pageSizes,
            popperClass: props2.popperClass,
            popperStyle: props2.popperStyle,
            disabled: props2.disabled,
            teleported: props2.teleported,
            size: _size.value,
            appendSizeTo: props2.appendSizeTo
          }),
          slot: (_b = (_a = slots == null ? void 0 : slots.default) == null ? void 0 : _a.call(slots)) != null ? _b : null,
          total: h$1(_sfc_main$1K, { total: isAbsent(props2.total) ? 0 : props2.total })
        };
        const components = props2.layout.split(",").map((item) => item.trim());
        let haveRightWrapper = false;
        components.forEach((c2) => {
          if (c2 === "->") {
            haveRightWrapper = true;
            return;
          }
          if (!haveRightWrapper) {
            rootChildren.push(TEMPLATE_MAP[c2]);
          } else {
            rightWrapperChildren.push(TEMPLATE_MAP[c2]);
          }
        });
        addClass2(rootChildren[0], ns.is("first"));
        addClass2(rootChildren[rootChildren.length - 1], ns.is("last"));
        if (haveRightWrapper && rightWrapperChildren.length > 0) {
          addClass2(rightWrapperChildren[0], ns.is("first"));
          addClass2(
            rightWrapperChildren[rightWrapperChildren.length - 1],
            ns.is("last")
          );
          rootChildren.push(rightWrapperRoot);
        }
        return h$1(
          "div",
          {
            class: [
              ns.b(),
              ns.is("background", props2.background),
              ns.m(_size.value)
            ]
          },
          rootChildren
        );
      };
    }
  });
  const ElPagination = withInstall(Pagination);
  const popconfirmProps = buildProps({
    /**
     * @description Title
     */
    title: String,
    /**
     * @description Confirm button text
     */
    confirmButtonText: String,
    /**
     * @description Cancel button text
     */
    cancelButtonText: String,
    /**
     * @description Confirm button type
     */
    confirmButtonType: {
      type: String,
      values: buttonTypes,
      default: "primary"
    },
    /**
     * @description Cancel button type
     */
    cancelButtonType: {
      type: String,
      values: buttonTypes,
      default: "text"
    },
    /**
     * @description Icon Component
     */
    icon: {
      type: iconPropType,
      default: () => question_filled_default
    },
    /**
     * @description Icon color
     */
    iconColor: {
      type: String,
      default: "#f90"
    },
    /**
     * @description is hide Icon
     */
    hideIcon: Boolean,
    /**
     * @description delay of disappear, in millisecond
     */
    hideAfter: {
      type: Number,
      default: 200
    },
    /**
     * @description Tooltip theme, built-in theme: `dark` / `light`
     */
    effect: {
      ...useTooltipContentProps.effect,
      default: "light"
    },
    /**
     * @description whether popconfirm is teleported to the body
     */
    teleported: useTooltipContentProps.teleported,
    /**
     * @description when popconfirm inactive and `persistent` is `false` , popconfirm will be destroyed
     */
    persistent: useTooltipContentProps.persistent,
    /**
     * @description popconfirm width, min width 150px
     */
    width: {
      type: [String, Number],
      default: 150
    },
    virtualTriggering: useTooltipTriggerProps.virtualTriggering,
    virtualRef: useTooltipTriggerProps.virtualRef
  });
  const popconfirmEmits = {
    /**
     * @description triggers when click confirm button
     */
    confirm: (e) => e instanceof MouseEvent,
    /**
     * @description triggers when click cancel button
     */
    cancel: (e) => e instanceof MouseEvent
  };
  var _sfc_main$1I = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElPopconfirm"
    },
    __name: "popconfirm",
    props: popconfirmProps,
    emits: popconfirmEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const { t } = useLocale();
      const ns = useNamespace("popconfirm");
      const tooltipRef = ref();
      const rootRef = ref();
      const popperRef = computed(() => {
        var _a;
        return (_a = unref(tooltipRef)) == null ? void 0 : _a.popperRef;
      });
      const showPopper = () => {
        var _a, _b;
        (_b = (_a = rootRef.value) == null ? void 0 : _a.focus) == null ? void 0 : _b.call(_a);
      };
      const hidePopper = () => {
        var _a, _b;
        (_b = (_a = tooltipRef.value) == null ? void 0 : _a.onClose) == null ? void 0 : _b.call(_a);
      };
      const style = computed(() => {
        return {
          width: addUnit(props2.width)
        };
      });
      const confirm = (e) => {
        emit2("confirm", e);
        hidePopper();
      };
      const cancel = (e) => {
        emit2("cancel", e);
        hidePopper();
      };
      const finalConfirmButtonText = computed(
        () => props2.confirmButtonText || t("el.popconfirm.confirmButtonText")
      );
      const finalCancelButtonText = computed(
        () => props2.cancelButtonText || t("el.popconfirm.cancelButtonText")
      );
      __expose({
        popperRef,
        hide: hidePopper
      });
      return (_ctx, _cache) => {
        return openBlock(), createBlock(unref(ElTooltip), mergeProps({
          ref_key: "tooltipRef",
          ref: tooltipRef,
          trigger: "click",
          effect: __props.effect
        }, _ctx.$attrs, {
          "virtual-triggering": __props.virtualTriggering,
          "virtual-ref": __props.virtualRef,
          "popper-class": `${unref(ns).namespace.value}-popover`,
          "popper-style": style.value,
          teleported: __props.teleported,
          "fallback-placements": ["bottom", "top", "right", "left"],
          "hide-after": __props.hideAfter,
          persistent: __props.persistent,
          loop: "",
          onShow: showPopper
        }), {
          content: withCtx(() => [
            createBaseVNode(
              "div",
              {
                ref_key: "rootRef",
                ref: rootRef,
                tabindex: "-1",
                class: normalizeClass(unref(ns).b())
              },
              [
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass(unref(ns).e("main"))
                  },
                  [
                    !__props.hideIcon && __props.icon ? (openBlock(), createBlock(unref(ElIcon), {
                      key: 0,
                      class: normalizeClass(unref(ns).e("icon")),
                      style: normalizeStyle({ color: __props.iconColor })
                    }, {
                      default: withCtx(() => [
                        (openBlock(), createBlock(resolveDynamicComponent(__props.icon)))
                      ]),
                      _: 1
                      /* STABLE */
                    }, 8, ["class", "style"])) : createCommentVNode("v-if", true),
                    createTextVNode(
                      " " + toDisplayString(__props.title),
                      1
                      /* TEXT */
                    )
                  ],
                  2
                  /* CLASS */
                ),
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass(unref(ns).e("action"))
                  },
                  [
                    renderSlot(_ctx.$slots, "actions", {
                      confirm,
                      cancel
                    }, () => [
                      createVNode(unref(ElButton), {
                        size: "small",
                        type: __props.cancelButtonType === "text" ? "" : __props.cancelButtonType,
                        text: __props.cancelButtonType === "text",
                        onClick: cancel
                      }, {
                        default: withCtx(() => [
                          createTextVNode(
                            toDisplayString(finalCancelButtonText.value),
                            1
                            /* TEXT */
                          )
                        ]),
                        _: 1
                        /* STABLE */
                      }, 8, ["type", "text"]),
                      createVNode(unref(ElButton), {
                        size: "small",
                        type: __props.confirmButtonType === "text" ? "" : __props.confirmButtonType,
                        text: __props.confirmButtonType === "text",
                        onClick: confirm
                      }, {
                        default: withCtx(() => [
                          createTextVNode(
                            toDisplayString(finalConfirmButtonText.value),
                            1
                            /* TEXT */
                          )
                        ]),
                        _: 1
                        /* STABLE */
                      }, 8, ["type", "text"])
                    ])
                  ],
                  2
                  /* CLASS */
                )
              ],
              2
              /* CLASS */
            )
          ]),
          default: withCtx(() => [
            _ctx.$slots.reference ? renderSlot(_ctx.$slots, "reference", { key: 0 }) : createCommentVNode("v-if", true)
          ]),
          _: 3
          /* FORWARDED */
        }, 16, ["effect", "virtual-triggering", "virtual-ref", "popper-class", "popper-style", "teleported", "hide-after", "persistent"]);
      };
    }
  });
  const ElPopconfirm = withInstall(_sfc_main$1I);
  const popoverProps = buildProps({
    /**
     * @description how the popover is triggered, not valid in controlled mode
     */
    trigger: useTooltipTriggerProps.trigger,
    /**
     * @description When you click the mouse to focus on the trigger element, you can define a set of keyboard codes to control the display of popover through the keyboard, not valid in controlled mode
     */
    triggerKeys: useTooltipTriggerProps.triggerKeys,
    /**
     * @description popover placement
     */
    placement: dropdownProps.placement,
    /**
     * @description whether Popover is disabled
     */
    disabled: useTooltipTriggerProps.disabled,
    /**
     * @description whether popover is visible
     */
    visible: useTooltipContentProps.visible,
    /**
     * @description popover transition animation
     */
    transition: useTooltipContentProps.transition,
    /**
     * @description parameters for [popper.js](https://popper.js.org/docs/v2/)
     */
    popperOptions: dropdownProps.popperOptions,
    /**
     * @description [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of Popover
     */
    tabindex: dropdownProps.tabindex,
    /**
     * @description popover content, can be replaced with a default `slot`
     */
    content: useTooltipContentProps.content,
    /**
     * @description custom style for popover
     */
    popperStyle: useTooltipContentProps.popperStyle,
    /**
     * @description custom class name for popover
     */
    popperClass: useTooltipContentProps.popperClass,
    enterable: {
      ...useTooltipContentProps.enterable,
      default: true
    },
    /**
     * @description Tooltip theme, built-in theme: `dark` / `light`
     */
    effect: {
      ...useTooltipContentProps.effect,
      default: "light"
    },
    /**
     * @description whether popover dropdown is teleported to the body
     */
    teleported: useTooltipContentProps.teleported,
    /**
     * @description which select dropdown appends to
     */
    appendTo: useTooltipContentProps.appendTo,
    /**
     * @description popover title
     */
    title: String,
    /**
     * @description popover width
     */
    width: {
      type: [String, Number],
      default: 150
    },
    /**
     * @description popover offset
     */
    offset: {
      type: Number,
      default: void 0
    },
    /**
     * @description delay of appearance, in millisecond, not valid in controlled mode
     */
    showAfter: {
      type: Number,
      default: 0
    },
    /**
     * @description delay of disappear, in millisecond, not valid in controlled mode
     */
    hideAfter: {
      type: Number,
      default: 200
    },
    /**
     * @description timeout in milliseconds to hide tooltip, not valid in controlled mode
     */
    autoClose: {
      type: Number,
      default: 0
    },
    /**
     * @description whether a tooltip arrow is displayed or not. For more info, please refer to [ElPopper](https://github.com/element-plus/element-plus/tree/dev/packages/components/popper)
     */
    showArrow: {
      type: Boolean,
      default: true
    },
    /**
     * @description when popover inactive and `persistent` is `false` , popover will be destroyed
     */
    persistent: {
      type: Boolean,
      default: true
    },
    "onUpdate:visible": {
      type: Function
    }
  });
  const popoverEmits = {
    "update:visible": (value) => isBoolean(value),
    "before-enter": () => true,
    "before-leave": () => true,
    "after-enter": () => true,
    "after-leave": () => true
  };
  const updateEventKeyRaw = `onUpdate:visible`;
  var _sfc_main$1H = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElPopover"
    },
    __name: "popover",
    props: popoverProps,
    emits: popoverEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const onUpdateVisible = computed(() => {
        return props2[updateEventKeyRaw];
      });
      const ns = useNamespace("popover");
      const tooltipRef = ref();
      const popperRef = computed(() => {
        var _a;
        return (_a = unref(tooltipRef)) == null ? void 0 : _a.popperRef;
      });
      const style = computed(() => {
        return [
          {
            width: addUnit(props2.width)
          },
          props2.popperStyle
        ];
      });
      const kls = computed(() => {
        return [ns.b(), props2.popperClass, { [ns.m("plain")]: !!props2.content }];
      });
      const gpuAcceleration = computed(() => {
        return props2.transition === `${ns.namespace.value}-fade-in-linear`;
      });
      const hide = () => {
        var _a;
        (_a = tooltipRef.value) == null ? void 0 : _a.hide();
      };
      const beforeEnter = () => {
        emit2("before-enter");
      };
      const beforeLeave = () => {
        emit2("before-leave");
      };
      const afterEnter = () => {
        emit2("after-enter");
      };
      const afterLeave = () => {
        emit2("update:visible", false);
        emit2("after-leave");
      };
      __expose({
        /** @description popper ref */
        popperRef,
        /** @description hide popover */
        hide
      });
      return (_ctx, _cache) => {
        return openBlock(), createBlock(unref(ElTooltip), mergeProps({
          ref_key: "tooltipRef",
          ref: tooltipRef
        }, _ctx.$attrs, {
          trigger: __props.trigger,
          "trigger-keys": __props.triggerKeys,
          placement: __props.placement,
          disabled: __props.disabled,
          visible: __props.visible,
          transition: __props.transition,
          "popper-options": __props.popperOptions,
          tabindex: __props.tabindex,
          content: __props.content,
          offset: __props.offset,
          "show-after": __props.showAfter,
          "hide-after": __props.hideAfter,
          "auto-close": __props.autoClose,
          "show-arrow": __props.showArrow,
          "aria-label": __props.title,
          effect: __props.effect,
          enterable: __props.enterable,
          "popper-class": kls.value,
          "popper-style": style.value,
          teleported: __props.teleported,
          "append-to": __props.appendTo,
          persistent: __props.persistent,
          "gpu-acceleration": gpuAcceleration.value,
          "onUpdate:visible": onUpdateVisible.value,
          onBeforeShow: beforeEnter,
          onBeforeHide: beforeLeave,
          onShow: afterEnter,
          onHide: afterLeave
        }), {
          content: withCtx(() => [
            __props.title ? (openBlock(), createElementBlock(
              "div",
              {
                key: 0,
                class: normalizeClass(unref(ns).e("title")),
                role: "title"
              },
              toDisplayString(__props.title),
              3
              /* TEXT, CLASS */
            )) : createCommentVNode("v-if", true),
            renderSlot(_ctx.$slots, "default", {}, () => [
              createTextVNode(
                toDisplayString(__props.content),
                1
                /* TEXT */
              )
            ])
          ]),
          default: withCtx(() => [
            _ctx.$slots.reference ? renderSlot(_ctx.$slots, "reference", { key: 0 }) : createCommentVNode("v-if", true)
          ]),
          _: 3
          /* FORWARDED */
        }, 16, ["trigger", "trigger-keys", "placement", "disabled", "visible", "transition", "popper-options", "tabindex", "content", "offset", "show-after", "hide-after", "auto-close", "show-arrow", "aria-label", "effect", "enterable", "popper-class", "popper-style", "teleported", "append-to", "persistent", "gpu-acceleration", "onUpdate:visible"]);
      };
    }
  });
  const attachEvents = (el, binding) => {
    const popperComponent = binding.arg || binding.value;
    const popover = popperComponent == null ? void 0 : popperComponent.popperRef;
    if (popover) {
      popover.triggerRef = el;
    }
  };
  var PopoverDirective = {
    mounted(el, binding) {
      attachEvents(el, binding);
    },
    updated(el, binding) {
      attachEvents(el, binding);
    }
  };
  const VPopover = "popover";
  const ElPopoverDirective = withInstallDirective(PopoverDirective, VPopover);
  const ElPopover = withInstall(_sfc_main$1H, {
    directive: ElPopoverDirective
  });
  const progressProps = buildProps({
    /**
     * @description type of progress bar
     */
    type: {
      type: String,
      default: "line",
      values: ["line", "circle", "dashboard"]
    },
    /**
     * @description percentage, required
     */
    percentage: {
      type: Number,
      default: 0,
      validator: (val) => val >= 0 && val <= 100
    },
    /**
     * @description the current status of progress bar
     */
    status: {
      type: String,
      default: "",
      values: ["", "success", "exception", "warning"]
    },
    /**
     * @description set indeterminate progress
     */
    indeterminate: Boolean,
    /**
     * @description control the animation duration of indeterminate progress or striped flow progress
     */
    duration: {
      type: Number,
      default: 3
    },
    /**
     * @description the width of progress bar
     */
    strokeWidth: {
      type: Number,
      default: 6
    },
    /**
     * @description butt/circle/dashboard type shape at the end path
     */
    strokeLinecap: {
      type: definePropType(String),
      default: "round"
    },
    /**
     * @description whether to place the percentage inside progress bar, only works when `type` is 'line'
     */
    textInside: Boolean,
    /**
     * @description the canvas width of circle progress bar
     */
    width: {
      type: Number,
      default: 126
    },
    /**
     * @description whether to show percentage
     */
    showText: {
      type: Boolean,
      default: true
    },
    /**
     * @description background color of progress bar. Overrides `status` prop
     */
    color: {
      type: definePropType([
        String,
        Array,
        Function
      ]),
      default: ""
    },
    /**
     * @description stripe over the progress bar's color
     */
    striped: Boolean,
    /**
     * @description get the stripes to flow
     */
    stripedFlow: Boolean,
    /**
     * @description custom text format
     */
    format: {
      type: definePropType(Function),
      default: (percentage) => `${percentage}%`
    }
  });
  const _hoisted_1$1d = ["aria-valuenow"];
  const _hoisted_2$13 = { viewBox: "0 0 100 100" };
  const _hoisted_3$S = ["d", "stroke", "stroke-linecap", "stroke-width"];
  const _hoisted_4$N = ["d", "stroke", "opacity", "stroke-linecap", "stroke-width"];
  const _hoisted_5$E = { key: 0 };
  var _sfc_main$1G = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElProgress"
    },
    __name: "progress",
    props: progressProps,
    setup(__props) {
      const STATUS_COLOR_MAP = {
        success: "#13ce66",
        exception: "#ff4949",
        warning: "#e6a23c",
        default: "#20a0ff"
      };
      const props2 = __props;
      const ns = useNamespace("progress");
      const barStyle = computed(() => {
        const barStyle2 = {
          width: `${props2.percentage}%`,
          animationDuration: `${props2.duration}s`
        };
        const color = getCurrentColor(props2.percentage);
        if (color.includes("gradient")) {
          barStyle2.background = color;
        } else {
          barStyle2.backgroundColor = color;
        }
        return barStyle2;
      });
      const relativeStrokeWidth = computed(
        () => (props2.strokeWidth / props2.width * 100).toFixed(1)
      );
      const radius = computed(() => {
        if (["circle", "dashboard"].includes(props2.type)) {
          return Number.parseInt(
            `${50 - Number.parseFloat(relativeStrokeWidth.value) / 2}`,
            10
          );
        }
        return 0;
      });
      const trackPath = computed(() => {
        const r = radius.value;
        const isDashboard = props2.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 = computed(() => 2 * Math.PI * radius.value);
      const rate = computed(() => props2.type === "dashboard" ? 0.75 : 1);
      const strokeDashoffset = computed(() => {
        const offset2 = -1 * perimeter.value * (1 - rate.value) / 2;
        return `${offset2}px`;
      });
      const trailPathStyle = computed(() => ({
        strokeDasharray: `${perimeter.value * rate.value}px, ${perimeter.value}px`,
        strokeDashoffset: strokeDashoffset.value
      }));
      const circlePathStyle = computed(() => ({
        strokeDasharray: `${perimeter.value * rate.value * (props2.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 = computed(() => {
        let ret;
        if (props2.color) {
          ret = getCurrentColor(props2.percentage);
        } else {
          ret = STATUS_COLOR_MAP[props2.status] || STATUS_COLOR_MAP.default;
        }
        return ret;
      });
      const statusIcon = computed(() => {
        if (props2.status === "warning") {
          return warning_filled_default;
        }
        if (props2.type === "line") {
          return props2.status === "success" ? circle_check_default : circle_close_default;
        } else {
          return props2.status === "success" ? check_default : close_default;
        }
      });
      const progressTextSize = computed(() => {
        return props2.type === "line" ? 12 + props2.strokeWidth * 0.4 : props2.width * 0.111111 + 2;
      });
      const content = computed(() => props2.format(props2.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((a2, b2) => a2.percentage - b2.percentage);
      }
      const getCurrentColor = (percentage) => {
        var _a;
        const { color } = props2;
        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 (_a = colors[colors.length - 1]) == null ? void 0 : _a.color;
        }
      };
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock("div", {
          class: normalizeClass([
            unref(ns).b(),
            unref(ns).m(__props.type),
            unref(ns).is(__props.status),
            {
              [unref(ns).m("without-text")]: !__props.showText,
              [unref(ns).m("text-inside")]: __props.textInside
            }
          ]),
          role: "progressbar",
          "aria-valuenow": __props.percentage,
          "aria-valuemin": "0",
          "aria-valuemax": "100"
        }, [
          __props.type === "line" ? (openBlock(), createElementBlock(
            "div",
            {
              key: 0,
              class: normalizeClass(unref(ns).b("bar"))
            },
            [
              createBaseVNode(
                "div",
                {
                  class: normalizeClass(unref(ns).be("bar", "outer")),
                  style: normalizeStyle({ height: `${__props.strokeWidth}px` })
                },
                [
                  createBaseVNode(
                    "div",
                    {
                      class: normalizeClass([
                        unref(ns).be("bar", "inner"),
                        { [unref(ns).bem("bar", "inner", "indeterminate")]: __props.indeterminate },
                        { [unref(ns).bem("bar", "inner", "striped")]: __props.striped },
                        { [unref(ns).bem("bar", "inner", "striped-flow")]: __props.stripedFlow }
                      ]),
                      style: normalizeStyle(barStyle.value)
                    },
                    [
                      (__props.showText || _ctx.$slots.default) && __props.textInside ? (openBlock(), createElementBlock(
                        "div",
                        {
                          key: 0,
                          class: normalizeClass(unref(ns).be("bar", "innerText"))
                        },
                        [
                          renderSlot(_ctx.$slots, "default", { percentage: __props.percentage }, () => [
                            createBaseVNode(
                              "span",
                              null,
                              toDisplayString(content.value),
                              1
                              /* TEXT */
                            )
                          ])
                        ],
                        2
                        /* CLASS */
                      )) : createCommentVNode("v-if", true)
                    ],
                    6
                    /* CLASS, STYLE */
                  )
                ],
                6
                /* CLASS, STYLE */
              )
            ],
            2
            /* CLASS */
          )) : (openBlock(), createElementBlock(
            "div",
            {
              key: 1,
              class: normalizeClass(unref(ns).b("circle")),
              style: normalizeStyle({ height: `${__props.width}px`, width: `${__props.width}px` })
            },
            [
              (openBlock(), createElementBlock("svg", _hoisted_2$13, [
                createBaseVNode("path", {
                  class: normalizeClass(unref(ns).be("circle", "track")),
                  d: trackPath.value,
                  stroke: `var(${unref(ns).cssVarName("fill-color-light")}, #e5e9f2)`,
                  "stroke-linecap": __props.strokeLinecap,
                  "stroke-width": relativeStrokeWidth.value,
                  fill: "none",
                  style: normalizeStyle(trailPathStyle.value)
                }, null, 14, _hoisted_3$S),
                createBaseVNode("path", {
                  class: normalizeClass(unref(ns).be("circle", "path")),
                  d: trackPath.value,
                  stroke: stroke.value,
                  fill: "none",
                  opacity: __props.percentage ? 1 : 0,
                  "stroke-linecap": __props.strokeLinecap,
                  "stroke-width": relativeStrokeWidth.value,
                  style: normalizeStyle(circlePathStyle.value)
                }, null, 14, _hoisted_4$N)
              ]))
            ],
            6
            /* CLASS, STYLE */
          )),
          (__props.showText || _ctx.$slots.default) && !__props.textInside ? (openBlock(), createElementBlock(
            "div",
            {
              key: 2,
              class: normalizeClass(unref(ns).e("text")),
              style: normalizeStyle({ fontSize: `${progressTextSize.value}px` })
            },
            [
              renderSlot(_ctx.$slots, "default", { percentage: __props.percentage }, () => [
                !__props.status ? (openBlock(), createElementBlock(
                  "span",
                  _hoisted_5$E,
                  toDisplayString(content.value),
                  1
                  /* TEXT */
                )) : (openBlock(), createBlock(unref(ElIcon), { key: 1 }, {
                  default: withCtx(() => [
                    (openBlock(), createBlock(resolveDynamicComponent(statusIcon.value)))
                  ]),
                  _: 1
                  /* STABLE */
                }))
              ])
            ],
            6
            /* CLASS, STYLE */
          )) : createCommentVNode("v-if", true)
        ], 10, _hoisted_1$1d);
      };
    }
  });
  const ElProgress = withInstall(_sfc_main$1G);
  const rateProps = buildProps({
    /**
     * @description binding value
     */
    modelValue: {
      type: Number,
      default: 0
    },
    /**
     * @description native `id` attribute
     */
    id: {
      type: String,
      default: void 0
    },
    /**
     * @description threshold value between low and medium level. The value itself will be included in low level
     */
    lowThreshold: {
      type: Number,
      default: 2
    },
    /**
     * @description threshold value between medium and high level. The value itself will be included in high level
     */
    highThreshold: {
      type: Number,
      default: 4
    },
    /**
     * @description max rating score
     */
    max: {
      type: Number,
      default: 5
    },
    /**
     * @description colors for icons. If array, it should have 3 elements, each of which corresponds with a score level, else if object, the key should be threshold value between two levels, and the value should be corresponding color
     */
    colors: {
      type: definePropType([Array, Object]),
      default: () => mutable(["", "", ""])
    },
    /**
     * @description color of unselected icons
     */
    voidColor: {
      type: String,
      default: ""
    },
    /**
     * @description color of unselected read-only icons
     */
    disabledVoidColor: {
      type: String,
      default: ""
    },
    /**
     * @description icon components. If array, it should have 3 elements, each of which corresponds with a score level, else if object, the key should be threshold value between two levels, and the value should be corresponding icon component
     */
    icons: {
      type: definePropType([Array, Object]),
      default: () => [star_filled_default, star_filled_default, star_filled_default]
    },
    /**
     * @description component of unselected icons
     */
    voidIcon: {
      type: iconPropType,
      default: () => star_default
    },
    /**
     * @description component of unselected read-only icons
     */
    disabledVoidIcon: {
      type: iconPropType,
      default: () => star_filled_default
    },
    /**
     * @description whether Rate is read-only
     */
    disabled: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description whether picking half start is allowed
     */
    allowHalf: Boolean,
    /**
     * @description whether to display texts
     */
    showText: Boolean,
    /**
     * @description whether to display current score. show-score and show-text cannot be true at the same time
     */
    showScore: Boolean,
    /**
     * @description color of texts
     */
    textColor: {
      type: String,
      default: ""
    },
    /**
     * @description text array
     */
    texts: {
      type: definePropType(Array),
      default: () => mutable([
        "Extremely bad",
        "Disappointed",
        "Fair",
        "Satisfied",
        "Surprise"
      ])
    },
    /**
     * @description score template
     */
    scoreTemplate: {
      type: String,
      default: "{value}"
    },
    /**
     * @description size of Rate
     */
    size: useSizeProp,
    /**
     * @description whether value can be reset to `0`
     */
    clearable: Boolean,
    ...useAriaProps(["ariaLabel"])
  });
  const rateEmits = {
    [CHANGE_EVENT]: (value) => isNumber(value),
    [UPDATE_MODEL_EVENT]: (value) => isNumber(value)
  };
  const _hoisted_1$1c = ["id", "aria-label", "aria-labelledby", "aria-valuenow", "aria-valuetext", "aria-valuemax"];
  const _hoisted_2$12 = ["onMousemove", "onClick"];
  var _sfc_main$1F = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElRate"
    },
    __name: "rate",
    props: rateProps,
    emits: rateEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      function getValueFromMap(value, map2) {
        const isExcludedObject = (val) => isObject$2(val);
        const matchedKeys = Object.keys(map2).map((key) => +key).filter((key) => {
          const val = map2[key];
          const excluded = isExcludedObject(val) ? val.excluded : false;
          return excluded ? value < key : value <= key;
        }).sort((a2, b2) => a2 - b2);
        const matchedValue = map2[matchedKeys[0]];
        return isExcludedObject(matchedValue) && matchedValue.value || matchedValue;
      }
      const props2 = __props;
      const emit2 = __emit;
      const formItemContext = inject(formItemContextKey, void 0);
      const rateSize = useFormSize();
      const ns = useNamespace("rate");
      const { inputId, isLabeledByFormItem } = useFormItemInputId(props2, {
        formItemContext
      });
      const currentValue = ref(clamp$2(props2.modelValue, 0, props2.max));
      const hoverIndex = ref(-1);
      const pointerAtLeftHalf = ref(true);
      const iconRefs = ref([]);
      const iconClientWidths = computed(
        () => iconRefs.value.map((icon) => icon.$el.clientWidth)
      );
      const rateClasses = computed(() => [ns.b(), ns.m(rateSize.value)]);
      const rateDisabled = useFormDisabled();
      const rateStyles = computed(() => {
        return ns.cssVarBlock({
          "void-color": props2.voidColor,
          "disabled-void-color": props2.disabledVoidColor,
          "fill-color": activeColor.value
        });
      });
      const text = computed(() => {
        let result = "";
        if (props2.showScore) {
          result = props2.scoreTemplate.replace(
            /\{\s*value\s*\}/,
            rateDisabled.value ? `${props2.modelValue}` : `${currentValue.value}`
          );
        } else if (props2.showText) {
          result = props2.texts[Math.ceil(currentValue.value) - 1];
        }
        return result;
      });
      const valueDecimal = computed(
        () => props2.modelValue * 100 - Math.floor(props2.modelValue) * 100
      );
      const colorMap = computed(
        () => isArray$1(props2.colors) ? {
          [props2.lowThreshold]: props2.colors[0],
          [props2.highThreshold]: { value: props2.colors[1], excluded: true },
          [props2.max]: props2.colors[2]
        } : props2.colors
      );
      const activeColor = computed(() => {
        const color = getValueFromMap(currentValue.value, colorMap.value);
        return isObject$2(color) ? "" : color;
      });
      const decimalStyle = computed(() => {
        let width = "";
        if (rateDisabled.value) {
          width = `${valueDecimal.value}%`;
        } else if (props2.allowHalf) {
          width = "50%";
        }
        return {
          color: activeColor.value,
          width
        };
      });
      const componentMap = computed(() => {
        let icons = isArray$1(props2.icons) ? [...props2.icons] : { ...props2.icons };
        icons = markRaw(icons);
        return isArray$1(icons) ? {
          [props2.lowThreshold]: icons[0],
          [props2.highThreshold]: {
            value: icons[1],
            excluded: true
          },
          [props2.max]: icons[2]
        } : icons;
      });
      const decimalIconComponent = computed(
        () => getValueFromMap(props2.modelValue, componentMap.value)
      );
      const voidComponent = computed(
        () => rateDisabled.value ? isString(props2.disabledVoidIcon) ? props2.disabledVoidIcon : markRaw(props2.disabledVoidIcon) : isString(props2.voidIcon) ? props2.voidIcon : markRaw(props2.voidIcon)
      );
      const activeComponent = computed(
        () => getValueFromMap(currentValue.value, componentMap.value)
      );
      function showDecimalIcon(item) {
        const showWhenDisabled = rateDisabled.value && valueDecimal.value > 0 && item - 1 < props2.modelValue && item > props2.modelValue;
        const showWhenAllowHalf = props2.allowHalf && pointerAtLeftHalf.value && item - 0.5 <= currentValue.value && item > currentValue.value;
        return showWhenDisabled || showWhenAllowHalf;
      }
      function emitValue(value) {
        if (props2.clearable && value === props2.modelValue) {
          value = 0;
        }
        emit2(UPDATE_MODEL_EVENT, value);
        if (props2.modelValue !== value) {
          emit2(CHANGE_EVENT, value);
        }
      }
      function selectValue(value) {
        if (rateDisabled.value) {
          return;
        }
        if (props2.allowHalf && pointerAtLeftHalf.value) {
          emitValue(currentValue.value);
        } else {
          emitValue(value);
        }
      }
      function handleKey(e) {
        if (rateDisabled.value) {
          return;
        }
        const code = getEventCode(e);
        const step2 = props2.allowHalf ? 0.5 : 1;
        let _currentValue = currentValue.value;
        switch (code) {
          case EVENT_CODE.up:
          case EVENT_CODE.right:
            _currentValue += step2;
            break;
          case EVENT_CODE.left:
          case EVENT_CODE.down:
            _currentValue -= step2;
            break;
        }
        _currentValue = clamp$2(_currentValue, 0, props2.max);
        if (_currentValue === currentValue.value) {
          return;
        }
        e.stopPropagation();
        e.preventDefault();
        emit2(UPDATE_MODEL_EVENT, _currentValue);
        emit2(CHANGE_EVENT, _currentValue);
        return _currentValue;
      }
      function setCurrentValue(value, event) {
        if (rateDisabled.value) {
          return;
        }
        if (props2.allowHalf && event) {
          pointerAtLeftHalf.value = event.offsetX * 2 <= iconClientWidths.value[value - 1];
          currentValue.value = pointerAtLeftHalf.value ? value - 0.5 : value;
        } else {
          currentValue.value = value;
        }
        hoverIndex.value = value;
      }
      function resetCurrentValue() {
        if (rateDisabled.value) {
          return;
        }
        if (props2.allowHalf) {
          pointerAtLeftHalf.value = props2.modelValue !== Math.floor(props2.modelValue);
        }
        currentValue.value = clamp$2(props2.modelValue, 0, props2.max);
        hoverIndex.value = -1;
      }
      watch(
        () => props2.modelValue,
        (val) => {
          currentValue.value = clamp$2(val, 0, props2.max);
          pointerAtLeftHalf.value = props2.modelValue !== Math.floor(props2.modelValue);
        }
      );
      if (!props2.modelValue) {
        emit2(UPDATE_MODEL_EVENT, 0);
      }
      __expose({
        /** @description set current value */
        setCurrentValue,
        /** @description reset current value */
        resetCurrentValue
      });
      return (_ctx, _cache) => {
        var _a;
        return openBlock(), createElementBlock("div", {
          id: unref(inputId),
          class: normalizeClass([rateClasses.value, unref(ns).is("disabled", unref(rateDisabled))]),
          role: "slider",
          "aria-label": !unref(isLabeledByFormItem) ? __props.ariaLabel || "rating" : void 0,
          "aria-labelledby": unref(isLabeledByFormItem) ? (_a = unref(formItemContext)) == null ? void 0 : _a.labelId : void 0,
          "aria-valuenow": currentValue.value,
          "aria-valuetext": text.value || void 0,
          "aria-valuemin": "0",
          "aria-valuemax": __props.max,
          tabindex: "0",
          style: normalizeStyle(rateStyles.value),
          onKeydown: handleKey
        }, [
          (openBlock(true), createElementBlock(
            Fragment,
            null,
            renderList(__props.max, (item, key) => {
              return openBlock(), createElementBlock("span", {
                key,
                class: normalizeClass(unref(ns).e("item")),
                onMousemove: ($event) => setCurrentValue(item, $event),
                onMouseleave: resetCurrentValue,
                onClick: ($event) => selectValue(item)
              }, [
                createVNode(unref(ElIcon), {
                  ref_for: true,
                  ref_key: "iconRefs",
                  ref: iconRefs,
                  class: normalizeClass([
                    unref(ns).e("icon"),
                    { hover: hoverIndex.value === item },
                    unref(ns).is("active", item <= currentValue.value),
                    unref(ns).is("focus-visible", item === Math.ceil(currentValue.value || 1))
                  ])
                }, {
                  default: withCtx(() => [
                    withDirectives((openBlock(), createBlock(
                      resolveDynamicComponent(activeComponent.value),
                      null,
                      null,
                      512
                      /* NEED_PATCH */
                    )), [
                      [vShow, !showDecimalIcon(item) && item <= currentValue.value]
                    ]),
                    withDirectives((openBlock(), createBlock(
                      resolveDynamicComponent(voidComponent.value),
                      null,
                      null,
                      512
                      /* NEED_PATCH */
                    )), [
                      [vShow, !showDecimalIcon(item) && item > currentValue.value]
                    ]),
                    withDirectives((openBlock(), createBlock(resolveDynamicComponent(voidComponent.value), {
                      class: normalizeClass([unref(ns).em("decimal", "box")])
                    }, null, 8, ["class"])), [
                      [vShow, showDecimalIcon(item)]
                    ]),
                    withDirectives(createVNode(unref(ElIcon), {
                      style: normalizeStyle(decimalStyle.value),
                      class: normalizeClass([unref(ns).e("icon"), unref(ns).e("decimal")])
                    }, {
                      default: withCtx(() => [
                        (openBlock(), createBlock(resolveDynamicComponent(decimalIconComponent.value)))
                      ]),
                      _: 1
                      /* STABLE */
                    }, 8, ["style", "class"]), [
                      [vShow, showDecimalIcon(item)]
                    ])
                  ]),
                  _: 2
                  /* DYNAMIC */
                }, 1032, ["class"])
              ], 42, _hoisted_2$12);
            }),
            128
            /* KEYED_FRAGMENT */
          )),
          __props.showText || __props.showScore ? (openBlock(), createElementBlock(
            "span",
            {
              key: 0,
              class: normalizeClass(unref(ns).e("text")),
              style: normalizeStyle({ color: __props.textColor })
            },
            toDisplayString(text.value),
            7
            /* TEXT, CLASS, STYLE */
          )) : createCommentVNode("v-if", true)
        ], 46, _hoisted_1$1c);
      };
    }
  });
  const ElRate = withInstall(_sfc_main$1F);
  const IconMap = {
    primary: "icon-primary",
    success: "icon-success",
    warning: "icon-warning",
    error: "icon-error",
    info: "icon-info"
  };
  const IconComponentMap = {
    [IconMap.primary]: info_filled_default,
    [IconMap.success]: circle_check_filled_default,
    [IconMap.warning]: warning_filled_default,
    [IconMap.error]: circle_close_filled_default,
    [IconMap.info]: info_filled_default
  };
  const resultProps = buildProps({
    /**
     * @description title of result
     */
    title: {
      type: String,
      default: ""
    },
    /**
     * @description sub title of result
     */
    subTitle: {
      type: String,
      default: ""
    },
    /**
     * @description icon type of result
     */
    icon: {
      type: String,
      values: ["primary", "success", "warning", "info", "error"],
      default: "info"
    }
  });
  var _sfc_main$1E = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElResult"
    },
    __name: "result",
    props: resultProps,
    setup(__props) {
      const props2 = __props;
      const ns = useNamespace("result");
      const resultIcon = computed(() => {
        const icon = props2.icon;
        const iconClass = icon && IconMap[icon] ? IconMap[icon] : "icon-info";
        const iconComponent = IconComponentMap[iconClass] || IconComponentMap["icon-info"];
        return {
          class: iconClass,
          component: iconComponent
        };
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass(unref(ns).b())
          },
          [
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(ns).e("icon"))
              },
              [
                renderSlot(_ctx.$slots, "icon", {}, () => [
                  resultIcon.value.component ? (openBlock(), createBlock(resolveDynamicComponent(resultIcon.value.component), {
                    key: 0,
                    class: normalizeClass(resultIcon.value.class)
                  }, null, 8, ["class"])) : createCommentVNode("v-if", true)
                ])
              ],
              2
              /* CLASS */
            ),
            __props.title || _ctx.$slots.title ? (openBlock(), createElementBlock(
              "div",
              {
                key: 0,
                class: normalizeClass(unref(ns).e("title"))
              },
              [
                renderSlot(_ctx.$slots, "title", {}, () => [
                  createBaseVNode(
                    "p",
                    null,
                    toDisplayString(__props.title),
                    1
                    /* TEXT */
                  )
                ])
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true),
            __props.subTitle || _ctx.$slots["sub-title"] ? (openBlock(), createElementBlock(
              "div",
              {
                key: 1,
                class: normalizeClass(unref(ns).e("subtitle"))
              },
              [
                renderSlot(_ctx.$slots, "sub-title", {}, () => [
                  createBaseVNode(
                    "p",
                    null,
                    toDisplayString(__props.subTitle),
                    1
                    /* TEXT */
                  )
                ])
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true),
            _ctx.$slots.extra ? (openBlock(), createElementBlock(
              "div",
              {
                key: 2,
                class: normalizeClass(unref(ns).e("extra"))
              },
              [
                renderSlot(_ctx.$slots, "extra")
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true)
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const ElResult = withInstall(_sfc_main$1E);
  const RowJustify = [
    "start",
    "center",
    "end",
    "space-around",
    "space-between",
    "space-evenly"
  ];
  const RowAlign = ["top", "middle", "bottom"];
  const rowProps = buildProps({
    /**
     * @description custom element tag
     */
    tag: {
      type: String,
      default: "div"
    },
    /**
     * @description grid spacing
     */
    gutter: {
      type: Number,
      default: 0
    },
    /**
     * @description horizontal alignment of flex layout
     */
    justify: {
      type: String,
      values: RowJustify,
      default: "start"
    },
    /**
     * @description vertical alignment of flex layout
     */
    align: {
      type: String,
      values: RowAlign
    }
  });
  var _sfc_main$1D = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElRow"
    },
    __name: "row",
    props: rowProps,
    setup(__props) {
      const props2 = __props;
      const ns = useNamespace("row");
      const gutter = computed(() => props2.gutter);
      provide(rowContextKey, {
        gutter
      });
      const style = computed(() => {
        const styles = {};
        if (!props2.gutter) {
          return styles;
        }
        styles.marginRight = styles.marginLeft = `-${props2.gutter / 2}px`;
        return styles;
      });
      const rowKls = computed(() => [
        ns.b(),
        ns.is(`justify-${props2.justify}`, props2.justify !== "start"),
        ns.is(`align-${props2.align}`, !!props2.align)
      ]);
      return (_ctx, _cache) => {
        return openBlock(), createBlock(resolveDynamicComponent(__props.tag), {
          class: normalizeClass(rowKls.value),
          style: normalizeStyle(style.value)
        }, {
          default: withCtx(() => [
            renderSlot(_ctx.$slots, "default")
          ]),
          _: 3
          /* FORWARDED */
        }, 8, ["class", "style"]);
      };
    }
  });
  const ElRow = withInstall(_sfc_main$1D);
  var _sfc_main$1C = /* @__PURE__ */ defineComponent({
    props: {
      item: {
        type: Object,
        required: true
      },
      style: {
        type: Object
      },
      height: Number
    },
    setup() {
      const ns = useNamespace("select");
      return {
        ns
      };
    }
  });
  function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
    return openBlock(), createElementBlock(
      "div",
      {
        class: normalizeClass(_ctx.ns.be("group", "title")),
        style: normalizeStyle({ ..._ctx.style, lineHeight: `${_ctx.height}px` })
      },
      toDisplayString(_ctx.item.label),
      7
      /* TEXT, CLASS, STYLE */
    );
  }
  var GroupItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$1C, [["render", _sfc_render$8]]);
  function useOption(props2, { emit: emit2 }) {
    return {
      hoverItem: () => {
        if (!props2.disabled) {
          emit2("hover", props2.index);
        }
      },
      selectOptionClick: () => {
        if (!props2.disabled) {
          emit2("select", props2.item, props2.index);
        }
      }
    };
  }
  const selectV2Props = buildProps({
    /**
     * @description whether creating new items is allowed. To use this, `filterable` must be true
     */
    allowCreate: Boolean,
    /**
     * @description autocomplete of select input
     */
    autocomplete: {
      type: definePropType(String),
      default: "none"
    },
    /**
     * @description for non-filterable Select, this prop decides if the option menu pops up when the input is focused
     */
    automaticDropdown: Boolean,
    /**
     * @description whether select can be cleared
     */
    clearable: Boolean,
    /**
     * @description custom clear icon
     */
    clearIcon: {
      type: iconPropType,
      default: circle_close_default
    },
    /**
     * @description tooltip theme, built-in theme: `dark` / `light`
     */
    effect: {
      type: definePropType(String),
      default: "light"
    },
    /**
     * @description whether to collapse tags to a text when multiple selecting
     */
    collapseTags: Boolean,
    /**
     * @description whether show all selected tags when mouse hover text of collapse-tags. To use this, `collapse-tags` must be true
     */
    collapseTagsTooltip: Boolean,
    /**
     * @description The max tags number to be shown. To use this, `collapse-tags` must be true
     */
    maxCollapseTags: {
      type: Number,
      default: 1
    },
    /**
     * @description
     */
    defaultFirstOption: Boolean,
    /**
     * @description is disabled
     */
    disabled: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description
     */
    estimatedOptionHeight: {
      type: Number,
      default: void 0
    },
    /**
     * @description whether Select is filterable
     */
    filterable: Boolean,
    /**
     * @description custom filter method, the first parameter is the current input value. To use this, `filterable` must be true
     */
    filterMethod: {
      type: definePropType(Function)
    },
    /**
     * @description The height of the dropdown panel, 34px for each item
     */
    height: {
      type: Number,
      default: 274
      // same as select dropdown menu
    },
    /**
     * @description The height of the dropdown item
     */
    itemHeight: {
      type: Number,
      default: 34
    },
    /**
     * @description native input id
     */
    id: String,
    /**
     * @description whether Select is loading data from server
     */
    loading: Boolean,
    /**
     * @description displayed text while loading data from server, default is 'Loading'
     */
    loadingText: String,
    /**
     * @description biding value
     */
    modelValue: {
      type: definePropType([Array, String, Number, Boolean, Object]),
      default: void 0
    },
    /**
     * @description is multiple
     */
    multiple: Boolean,
    /**
     * @description maximum number of options user can select when multiple is true. No limit when set to 0
     */
    multipleLimit: {
      type: Number,
      default: 0
    },
    /**
     * @description the name attribute of select input
     */
    name: String,
    /**
     * @description displayed text when there is no options, you can also use slot empty, the default is 'No Data'
     */
    noDataText: String,
    /**
     * @description displayed text when no data matches the filtering query, you can also use slot `empty`, default is 'No matching data'
     */
    noMatchText: String,
    /**
     * @description function that gets called when the input value changes. Its parameter is the current input value. To use this, `filterable` must be true
     */
    remoteMethod: {
      type: definePropType(Function)
    },
    /**
     * @description whether reserve the keyword after select filtered option.
     */
    reserveKeyword: {
      type: Boolean,
      default: true
    },
    /**
     * @description data of the options, the key of `value` and `label` can be customize by `props`
     */
    options: {
      type: definePropType(Array),
      required: true
    },
    /**
     * @description placeholder, the default is 'Please select'
     */
    placeholder: {
      type: String
    },
    /**
     * @description whether select dropdown is teleported, if `true` it will be teleported to where `append-to` sets
     */
    teleported: useTooltipContentProps.teleported,
    /**
     * @description when select dropdown is inactive and `persistent` is `false`, select dropdown will be destroyed
     */
    persistent: {
      type: Boolean,
      default: true
    },
    /**
     * @description custom class name for Select's dropdown
     */
    popperClass: useTooltipContentProps.popperClass,
    /**
     * @description custom style for Select's dropdown
     */
    popperStyle: useTooltipContentProps.popperStyle,
    /**
     * @description [popper.js](https://popper.js.org/docs/v2/) parameters
     */
    popperOptions: {
      type: definePropType(Object),
      default: () => ({})
    },
    /**
     * @description whether search data from server
     */
    remote: Boolean,
    /**
     * @description debounce delay during remote search, in milliseconds
     */
    debounce: {
      type: Number,
      default: 300
    },
    /**
     * @description size of component
     */
    size: useSizeProp,
    /**
     * @description configuration options, see the following table
     */
    props: {
      type: definePropType(Object),
      default: () => defaultProps$4
    },
    /**
     * @description unique identity key name for value, required when value is an object
     */
    valueKey: {
      type: String,
      default: "value"
    },
    /**
     * @description Controls whether the scrollbar is always displayed
     */
    scrollbarAlwaysOn: Boolean,
    /**
     * @description whether to trigger form validation
     */
    validateEvent: {
      type: Boolean,
      default: true
    },
    /**
     * @description offset of the dropdown
     */
    offset: {
      type: Number,
      default: 12
    },
    /**
     * @description in remote search method show suffix icon
     */
    remoteShowSuffix: Boolean,
    /**
     * @description Determines whether the arrow is displayed
     */
    showArrow: {
      type: Boolean,
      default: true
    },
    /**
     * @description position of dropdown
     */
    placement: {
      type: definePropType(String),
      values: Ee,
      default: "bottom-start"
    },
    /**
     * @description list of possible positions for dropdown
     */
    fallbackPlacements: {
      type: definePropType(Array),
      default: ["bottom-start", "top-start", "right", "left"]
    },
    /**
     * @description tag type
     */
    tagType: { ...tagProps.type, default: "info" },
    /**
     * @description tag effect
     */
    tagEffect: { ...tagProps.effect, default: "light" },
    /**
     * @description tabindex for input
     */
    tabindex: {
      type: [String, Number],
      default: 0
    },
    /**
     * @description which element the select dropdown appends to
     */
    appendTo: useTooltipContentProps.appendTo,
    /**
     * @description if it is `true`, the width of the dropdown panel is the same as the input box.
     * if it is `false`, the width is automatically calculated based on the value of `label`,
     * or it can be set to a number to make it a fixed width
     */
    fitInputWidth: {
      type: [Boolean, Number],
      default: true,
      validator(val) {
        return isBoolean(val) || isNumber(val);
      }
    },
    suffixIcon: {
      type: iconPropType,
      default: arrow_down_default
    },
    ...useEmptyValuesProps,
    ...useAriaProps(["ariaLabel"])
  });
  const optionV2Props = buildProps({
    data: Array,
    disabled: Boolean,
    hovering: Boolean,
    item: {
      type: definePropType(Object),
      required: true
    },
    index: Number,
    style: Object,
    selected: Boolean,
    created: Boolean
  });
  const selectV2Emits = {
    [UPDATE_MODEL_EVENT]: (val) => true,
    [CHANGE_EVENT]: (val) => true,
    "remove-tag": (val) => true,
    "visible-change": (visible) => true,
    focus: (evt) => evt instanceof FocusEvent,
    blur: (evt) => evt instanceof FocusEvent,
    clear: () => true
  };
  const optionV2Emits = {
    hover: (index) => isNumber(index),
    select: (val, index) => true
  };
  const selectV2InjectionKey = /* @__PURE__ */ Symbol(
    "ElSelectV2Injection"
  );
  var _sfc_main$1B = /* @__PURE__ */ defineComponent({
    props: optionV2Props,
    emits: optionV2Emits,
    setup(props2, { emit: emit2 }) {
      const select = inject(selectV2InjectionKey);
      const ns = useNamespace("select");
      const { hoverItem, selectOptionClick } = useOption(props2, { emit: emit2 });
      const { getLabel } = useProps(select.props);
      const contentId = select.contentId;
      return {
        ns,
        contentId,
        hoverItem,
        selectOptionClick,
        getLabel
      };
    }
  });
  const _hoisted_1$1b = ["id", "aria-selected", "aria-disabled"];
  function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
    return openBlock(), createElementBlock("li", {
      id: `${_ctx.contentId}-${_ctx.index}`,
      role: "option",
      "aria-selected": _ctx.selected,
      "aria-disabled": _ctx.disabled || void 0,
      style: normalizeStyle(_ctx.style),
      class: normalizeClass([
        _ctx.ns.be("dropdown", "item"),
        _ctx.ns.is("selected", _ctx.selected),
        _ctx.ns.is("disabled", _ctx.disabled),
        _ctx.ns.is("created", _ctx.created),
        _ctx.ns.is("hovering", _ctx.hovering)
      ]),
      onMousemove: _cache[0] || (_cache[0] = (...args) => _ctx.hoverItem && _ctx.hoverItem(...args)),
      onClick: _cache[1] || (_cache[1] = withModifiers((...args) => _ctx.selectOptionClick && _ctx.selectOptionClick(...args), ["stop"]))
    }, [
      renderSlot(_ctx.$slots, "default", {
        item: _ctx.item,
        index: _ctx.index,
        disabled: _ctx.disabled
      }, () => [
        createBaseVNode(
          "span",
          null,
          toDisplayString(_ctx.getLabel(_ctx.item)),
          1
          /* TEXT */
        )
      ])
    ], 46, _hoisted_1$1b);
  }
  var OptionItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$1B, [["render", _sfc_render$7]]);
  var safeIsNaN = Number.isNaN || function ponyfill(value) {
    return typeof value === "number" && value !== value;
  };
  function isEqual(first, second) {
    if (first === second) {
      return true;
    }
    if (safeIsNaN(first) && safeIsNaN(second)) {
      return true;
    }
    return false;
  }
  function areInputsEqual(newInputs, lastInputs) {
    if (newInputs.length !== lastInputs.length) {
      return false;
    }
    for (var i = 0; i < newInputs.length; i++) {
      if (!isEqual(newInputs[i], lastInputs[i])) {
        return false;
      }
    }
    return true;
  }
  function memoizeOne(resultFn, isEqual2) {
    if (isEqual2 === void 0) {
      isEqual2 = areInputsEqual;
    }
    var cache2 = null;
    function memoized() {
      var newArgs = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        newArgs[_i] = arguments[_i];
      }
      if (cache2 && cache2.lastThis === this && isEqual2(newArgs, cache2.lastArgs)) {
        return cache2.lastResult;
      }
      var lastResult = resultFn.apply(this, newArgs);
      cache2 = {
        lastResult,
        lastArgs: newArgs,
        lastThis: this
      };
      return lastResult;
    }
    memoized.clear = function clear() {
      cache2 = null;
    };
    return memoized;
  }
  const useCache = () => {
    const vm = getCurrentInstance();
    const props2 = vm.proxy.$props;
    return computed(() => {
      const _getItemStyleCache = (_2, __, ___) => ({});
      return props2.perfMode ? memoize(_getItemStyleCache) : memoizeOne(_getItemStyleCache);
    });
  };
  const DEFAULT_DYNAMIC_LIST_ITEM_SIZE = 50;
  const ITEM_RENDER_EVT = "itemRendered";
  const SCROLL_EVT = "scroll";
  const FORWARD = "forward";
  const BACKWARD = "backward";
  const AUTO_ALIGNMENT = "auto";
  const SMART_ALIGNMENT = "smart";
  const START_ALIGNMENT = "start";
  const CENTERED_ALIGNMENT = "center";
  const END_ALIGNMENT = "end";
  const HORIZONTAL = "horizontal";
  const VERTICAL = "vertical";
  const LTR = "ltr";
  const RTL = "rtl";
  const RTL_OFFSET_NAG = "negative";
  const RTL_OFFSET_POS_ASC = "positive-ascending";
  const RTL_OFFSET_POS_DESC = "positive-descending";
  const ScrollbarDirKey = {
    [HORIZONTAL]: "left",
    [VERTICAL]: "top"
  };
  const SCROLLBAR_MIN_SIZE = 20;
  const useWheel = ({ atEndEdge, atStartEdge, layout: layout2 }, onWheelDelta) => {
    let frameHandle;
    let offset2 = 0;
    const hasReachedEdge = (offset22) => {
      const edgeReached = offset22 < 0 && atStartEdge.value || offset22 > 0 && atEndEdge.value;
      return edgeReached;
    };
    const onWheel = (e) => {
      cAF(frameHandle);
      let { deltaX, deltaY } = e;
      if (e.shiftKey && deltaY !== 0) {
        deltaX = deltaY;
        deltaY = 0;
      }
      const newOffset = layout2.value === HORIZONTAL ? deltaX : deltaY;
      if (hasReachedEdge(newOffset)) return;
      offset2 += newOffset;
      if (!isFirefox() && newOffset !== 0) {
        e.preventDefault();
      }
      frameHandle = rAF(() => {
        onWheelDelta(offset2);
        offset2 = 0;
      });
    };
    return {
      hasReachedEdge,
      onWheel
    };
  };
  const itemSize$1 = buildProp({
    type: definePropType([Number, Function]),
    required: true
  });
  const estimatedItemSize = buildProp({
    type: Number
  });
  const cache = buildProp({
    type: Number,
    default: 2
  });
  const direction = buildProp({
    type: String,
    values: ["ltr", "rtl"],
    default: "ltr"
  });
  const initScrollOffset = buildProp({
    type: Number,
    default: 0
  });
  const total = buildProp({
    type: Number,
    required: true
  });
  const layout = buildProp({
    type: String,
    values: ["horizontal", "vertical"],
    default: VERTICAL
  });
  const virtualizedProps = buildProps({
    className: {
      type: String,
      default: ""
    },
    containerElement: {
      type: definePropType([String, Object]),
      default: "div"
    },
    data: {
      type: definePropType(Array),
      default: () => mutable([])
    },
    /**
     * @description controls the horizontal direction.
     */
    direction,
    height: {
      type: [String, Number],
      required: true
    },
    innerElement: {
      type: [String, Object],
      default: "div"
    },
    innerProps: {
      type: definePropType(Object),
      default: () => ({})
    },
    style: {
      type: definePropType([Object, String, Array])
    },
    useIsScrolling: Boolean,
    width: {
      type: [Number, String],
      required: false
    },
    perfMode: {
      type: Boolean,
      default: true
    },
    scrollbarAlwaysOn: Boolean
  });
  const virtualizedListProps = buildProps({
    /**
     * @description describes how many items should be pre rendered to the head
     * and the tail of the window
     */
    cache,
    estimatedItemSize,
    /**
     * @description controls the list's orientation
     */
    layout,
    initScrollOffset,
    /**
     * @description describes the total number of the list.
     */
    total,
    itemSize: itemSize$1,
    ...virtualizedProps
  });
  const scrollbarSize = {
    type: Number,
    default: 6
  };
  const startGap = { type: Number, default: 0 };
  const endGap = { type: Number, default: 2 };
  const virtualizedGridProps = buildProps({
    columnCache: cache,
    columnWidth: itemSize$1,
    estimatedColumnWidth: estimatedItemSize,
    estimatedRowHeight: estimatedItemSize,
    initScrollLeft: initScrollOffset,
    initScrollTop: initScrollOffset,
    itemKey: {
      type: definePropType(Function),
      default: ({
        columnIndex,
        rowIndex
      }) => `${rowIndex}:${columnIndex}`
    },
    rowCache: cache,
    rowHeight: itemSize$1,
    totalColumn: total,
    totalRow: total,
    hScrollbarSize: scrollbarSize,
    vScrollbarSize: scrollbarSize,
    scrollbarStartGap: startGap,
    scrollbarEndGap: endGap,
    role: String,
    ...virtualizedProps
  });
  const virtualizedScrollbarProps = buildProps({
    alwaysOn: Boolean,
    class: String,
    layout,
    total,
    ratio: {
      type: Number,
      required: true
    },
    clientSize: {
      type: Number,
      required: true
    },
    scrollFrom: {
      type: Number,
      required: true
    },
    scrollbarSize,
    startGap,
    endGap,
    visible: Boolean
  });
  const getScrollDir = (prev, cur) => prev < cur ? FORWARD : BACKWARD;
  const isHorizontal = (dir) => dir === LTR || dir === RTL || dir === HORIZONTAL;
  const isRTL$1 = (dir) => dir === RTL;
  let cachedRTLResult = null;
  function getRTLOffsetType(recalculate = false) {
    if (cachedRTLResult === null || recalculate) {
      const outerDiv = document.createElement("div");
      const outerStyle = outerDiv.style;
      outerStyle.width = "50px";
      outerStyle.height = "50px";
      outerStyle.overflow = "scroll";
      outerStyle.direction = "rtl";
      const innerDiv = document.createElement("div");
      const innerStyle = innerDiv.style;
      innerStyle.width = "100px";
      innerStyle.height = "100px";
      outerDiv.appendChild(innerDiv);
      document.body.appendChild(outerDiv);
      if (outerDiv.scrollLeft > 0) {
        cachedRTLResult = RTL_OFFSET_POS_DESC;
      } else {
        outerDiv.scrollLeft = 1;
        if (outerDiv.scrollLeft === 0) {
          cachedRTLResult = RTL_OFFSET_NAG;
        } else {
          cachedRTLResult = RTL_OFFSET_POS_ASC;
        }
      }
      document.body.removeChild(outerDiv);
      return cachedRTLResult;
    }
    return cachedRTLResult;
  }
  function renderThumbStyle({ move, size, bar }, layout2) {
    const style = {};
    const translate2 = `translate${bar.axis}(${move}px)`;
    style[bar.size] = size;
    style.transform = translate2;
    if (layout2 === "horizontal") {
      style.height = "100%";
    } else {
      style.width = "100%";
    }
    return style;
  }
  const ScrollBar = /* @__PURE__ */ defineComponent({
    name: "ElVirtualScrollBar",
    props: virtualizedScrollbarProps,
    emits: ["scroll", "start-move", "stop-move"],
    setup(props2, { emit: emit2 }) {
      const GAP2 = computed(() => props2.startGap + props2.endGap);
      const nsVirtualScrollbar = useNamespace("virtual-scrollbar");
      const nsScrollbar = useNamespace("scrollbar");
      const trackRef = ref();
      const thumbRef = ref();
      let frameHandle = null;
      let onselectstartStore = null;
      const state = reactive({
        isDragging: false,
        traveled: 0
      });
      const bar = computed(() => BAR_MAP[props2.layout]);
      const trackSize = computed(() => props2.clientSize - unref(GAP2));
      const trackStyle = computed(() => ({
        position: "absolute",
        width: `${HORIZONTAL === props2.layout ? trackSize.value : props2.scrollbarSize}px`,
        height: `${HORIZONTAL === props2.layout ? props2.scrollbarSize : trackSize.value}px`,
        [ScrollbarDirKey[props2.layout]]: "2px",
        right: "2px",
        bottom: "2px",
        borderRadius: "4px"
      }));
      const thumbSize = computed(() => {
        const ratio = props2.ratio;
        if (ratio >= 100) {
          return Number.POSITIVE_INFINITY;
        }
        if (ratio >= 50) {
          return ratio * trackSize.value / 100;
        }
        const SCROLLBAR_MAX_SIZE = trackSize.value / 3;
        return Math.floor(
          Math.min(
            Math.max(ratio * trackSize.value / 100, SCROLLBAR_MIN_SIZE),
            SCROLLBAR_MAX_SIZE
          )
        );
      });
      const thumbStyle = computed(() => {
        if (!Number.isFinite(thumbSize.value)) {
          return {
            display: "none"
          };
        }
        const thumb = `${thumbSize.value}px`;
        const style = renderThumbStyle(
          {
            bar: bar.value,
            size: thumb,
            move: state.traveled
          },
          props2.layout
        );
        return style;
      });
      const totalSteps = computed(
        () => Math.ceil(props2.clientSize - thumbSize.value - unref(GAP2))
      );
      const attachEvents2 = () => {
        window.addEventListener("mousemove", onMouseMove);
        window.addEventListener("mouseup", onMouseUp);
        const thumbEl = unref(thumbRef);
        if (!thumbEl) return;
        onselectstartStore = document.onselectstart;
        document.onselectstart = () => false;
        thumbEl.addEventListener("touchmove", onMouseMove, { passive: true });
        thumbEl.addEventListener("touchend", onMouseUp);
      };
      const detachEvents = () => {
        window.removeEventListener("mousemove", onMouseMove);
        window.removeEventListener("mouseup", onMouseUp);
        document.onselectstart = onselectstartStore;
        onselectstartStore = null;
        const thumbEl = unref(thumbRef);
        if (!thumbEl) return;
        thumbEl.removeEventListener("touchmove", onMouseMove);
        thumbEl.removeEventListener("touchend", onMouseUp);
      };
      const onThumbMouseDown = (e) => {
        e.stopImmediatePropagation();
        if (e.ctrlKey || [1, 2].includes(e.button)) {
          return;
        }
        state.isDragging = true;
        state[bar.value.axis] = e.currentTarget[bar.value.offset] - (e[bar.value.client] - e.currentTarget.getBoundingClientRect()[bar.value.direction]);
        emit2("start-move");
        attachEvents2();
      };
      const onMouseUp = () => {
        state.isDragging = false;
        state[bar.value.axis] = 0;
        emit2("stop-move");
        detachEvents();
      };
      const onMouseMove = (e) => {
        const { isDragging: isDragging2 } = state;
        if (!isDragging2) return;
        if (!thumbRef.value || !trackRef.value) return;
        const prevPage = state[bar.value.axis];
        if (!prevPage) return;
        cAF(frameHandle);
        const offset2 = (trackRef.value.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]) * -1;
        const thumbClickPosition = thumbRef.value[bar.value.offset] - prevPage;
        const distance = offset2 - thumbClickPosition;
        frameHandle = rAF(() => {
          state.traveled = Math.max(0, Math.min(distance, totalSteps.value));
          emit2("scroll", distance, totalSteps.value);
        });
      };
      const clickTrackHandler = (e) => {
        const offset2 = Math.abs(
          e.target.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]
        );
        const thumbHalf = thumbRef.value[bar.value.offset] / 2;
        const distance = offset2 - thumbHalf;
        state.traveled = Math.max(0, Math.min(distance, totalSteps.value));
        emit2("scroll", distance, totalSteps.value);
      };
      watch(
        () => props2.scrollFrom,
        (v2) => {
          if (state.isDragging) return;
          state.traveled = Math.ceil(v2 * totalSteps.value);
        }
      );
      onBeforeUnmount(() => {
        detachEvents();
      });
      return () => {
        return h$1(
          "div",
          {
            role: "presentation",
            ref: trackRef,
            class: [
              nsVirtualScrollbar.b(),
              props2.class,
              (props2.alwaysOn || state.isDragging) && "always-on"
            ],
            style: trackStyle.value,
            onMousedown: withModifiers(clickTrackHandler, [
              "stop",
              "prevent"
            ]),
            onTouchstartPrevent: onThumbMouseDown
          },
          h$1(
            "div",
            {
              ref: thumbRef,
              class: nsScrollbar.e("thumb"),
              style: thumbStyle.value,
              onMousedown: onThumbMouseDown
            },
            []
          )
        );
      };
    }
  });
  const createList = ({
    name,
    getOffset: getOffset2,
    getItemSize,
    getItemOffset,
    getEstimatedTotalSize: getEstimatedTotalSize2,
    getStartIndexForOffset,
    getStopIndexForStartIndex,
    initCache,
    clearCache,
    validateProps
  }) => {
    return /* @__PURE__ */ defineComponent({
      name: name != null ? name : "ElVirtualList",
      props: virtualizedListProps,
      emits: [ITEM_RENDER_EVT, SCROLL_EVT],
      setup(props2, { emit: emit2, expose }) {
        validateProps(props2);
        const instance = getCurrentInstance();
        const ns = useNamespace("vl");
        const dynamicSizeCache = ref(initCache(props2, instance));
        const getItemStyleCache = useCache();
        const windowRef = ref();
        const innerRef = ref();
        const scrollbarRef = ref();
        const states = ref({
          isScrolling: false,
          scrollDir: "forward",
          scrollOffset: isNumber(props2.initScrollOffset) ? props2.initScrollOffset : 0,
          updateRequested: false,
          isScrollbarDragging: false,
          scrollbarAlwaysOn: props2.scrollbarAlwaysOn
        });
        const itemsToRender = computed(() => {
          const { total: total2, cache: cache2 } = props2;
          const { isScrolling, scrollDir, scrollOffset } = unref(states);
          if (total2 === 0) {
            return [0, 0, 0, 0];
          }
          const startIndex = getStartIndexForOffset(
            props2,
            scrollOffset,
            unref(dynamicSizeCache)
          );
          const stopIndex = getStopIndexForStartIndex(
            props2,
            startIndex,
            scrollOffset,
            unref(dynamicSizeCache)
          );
          const cacheBackward = !isScrolling || scrollDir === BACKWARD ? Math.max(1, cache2) : 1;
          const cacheForward = !isScrolling || scrollDir === FORWARD ? Math.max(1, cache2) : 1;
          return [
            Math.max(0, startIndex - cacheBackward),
            Math.max(0, Math.min(total2 - 1, stopIndex + cacheForward)),
            startIndex,
            stopIndex
          ];
        });
        const estimatedTotalSize = computed(
          () => getEstimatedTotalSize2(props2, unref(dynamicSizeCache))
        );
        const _isHorizontal = computed(() => isHorizontal(props2.layout));
        const windowStyle = computed(() => [
          {
            position: "relative",
            [`overflow-${_isHorizontal.value ? "x" : "y"}`]: "scroll",
            WebkitOverflowScrolling: "touch",
            willChange: "transform"
          },
          {
            direction: props2.direction,
            height: isNumber(props2.height) ? `${props2.height}px` : props2.height,
            width: isNumber(props2.width) ? `${props2.width}px` : props2.width
          },
          props2.style
        ]);
        const innerStyle = computed(() => {
          const size = unref(estimatedTotalSize);
          const horizontal = unref(_isHorizontal);
          return {
            height: horizontal ? "100%" : `${size}px`,
            pointerEvents: unref(states).isScrolling ? "none" : void 0,
            width: horizontal ? `${size}px` : "100%",
            // fix scrolling issues in Firefox.
            margin: 0,
            boxSizing: "border-box"
          };
        });
        const clientSize = computed(
          () => _isHorizontal.value ? props2.width : props2.height
        );
        const { onWheel } = useWheel(
          {
            atStartEdge: computed(() => states.value.scrollOffset <= 0),
            atEndEdge: computed(
              () => states.value.scrollOffset >= estimatedTotalSize.value
            ),
            layout: computed(() => props2.layout)
          },
          (offset2) => {
            var _a, _b;
            (_b = (_a = scrollbarRef.value).onMouseUp) == null ? void 0 : _b.call(_a);
            scrollTo(
              Math.min(
                states.value.scrollOffset + offset2,
                estimatedTotalSize.value - clientSize.value
              )
            );
          }
        );
        useEventListener(windowRef, "wheel", onWheel, {
          passive: false
        });
        const emitEvents = () => {
          const { total: total2 } = props2;
          if (total2 > 0) {
            const [cacheStart, cacheEnd, visibleStart, visibleEnd] = unref(itemsToRender);
            emit2(ITEM_RENDER_EVT, cacheStart, cacheEnd, visibleStart, visibleEnd);
          }
          const { scrollDir, scrollOffset, updateRequested } = unref(states);
          emit2(SCROLL_EVT, scrollDir, scrollOffset, updateRequested);
        };
        const scrollVertically = (e) => {
          const { clientHeight, scrollHeight, scrollTop } = e.currentTarget;
          const _states = unref(states);
          if (_states.scrollOffset === scrollTop) {
            return;
          }
          const scrollOffset = Math.max(
            0,
            Math.min(scrollTop, scrollHeight - clientHeight)
          );
          states.value = {
            ..._states,
            isScrolling: true,
            scrollDir: getScrollDir(_states.scrollOffset, scrollOffset),
            scrollOffset,
            updateRequested: false
          };
          nextTick(resetIsScrolling);
        };
        const scrollHorizontally = (e) => {
          const { clientWidth, scrollLeft, scrollWidth } = e.currentTarget;
          const _states = unref(states);
          if (_states.scrollOffset === scrollLeft) {
            return;
          }
          const { direction: direction2 } = props2;
          let scrollOffset = scrollLeft;
          if (direction2 === RTL) {
            switch (getRTLOffsetType()) {
              case RTL_OFFSET_NAG: {
                scrollOffset = -scrollLeft;
                break;
              }
              case RTL_OFFSET_POS_DESC: {
                scrollOffset = scrollWidth - clientWidth - scrollLeft;
                break;
              }
            }
          }
          scrollOffset = Math.max(
            0,
            Math.min(scrollOffset, scrollWidth - clientWidth)
          );
          states.value = {
            ..._states,
            isScrolling: true,
            scrollDir: getScrollDir(_states.scrollOffset, scrollOffset),
            scrollOffset,
            updateRequested: false
          };
          nextTick(resetIsScrolling);
        };
        const onScroll = (e) => {
          unref(_isHorizontal) ? scrollHorizontally(e) : scrollVertically(e);
          emitEvents();
        };
        const onScrollbarScroll = (distanceToGo, totalSteps) => {
          const offset2 = (estimatedTotalSize.value - clientSize.value) / totalSteps * distanceToGo;
          scrollTo(
            Math.min(
              estimatedTotalSize.value - clientSize.value,
              offset2
            )
          );
        };
        const scrollTo = (offset2) => {
          offset2 = Math.max(offset2, 0);
          if (offset2 === unref(states).scrollOffset) {
            return;
          }
          states.value = {
            ...unref(states),
            scrollOffset: offset2,
            scrollDir: getScrollDir(unref(states).scrollOffset, offset2),
            updateRequested: true
          };
          nextTick(resetIsScrolling);
        };
        const scrollToItem = (idx, alignment = AUTO_ALIGNMENT) => {
          const { scrollOffset } = unref(states);
          idx = Math.max(0, Math.min(idx, props2.total - 1));
          scrollTo(
            getOffset2(
              props2,
              idx,
              alignment,
              scrollOffset,
              unref(dynamicSizeCache)
            )
          );
        };
        const getItemStyle = (idx) => {
          const { direction: direction2, itemSize: itemSize2, layout: layout2 } = props2;
          const itemStyleCache = getItemStyleCache.value(
            clearCache && itemSize2,
            clearCache && layout2,
            clearCache && direction2
          );
          let style;
          if (hasOwn(itemStyleCache, String(idx))) {
            style = itemStyleCache[idx];
          } else {
            const offset2 = getItemOffset(props2, idx, unref(dynamicSizeCache));
            const size = getItemSize(props2, idx, unref(dynamicSizeCache));
            const horizontal = unref(_isHorizontal);
            const isRtl = direction2 === RTL;
            const offsetHorizontal = horizontal ? offset2 : 0;
            itemStyleCache[idx] = style = {
              position: "absolute",
              left: isRtl ? void 0 : `${offsetHorizontal}px`,
              right: isRtl ? `${offsetHorizontal}px` : void 0,
              top: !horizontal ? `${offset2}px` : 0,
              height: !horizontal ? `${size}px` : "100%",
              width: horizontal ? `${size}px` : "100%"
            };
          }
          return style;
        };
        const resetIsScrolling = () => {
          states.value.isScrolling = false;
          nextTick(() => {
            getItemStyleCache.value(-1, null, null);
          });
        };
        const resetScrollTop = () => {
          const window2 = windowRef.value;
          if (window2) {
            window2.scrollTop = 0;
          }
        };
        onMounted(() => {
          if (!isClient) return;
          const { initScrollOffset: initScrollOffset2 } = props2;
          const windowElement = unref(windowRef);
          if (isNumber(initScrollOffset2) && windowElement) {
            if (unref(_isHorizontal)) {
              windowElement.scrollLeft = initScrollOffset2;
            } else {
              windowElement.scrollTop = initScrollOffset2;
            }
          }
          emitEvents();
        });
        onUpdated(() => {
          const { direction: direction2, layout: layout2 } = props2;
          const { scrollOffset, updateRequested } = unref(states);
          const windowElement = unref(windowRef);
          if (updateRequested && windowElement) {
            if (layout2 === HORIZONTAL) {
              if (direction2 === RTL) {
                switch (getRTLOffsetType()) {
                  case RTL_OFFSET_NAG: {
                    windowElement.scrollLeft = -scrollOffset;
                    break;
                  }
                  case RTL_OFFSET_POS_ASC: {
                    windowElement.scrollLeft = scrollOffset;
                    break;
                  }
                  default: {
                    const { clientWidth, scrollWidth } = windowElement;
                    windowElement.scrollLeft = scrollWidth - clientWidth - scrollOffset;
                    break;
                  }
                }
              } else {
                windowElement.scrollLeft = scrollOffset;
              }
            } else {
              windowElement.scrollTop = scrollOffset;
            }
          }
        });
        onActivated(() => {
          unref(windowRef).scrollTop = unref(states).scrollOffset;
        });
        const api = {
          ns,
          clientSize,
          estimatedTotalSize,
          windowStyle,
          windowRef,
          innerRef,
          innerStyle,
          itemsToRender,
          scrollbarRef,
          states,
          getItemStyle,
          onScroll,
          onScrollbarScroll,
          onWheel,
          scrollTo,
          scrollToItem,
          resetScrollTop
        };
        expose({
          windowRef,
          innerRef,
          getItemStyleCache,
          scrollTo,
          scrollToItem,
          resetScrollTop,
          states
        });
        return api;
      },
      render(ctx) {
        var _a;
        const {
          $slots,
          className,
          clientSize,
          containerElement,
          data,
          getItemStyle,
          innerElement,
          itemsToRender,
          innerStyle,
          layout: layout2,
          total: total2,
          onScroll,
          onScrollbarScroll,
          states,
          useIsScrolling,
          windowStyle,
          ns
        } = ctx;
        const [start, end] = itemsToRender;
        const Container = resolveDynamicComponent(containerElement);
        const Inner = resolveDynamicComponent(innerElement);
        const children = [];
        if (total2 > 0) {
          for (let i = start; i <= end; i++) {
            children.push(
              h$1(
                Fragment,
                { key: i },
                (_a = $slots.default) == null ? void 0 : _a.call($slots, {
                  data,
                  index: i,
                  isScrolling: useIsScrolling ? states.isScrolling : void 0,
                  style: getItemStyle(i)
                })
              )
            );
          }
        }
        const InnerNode = [
          h$1(
            Inner,
            mergeProps(ctx.innerProps, {
              style: innerStyle,
              ref: "innerRef"
            }),
            !isString(Inner) ? {
              default: () => children
            } : children
          )
        ];
        const scrollbar = h$1(ScrollBar, {
          ref: "scrollbarRef",
          clientSize,
          layout: layout2,
          onScroll: onScrollbarScroll,
          ratio: clientSize * 100 / this.estimatedTotalSize,
          scrollFrom: states.scrollOffset / (this.estimatedTotalSize - clientSize),
          total: total2,
          alwaysOn: states.scrollbarAlwaysOn
        });
        const listContainer = h$1(
          Container,
          {
            class: [ns.e("window"), className],
            style: windowStyle,
            onScroll,
            ref: "windowRef",
            key: 0
          },
          !isString(Container) ? { default: () => [InnerNode] } : [InnerNode]
        );
        return h$1(
          "div",
          {
            key: 0,
            class: [ns.e("wrapper"), states.scrollbarAlwaysOn ? "always-on" : ""]
          },
          [listContainer, scrollbar]
        );
      }
    });
  };
  const FixedSizeList = createList({
    name: "ElFixedSizeList",
    getItemOffset: ({ itemSize: itemSize2 }, index) => index * itemSize2,
    getItemSize: ({ itemSize: itemSize2 }) => itemSize2,
    getEstimatedTotalSize: ({ total: total2, itemSize: itemSize2 }) => itemSize2 * total2,
    getOffset: ({ height, total: total2, itemSize: itemSize2, layout: layout2, width }, index, alignment, scrollOffset) => {
      const size = isHorizontal(layout2) ? width : height;
      const lastItemOffset = Math.max(0, total2 * itemSize2 - size);
      const maxOffset = Math.min(lastItemOffset, index * itemSize2);
      const minOffset = Math.max(0, (index + 1) * itemSize2 - size);
      if (alignment === SMART_ALIGNMENT) {
        if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {
          alignment = AUTO_ALIGNMENT;
        } else {
          alignment = CENTERED_ALIGNMENT;
        }
      }
      switch (alignment) {
        case START_ALIGNMENT: {
          return maxOffset;
        }
        case END_ALIGNMENT: {
          return minOffset;
        }
        case CENTERED_ALIGNMENT: {
          const middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);
          if (middleOffset < Math.ceil(size / 2)) {
            return 0;
          } else if (middleOffset > lastItemOffset + Math.floor(size / 2)) {
            return lastItemOffset;
          } else {
            return middleOffset;
          }
        }
        case AUTO_ALIGNMENT:
        default: {
          if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {
            return scrollOffset;
          } else if (scrollOffset < minOffset) {
            return minOffset;
          } else {
            return maxOffset;
          }
        }
      }
    },
    getStartIndexForOffset: ({ total: total2, itemSize: itemSize2 }, offset2) => Math.max(0, Math.min(total2 - 1, Math.floor(offset2 / itemSize2))),
    getStopIndexForStartIndex: ({ height, total: total2, itemSize: itemSize2, layout: layout2, width }, startIndex, scrollOffset) => {
      const offset2 = startIndex * itemSize2;
      const size = isHorizontal(layout2) ? width : height;
      const numVisibleItems = Math.ceil(
        (size + scrollOffset - offset2) / itemSize2
      );
      return Math.max(
        0,
        Math.min(
          total2 - 1,
          // because startIndex is inclusive, so in order to prevent array outbound indexing
          // we need to - 1 to prevent outbound behavior
          startIndex + numVisibleItems - 1
        )
      );
    },
    /**
     * Fixed size list does not need this cache
     * Using any to bypass it, TODO: Using type inference to fix this.
     */
    initCache() {
      return void 0;
    },
    clearCache: true,
    validateProps() {
    }
  });
  const getItemFromCache$1 = (props2, index, listCache) => {
    const { itemSize: itemSize2 } = props2;
    const { items, lastVisitedIndex } = listCache;
    if (index > lastVisitedIndex) {
      let offset2 = 0;
      if (lastVisitedIndex >= 0) {
        const item = items[lastVisitedIndex];
        offset2 = item.offset + item.size;
      }
      for (let i = lastVisitedIndex + 1; i <= index; i++) {
        const size = itemSize2(i);
        items[i] = {
          offset: offset2,
          size
        };
        offset2 += size;
      }
      listCache.lastVisitedIndex = index;
    }
    return items[index];
  };
  const findItem$1 = (props2, listCache, offset2) => {
    const { items, lastVisitedIndex } = listCache;
    const lastVisitedOffset = lastVisitedIndex > 0 ? items[lastVisitedIndex].offset : 0;
    if (lastVisitedOffset >= offset2) {
      return bs$1(props2, listCache, 0, lastVisitedIndex, offset2);
    }
    return es$1(props2, listCache, Math.max(0, lastVisitedIndex), offset2);
  };
  const bs$1 = (props2, listCache, low, high, offset2) => {
    while (low <= high) {
      const mid = low + Math.floor((high - low) / 2);
      const currentOffset = getItemFromCache$1(props2, mid, listCache).offset;
      if (currentOffset === offset2) {
        return mid;
      } else if (currentOffset < offset2) {
        low = mid + 1;
      } else if (currentOffset > offset2) {
        high = mid - 1;
      }
    }
    return Math.max(0, low - 1);
  };
  const es$1 = (props2, listCache, index, offset2) => {
    const { total: total2 } = props2;
    let exponent = 1;
    while (index < total2 && getItemFromCache$1(props2, index, listCache).offset < offset2) {
      index += exponent;
      exponent *= 2;
    }
    return bs$1(
      props2,
      listCache,
      Math.floor(index / 2),
      Math.min(index, total2 - 1),
      offset2
    );
  };
  const getEstimatedTotalSize = ({ total: total2 }, { items, estimatedItemSize: estimatedItemSize2, lastVisitedIndex }) => {
    let totalSizeOfMeasuredItems = 0;
    if (lastVisitedIndex >= total2) {
      lastVisitedIndex = total2 - 1;
    }
    if (lastVisitedIndex >= 0) {
      const item = items[lastVisitedIndex];
      totalSizeOfMeasuredItems = item.offset + item.size;
    }
    const numUnmeasuredItems = total2 - lastVisitedIndex - 1;
    const totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedItemSize2;
    return totalSizeOfMeasuredItems + totalSizeOfUnmeasuredItems;
  };
  const DynamicSizeList = createList({
    name: "ElDynamicSizeList",
    getItemOffset: (props2, index, listCache) => getItemFromCache$1(props2, index, listCache).offset,
    getItemSize: (_2, index, { items }) => items[index].size,
    getEstimatedTotalSize,
    getOffset: (props2, index, alignment, scrollOffset, listCache) => {
      const { height, layout: layout2, width } = props2;
      const size = isHorizontal(layout2) ? width : height;
      const item = getItemFromCache$1(props2, index, listCache);
      const estimatedTotalSize = getEstimatedTotalSize(props2, listCache);
      const maxOffset = Math.max(
        0,
        Math.min(estimatedTotalSize - size, item.offset)
      );
      const minOffset = Math.max(0, item.offset - size + item.size);
      if (alignment === SMART_ALIGNMENT) {
        if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {
          alignment = AUTO_ALIGNMENT;
        } else {
          alignment = CENTERED_ALIGNMENT;
        }
      }
      switch (alignment) {
        case START_ALIGNMENT: {
          return maxOffset;
        }
        case END_ALIGNMENT: {
          return minOffset;
        }
        case CENTERED_ALIGNMENT: {
          return Math.round(minOffset + (maxOffset - minOffset) / 2);
        }
        case AUTO_ALIGNMENT:
        default: {
          if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {
            return scrollOffset;
          } else if (scrollOffset < minOffset) {
            return minOffset;
          } else {
            return maxOffset;
          }
        }
      }
    },
    getStartIndexForOffset: (props2, offset2, listCache) => findItem$1(props2, listCache, offset2),
    getStopIndexForStartIndex: (props2, startIndex, scrollOffset, listCache) => {
      const { height, total: total2, layout: layout2, width } = props2;
      const size = isHorizontal(layout2) ? width : height;
      const item = getItemFromCache$1(props2, startIndex, listCache);
      const maxOffset = scrollOffset + size;
      let offset2 = item.offset + item.size;
      let stopIndex = startIndex;
      while (stopIndex < total2 - 1 && offset2 < maxOffset) {
        stopIndex++;
        offset2 += getItemFromCache$1(props2, stopIndex, listCache).size;
      }
      return stopIndex;
    },
    initCache({ estimatedItemSize: estimatedItemSize2 = DEFAULT_DYNAMIC_LIST_ITEM_SIZE }, instance) {
      const cache2 = {
        items: {},
        estimatedItemSize: estimatedItemSize2,
        lastVisitedIndex: -1
      };
      cache2.clearCacheAfterIndex = (index, forceUpdate = true) => {
        var _a, _b;
        cache2.lastVisitedIndex = Math.min(cache2.lastVisitedIndex, index - 1);
        (_a = instance.exposed) == null ? void 0 : _a.getItemStyleCache(-1);
        if (forceUpdate) {
          (_b = instance.proxy) == null ? void 0 : _b.$forceUpdate();
        }
      };
      return cache2;
    },
    clearCache: false,
    validateProps: ({ itemSize: itemSize2 }) => {
    }
  });
  const props = {
    loading: Boolean,
    data: {
      type: Array,
      required: true
    },
    hoveringIndex: Number,
    width: Number,
    id: String,
    ariaLabel: String
  };
  var ElSelectMenu = /* @__PURE__ */ defineComponent({
    name: "ElSelectDropdown",
    props,
    setup(props2, {
      slots,
      expose
    }) {
      const select = inject(selectV2InjectionKey);
      const ns = useNamespace("select");
      const {
        getLabel,
        getValue: getValue2,
        getDisabled
      } = useProps(select.props);
      const cachedHeights = ref([]);
      const listRef = ref();
      const size = computed(() => props2.data.length);
      watch(() => size.value, () => {
        var _a, _b;
        (_b = (_a = select.tooltipRef.value) == null ? void 0 : _a.updatePopper) == null ? void 0 : _b.call(_a);
      });
      const isSized = computed(() => isUndefined(select.props.estimatedOptionHeight));
      const listProps = computed(() => {
        if (isSized.value) {
          return {
            itemSize: select.props.itemHeight
          };
        }
        return {
          estimatedSize: select.props.estimatedOptionHeight,
          itemSize: (idx) => cachedHeights.value[idx]
        };
      });
      const contains = (arr = [], target) => {
        const {
          props: {
            valueKey
          }
        } = select;
        if (!isObject$2(target)) {
          return arr.includes(target);
        }
        return arr && arr.some((item) => {
          return toRaw(get(item, valueKey)) === get(target, valueKey);
        });
      };
      const isEqual2 = (selected, target) => {
        if (!isObject$2(target)) {
          return selected === target;
        } else {
          const {
            valueKey
          } = select.props;
          return get(selected, valueKey) === get(target, valueKey);
        }
      };
      const isItemSelected = (modelValue, target) => {
        if (select.props.multiple) {
          return contains(modelValue, getValue2(target));
        }
        return isEqual2(modelValue, getValue2(target));
      };
      const isItemDisabled = (modelValue, selected) => {
        const {
          disabled,
          multiple,
          multipleLimit
        } = select.props;
        return disabled || !selected && (multiple ? multipleLimit > 0 && modelValue.length >= multipleLimit : false);
      };
      const isItemHovering = (target) => props2.hoveringIndex === target;
      const scrollToItem = (index) => {
        const list = listRef.value;
        if (list) {
          list.scrollToItem(index);
        }
      };
      const resetScrollTop = () => {
        const list = listRef.value;
        if (list) {
          list.resetScrollTop();
        }
      };
      const exposed = {
        listRef,
        isSized,
        isItemDisabled,
        isItemHovering,
        isItemSelected,
        scrollToItem,
        resetScrollTop
      };
      expose(exposed);
      const Item = (itemProps) => {
        const {
          index,
          data,
          style
        } = itemProps;
        const sized = unref(isSized);
        const {
          itemSize: itemSize2,
          estimatedSize
        } = unref(listProps);
        const {
          modelValue
        } = select.props;
        const {
          onSelect,
          onHover
        } = select;
        const item = data[index];
        if (item.type === "Group") {
          return createVNode(GroupItem, {
            "item": item,
            "style": style,
            "height": sized ? itemSize2 : estimatedSize
          }, null);
        }
        const isSelected = isItemSelected(modelValue, item);
        const isDisabled = isItemDisabled(modelValue, isSelected);
        const isHovering = isItemHovering(index);
        return createVNode(OptionItem, mergeProps(itemProps, {
          "selected": isSelected,
          "disabled": getDisabled(item) || isDisabled,
          "created": !!item.created,
          "hovering": isHovering,
          "item": item,
          "onSelect": onSelect,
          "onHover": onHover
        }), {
          default: (props3) => {
            var _a;
            return ((_a = slots.default) == null ? void 0 : _a.call(slots, props3)) || createVNode("span", null, [getLabel(item)]);
          }
        });
      };
      const {
        onKeyboardNavigate,
        onKeyboardSelect
      } = select;
      const onForward = () => {
        onKeyboardNavigate("forward");
      };
      const onBackward = () => {
        onKeyboardNavigate("backward");
      };
      const onKeydown = (e) => {
        const code = getEventCode(e);
        const {
          tab,
          esc,
          down,
          up,
          enter,
          numpadEnter
        } = EVENT_CODE;
        if ([esc, down, up, enter, numpadEnter].includes(code)) {
          e.preventDefault();
          e.stopPropagation();
        }
        switch (code) {
          case tab:
          case esc:
            break;
          case down:
            onForward();
            break;
          case up:
            onBackward();
            break;
          case enter:
          case numpadEnter:
            onKeyboardSelect();
            break;
        }
      };
      return () => {
        var _a, _b, _c, _d;
        const {
          data,
          width
        } = props2;
        const {
          height,
          multiple,
          scrollbarAlwaysOn
        } = select.props;
        const isScrollbarAlwaysOn = computed(() => {
          return isIOS ? true : scrollbarAlwaysOn;
        });
        const List = unref(isSized) ? FixedSizeList : DynamicSizeList;
        return createVNode("div", {
          "class": [ns.b("dropdown"), ns.is("multiple", multiple)],
          "style": {
            width: `${width}px`
          }
        }, [(_a = slots.header) == null ? void 0 : _a.call(slots), ((_b = slots.loading) == null ? void 0 : _b.call(slots)) || ((_c = slots.empty) == null ? void 0 : _c.call(slots)) || createVNode(List, mergeProps({
          "ref": listRef
        }, unref(listProps), {
          "className": ns.be("dropdown", "list"),
          "scrollbarAlwaysOn": isScrollbarAlwaysOn.value,
          "data": data,
          "height": height,
          "width": width,
          "total": data.length,
          "innerElement": "ul",
          "innerProps": {
            id: props2.id,
            role: "listbox",
            "aria-label": props2.ariaLabel,
            "aria-orientation": "vertical"
          },
          "onKeydown": onKeydown
        }), {
          default: (props3) => createVNode(Item, props3, null)
        }), (_d = slots.footer) == null ? void 0 : _d.call(slots)]);
      };
    }
  });
  function useAllowCreate(props2, states) {
    const { aliasProps, getLabel, getValue: getValue2 } = useProps(props2);
    const createOptionCount = ref(0);
    const cachedSelectedOption = ref();
    const enableAllowCreateMode = computed(() => {
      return props2.allowCreate && props2.filterable;
    });
    watch(
      () => props2.options,
      (options) => {
        const optionLabelsSet = new Set(options.map((option) => getLabel(option)));
        states.createdOptions = states.createdOptions.filter(
          (createdOption) => !optionLabelsSet.has(getLabel(createdOption))
        );
      }
    );
    function hasExistingOption(query) {
      const hasOption = (option) => getLabel(option) === query;
      return props2.options && props2.options.some(hasOption) || states.createdOptions.some(hasOption);
    }
    function selectNewOption(option) {
      if (!enableAllowCreateMode.value) {
        return;
      }
      if (props2.multiple && option.created) {
        createOptionCount.value++;
      } else {
        cachedSelectedOption.value = option;
      }
    }
    function createNewOption(query) {
      if (enableAllowCreateMode.value) {
        if (query && query.length > 0) {
          if (hasExistingOption(query)) {
            states.createdOptions = states.createdOptions.filter(
              (createdOption) => getLabel(createdOption) !== states.previousQuery
            );
            return;
          }
          const newOption = {
            [aliasProps.value.value]: query,
            [aliasProps.value.label]: query,
            created: true,
            [aliasProps.value.disabled]: false
          };
          if (states.createdOptions.length >= createOptionCount.value) {
            states.createdOptions[createOptionCount.value] = newOption;
          } else {
            states.createdOptions.push(newOption);
          }
        } else {
          if (props2.multiple) {
            states.createdOptions.length = createOptionCount.value;
          } else {
            const selectedOption = cachedSelectedOption.value;
            states.createdOptions.length = 0;
            if (selectedOption && selectedOption.created) {
              states.createdOptions.push(selectedOption);
            }
          }
        }
      }
    }
    function removeNewOption(option) {
      if (!enableAllowCreateMode.value || !option || !option.created || option.created && props2.reserveKeyword && states.inputValue === getLabel(option)) {
        return;
      }
      const idx = states.createdOptions.findIndex(
        (it2) => getValue2(it2) === getValue2(option)
      );
      if (~idx) {
        states.createdOptions.splice(idx, 1);
        createOptionCount.value--;
      }
    }
    function clearAllNewOption() {
      if (enableAllowCreateMode.value) {
        states.createdOptions.length = 0;
        createOptionCount.value = 0;
      }
    }
    return {
      createNewOption,
      removeNewOption,
      selectNewOption,
      clearAllNewOption
    };
  }
  const useSelect$1 = (props2, emit2) => {
    const { t } = useLocale();
    const slots = useSlots();
    const nsSelect = useNamespace("select");
    const nsInput = useNamespace("input");
    const { form: elForm, formItem: elFormItem } = useFormItem();
    const { inputId } = useFormItemInputId(props2, {
      formItemContext: elFormItem
    });
    const { aliasProps, getLabel, getValue: getValue2, getDisabled, getOptions } = useProps(props2);
    const { valueOnClear, isEmptyValue: isEmptyValue2 } = useEmptyValues(props2);
    const states = reactive({
      inputValue: "",
      cachedOptions: [],
      createdOptions: [],
      hoveringIndex: -1,
      inputHovering: false,
      selectionWidth: 0,
      collapseItemWidth: 0,
      previousQuery: null,
      previousValue: void 0,
      selectedLabel: "",
      menuVisibleOnFocus: false,
      isBeforeHide: false
    });
    const popperSize = ref(-1);
    const debouncing = ref(false);
    const selectRef = ref();
    const selectionRef = ref();
    const tooltipRef = ref();
    const tagTooltipRef = ref();
    const inputRef = ref();
    const prefixRef = ref();
    const suffixRef = ref();
    const menuRef = ref();
    const tagMenuRef = ref();
    const collapseItemRef = ref();
    const {
      isComposing,
      handleCompositionStart,
      handleCompositionEnd,
      handleCompositionUpdate
    } = useComposition({
      afterComposition: (e) => onInput(e)
    });
    const selectDisabled = useFormDisabled();
    const { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, {
      disabled: selectDisabled,
      afterFocus() {
        if (props2.automaticDropdown && !expanded.value) {
          expanded.value = true;
          states.menuVisibleOnFocus = true;
        }
      },
      beforeBlur(event) {
        var _a, _b;
        return ((_a = tooltipRef.value) == null ? void 0 : _a.isFocusInsideContent(event)) || ((_b = tagTooltipRef.value) == null ? void 0 : _b.isFocusInsideContent(event));
      },
      afterBlur() {
        var _a;
        expanded.value = false;
        states.menuVisibleOnFocus = false;
        if (props2.validateEvent) {
          (_a = elFormItem == null ? void 0 : elFormItem.validate) == null ? void 0 : _a.call(elFormItem, "blur").catch((err) => debugWarn());
        }
      }
    });
    const allOptions = computed(() => filterOptions(""));
    const hasOptions = computed(() => {
      if (props2.loading) return false;
      return props2.options.length > 0 || states.createdOptions.length > 0;
    });
    const filteredOptions = ref([]);
    const expanded = ref(false);
    const needStatusIcon = computed(() => {
      var _a;
      return (_a = elForm == null ? void 0 : elForm.statusIcon) != null ? _a : false;
    });
    const popupHeight = computed(() => {
      const totalHeight = filteredOptions.value.length * props2.itemHeight;
      return totalHeight > props2.height ? props2.height : totalHeight;
    });
    const hasModelValue = computed(() => {
      return props2.multiple ? isArray$1(props2.modelValue) && props2.modelValue.length > 0 : !isEmptyValue2(props2.modelValue);
    });
    const showClearBtn = computed(() => {
      return props2.clearable && !selectDisabled.value && hasModelValue.value && (isFocused.value || states.inputHovering);
    });
    const iconComponent = computed(
      () => props2.remote && props2.filterable && !props2.remoteShowSuffix ? "" : props2.suffixIcon
    );
    const iconReverse = computed(
      () => iconComponent.value && nsSelect.is("reverse", expanded.value)
    );
    const validateState = computed(() => (elFormItem == null ? void 0 : elFormItem.validateState) || "");
    const validateIcon = computed(() => {
      if (!validateState.value) return;
      return ValidateComponentsMap[validateState.value];
    });
    const debounce2 = computed(() => props2.remote ? props2.debounce : 0);
    const isRemoteSearchEmpty = computed(
      () => props2.remote && !states.inputValue && !hasOptions.value
    );
    const emptyText = computed(() => {
      if (props2.loading) {
        return props2.loadingText || t("el.select.loading");
      } else {
        if (props2.filterable && states.inputValue && hasOptions.value && filteredOptions.value.length === 0) {
          return props2.noMatchText || t("el.select.noMatch");
        }
        if (!hasOptions.value) {
          return props2.noDataText || t("el.select.noData");
        }
      }
      return null;
    });
    const isFilterMethodValid = computed(
      () => props2.filterable && isFunction$1(props2.filterMethod)
    );
    const isRemoteMethodValid = computed(
      () => props2.filterable && props2.remote && isFunction$1(props2.remoteMethod)
    );
    const filterOptions = (query) => {
      const regexp = new RegExp(escapeStringRegexp(query), "i");
      const isValidOption = (o2) => {
        if (isFilterMethodValid.value || isRemoteMethodValid.value) return true;
        return query ? regexp.test(getLabel(o2) || "") : true;
      };
      if (props2.loading) {
        return [];
      }
      return [...states.createdOptions, ...props2.options].reduce((all, item) => {
        const options = getOptions(item);
        if (isArray$1(options)) {
          const filtered = options.filter(isValidOption);
          if (filtered.length > 0) {
            all.push(
              {
                label: getLabel(item),
                type: "Group"
              },
              ...filtered
            );
          }
        } else if (props2.remote || isValidOption(item)) {
          all.push(item);
        }
        return all;
      }, []);
    };
    const updateOptions2 = () => {
      filteredOptions.value = filterOptions(states.inputValue);
    };
    const allOptionsValueMap = computed(() => {
      const valueMap = /* @__PURE__ */ new Map();
      allOptions.value.forEach((option, index) => {
        valueMap.set(getValueKey(getValue2(option)), { option, index });
      });
      return valueMap;
    });
    const filteredOptionsValueMap = computed(() => {
      const valueMap = /* @__PURE__ */ new Map();
      filteredOptions.value.forEach((option, index) => {
        valueMap.set(getValueKey(getValue2(option)), { option, index });
      });
      return valueMap;
    });
    const optionsAllDisabled = computed(
      () => filteredOptions.value.every((option) => getDisabled(option))
    );
    const selectSize = useFormSize();
    const collapseTagSize = computed(
      () => "small" === selectSize.value ? "small" : "default"
    );
    const calculatePopperSize = () => {
      var _a;
      if (isNumber(props2.fitInputWidth)) {
        popperSize.value = props2.fitInputWidth;
        return;
      }
      const width = ((_a = selectRef.value) == null ? void 0 : _a.offsetWidth) || 200;
      if (!props2.fitInputWidth && hasOptions.value) {
        nextTick(() => {
          popperSize.value = Math.max(width, calculateLabelMaxWidth());
        });
      } else {
        popperSize.value = width;
      }
    };
    const calculateLabelMaxWidth = () => {
      var _a, _b;
      const canvas = document.createElement("canvas");
      const ctx = canvas.getContext("2d");
      const selector = nsSelect.be("dropdown", "item");
      const dom = ((_b = (_a = menuRef.value) == null ? void 0 : _a.listRef) == null ? void 0 : _b.innerRef) || document;
      const dropdownItemEl = dom.querySelector(`.${selector}`);
      if (dropdownItemEl === null || ctx === null) return 0;
      const style = getComputedStyle(dropdownItemEl);
      const padding = Number.parseFloat(style.paddingLeft) + Number.parseFloat(style.paddingRight);
      ctx.font = `bold ${style.font.replace(
        new RegExp(`\\b${style.fontWeight}\\b`),
        ""
      )}`;
      const maxWidth = filteredOptions.value.reduce((max2, option) => {
        const metrics = ctx.measureText(getLabel(option));
        return Math.max(metrics.width, max2);
      }, 0);
      return maxWidth + padding;
    };
    const getGapWidth = () => {
      if (!selectionRef.value) return 0;
      const style = window.getComputedStyle(selectionRef.value);
      return Number.parseFloat(style.gap || "6px");
    };
    const tagStyle = computed(() => {
      const gapWidth = getGapWidth();
      const inputSlotWidth = props2.filterable ? gapWidth + MINIMUM_INPUT_WIDTH : 0;
      const maxWidth = collapseItemRef.value && props2.maxCollapseTags === 1 ? states.selectionWidth - states.collapseItemWidth - gapWidth - inputSlotWidth : states.selectionWidth - inputSlotWidth;
      return { maxWidth: `${maxWidth}px` };
    });
    const collapseTagStyle = computed(() => {
      return { maxWidth: `${states.selectionWidth}px` };
    });
    const shouldShowPlaceholder = computed(() => {
      if (isArray$1(props2.modelValue)) {
        return props2.modelValue.length === 0 && !states.inputValue;
      }
      return props2.filterable ? !states.inputValue : true;
    });
    const currentPlaceholder = computed(() => {
      var _a;
      const _placeholder = (_a = props2.placeholder) != null ? _a : t("el.select.placeholder");
      return props2.multiple || !hasModelValue.value ? _placeholder : states.selectedLabel;
    });
    const popperRef = computed(() => {
      var _a, _b;
      return (_b = (_a = tooltipRef.value) == null ? void 0 : _a.popperRef) == null ? void 0 : _b.contentRef;
    });
    const indexRef = computed(() => {
      if (props2.multiple) {
        const len = props2.modelValue.length;
        if (len > 0 && filteredOptionsValueMap.value.has(props2.modelValue[len - 1])) {
          const { index } = filteredOptionsValueMap.value.get(
            props2.modelValue[len - 1]
          );
          return index;
        }
      } else {
        if (!isEmptyValue2(props2.modelValue) && filteredOptionsValueMap.value.has(props2.modelValue)) {
          const { index } = filteredOptionsValueMap.value.get(props2.modelValue);
          return index;
        }
      }
      return -1;
    });
    const dropdownMenuVisible = computed({
      get() {
        return expanded.value && (props2.loading || !isRemoteSearchEmpty.value || props2.remote && !!slots.empty) && (!debouncing.value || !isEmpty(states.previousQuery));
      },
      set(val) {
        expanded.value = val;
      }
    });
    const showTagList = computed(() => {
      if (!props2.multiple) {
        return [];
      }
      return props2.collapseTags ? states.cachedOptions.slice(0, props2.maxCollapseTags) : states.cachedOptions;
    });
    const collapseTagList = computed(() => {
      if (!props2.multiple) {
        return [];
      }
      return props2.collapseTags ? states.cachedOptions.slice(props2.maxCollapseTags) : [];
    });
    const {
      createNewOption,
      removeNewOption,
      selectNewOption,
      clearAllNewOption
    } = useAllowCreate(props2, states);
    const toggleMenu = (event) => {
      var _a;
      if (selectDisabled.value || props2.filterable && expanded.value && event && !((_a = suffixRef.value) == null ? void 0 : _a.contains(event.target)))
        return;
      if (states.menuVisibleOnFocus) {
        states.menuVisibleOnFocus = false;
      } else {
        expanded.value = !expanded.value;
      }
    };
    const onInputChange = () => {
      if (states.inputValue.length > 0 && !expanded.value) {
        expanded.value = true;
      }
      createNewOption(states.inputValue);
      nextTick(() => {
        handleQueryChange(states.inputValue);
      });
    };
    const debouncedOnInputChange = useDebounceFn(() => {
      onInputChange();
      debouncing.value = false;
    }, debounce2);
    const handleQueryChange = (val) => {
      if (states.previousQuery === val || isComposing.value) {
        return;
      }
      states.previousQuery = val;
      if (props2.filterable && isFunction$1(props2.filterMethod)) {
        props2.filterMethod(val);
      } else if (props2.filterable && props2.remote && isFunction$1(props2.remoteMethod)) {
        props2.remoteMethod(val);
      }
      if (props2.defaultFirstOption && (props2.filterable || props2.remote) && filteredOptions.value.length) {
        nextTick(checkDefaultFirstOption);
      } else {
        nextTick(updateHoveringIndex);
      }
    };
    const checkDefaultFirstOption = () => {
      const optionsInDropdown = filteredOptions.value.filter(
        (n) => !n.disabled && n.type !== "Group"
      );
      const userCreatedOption = optionsInDropdown.find((n) => n.created);
      const firstOriginOption = optionsInDropdown[0];
      states.hoveringIndex = getValueIndex(
        filteredOptions.value,
        userCreatedOption || firstOriginOption
      );
    };
    const emitChange = (val) => {
      if (!isEqual$1(props2.modelValue, val)) {
        emit2(CHANGE_EVENT, val);
      }
    };
    const update = (val) => {
      emit2(UPDATE_MODEL_EVENT, val);
      emitChange(val);
      states.previousValue = props2.multiple ? String(val) : val;
      nextTick(() => {
        if (props2.multiple && isArray$1(props2.modelValue)) {
          const cachedOptions = states.cachedOptions.slice();
          const selectedOptions = props2.modelValue.map(
            (value) => getOption(value, cachedOptions)
          );
          if (!isEqual$1(states.cachedOptions, selectedOptions)) {
            states.cachedOptions = selectedOptions;
          }
        } else {
          initStates(true);
        }
      });
    };
    const getValueIndex = (arr = [], value) => {
      if (!isObject$2(value)) {
        return arr.indexOf(value);
      }
      const valueKey = props2.valueKey;
      let index = -1;
      arr.some((item, i) => {
        if (get(item, valueKey) === get(value, valueKey)) {
          index = i;
          return true;
        }
        return false;
      });
      return index;
    };
    const getValueKey = (item) => {
      return isObject$2(item) ? get(item, props2.valueKey) : item;
    };
    const handleResize = () => {
      calculatePopperSize();
    };
    const resetSelectionWidth = () => {
      states.selectionWidth = Number.parseFloat(
        window.getComputedStyle(selectionRef.value).width
      );
    };
    const resetCollapseItemWidth = () => {
      states.collapseItemWidth = collapseItemRef.value.getBoundingClientRect().width;
    };
    const updateTooltip = () => {
      var _a, _b;
      (_b = (_a = tooltipRef.value) == null ? void 0 : _a.updatePopper) == null ? void 0 : _b.call(_a);
    };
    const updateTagTooltip = () => {
      var _a, _b;
      (_b = (_a = tagTooltipRef.value) == null ? void 0 : _a.updatePopper) == null ? void 0 : _b.call(_a);
    };
    const onSelect = (option) => {
      const optionValue = getValue2(option);
      if (props2.multiple) {
        let selectedOptions = props2.modelValue.slice();
        const index = getValueIndex(selectedOptions, optionValue);
        if (index > -1) {
          selectedOptions = [
            ...selectedOptions.slice(0, index),
            ...selectedOptions.slice(index + 1)
          ];
          states.cachedOptions.splice(index, 1);
          removeNewOption(option);
        } else if (props2.multipleLimit <= 0 || selectedOptions.length < props2.multipleLimit) {
          selectedOptions = [...selectedOptions, optionValue];
          states.cachedOptions.push(option);
          selectNewOption(option);
        }
        update(selectedOptions);
        if (option.created) {
          handleQueryChange("");
        }
        if (props2.filterable && !props2.reserveKeyword) {
          states.inputValue = "";
        }
      } else {
        states.selectedLabel = getLabel(option);
        !isEqual$1(props2.modelValue, optionValue) && update(optionValue);
        expanded.value = false;
        selectNewOption(option);
        if (!option.created) {
          clearAllNewOption();
        }
      }
      focus();
    };
    const deleteTag = (event, option) => {
      let selectedOptions = props2.modelValue.slice();
      const index = getValueIndex(selectedOptions, getValue2(option));
      if (index > -1 && !selectDisabled.value) {
        selectedOptions = [
          ...props2.modelValue.slice(0, index),
          ...props2.modelValue.slice(index + 1)
        ];
        states.cachedOptions.splice(index, 1);
        update(selectedOptions);
        emit2("remove-tag", getValue2(option));
        removeNewOption(option);
      }
      event.stopPropagation();
      focus();
    };
    const focus = () => {
      var _a;
      (_a = inputRef.value) == null ? void 0 : _a.focus();
    };
    const blur = () => {
      var _a;
      if (expanded.value) {
        expanded.value = false;
        nextTick(() => {
          var _a2;
          return (_a2 = inputRef.value) == null ? void 0 : _a2.blur();
        });
        return;
      }
      (_a = inputRef.value) == null ? void 0 : _a.blur();
    };
    const handleEsc = () => {
      if (states.inputValue.length > 0) {
        states.inputValue = "";
      } else {
        expanded.value = false;
      }
    };
    const getLastNotDisabledIndex = (value) => findLastIndex(
      value,
      (it2) => !states.cachedOptions.some(
        (option) => getValue2(option) === it2 && getDisabled(option)
      )
    );
    const handleDel = (e) => {
      const code = getEventCode(e);
      if (!props2.multiple) return;
      if (code === EVENT_CODE.delete) return;
      if (states.inputValue.length === 0) {
        e.preventDefault();
        const selected = props2.modelValue.slice();
        const lastNotDisabledIndex = getLastNotDisabledIndex(selected);
        if (lastNotDisabledIndex < 0) return;
        const removeTagValue = selected[lastNotDisabledIndex];
        selected.splice(lastNotDisabledIndex, 1);
        const option = states.cachedOptions[lastNotDisabledIndex];
        states.cachedOptions.splice(lastNotDisabledIndex, 1);
        removeNewOption(option);
        update(selected);
        emit2("remove-tag", removeTagValue);
      }
    };
    const handleClear = () => {
      let emptyValue;
      if (isArray$1(props2.modelValue)) {
        emptyValue = [];
      } else {
        emptyValue = valueOnClear.value;
      }
      states.selectedLabel = "";
      expanded.value = false;
      update(emptyValue);
      emit2("clear");
      clearAllNewOption();
      focus();
    };
    const onKeyboardNavigate = (direction2, hoveringIndex = void 0) => {
      const options = filteredOptions.value;
      if (!["forward", "backward"].includes(direction2) || selectDisabled.value || options.length <= 0 || optionsAllDisabled.value || isComposing.value) {
        return;
      }
      if (!expanded.value) {
        return toggleMenu();
      }
      if (isUndefined(hoveringIndex)) {
        hoveringIndex = states.hoveringIndex;
      }
      let newIndex = -1;
      if (direction2 === "forward") {
        newIndex = hoveringIndex + 1;
        if (newIndex >= options.length) {
          newIndex = 0;
        }
      } else if (direction2 === "backward") {
        newIndex = hoveringIndex - 1;
        if (newIndex < 0 || newIndex >= options.length) {
          newIndex = options.length - 1;
        }
      }
      const option = options[newIndex];
      if (getDisabled(option) || option.type === "Group") {
        return onKeyboardNavigate(direction2, newIndex);
      } else {
        states.hoveringIndex = newIndex;
        scrollToItem(newIndex);
      }
    };
    const onKeyboardSelect = () => {
      if (!expanded.value) {
        return toggleMenu();
      } else if (~states.hoveringIndex && filteredOptions.value[states.hoveringIndex]) {
        onSelect(filteredOptions.value[states.hoveringIndex]);
      }
    };
    const onHoverOption = (idx) => {
      states.hoveringIndex = idx != null ? idx : -1;
    };
    const updateHoveringIndex = () => {
      if (!props2.multiple) {
        states.hoveringIndex = filteredOptions.value.findIndex((item) => {
          return getValueKey(getValue2(item)) === getValueKey(props2.modelValue);
        });
      } else {
        const length = props2.modelValue.length;
        if (length > 0) {
          const lastValue = props2.modelValue[length - 1];
          states.hoveringIndex = filteredOptions.value.findIndex(
            (item) => getValueKey(lastValue) === getValueKey(getValue2(item))
          );
        } else {
          states.hoveringIndex = -1;
        }
      }
    };
    const onInput = (event) => {
      states.inputValue = event.target.value;
      if (props2.remote) {
        debouncing.value = true;
        debouncedOnInputChange();
      } else {
        return onInputChange();
      }
    };
    const handleClickOutside = (event) => {
      expanded.value = false;
      if (isFocused.value) {
        const _event2 = new FocusEvent("blur", event);
        handleBlur(_event2);
      }
    };
    const handleMenuEnter = () => {
      states.isBeforeHide = false;
      return nextTick(() => {
        if (~indexRef.value) {
          scrollToItem(indexRef.value);
        }
      });
    };
    const scrollToItem = (index) => {
      menuRef.value.scrollToItem(index);
    };
    const getOption = (value, cachedOptions) => {
      const selectValue = getValueKey(value);
      if (allOptionsValueMap.value.has(selectValue)) {
        const { option } = allOptionsValueMap.value.get(selectValue);
        return option;
      }
      if (cachedOptions && cachedOptions.length) {
        const option = cachedOptions.find(
          (option2) => getValueKey(getValue2(option2)) === selectValue
        );
        if (option) {
          return option;
        }
      }
      return {
        [aliasProps.value.value]: value,
        [aliasProps.value.label]: value
      };
    };
    const getIndex = (option) => {
      var _a, _b;
      return (_b = (_a = allOptionsValueMap.value.get(getValue2(option))) == null ? void 0 : _a.index) != null ? _b : -1;
    };
    const initStates = (needUpdateSelectedLabel = false) => {
      if (props2.multiple) {
        if (props2.modelValue.length > 0) {
          const cachedOptions = states.cachedOptions.slice();
          states.cachedOptions.length = 0;
          states.previousValue = props2.modelValue.toString();
          for (const value of props2.modelValue) {
            const option = getOption(value, cachedOptions);
            states.cachedOptions.push(option);
          }
        } else {
          states.cachedOptions = [];
          states.previousValue = void 0;
        }
      } else {
        if (hasModelValue.value) {
          states.previousValue = props2.modelValue;
          const options = filteredOptions.value;
          const selectedItemIndex = options.findIndex(
            (option) => getValueKey(getValue2(option)) === getValueKey(props2.modelValue)
          );
          if (~selectedItemIndex) {
            states.selectedLabel = getLabel(options[selectedItemIndex]);
          } else {
            if (!states.selectedLabel || needUpdateSelectedLabel) {
              states.selectedLabel = getValueKey(props2.modelValue);
            }
          }
        } else {
          states.selectedLabel = "";
          states.previousValue = void 0;
        }
      }
      clearAllNewOption();
      calculatePopperSize();
    };
    watch(
      () => props2.fitInputWidth,
      () => {
        calculatePopperSize();
      }
    );
    watch(expanded, (val) => {
      if (val) {
        if (!props2.persistent) {
          calculatePopperSize();
        }
        handleQueryChange("");
      } else {
        states.inputValue = "";
        states.previousQuery = null;
        states.isBeforeHide = true;
        states.menuVisibleOnFocus = false;
        createNewOption("");
      }
    });
    watch(
      () => props2.modelValue,
      (val, oldVal) => {
        var _a;
        const isValEmpty = !val || isArray$1(val) && val.length === 0;
        if (isValEmpty || props2.multiple && !isEqual$1(val.toString(), states.previousValue) || !props2.multiple && getValueKey(val) !== getValueKey(states.previousValue)) {
          initStates(true);
        }
        if (!isEqual$1(val, oldVal) && props2.validateEvent) {
          (_a = elFormItem == null ? void 0 : elFormItem.validate) == null ? void 0 : _a.call(elFormItem, "change").catch((err) => debugWarn());
        }
      },
      {
        deep: true
      }
    );
    watch(
      () => props2.options,
      () => {
        const input = inputRef.value;
        if (!input || input && document.activeElement !== input) {
          initStates();
        }
      },
      {
        deep: true,
        flush: "post"
      }
    );
    watch(
      () => filteredOptions.value,
      () => {
        calculatePopperSize();
        return menuRef.value && nextTick(menuRef.value.resetScrollTop);
      }
    );
    watchEffect(() => {
      if (states.isBeforeHide) return;
      updateOptions2();
    });
    watchEffect(() => {
      const { valueKey, options } = props2;
      const duplicateValue = /* @__PURE__ */ new Map();
      for (const item of options) {
        const optionValue = getValue2(item);
        let v2 = optionValue;
        if (isObject$2(v2)) {
          v2 = get(optionValue, valueKey);
        }
        if (duplicateValue.get(v2)) {
          break;
        } else {
          duplicateValue.set(v2, true);
        }
      }
    });
    onMounted(() => {
      initStates();
    });
    useResizeObserver(selectRef, handleResize);
    useResizeObserver(selectionRef, resetSelectionWidth);
    useResizeObserver(wrapperRef, updateTooltip);
    useResizeObserver(tagMenuRef, updateTagTooltip);
    useResizeObserver(collapseItemRef, resetCollapseItemWidth);
    let stop;
    watch(
      () => dropdownMenuVisible.value,
      (newVal) => {
        if (newVal) {
          stop = useResizeObserver(menuRef, updateTooltip).stop;
        } else {
          stop == null ? void 0 : stop();
          stop = void 0;
        }
        emit2("visible-change", newVal);
      }
    );
    return {
      // data exports
      inputId,
      collapseTagSize,
      currentPlaceholder,
      expanded,
      emptyText,
      popupHeight,
      debounce: debounce2,
      allOptions,
      allOptionsValueMap,
      filteredOptions,
      iconComponent,
      iconReverse,
      tagStyle,
      collapseTagStyle,
      popperSize,
      dropdownMenuVisible,
      hasModelValue,
      shouldShowPlaceholder,
      selectDisabled,
      selectSize,
      needStatusIcon,
      showClearBtn,
      states,
      isFocused,
      nsSelect,
      nsInput,
      // refs items exports
      inputRef,
      menuRef,
      tagMenuRef,
      tooltipRef,
      tagTooltipRef,
      selectRef,
      wrapperRef,
      selectionRef,
      prefixRef,
      suffixRef,
      collapseItemRef,
      popperRef,
      validateState,
      validateIcon,
      showTagList,
      collapseTagList,
      // methods exports
      debouncedOnInputChange,
      deleteTag,
      getLabel,
      getValue: getValue2,
      getDisabled,
      getValueKey,
      getIndex,
      handleClear,
      handleClickOutside,
      handleDel,
      handleEsc,
      focus,
      blur,
      handleMenuEnter,
      handleResize,
      resetSelectionWidth,
      updateTooltip,
      updateTagTooltip,
      updateOptions: updateOptions2,
      toggleMenu,
      scrollTo: scrollToItem,
      onInput,
      onKeyboardNavigate,
      onKeyboardSelect,
      onSelect,
      onHover: onHoverOption,
      handleCompositionStart,
      handleCompositionEnd,
      handleCompositionUpdate
    };
  };
  var _sfc_main$1A = /* @__PURE__ */ defineComponent({
    name: "ElSelectV2",
    components: {
      ElSelectMenu,
      ElTag,
      ElTooltip,
      ElIcon
    },
    directives: { ClickOutside },
    props: selectV2Props,
    emits: selectV2Emits,
    setup(props2, { emit: emit2 }) {
      const modelValue = computed(() => {
        const { modelValue: rawModelValue, multiple } = props2;
        const fallback = multiple ? [] : void 0;
        if (isArray$1(rawModelValue)) {
          return multiple ? rawModelValue : fallback;
        }
        return multiple ? fallback : rawModelValue;
      });
      const API = useSelect$1(
        reactive({
          ...toRefs(props2),
          modelValue
        }),
        emit2
      );
      const { calculatorRef, inputStyle } = useCalcInputWidth();
      const contentId = useId();
      provide(selectV2InjectionKey, {
        props: reactive({
          ...toRefs(props2),
          height: API.popupHeight,
          modelValue
        }),
        expanded: API.expanded,
        tooltipRef: API.tooltipRef,
        contentId,
        onSelect: API.onSelect,
        onHover: API.onHover,
        onKeyboardNavigate: API.onKeyboardNavigate,
        onKeyboardSelect: API.onKeyboardSelect
      });
      const selectedLabel = computed(() => {
        if (!props2.multiple) {
          return API.states.selectedLabel;
        }
        return API.states.cachedOptions.map((i) => API.getLabel(i));
      });
      return {
        ...API,
        modelValue,
        selectedLabel,
        calculatorRef,
        inputStyle,
        contentId,
        BORDER_HORIZONTAL_WIDTH
      };
    }
  });
  const _hoisted_1$1a = ["id", "value", "autocomplete", "tabindex", "aria-expanded", "aria-label", "disabled", "aria-controls", "aria-activedescendant", "readonly", "name"];
  const _hoisted_2$11 = ["textContent"];
  const _hoisted_3$R = { key: 1 };
  function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
    const _component_el_tag = resolveComponent("el-tag");
    const _component_el_tooltip = resolveComponent("el-tooltip");
    const _component_el_icon = resolveComponent("el-icon");
    const _component_el_select_menu = resolveComponent("el-select-menu");
    const _directive_click_outside = resolveDirective("click-outside");
    return withDirectives((openBlock(), createElementBlock(
      "div",
      {
        ref: "selectRef",
        class: normalizeClass([_ctx.nsSelect.b(), _ctx.nsSelect.m(_ctx.selectSize)]),
        onMouseenter: _cache[14] || (_cache[14] = ($event) => _ctx.states.inputHovering = true),
        onMouseleave: _cache[15] || (_cache[15] = ($event) => _ctx.states.inputHovering = false)
      },
      [
        createVNode(_component_el_tooltip, {
          ref: "tooltipRef",
          visible: _ctx.dropdownMenuVisible,
          teleported: _ctx.teleported,
          "popper-class": [_ctx.nsSelect.e("popper"), _ctx.popperClass],
          "popper-style": _ctx.popperStyle,
          "gpu-acceleration": false,
          "stop-popper-mouse-event": false,
          "popper-options": _ctx.popperOptions,
          "fallback-placements": _ctx.fallbackPlacements,
          effect: _ctx.effect,
          placement: _ctx.placement,
          pure: "",
          transition: `${_ctx.nsSelect.namespace.value}-zoom-in-top`,
          trigger: "click",
          persistent: _ctx.persistent,
          "append-to": _ctx.appendTo,
          "show-arrow": _ctx.showArrow,
          offset: _ctx.offset,
          onBeforeShow: _ctx.handleMenuEnter,
          onHide: _cache[13] || (_cache[13] = ($event) => _ctx.states.isBeforeHide = false)
        }, {
          default: withCtx(() => {
            var _a, _b;
            return [
              createBaseVNode(
                "div",
                {
                  ref: "wrapperRef",
                  class: normalizeClass([
                    _ctx.nsSelect.e("wrapper"),
                    _ctx.nsSelect.is("focused", _ctx.isFocused),
                    _ctx.nsSelect.is("hovering", _ctx.states.inputHovering),
                    _ctx.nsSelect.is("filterable", _ctx.filterable),
                    _ctx.nsSelect.is("disabled", _ctx.selectDisabled)
                  ]),
                  onClick: _cache[10] || (_cache[10] = withModifiers((...args) => _ctx.toggleMenu && _ctx.toggleMenu(...args), ["prevent"]))
                },
                [
                  _ctx.$slots.prefix ? (openBlock(), createElementBlock(
                    "div",
                    {
                      key: 0,
                      ref: "prefixRef",
                      class: normalizeClass(_ctx.nsSelect.e("prefix"))
                    },
                    [
                      renderSlot(_ctx.$slots, "prefix")
                    ],
                    2
                    /* CLASS */
                  )) : createCommentVNode("v-if", true),
                  createBaseVNode(
                    "div",
                    {
                      ref: "selectionRef",
                      class: normalizeClass([
                        _ctx.nsSelect.e("selection"),
                        _ctx.nsSelect.is(
                          "near",
                          _ctx.multiple && !_ctx.$slots.prefix && !!_ctx.modelValue.length
                        )
                      ])
                    },
                    [
                      _ctx.multiple ? renderSlot(_ctx.$slots, "tag", {
                        key: 0,
                        data: _ctx.states.cachedOptions,
                        deleteTag: _ctx.deleteTag,
                        selectDisabled: _ctx.selectDisabled
                      }, () => [
                        (openBlock(true), createElementBlock(
                          Fragment,
                          null,
                          renderList(_ctx.showTagList, (item) => {
                            return openBlock(), createElementBlock(
                              "div",
                              {
                                key: _ctx.getValueKey(_ctx.getValue(item)),
                                class: normalizeClass(_ctx.nsSelect.e("selected-item"))
                              },
                              [
                                createVNode(_component_el_tag, {
                                  closable: !_ctx.selectDisabled && !_ctx.getDisabled(item),
                                  size: _ctx.collapseTagSize,
                                  type: _ctx.tagType,
                                  effect: _ctx.tagEffect,
                                  "disable-transitions": "",
                                  style: normalizeStyle(_ctx.tagStyle),
                                  onClose: ($event) => _ctx.deleteTag($event, item)
                                }, {
                                  default: withCtx(() => [
                                    createBaseVNode(
                                      "span",
                                      {
                                        class: normalizeClass(_ctx.nsSelect.e("tags-text"))
                                      },
                                      [
                                        renderSlot(_ctx.$slots, "label", {
                                          index: _ctx.getIndex(item),
                                          label: _ctx.getLabel(item),
                                          value: _ctx.getValue(item)
                                        }, () => [
                                          createTextVNode(
                                            toDisplayString(_ctx.getLabel(item)),
                                            1
                                            /* TEXT */
                                          )
                                        ])
                                      ],
                                      2
                                      /* CLASS */
                                    )
                                  ]),
                                  _: 2
                                  /* DYNAMIC */
                                }, 1032, ["closable", "size", "type", "effect", "style", "onClose"])
                              ],
                              2
                              /* CLASS */
                            );
                          }),
                          128
                          /* KEYED_FRAGMENT */
                        )),
                        _ctx.collapseTags && _ctx.modelValue.length > _ctx.maxCollapseTags ? (openBlock(), createBlock(_component_el_tooltip, {
                          key: 0,
                          ref: "tagTooltipRef",
                          disabled: _ctx.dropdownMenuVisible || !_ctx.collapseTagsTooltip,
                          "fallback-placements": ["bottom", "top", "right", "left"],
                          effect: _ctx.effect,
                          placement: "bottom",
                          "popper-class": _ctx.popperClass,
                          "popper-style": _ctx.popperStyle,
                          teleported: _ctx.teleported,
                          "popper-options": _ctx.popperOptions
                        }, {
                          default: withCtx(() => [
                            createBaseVNode(
                              "div",
                              {
                                ref: "collapseItemRef",
                                class: normalizeClass(_ctx.nsSelect.e("selected-item"))
                              },
                              [
                                createVNode(_component_el_tag, {
                                  closable: false,
                                  size: _ctx.collapseTagSize,
                                  type: _ctx.tagType,
                                  effect: _ctx.tagEffect,
                                  style: normalizeStyle(_ctx.collapseTagStyle),
                                  "disable-transitions": ""
                                }, {
                                  default: withCtx(() => [
                                    createBaseVNode(
                                      "span",
                                      {
                                        class: normalizeClass(_ctx.nsSelect.e("tags-text"))
                                      },
                                      " + " + toDisplayString(_ctx.modelValue.length - _ctx.maxCollapseTags),
                                      3
                                      /* TEXT, CLASS */
                                    )
                                  ]),
                                  _: 1
                                  /* STABLE */
                                }, 8, ["size", "type", "effect", "style"])
                              ],
                              2
                              /* CLASS */
                            )
                          ]),
                          content: withCtx(() => [
                            createBaseVNode(
                              "div",
                              {
                                ref: "tagMenuRef",
                                class: normalizeClass(_ctx.nsSelect.e("selection"))
                              },
                              [
                                (openBlock(true), createElementBlock(
                                  Fragment,
                                  null,
                                  renderList(_ctx.collapseTagList, (selected) => {
                                    return openBlock(), createElementBlock(
                                      "div",
                                      {
                                        key: _ctx.getValueKey(_ctx.getValue(selected)),
                                        class: normalizeClass(_ctx.nsSelect.e("selected-item"))
                                      },
                                      [
                                        createVNode(_component_el_tag, {
                                          class: "in-tooltip",
                                          closable: !_ctx.selectDisabled && !_ctx.getDisabled(selected),
                                          size: _ctx.collapseTagSize,
                                          type: _ctx.tagType,
                                          effect: _ctx.tagEffect,
                                          "disable-transitions": "",
                                          onClose: ($event) => _ctx.deleteTag($event, selected)
                                        }, {
                                          default: withCtx(() => [
                                            createBaseVNode(
                                              "span",
                                              {
                                                class: normalizeClass(_ctx.nsSelect.e("tags-text"))
                                              },
                                              [
                                                renderSlot(_ctx.$slots, "label", {
                                                  index: _ctx.getIndex(selected),
                                                  label: _ctx.getLabel(selected),
                                                  value: _ctx.getValue(selected)
                                                }, () => [
                                                  createTextVNode(
                                                    toDisplayString(_ctx.getLabel(selected)),
                                                    1
                                                    /* TEXT */
                                                  )
                                                ])
                                              ],
                                              2
                                              /* CLASS */
                                            )
                                          ]),
                                          _: 2
                                          /* DYNAMIC */
                                        }, 1032, ["closable", "size", "type", "effect", "onClose"])
                                      ],
                                      2
                                      /* CLASS */
                                    );
                                  }),
                                  128
                                  /* KEYED_FRAGMENT */
                                ))
                              ],
                              2
                              /* CLASS */
                            )
                          ]),
                          _: 3
                          /* FORWARDED */
                        }, 8, ["disabled", "effect", "popper-class", "popper-style", "teleported", "popper-options"])) : createCommentVNode("v-if", true)
                      ]) : createCommentVNode("v-if", true),
                      createBaseVNode(
                        "div",
                        {
                          class: normalizeClass([
                            _ctx.nsSelect.e("selected-item"),
                            _ctx.nsSelect.e("input-wrapper"),
                            _ctx.nsSelect.is("hidden", !_ctx.filterable || _ctx.selectDisabled)
                          ])
                        },
                        [
                          createBaseVNode("input", {
                            id: _ctx.inputId,
                            ref: "inputRef",
                            value: _ctx.states.inputValue,
                            style: normalizeStyle(_ctx.inputStyle),
                            autocomplete: _ctx.autocomplete,
                            tabindex: _ctx.tabindex,
                            "aria-autocomplete": "none",
                            "aria-haspopup": "listbox",
                            autocapitalize: "off",
                            "aria-expanded": _ctx.expanded,
                            "aria-label": _ctx.ariaLabel,
                            class: normalizeClass([_ctx.nsSelect.e("input"), _ctx.nsSelect.is(_ctx.selectSize)]),
                            disabled: _ctx.selectDisabled,
                            role: "combobox",
                            "aria-controls": _ctx.contentId,
                            "aria-activedescendant": _ctx.states.hoveringIndex >= 0 ? `${_ctx.contentId}-${_ctx.states.hoveringIndex}` : "",
                            readonly: !_ctx.filterable,
                            spellcheck: "false",
                            type: "text",
                            name: _ctx.name,
                            onInput: _cache[0] || (_cache[0] = (...args) => _ctx.onInput && _ctx.onInput(...args)),
                            onCompositionstart: _cache[1] || (_cache[1] = (...args) => _ctx.handleCompositionStart && _ctx.handleCompositionStart(...args)),
                            onCompositionupdate: _cache[2] || (_cache[2] = (...args) => _ctx.handleCompositionUpdate && _ctx.handleCompositionUpdate(...args)),
                            onCompositionend: _cache[3] || (_cache[3] = (...args) => _ctx.handleCompositionEnd && _ctx.handleCompositionEnd(...args)),
                            onKeydown: [
                              _cache[4] || (_cache[4] = withKeys(withModifiers(($event) => _ctx.onKeyboardNavigate("backward"), ["stop", "prevent"]), ["up"])),
                              _cache[5] || (_cache[5] = withKeys(withModifiers(($event) => _ctx.onKeyboardNavigate("forward"), ["stop", "prevent"]), ["down"])),
                              _cache[6] || (_cache[6] = withKeys(withModifiers((...args) => _ctx.onKeyboardSelect && _ctx.onKeyboardSelect(...args), ["stop", "prevent"]), ["enter"])),
                              _cache[7] || (_cache[7] = withKeys(withModifiers((...args) => _ctx.handleEsc && _ctx.handleEsc(...args), ["stop", "prevent"]), ["esc"])),
                              _cache[8] || (_cache[8] = withKeys(withModifiers((...args) => _ctx.handleDel && _ctx.handleDel(...args), ["stop"]), ["delete"]))
                            ],
                            onClick: _cache[9] || (_cache[9] = withModifiers((...args) => _ctx.toggleMenu && _ctx.toggleMenu(...args), ["stop"]))
                          }, null, 46, _hoisted_1$1a),
                          _ctx.filterable ? (openBlock(), createElementBlock("span", {
                            key: 0,
                            ref: "calculatorRef",
                            "aria-hidden": "true",
                            class: normalizeClass(_ctx.nsSelect.e("input-calculator")),
                            textContent: toDisplayString(_ctx.states.inputValue)
                          }, null, 10, _hoisted_2$11)) : createCommentVNode("v-if", true)
                        ],
                        2
                        /* CLASS */
                      ),
                      _ctx.shouldShowPlaceholder ? (openBlock(), createElementBlock(
                        "div",
                        {
                          key: 1,
                          class: normalizeClass([
                            _ctx.nsSelect.e("selected-item"),
                            _ctx.nsSelect.e("placeholder"),
                            _ctx.nsSelect.is(
                              "transparent",
                              !_ctx.hasModelValue || _ctx.expanded && !_ctx.states.inputValue
                            )
                          ])
                        },
                        [
                          _ctx.hasModelValue ? renderSlot(_ctx.$slots, "label", {
                            key: 0,
                            index: (_b = (_a = _ctx.allOptionsValueMap.get(_ctx.modelValue)) == null ? void 0 : _a.index) != null ? _b : -1,
                            label: _ctx.currentPlaceholder,
                            value: _ctx.modelValue
                          }, () => [
                            createBaseVNode(
                              "span",
                              null,
                              toDisplayString(_ctx.currentPlaceholder),
                              1
                              /* TEXT */
                            )
                          ]) : (openBlock(), createElementBlock(
                            "span",
                            _hoisted_3$R,
                            toDisplayString(_ctx.currentPlaceholder),
                            1
                            /* TEXT */
                          ))
                        ],
                        2
                        /* CLASS */
                      )) : createCommentVNode("v-if", true)
                    ],
                    2
                    /* CLASS */
                  ),
                  createBaseVNode(
                    "div",
                    {
                      ref: "suffixRef",
                      class: normalizeClass(_ctx.nsSelect.e("suffix"))
                    },
                    [
                      _ctx.iconComponent ? withDirectives((openBlock(), createBlock(_component_el_icon, {
                        key: 0,
                        class: normalizeClass([_ctx.nsSelect.e("caret"), _ctx.nsInput.e("icon"), _ctx.iconReverse])
                      }, {
                        default: withCtx(() => [
                          (openBlock(), createBlock(resolveDynamicComponent(_ctx.iconComponent)))
                        ]),
                        _: 1
                        /* STABLE */
                      }, 8, ["class"])), [
                        [vShow, !_ctx.showClearBtn]
                      ]) : createCommentVNode("v-if", true),
                      _ctx.showClearBtn && _ctx.clearIcon ? (openBlock(), createBlock(_component_el_icon, {
                        key: 1,
                        class: normalizeClass([
                          _ctx.nsSelect.e("caret"),
                          _ctx.nsInput.e("icon"),
                          _ctx.nsSelect.e("clear")
                        ]),
                        onClick: withModifiers(_ctx.handleClear, ["prevent", "stop"])
                      }, {
                        default: withCtx(() => [
                          (openBlock(), createBlock(resolveDynamicComponent(_ctx.clearIcon)))
                        ]),
                        _: 1
                        /* STABLE */
                      }, 8, ["class", "onClick"])) : createCommentVNode("v-if", true),
                      _ctx.validateState && _ctx.validateIcon && _ctx.needStatusIcon ? (openBlock(), createBlock(_component_el_icon, {
                        key: 2,
                        class: normalizeClass([
                          _ctx.nsInput.e("icon"),
                          _ctx.nsInput.e("validateIcon"),
                          _ctx.nsInput.is("loading", _ctx.validateState === "validating")
                        ])
                      }, {
                        default: withCtx(() => [
                          (openBlock(), createBlock(resolveDynamicComponent(_ctx.validateIcon)))
                        ]),
                        _: 1
                        /* STABLE */
                      }, 8, ["class"])) : createCommentVNode("v-if", true)
                    ],
                    2
                    /* CLASS */
                  )
                ],
                2
                /* CLASS */
              )
            ];
          }),
          content: withCtx(() => [
            createVNode(_component_el_select_menu, {
              id: _ctx.contentId,
              ref: "menuRef",
              data: _ctx.filteredOptions,
              width: _ctx.popperSize - _ctx.BORDER_HORIZONTAL_WIDTH,
              "hovering-index": _ctx.states.hoveringIndex,
              "scrollbar-always-on": _ctx.scrollbarAlwaysOn,
              "aria-label": _ctx.ariaLabel
            }, createSlots({
              default: withCtx((scope) => [
                renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(scope)))
              ]),
              _: 2
              /* DYNAMIC */
            }, [
              _ctx.$slots.header ? {
                name: "header",
                fn: withCtx(() => [
                  createBaseVNode(
                    "div",
                    {
                      class: normalizeClass(_ctx.nsSelect.be("dropdown", "header")),
                      onClick: _cache[11] || (_cache[11] = withModifiers(() => {
                      }, ["stop"]))
                    },
                    [
                      renderSlot(_ctx.$slots, "header")
                    ],
                    2
                    /* CLASS */
                  )
                ]),
                key: "0"
              } : void 0,
              _ctx.$slots.loading && _ctx.loading ? {
                name: "loading",
                fn: withCtx(() => [
                  createBaseVNode(
                    "div",
                    {
                      class: normalizeClass(_ctx.nsSelect.be("dropdown", "loading"))
                    },
                    [
                      renderSlot(_ctx.$slots, "loading")
                    ],
                    2
                    /* CLASS */
                  )
                ]),
                key: "1"
              } : _ctx.loading || _ctx.filteredOptions.length === 0 ? {
                name: "empty",
                fn: withCtx(() => [
                  createBaseVNode(
                    "div",
                    {
                      class: normalizeClass(_ctx.nsSelect.be("dropdown", "empty"))
                    },
                    [
                      renderSlot(_ctx.$slots, "empty", {}, () => [
                        createBaseVNode(
                          "span",
                          null,
                          toDisplayString(_ctx.emptyText),
                          1
                          /* TEXT */
                        )
                      ])
                    ],
                    2
                    /* CLASS */
                  )
                ]),
                key: "2"
              } : void 0,
              _ctx.$slots.footer ? {
                name: "footer",
                fn: withCtx(() => [
                  createBaseVNode(
                    "div",
                    {
                      class: normalizeClass(_ctx.nsSelect.be("dropdown", "footer")),
                      onClick: _cache[12] || (_cache[12] = withModifiers(() => {
                      }, ["stop"]))
                    },
                    [
                      renderSlot(_ctx.$slots, "footer")
                    ],
                    2
                    /* CLASS */
                  )
                ]),
                key: "3"
              } : void 0
            ]), 1032, ["id", "data", "width", "hovering-index", "scrollbar-always-on", "aria-label"])
          ]),
          _: 3
          /* FORWARDED */
        }, 8, ["visible", "teleported", "popper-class", "popper-style", "popper-options", "fallback-placements", "effect", "placement", "transition", "persistent", "append-to", "show-arrow", "offset", "onBeforeShow"])
      ],
      34
      /* CLASS, NEED_HYDRATION */
    )), [
      [_directive_click_outside, _ctx.handleClickOutside, _ctx.popperRef]
    ]);
  }
  var Select = /* @__PURE__ */ _export_sfc$1(_sfc_main$1A, [["render", _sfc_render$6]]);
  const ElSelectV2 = withInstall(Select);
  const skeletonProps = buildProps({
    /**
     * @description whether showing the animation
     */
    animated: Boolean,
    /**
     * @description how many fake items to render to the DOM
     */
    count: {
      type: Number,
      default: 1
    },
    /**
     * @description numbers of the row, only useful when no template slot were given
     */
    rows: {
      type: Number,
      default: 3
    },
    /**
     * @description whether showing the real DOM
     */
    loading: {
      type: Boolean,
      default: true
    },
    /**
     * @description rendering delay in milliseconds
     */
    throttle: {
      type: definePropType([Number, Object])
    }
  });
  const skeletonItemProps = buildProps({
    /**
     * @description the current rendering skeleton type
     */
    variant: {
      type: String,
      values: [
        "circle",
        "rect",
        "h1",
        "h3",
        "text",
        "caption",
        "p",
        "image",
        "button"
      ],
      default: "text"
    }
  });
  var _sfc_main$1z = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElSkeletonItem"
    },
    __name: "skeleton-item",
    props: skeletonItemProps,
    setup(__props) {
      const ns = useNamespace("skeleton");
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass([unref(ns).e("item"), unref(ns).e(__props.variant)])
          },
          [
            __props.variant === "image" ? (openBlock(), createBlock(unref(picture_filled_default), { key: 0 })) : createCommentVNode("v-if", true)
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const useThrottleRender = (loading, throttle2 = 0) => {
    if (throttle2 === 0) return loading;
    const initVal = isObject$2(throttle2) && Boolean(throttle2.initVal);
    const throttled = ref(initVal);
    let timeoutHandle = null;
    const dispatchThrottling = (timer) => {
      if (isUndefined(timer)) {
        throttled.value = loading.value;
        return;
      }
      if (timeoutHandle) {
        clearTimeout(timeoutHandle);
      }
      timeoutHandle = setTimeout(() => {
        throttled.value = loading.value;
      }, timer);
    };
    const dispatcher = (type) => {
      if (type === "leading") {
        if (isNumber(throttle2)) {
          dispatchThrottling(throttle2);
        } else {
          dispatchThrottling(throttle2.leading);
        }
      } else {
        if (isObject$2(throttle2)) {
          dispatchThrottling(throttle2.trailing);
        } else {
          throttled.value = false;
        }
      }
    };
    onMounted(() => dispatcher("leading"));
    watch(
      () => loading.value,
      (val) => {
        dispatcher(val ? "leading" : "trailing");
      }
    );
    return throttled;
  };
  var _sfc_main$1y = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElSkeleton"
    },
    __name: "skeleton",
    props: skeletonProps,
    setup(__props, { expose: __expose }) {
      const props2 = __props;
      const ns = useNamespace("skeleton");
      const uiLoading = useThrottleRender(toRef(props2, "loading"), props2.throttle);
      __expose({
        /** @description loading state */
        uiLoading
      });
      return (_ctx, _cache) => {
        return unref(uiLoading) ? (openBlock(), createElementBlock(
          "div",
          mergeProps({
            key: 0,
            class: [unref(ns).b(), unref(ns).is("animated", __props.animated)]
          }, _ctx.$attrs),
          [
            (openBlock(true), createElementBlock(
              Fragment,
              null,
              renderList(__props.count, (i) => {
                return openBlock(), createElementBlock(
                  Fragment,
                  { key: i },
                  [
                    unref(uiLoading) ? renderSlot(_ctx.$slots, "template", { key: i }, () => [
                      createVNode(_sfc_main$1z, {
                        class: normalizeClass(unref(ns).is("first")),
                        variant: "p"
                      }, null, 8, ["class"]),
                      (openBlock(true), createElementBlock(
                        Fragment,
                        null,
                        renderList(__props.rows, (item) => {
                          return openBlock(), createBlock(_sfc_main$1z, {
                            key: item,
                            class: normalizeClass([
                              unref(ns).e("paragraph"),
                              unref(ns).is("last", item === __props.rows && __props.rows > 1)
                            ]),
                            variant: "p"
                          }, null, 8, ["class"]);
                        }),
                        128
                        /* KEYED_FRAGMENT */
                      ))
                    ]) : createCommentVNode("v-if", true)
                  ],
                  64
                  /* STABLE_FRAGMENT */
                );
              }),
              128
              /* KEYED_FRAGMENT */
            ))
          ],
          16
          /* FULL_PROPS */
        )) : renderSlot(_ctx.$slots, "default", normalizeProps(mergeProps({ key: 1 }, _ctx.$attrs)));
      };
    }
  });
  const ElSkeleton = withInstall(_sfc_main$1y, {
    SkeletonItem: _sfc_main$1z
  });
  const ElSkeletonItem = withNoopInstall(_sfc_main$1z);
  const sliderContextKey = /* @__PURE__ */ Symbol("sliderContextKey");
  const sliderProps = buildProps({
    /**
     * @description binding value
     */
    modelValue: {
      type: definePropType([Number, Array]),
      default: 0
    },
    id: {
      type: String,
      default: void 0
    },
    /**
     * @description minimum value
     */
    min: {
      type: Number,
      default: 0
    },
    /**
     * @description maximum value
     */
    max: {
      type: Number,
      default: 100
    },
    /**
     * @description step size
     */
    step: {
      type: Number,
      default: 1
    },
    /**
     * @description whether to display an input box, works when `range` is false
     */
    showInput: Boolean,
    /**
     * @description whether to display control buttons when `show-input` is true
     */
    showInputControls: {
      type: Boolean,
      default: true
    },
    /**
     * @description size of the slider wrapper, will not work in vertical mode
     */
    size: useSizeProp,
    /**
     * @description size of the input box, when set `size`, the default is the value of `size`
     */
    inputSize: useSizeProp,
    /**
     * @description whether to display breakpoints
     */
    showStops: Boolean,
    /**
     * @description whether to display tooltip value
     */
    showTooltip: {
      type: Boolean,
      default: true
    },
    /**
     * @description format to display tooltip value
     */
    formatTooltip: {
      type: definePropType(Function),
      default: void 0
    },
    /**
     * @description whether Slider is disabled
     */
    disabled: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description whether to select a range
     */
    range: Boolean,
    /**
     * @description vertical mode
     */
    vertical: Boolean,
    /**
     * @description slider height, required in vertical mode
     */
    height: String,
    /**
     * @description when `range` is true, screen reader label for the start of the range
     */
    rangeStartLabel: {
      type: String,
      default: void 0
    },
    /**
     * @description when `range` is true, screen reader label for the end of the range
     */
    rangeEndLabel: {
      type: String,
      default: void 0
    },
    /**
     * @description format to display the `aria-valuenow` attribute for screen readers
     */
    formatValueText: {
      type: definePropType(Function),
      default: void 0
    },
    /**
     * @description custom class name for the tooltip
     */
    tooltipClass: {
      type: String,
      default: void 0
    },
    /**
     * @description position of Tooltip
     */
    placement: {
      type: String,
      values: Ee,
      default: "top"
    },
    /**
     * @description marks, type of key must be `number` and must in closed interval `[min, max]`, each mark can custom style
     */
    marks: {
      type: definePropType(Object)
    },
    /**
     * @description whether to trigger form validation
     */
    validateEvent: {
      type: Boolean,
      default: true
    },
    /**
     * @description when slider tooltip inactive and `persistent` is `false` , popconfirm will be destroyed. `persistent` always be `false` when `show-tooltip ` is `false`
     */
    persistent: {
      type: Boolean,
      default: true
    },
    ...useAriaProps(["ariaLabel"])
  });
  const isValidValue$1 = (value) => isNumber(value) || isArray$1(value) && value.every(isNumber);
  const sliderEmits = {
    [UPDATE_MODEL_EVENT]: isValidValue$1,
    [INPUT_EVENT]: isValidValue$1,
    [CHANGE_EVENT]: isValidValue$1
  };
  const sliderButtonProps = buildProps({
    modelValue: {
      type: Number,
      default: 0
    },
    vertical: Boolean,
    tooltipClass: String,
    placement: {
      type: String,
      values: Ee,
      default: "top"
    }
  });
  const sliderButtonEmits = {
    [UPDATE_MODEL_EVENT]: (value) => isNumber(value)
  };
  const useTooltip = (props2, formatTooltip, showTooltip) => {
    const tooltip = ref();
    const tooltipVisible = ref(false);
    const enableFormat = computed(() => {
      return formatTooltip.value instanceof Function;
    });
    const formatValue = computed(() => {
      return enableFormat.value && formatTooltip.value(props2.modelValue) || props2.modelValue;
    });
    const displayTooltip = debounce(() => {
      showTooltip.value && (tooltipVisible.value = true);
    }, 50);
    const hideTooltip = debounce(() => {
      showTooltip.value && (tooltipVisible.value = false);
    }, 50);
    return {
      tooltip,
      tooltipVisible,
      formatValue,
      displayTooltip,
      hideTooltip
    };
  };
  const useSliderButton = (props2, initData, emit2) => {
    const {
      disabled,
      min: min2,
      max: max2,
      step: step2,
      showTooltip,
      persistent,
      precision,
      sliderSize,
      formatTooltip,
      emitChange,
      resetSize,
      updateDragging
    } = inject(sliderContextKey);
    const { tooltip, tooltipVisible, formatValue, displayTooltip, hideTooltip } = useTooltip(props2, formatTooltip, showTooltip);
    const button = ref();
    const currentPosition = computed(() => {
      return `${(props2.modelValue - min2.value) / (max2.value - min2.value) * 100}%`;
    });
    const wrapperStyle = computed(() => {
      return props2.vertical ? { bottom: currentPosition.value } : { left: currentPosition.value };
    });
    const handleMouseEnter = () => {
      initData.hovering = true;
      displayTooltip();
    };
    const handleMouseLeave = () => {
      initData.hovering = false;
      if (!initData.dragging) {
        hideTooltip();
      }
    };
    const onButtonDown = (event) => {
      if (disabled.value) return;
      event.preventDefault();
      onDragStart(event);
      window.addEventListener("mousemove", onDragging);
      window.addEventListener("touchmove", onDragging);
      window.addEventListener("mouseup", onDragEnd);
      window.addEventListener("touchend", onDragEnd);
      window.addEventListener("contextmenu", onDragEnd);
      button.value.focus();
    };
    const incrementPosition = (amount) => {
      if (disabled.value) return;
      initData.newPosition = Number.parseFloat(currentPosition.value) + amount / (max2.value - min2.value) * 100;
      setPosition(initData.newPosition);
      emitChange();
    };
    const onLeftKeyDown = () => {
      incrementPosition(-step2.value);
    };
    const onRightKeyDown = () => {
      incrementPosition(step2.value);
    };
    const onPageDownKeyDown = () => {
      incrementPosition(-step2.value * 4);
    };
    const onPageUpKeyDown = () => {
      incrementPosition(step2.value * 4);
    };
    const onHomeKeyDown = () => {
      if (disabled.value) return;
      setPosition(0);
      emitChange();
    };
    const onEndKeyDown = () => {
      if (disabled.value) return;
      setPosition(100);
      emitChange();
    };
    const onKeyDown = (event) => {
      const code = getEventCode(event);
      let isPreventDefault = true;
      switch (code) {
        case EVENT_CODE.left:
        case EVENT_CODE.down:
          onLeftKeyDown();
          break;
        case EVENT_CODE.right:
        case EVENT_CODE.up:
          onRightKeyDown();
          break;
        case EVENT_CODE.home:
          onHomeKeyDown();
          break;
        case EVENT_CODE.end:
          onEndKeyDown();
          break;
        case EVENT_CODE.pageDown:
          onPageDownKeyDown();
          break;
        case EVENT_CODE.pageUp:
          onPageUpKeyDown();
          break;
        default:
          isPreventDefault = false;
          break;
      }
      isPreventDefault && event.preventDefault();
    };
    const getClientXY2 = (event) => {
      let clientX;
      let clientY;
      if (event.type.startsWith("touch")) {
        clientY = event.touches[0].clientY;
        clientX = event.touches[0].clientX;
      } else {
        clientY = event.clientY;
        clientX = event.clientX;
      }
      return {
        clientX,
        clientY
      };
    };
    const onDragStart = (event) => {
      initData.dragging = true;
      initData.isClick = true;
      const { clientX, clientY } = getClientXY2(event);
      if (props2.vertical) {
        initData.startY = clientY;
      } else {
        initData.startX = clientX;
      }
      initData.startPosition = Number.parseFloat(currentPosition.value);
      initData.newPosition = initData.startPosition;
    };
    const onDragging = (event) => {
      if (initData.dragging) {
        initData.isClick = false;
        displayTooltip();
        resetSize();
        let diff;
        const { clientX, clientY } = getClientXY2(event);
        if (props2.vertical) {
          initData.currentY = clientY;
          diff = (initData.startY - initData.currentY) / sliderSize.value * 100;
        } else {
          initData.currentX = clientX;
          diff = (initData.currentX - initData.startX) / sliderSize.value * 100;
        }
        initData.newPosition = initData.startPosition + diff;
        setPosition(initData.newPosition);
      }
    };
    const onDragEnd = () => {
      if (initData.dragging) {
        setTimeout(() => {
          initData.dragging = false;
          if (!initData.hovering) {
            hideTooltip();
          }
          if (!initData.isClick) {
            setPosition(initData.newPosition);
          }
          emitChange();
        }, 0);
        window.removeEventListener("mousemove", onDragging);
        window.removeEventListener("touchmove", onDragging);
        window.removeEventListener("mouseup", onDragEnd);
        window.removeEventListener("touchend", onDragEnd);
        window.removeEventListener("contextmenu", onDragEnd);
      }
    };
    const setPosition = async (newPosition) => {
      if (newPosition === null || Number.isNaN(+newPosition)) return;
      newPosition = clamp$2(newPosition, 0, 100);
      const fullSteps = Math.floor((max2.value - min2.value) / step2.value);
      const fullRangePercentage = fullSteps * step2.value / (max2.value - min2.value) * 100;
      const threshold = fullRangePercentage + (100 - fullRangePercentage) / 2;
      let value;
      if (newPosition < fullRangePercentage) {
        const valueBetween = fullRangePercentage / fullSteps;
        const steps = Math.round(newPosition / valueBetween);
        value = min2.value + steps * step2.value;
      } else if (newPosition < threshold) {
        value = min2.value + fullSteps * step2.value;
      } else {
        value = max2.value;
      }
      value = Number.parseFloat(value.toFixed(precision.value));
      if (value !== props2.modelValue) {
        emit2(UPDATE_MODEL_EVENT, value);
      }
      if (!initData.dragging && props2.modelValue !== initData.oldValue) {
        initData.oldValue = props2.modelValue;
      }
      await nextTick();
      initData.dragging && displayTooltip();
      tooltip.value.updatePopper();
    };
    watch(
      () => initData.dragging,
      (val) => {
        updateDragging(val);
      }
    );
    useEventListener(button, "touchstart", onButtonDown, { passive: false });
    return {
      disabled,
      button,
      tooltip,
      tooltipVisible,
      showTooltip,
      persistent,
      wrapperStyle,
      formatValue,
      handleMouseEnter,
      handleMouseLeave,
      onButtonDown,
      onKeyDown,
      setPosition
    };
  };
  const _hoisted_1$19 = ["tabindex"];
  var _sfc_main$1x = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElSliderButton"
    },
    __name: "button",
    props: sliderButtonProps,
    emits: sliderButtonEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const ns = useNamespace("slider");
      const initData = reactive({
        hovering: false,
        dragging: false,
        isClick: false,
        startX: 0,
        currentX: 0,
        startY: 0,
        currentY: 0,
        startPosition: 0,
        newPosition: 0,
        oldValue: props2.modelValue
      });
      const tooltipPersistent = computed(
        () => !showTooltip.value ? false : persistent.value
      );
      const {
        disabled,
        button,
        tooltip,
        showTooltip,
        persistent,
        tooltipVisible,
        wrapperStyle,
        formatValue,
        handleMouseEnter,
        handleMouseLeave,
        onButtonDown,
        onKeyDown,
        setPosition
      } = useSliderButton(props2, initData, emit2);
      const { hovering, dragging } = toRefs(initData);
      __expose({
        onButtonDown,
        onKeyDown,
        setPosition,
        hovering,
        dragging
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock("div", {
          ref_key: "button",
          ref: button,
          class: normalizeClass([unref(ns).e("button-wrapper"), { hover: unref(hovering), dragging: unref(dragging) }]),
          style: normalizeStyle(unref(wrapperStyle)),
          tabindex: unref(disabled) ? void 0 : 0,
          onMouseenter: _cache[0] || (_cache[0] = //@ts-ignore
          (...args) => unref(handleMouseEnter) && unref(handleMouseEnter)(...args)),
          onMouseleave: _cache[1] || (_cache[1] = //@ts-ignore
          (...args) => unref(handleMouseLeave) && unref(handleMouseLeave)(...args)),
          onMousedown: _cache[2] || (_cache[2] = //@ts-ignore
          (...args) => unref(onButtonDown) && unref(onButtonDown)(...args)),
          onFocus: _cache[3] || (_cache[3] = //@ts-ignore
          (...args) => unref(handleMouseEnter) && unref(handleMouseEnter)(...args)),
          onBlur: _cache[4] || (_cache[4] = //@ts-ignore
          (...args) => unref(handleMouseLeave) && unref(handleMouseLeave)(...args)),
          onKeydown: _cache[5] || (_cache[5] = //@ts-ignore
          (...args) => unref(onKeyDown) && unref(onKeyDown)(...args))
        }, [
          createVNode(unref(ElTooltip), {
            ref_key: "tooltip",
            ref: tooltip,
            visible: unref(tooltipVisible),
            placement: _ctx.placement,
            "fallback-placements": ["top", "bottom", "right", "left"],
            "stop-popper-mouse-event": false,
            "popper-class": _ctx.tooltipClass,
            disabled: !unref(showTooltip),
            persistent: tooltipPersistent.value
          }, {
            content: withCtx(() => [
              createBaseVNode(
                "span",
                null,
                toDisplayString(unref(formatValue)),
                1
                /* TEXT */
              )
            ]),
            default: withCtx(() => [
              createBaseVNode(
                "div",
                {
                  class: normalizeClass([unref(ns).e("button"), { hover: unref(hovering), dragging: unref(dragging) }])
                },
                null,
                2
                /* CLASS */
              )
            ]),
            _: 1
            /* STABLE */
          }, 8, ["visible", "placement", "popper-class", "disabled", "persistent"])
        ], 46, _hoisted_1$19);
      };
    }
  });
  const sliderMarkerProps = buildProps({
    mark: {
      type: definePropType([String, Object]),
      default: void 0
    }
  });
  var SliderMarker = /* @__PURE__ */ defineComponent({
    name: "ElSliderMarker",
    props: sliderMarkerProps,
    setup(props2) {
      const ns = useNamespace("slider");
      const label = computed(() => {
        return isString(props2.mark) ? props2.mark : props2.mark.label;
      });
      const style = computed(
        () => isString(props2.mark) ? void 0 : props2.mark.style
      );
      return () => h$1(
        "div",
        {
          class: ns.e("marks-text"),
          style: style.value
        },
        label.value
      );
    }
  });
  const useSlide = (props2, initData, emit2) => {
    const { formItem: elFormItem } = useFormItem();
    const slider = shallowRef();
    const firstButton = ref();
    const secondButton = ref();
    const buttonRefs = {
      firstButton,
      secondButton
    };
    const sliderDisabled = useFormDisabled();
    const minValue2 = computed(() => {
      return Math.min(initData.firstValue, initData.secondValue);
    });
    const maxValue2 = computed(() => {
      return Math.max(initData.firstValue, initData.secondValue);
    });
    const barSize = computed(() => {
      return props2.range ? `${100 * (maxValue2.value - minValue2.value) / (props2.max - props2.min)}%` : `${100 * (initData.firstValue - props2.min) / (props2.max - props2.min)}%`;
    });
    const barStart = computed(() => {
      return props2.range ? `${100 * (minValue2.value - props2.min) / (props2.max - props2.min)}%` : "0%";
    });
    const runwayStyle = computed(() => {
      return props2.vertical ? { height: props2.height } : {};
    });
    const barStyle = computed(() => {
      return props2.vertical ? {
        height: barSize.value,
        bottom: barStart.value
      } : {
        width: barSize.value,
        left: barStart.value
      };
    });
    const resetSize = () => {
      if (slider.value) {
        const rect = slider.value.getBoundingClientRect();
        initData.sliderSize = rect[props2.vertical ? "height" : "width"];
      }
    };
    const getButtonRefByPercent = (percent) => {
      const targetValue = props2.min + percent * (props2.max - props2.min) / 100;
      if (!props2.range) {
        return firstButton;
      }
      let buttonRefName;
      if (Math.abs(minValue2.value - targetValue) < Math.abs(maxValue2.value - targetValue)) {
        buttonRefName = initData.firstValue < initData.secondValue ? "firstButton" : "secondButton";
      } else {
        buttonRefName = initData.firstValue > initData.secondValue ? "firstButton" : "secondButton";
      }
      return buttonRefs[buttonRefName];
    };
    const setPosition = (percent) => {
      const buttonRef = getButtonRefByPercent(percent);
      buttonRef.value.setPosition(percent);
      return buttonRef;
    };
    const setFirstValue = (firstValue) => {
      initData.firstValue = firstValue != null ? firstValue : props2.min;
      _emit(
        props2.range ? [minValue2.value, maxValue2.value] : firstValue != null ? firstValue : props2.min
      );
    };
    const setSecondValue = (secondValue) => {
      initData.secondValue = secondValue;
      if (props2.range) {
        _emit([minValue2.value, maxValue2.value]);
      }
    };
    const _emit = (val) => {
      emit2(UPDATE_MODEL_EVENT, val);
      emit2(INPUT_EVENT, val);
    };
    const emitChange = async () => {
      await nextTick();
      emit2(
        CHANGE_EVENT,
        props2.range ? [minValue2.value, maxValue2.value] : props2.modelValue
      );
    };
    const handleSliderPointerEvent = (event) => {
      var _a, _b, _c, _d, _e, _f;
      if (sliderDisabled.value || initData.dragging) return;
      resetSize();
      let newPercent = 0;
      if (props2.vertical) {
        const clientY = (_c = (_b = (_a = event.touches) == null ? void 0 : _a.item(0)) == null ? void 0 : _b.clientY) != null ? _c : event.clientY;
        const sliderOffsetBottom = slider.value.getBoundingClientRect().bottom;
        newPercent = (sliderOffsetBottom - clientY) / initData.sliderSize * 100;
      } else {
        const clientX = (_f = (_e = (_d = event.touches) == null ? void 0 : _d.item(0)) == null ? void 0 : _e.clientX) != null ? _f : event.clientX;
        const sliderOffsetLeft = slider.value.getBoundingClientRect().left;
        newPercent = (clientX - sliderOffsetLeft) / initData.sliderSize * 100;
      }
      if (newPercent < 0 || newPercent > 100) return;
      return setPosition(newPercent);
    };
    const onSliderWrapperPrevent = (event) => {
      var _a, _b;
      if (((_a = buttonRefs["firstButton"].value) == null ? void 0 : _a.dragging) || ((_b = buttonRefs["secondButton"].value) == null ? void 0 : _b.dragging)) {
        event.preventDefault();
      }
    };
    const onSliderDown = async (event) => {
      const buttonRef = handleSliderPointerEvent(event);
      if (buttonRef) {
        await nextTick();
        buttonRef.value.onButtonDown(event);
      }
    };
    const onSliderClick = (event) => {
      const buttonRef = handleSliderPointerEvent(event);
      if (buttonRef) {
        emitChange();
      }
    };
    const onSliderMarkerDown = (position) => {
      if (sliderDisabled.value || initData.dragging) return;
      const buttonRef = setPosition(position);
      if (buttonRef) {
        emitChange();
      }
    };
    return {
      elFormItem,
      slider,
      firstButton,
      secondButton,
      sliderDisabled,
      minValue: minValue2,
      maxValue: maxValue2,
      runwayStyle,
      barStyle,
      resetSize,
      setPosition,
      emitChange,
      onSliderWrapperPrevent,
      onSliderClick,
      onSliderDown,
      onSliderMarkerDown,
      setFirstValue,
      setSecondValue
    };
  };
  const useStops = (props2, initData, minValue2, maxValue2) => {
    const stops = computed(() => {
      if (!props2.showStops || props2.min > props2.max) return [];
      if (props2.step === 0) {
        return [];
      }
      const stopCount = Math.ceil((props2.max - props2.min) / props2.step);
      const stepWidth = 100 * props2.step / (props2.max - props2.min);
      const result = Array.from({ length: stopCount - 1 }).map(
        (_2, index) => (index + 1) * stepWidth
      );
      if (props2.range) {
        return result.filter((step2) => {
          return step2 < 100 * (minValue2.value - props2.min) / (props2.max - props2.min) || step2 > 100 * (maxValue2.value - props2.min) / (props2.max - props2.min);
        });
      } else {
        return result.filter(
          (step2) => step2 > 100 * (initData.firstValue - props2.min) / (props2.max - props2.min)
        );
      }
    });
    const getStopStyle = (position) => {
      return props2.vertical ? { bottom: `${position}%` } : { left: `${position}%` };
    };
    return {
      stops,
      getStopStyle
    };
  };
  const useMarks = (props2) => {
    return computed(() => {
      if (!props2.marks) {
        return [];
      }
      const marksKeys = Object.keys(props2.marks);
      return marksKeys.map(Number.parseFloat).sort((a2, b2) => a2 - b2).filter((point) => point <= props2.max && point >= props2.min).map(
        (point) => ({
          point,
          position: (point - props2.min) * 100 / (props2.max - props2.min),
          mark: props2.marks[point]
        })
      );
    });
  };
  const useWatch = (props2, initData, minValue2, maxValue2, emit2, elFormItem) => {
    const _emit = (val) => {
      emit2(UPDATE_MODEL_EVENT, val);
      emit2(INPUT_EVENT, val);
    };
    const valueChanged = () => {
      if (props2.range) {
        return ![minValue2.value, maxValue2.value].every(
          (item, index) => item === initData.oldValue[index]
        );
      } else {
        return props2.modelValue !== initData.oldValue;
      }
    };
    const setValues = () => {
      var _a, _b;
      if (props2.min > props2.max) {
        throwError("Slider", "min should not be greater than max.");
      }
      const val = props2.modelValue;
      if (props2.range && isArray$1(val)) {
        if (val[1] < props2.min) {
          _emit([props2.min, props2.min]);
        } else if (val[0] > props2.max) {
          _emit([props2.max, props2.max]);
        } else if (val[0] < props2.min) {
          _emit([props2.min, val[1]]);
        } else if (val[1] > props2.max) {
          _emit([val[0], props2.max]);
        } else {
          initData.firstValue = val[0];
          initData.secondValue = val[1];
          if (valueChanged()) {
            if (props2.validateEvent) {
              (_a = elFormItem == null ? void 0 : elFormItem.validate) == null ? void 0 : _a.call(elFormItem, "change").catch((err) => debugWarn());
            }
            initData.oldValue = val.slice();
          }
        }
      } else if (!props2.range && isNumber(val) && !Number.isNaN(val)) {
        if (val < props2.min) {
          _emit(props2.min);
        } else if (val > props2.max) {
          _emit(props2.max);
        } else {
          initData.firstValue = val;
          if (valueChanged()) {
            if (props2.validateEvent) {
              (_b = elFormItem == null ? void 0 : elFormItem.validate) == null ? void 0 : _b.call(elFormItem, "change").catch((err) => debugWarn());
            }
            initData.oldValue = val;
          }
        }
      }
    };
    setValues();
    watch(
      () => initData.dragging,
      (val) => {
        if (!val) {
          setValues();
        }
      }
    );
    watch(
      () => props2.modelValue,
      (val, oldVal) => {
        if (initData.dragging || isArray$1(val) && isArray$1(oldVal) && val.every((item, index) => item === oldVal[index]) && initData.firstValue === val[0] && initData.secondValue === val[1]) {
          return;
        }
        setValues();
      },
      {
        deep: true
      }
    );
    watch(
      () => [props2.min, props2.max],
      () => {
        setValues();
      }
    );
  };
  const useLifecycle = (props2, initData, resetSize) => {
    const sliderWrapper = ref();
    onMounted(async () => {
      if (props2.range) {
        if (isArray$1(props2.modelValue)) {
          initData.firstValue = Math.max(props2.min, props2.modelValue[0]);
          initData.secondValue = Math.min(props2.max, props2.modelValue[1]);
        } else {
          initData.firstValue = props2.min;
          initData.secondValue = props2.max;
        }
        initData.oldValue = [initData.firstValue, initData.secondValue];
      } else {
        if (!isNumber(props2.modelValue) || Number.isNaN(props2.modelValue)) {
          initData.firstValue = props2.min;
        } else {
          initData.firstValue = Math.min(
            props2.max,
            Math.max(props2.min, props2.modelValue)
          );
        }
        initData.oldValue = initData.firstValue;
      }
      useEventListener(window, "resize", resetSize);
      await nextTick();
      resetSize();
    });
    return {
      sliderWrapper
    };
  };
  const _hoisted_1$18 = ["id", "role", "aria-label", "aria-labelledby"];
  const _hoisted_2$10 = { key: 1 };
  var _sfc_main$1w = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElSlider"
    },
    __name: "slider",
    props: sliderProps,
    emits: sliderEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const ns = useNamespace("slider");
      const { t } = useLocale();
      const initData = reactive({
        firstValue: 0,
        secondValue: 0,
        oldValue: 0,
        dragging: false,
        sliderSize: 1
      });
      const {
        elFormItem,
        slider,
        firstButton,
        secondButton,
        sliderDisabled,
        minValue: minValue2,
        maxValue: maxValue2,
        runwayStyle,
        barStyle,
        resetSize,
        emitChange,
        onSliderWrapperPrevent,
        onSliderClick,
        onSliderDown,
        onSliderMarkerDown,
        setFirstValue,
        setSecondValue
      } = useSlide(props2, initData, emit2);
      const { stops, getStopStyle } = useStops(props2, initData, minValue2, maxValue2);
      const { inputId, isLabeledByFormItem } = useFormItemInputId(props2, {
        formItemContext: elFormItem
      });
      const sliderWrapperSize = useFormSize();
      const sliderInputSize = computed(
        () => props2.inputSize || sliderWrapperSize.value
      );
      const groupLabel = computed(() => {
        return props2.ariaLabel || t("el.slider.defaultLabel", {
          min: props2.min,
          max: props2.max
        });
      });
      const firstButtonLabel = computed(() => {
        if (props2.range) {
          return props2.rangeStartLabel || t("el.slider.defaultRangeStartLabel");
        } else {
          return groupLabel.value;
        }
      });
      const firstValueText = computed(() => {
        return props2.formatValueText ? props2.formatValueText(firstValue.value) : `${firstValue.value}`;
      });
      const secondButtonLabel = computed(() => {
        return props2.rangeEndLabel || t("el.slider.defaultRangeEndLabel");
      });
      const secondValueText = computed(() => {
        return props2.formatValueText ? props2.formatValueText(secondValue.value) : `${secondValue.value}`;
      });
      const sliderKls = computed(() => [
        ns.b(),
        ns.m(sliderWrapperSize.value),
        ns.is("vertical", props2.vertical),
        { [ns.m("with-input")]: props2.showInput }
      ]);
      const markList = useMarks(props2);
      useWatch(props2, initData, minValue2, maxValue2, emit2, elFormItem);
      const precision = computed(() => {
        const precisions = [props2.min, props2.max, props2.step].map((item) => {
          const decimal = `${item}`.split(".")[1];
          return decimal ? decimal.length : 0;
        });
        return Math.max.apply(null, precisions);
      });
      const { sliderWrapper } = useLifecycle(props2, initData, resetSize);
      const { firstValue, secondValue, sliderSize } = toRefs(initData);
      const updateDragging = (val) => {
        initData.dragging = val;
      };
      useEventListener(sliderWrapper, "touchstart", onSliderWrapperPrevent, {
        passive: false
      });
      useEventListener(sliderWrapper, "touchmove", onSliderWrapperPrevent, {
        passive: false
      });
      provide(sliderContextKey, {
        ...toRefs(props2),
        sliderSize,
        disabled: sliderDisabled,
        precision,
        emitChange,
        resetSize,
        updateDragging
      });
      __expose({
        onSliderClick
      });
      return (_ctx, _cache) => {
        var _a, _b;
        return openBlock(), createElementBlock("div", {
          id: _ctx.range ? unref(inputId) : void 0,
          ref_key: "sliderWrapper",
          ref: sliderWrapper,
          class: normalizeClass(sliderKls.value),
          role: _ctx.range ? "group" : void 0,
          "aria-label": _ctx.range && !unref(isLabeledByFormItem) ? groupLabel.value : void 0,
          "aria-labelledby": _ctx.range && unref(isLabeledByFormItem) ? (_a = unref(elFormItem)) == null ? void 0 : _a.labelId : void 0
        }, [
          createBaseVNode(
            "div",
            {
              ref_key: "slider",
              ref: slider,
              class: normalizeClass([
                unref(ns).e("runway"),
                { "show-input": _ctx.showInput && !_ctx.range },
                unref(ns).is("disabled", unref(sliderDisabled))
              ]),
              style: normalizeStyle(unref(runwayStyle)),
              onMousedown: _cache[0] || (_cache[0] = //@ts-ignore
              (...args) => unref(onSliderDown) && unref(onSliderDown)(...args)),
              onTouchstartPassive: _cache[1] || (_cache[1] = //@ts-ignore
              (...args) => unref(onSliderDown) && unref(onSliderDown)(...args))
            },
            [
              createBaseVNode(
                "div",
                {
                  class: normalizeClass(unref(ns).e("bar")),
                  style: normalizeStyle(unref(barStyle))
                },
                null,
                6
                /* CLASS, STYLE */
              ),
              createVNode(_sfc_main$1x, {
                id: !_ctx.range ? unref(inputId) : void 0,
                ref_key: "firstButton",
                ref: firstButton,
                "model-value": unref(firstValue),
                vertical: _ctx.vertical,
                "tooltip-class": _ctx.tooltipClass,
                placement: _ctx.placement,
                role: "slider",
                "aria-label": _ctx.range || !unref(isLabeledByFormItem) ? firstButtonLabel.value : void 0,
                "aria-labelledby": !_ctx.range && unref(isLabeledByFormItem) ? (_b = unref(elFormItem)) == null ? void 0 : _b.labelId : void 0,
                "aria-valuemin": _ctx.min,
                "aria-valuemax": _ctx.range ? unref(secondValue) : _ctx.max,
                "aria-valuenow": unref(firstValue),
                "aria-valuetext": firstValueText.value,
                "aria-orientation": _ctx.vertical ? "vertical" : "horizontal",
                "aria-disabled": unref(sliderDisabled),
                "onUpdate:modelValue": unref(setFirstValue)
              }, null, 8, ["id", "model-value", "vertical", "tooltip-class", "placement", "aria-label", "aria-labelledby", "aria-valuemin", "aria-valuemax", "aria-valuenow", "aria-valuetext", "aria-orientation", "aria-disabled", "onUpdate:modelValue"]),
              _ctx.range ? (openBlock(), createBlock(_sfc_main$1x, {
                key: 0,
                ref_key: "secondButton",
                ref: secondButton,
                "model-value": unref(secondValue),
                vertical: _ctx.vertical,
                "tooltip-class": _ctx.tooltipClass,
                placement: _ctx.placement,
                role: "slider",
                "aria-label": secondButtonLabel.value,
                "aria-valuemin": unref(firstValue),
                "aria-valuemax": _ctx.max,
                "aria-valuenow": unref(secondValue),
                "aria-valuetext": secondValueText.value,
                "aria-orientation": _ctx.vertical ? "vertical" : "horizontal",
                "aria-disabled": unref(sliderDisabled),
                "onUpdate:modelValue": unref(setSecondValue)
              }, null, 8, ["model-value", "vertical", "tooltip-class", "placement", "aria-label", "aria-valuemin", "aria-valuemax", "aria-valuenow", "aria-valuetext", "aria-orientation", "aria-disabled", "onUpdate:modelValue"])) : createCommentVNode("v-if", true),
              _ctx.showStops ? (openBlock(), createElementBlock("div", _hoisted_2$10, [
                (openBlock(true), createElementBlock(
                  Fragment,
                  null,
                  renderList(unref(stops), (item, key) => {
                    return openBlock(), createElementBlock(
                      "div",
                      {
                        key,
                        class: normalizeClass(unref(ns).e("stop")),
                        style: normalizeStyle(unref(getStopStyle)(item))
                      },
                      null,
                      6
                      /* CLASS, STYLE */
                    );
                  }),
                  128
                  /* KEYED_FRAGMENT */
                ))
              ])) : createCommentVNode("v-if", true),
              unref(markList).length > 0 ? (openBlock(), createElementBlock(
                Fragment,
                { key: 2 },
                [
                  createBaseVNode("div", null, [
                    (openBlock(true), createElementBlock(
                      Fragment,
                      null,
                      renderList(unref(markList), (item, key) => {
                        return openBlock(), createElementBlock(
                          "div",
                          {
                            key,
                            style: normalizeStyle(unref(getStopStyle)(item.position)),
                            class: normalizeClass([unref(ns).e("stop"), unref(ns).e("marks-stop")])
                          },
                          null,
                          6
                          /* CLASS, STYLE */
                        );
                      }),
                      128
                      /* KEYED_FRAGMENT */
                    ))
                  ]),
                  createBaseVNode(
                    "div",
                    {
                      class: normalizeClass(unref(ns).e("marks"))
                    },
                    [
                      (openBlock(true), createElementBlock(
                        Fragment,
                        null,
                        renderList(unref(markList), (item, key) => {
                          return openBlock(), createBlock(unref(SliderMarker), {
                            key,
                            mark: item.mark,
                            style: normalizeStyle(unref(getStopStyle)(item.position)),
                            onMousedown: withModifiers(($event) => unref(onSliderMarkerDown)(item.position), ["stop"])
                          }, null, 8, ["mark", "style", "onMousedown"]);
                        }),
                        128
                        /* KEYED_FRAGMENT */
                      ))
                    ],
                    2
                    /* CLASS */
                  )
                ],
                64
                /* STABLE_FRAGMENT */
              )) : createCommentVNode("v-if", true)
            ],
            38
            /* CLASS, STYLE, NEED_HYDRATION */
          ),
          _ctx.showInput && !_ctx.range ? (openBlock(), createBlock(unref(ElInputNumber), {
            key: 0,
            ref: "input",
            "model-value": unref(firstValue),
            class: normalizeClass(unref(ns).e("input")),
            step: _ctx.step,
            disabled: unref(sliderDisabled),
            controls: _ctx.showInputControls,
            min: _ctx.min,
            max: _ctx.max,
            precision: precision.value,
            size: sliderInputSize.value,
            "onUpdate:modelValue": unref(setFirstValue),
            onChange: unref(emitChange)
          }, null, 8, ["model-value", "class", "step", "disabled", "controls", "min", "max", "precision", "size", "onUpdate:modelValue", "onChange"])) : createCommentVNode("v-if", true)
        ], 10, _hoisted_1$18);
      };
    }
  });
  const ElSlider = withInstall(_sfc_main$1w);
  const spaceItemProps = buildProps({
    prefixCls: {
      type: String
    }
  });
  const SpaceItem = /* @__PURE__ */ defineComponent({
    name: "ElSpaceItem",
    props: spaceItemProps,
    setup(props2, { slots }) {
      const ns = useNamespace("space");
      const classes = computed(() => `${props2.prefixCls || ns.b()}__item`);
      return () => h$1("div", { class: classes.value }, renderSlot(slots, "default"));
    }
  });
  const SIZE_MAP = {
    small: 8,
    default: 12,
    large: 16
  };
  function useSpace(props2) {
    const ns = useNamespace("space");
    const classes = computed(() => [ns.b(), ns.m(props2.direction), props2.class]);
    const horizontalSize = ref(0);
    const verticalSize = ref(0);
    const containerStyle = computed(() => {
      const wrapKls = props2.wrap || props2.fill ? { flexWrap: "wrap" } : {};
      const alignment = {
        alignItems: props2.alignment
      };
      const gap = {
        rowGap: `${verticalSize.value}px`,
        columnGap: `${horizontalSize.value}px`
      };
      return [wrapKls, alignment, gap, props2.style];
    });
    const itemStyle = computed(() => {
      return props2.fill ? { flexGrow: 1, minWidth: `${props2.fillRatio}%` } : {};
    });
    watchEffect(() => {
      const { size = "small", wrap, direction: dir, fill } = props2;
      if (isArray$1(size)) {
        const [h2 = 0, v2 = 0] = size;
        horizontalSize.value = h2;
        verticalSize.value = v2;
      } else {
        let val;
        if (isNumber(size)) {
          val = size;
        } else {
          val = SIZE_MAP[size || "small"] || SIZE_MAP.small;
        }
        if ((wrap || fill) && dir === "horizontal") {
          horizontalSize.value = verticalSize.value = val;
        } else {
          if (dir === "horizontal") {
            horizontalSize.value = val;
            verticalSize.value = 0;
          } else {
            verticalSize.value = val;
            horizontalSize.value = 0;
          }
        }
      }
    });
    return {
      classes,
      containerStyle,
      itemStyle
    };
  }
  const spaceProps = buildProps({
    /**
     * @description Placement direction
     */
    direction: {
      type: String,
      values: ["horizontal", "vertical"],
      default: "horizontal"
    },
    /**
     * @description Classname
     */
    class: {
      type: definePropType([
        String,
        Object,
        Array
      ]),
      default: ""
    },
    /**
     * @description Extra style rules
     */
    style: {
      type: definePropType([String, Array, Object]),
      default: ""
    },
    /**
     * @description Controls the alignment of items
     */
    alignment: {
      type: definePropType(String),
      default: "center"
    },
    /**
     * @description Prefix for space-items
     */
    prefixCls: {
      type: String
    },
    /**
     * @description Spacer
     */
    spacer: {
      type: definePropType([Object, String, Number, Array]),
      default: null,
      validator: (val) => isVNode(val) || isNumber(val) || isString(val)
    },
    /**
     * @description Auto wrapping
     */
    wrap: Boolean,
    /**
     * @description Whether to fill the container
     */
    fill: Boolean,
    /**
     * @description Ratio of fill
     */
    fillRatio: {
      type: Number,
      default: 100
    },
    /**
     * @description Spacing size
     */
    size: {
      type: [String, Array, Number],
      values: componentSizes,
      validator: (val) => {
        return isNumber(val) || isArray$1(val) && val.length === 2 && val.every(isNumber);
      }
    }
  });
  const Space = /* @__PURE__ */ defineComponent({
    name: "ElSpace",
    props: spaceProps,
    setup(props2, { slots }) {
      const { classes, containerStyle, itemStyle } = useSpace(props2);
      function extractChildren(children, parentKey = "", extractedChildren = []) {
        const { prefixCls } = props2;
        children.forEach((child, loopKey) => {
          if (isFragment(child)) {
            if (isArray$1(child.children)) {
              child.children.forEach((nested, key) => {
                if (isFragment(nested) && isArray$1(nested.children)) {
                  extractChildren(
                    nested.children,
                    `${parentKey + key}-`,
                    extractedChildren
                  );
                } else {
                  if (isVNode(nested) && (nested == null ? void 0 : nested.type) === Comment) {
                    extractedChildren.push(nested);
                  } else {
                    extractedChildren.push(
                      createVNode(
                        SpaceItem,
                        {
                          style: itemStyle.value,
                          prefixCls,
                          key: `nested-${parentKey + key}`
                        },
                        {
                          default: () => [nested]
                        },
                        PatchFlags.PROPS | PatchFlags.STYLE,
                        ["style", "prefixCls"]
                      )
                    );
                  }
                }
              });
            }
          } else if (isValidElementNode(child)) {
            extractedChildren.push(
              createVNode(
                SpaceItem,
                {
                  style: itemStyle.value,
                  prefixCls,
                  key: `LoopKey${parentKey + loopKey}`
                },
                {
                  default: () => [child]
                },
                PatchFlags.PROPS | PatchFlags.STYLE,
                ["style", "prefixCls"]
              )
            );
          }
        });
        return extractedChildren;
      }
      return () => {
        var _a;
        const { spacer, direction: direction2 } = props2;
        const children = renderSlot(slots, "default", { key: 0 }, () => []);
        if (((_a = children.children) != null ? _a : []).length === 0) return null;
        if (isArray$1(children.children)) {
          let extractedChildren = extractChildren(children.children);
          if (spacer) {
            const len = extractedChildren.length - 1;
            extractedChildren = extractedChildren.reduce(
              (acc, child, idx) => {
                const children2 = [...acc, child];
                if (idx !== len) {
                  children2.push(
                    createVNode(
                      "span",
                      // adding width 100% for vertical alignment,
                      // when the spacer inherit the width from the
                      // parent, this span's width was not set, so space
                      // might disappear
                      {
                        style: [
                          itemStyle.value,
                          direction2 === "vertical" ? "width: 100%" : null
                        ],
                        key: idx
                      },
                      [
                        // if spacer is already a valid vnode, then append it to the current
                        // span element.
                        // otherwise, treat it as string.
                        isVNode(spacer) ? spacer : createTextVNode(spacer, PatchFlags.TEXT)
                      ],
                      PatchFlags.STYLE
                    )
                  );
                }
                return children2;
              },
              []
            );
          }
          return createVNode(
            "div",
            {
              class: classes.value,
              style: containerStyle.value
            },
            extractedChildren,
            PatchFlags.STYLE | PatchFlags.CLASS
          );
        }
        return children.children;
      };
    }
  });
  const ElSpace = withInstall(Space);
  const statisticProps = buildProps({
    /**
     * @description Setting the decimal point
     */
    decimalSeparator: {
      type: String,
      default: "."
    },
    /**
     * @description Sets the thousandth identifier
     */
    groupSeparator: {
      type: String,
      default: ","
    },
    /**
     * @description numerical precision
     */
    precision: {
      type: Number,
      default: 0
    },
    /**
     * @description Custom numerical presentation
     */
    formatter: Function,
    /**
     * @description Numerical content
     */
    value: {
      type: definePropType([Number, Object]),
      default: 0
    },
    /**
     * @description Sets the prefix of a number
     */
    prefix: String,
    /**
     * @description  Sets the suffix of a number
     */
    suffix: String,
    /**
     * @description Numeric titles
     */
    title: String,
    /**
     * @description Styles numeric values
     */
    valueStyle: {
      type: definePropType([String, Object, Array])
    }
  });
  var _sfc_main$1v = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElStatistic"
    },
    __name: "statistic",
    props: statisticProps,
    setup(__props, { expose: __expose }) {
      const props2 = __props;
      const ns = useNamespace("statistic");
      const displayValue = computed(() => {
        const { value, formatter: formatter2, precision, decimalSeparator, groupSeparator } = props2;
        if (isFunction$1(formatter2)) return formatter2(value);
        if (!isNumber(value) || Number.isNaN(value)) return value;
        let [integer, decimal = ""] = String(value).split(".");
        decimal = decimal.padEnd(precision, "0").slice(0, precision > 0 ? precision : 0);
        integer = integer.replace(/\B(?=(\d{3})+(?!\d))/g, groupSeparator);
        return [integer, decimal].join(decimal ? decimalSeparator : "");
      });
      __expose({
        /**
         * @description current display value
         */
        displayValue
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass(unref(ns).b())
          },
          [
            _ctx.$slots.title || __props.title ? (openBlock(), createElementBlock(
              "div",
              {
                key: 0,
                class: normalizeClass(unref(ns).e("head"))
              },
              [
                renderSlot(_ctx.$slots, "title", {}, () => [
                  createTextVNode(
                    toDisplayString(__props.title),
                    1
                    /* TEXT */
                  )
                ])
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true),
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(ns).e("content"))
              },
              [
                _ctx.$slots.prefix || __props.prefix ? (openBlock(), createElementBlock(
                  "div",
                  {
                    key: 0,
                    class: normalizeClass(unref(ns).e("prefix"))
                  },
                  [
                    renderSlot(_ctx.$slots, "prefix", {}, () => [
                      createBaseVNode(
                        "span",
                        null,
                        toDisplayString(__props.prefix),
                        1
                        /* TEXT */
                      )
                    ])
                  ],
                  2
                  /* CLASS */
                )) : createCommentVNode("v-if", true),
                createBaseVNode(
                  "span",
                  {
                    class: normalizeClass(unref(ns).e("number")),
                    style: normalizeStyle(__props.valueStyle)
                  },
                  toDisplayString(displayValue.value),
                  7
                  /* TEXT, CLASS, STYLE */
                ),
                _ctx.$slots.suffix || __props.suffix ? (openBlock(), createElementBlock(
                  "div",
                  {
                    key: 1,
                    class: normalizeClass(unref(ns).e("suffix"))
                  },
                  [
                    renderSlot(_ctx.$slots, "suffix", {}, () => [
                      createBaseVNode(
                        "span",
                        null,
                        toDisplayString(__props.suffix),
                        1
                        /* TEXT */
                      )
                    ])
                  ],
                  2
                  /* CLASS */
                )) : createCommentVNode("v-if", true)
              ],
              2
              /* CLASS */
            )
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const ElStatistic = withInstall(_sfc_main$1v);
  const countdownProps = buildProps({
    /**
     * @description Formatting the countdown display
     */
    format: {
      type: String,
      default: "HH:mm:ss"
    },
    /**
     * @description Sets the prefix of a countdown
     */
    prefix: String,
    /**
     * @description Sets the suffix of a countdown
     */
    suffix: String,
    /**
     * @description countdown titles
     */
    title: String,
    /**
     * @description target time
     */
    value: {
      type: definePropType([Number, Object]),
      default: 0
    },
    /**
     * @description Styles countdown values
     */
    valueStyle: {
      type: definePropType([String, Object, Array])
    }
  });
  const countdownEmits = {
    finish: () => true,
    [CHANGE_EVENT]: (value) => isNumber(value)
  };
  const timeUnits = [
    ["Y", 1e3 * 60 * 60 * 24 * 365],
    // years
    ["M", 1e3 * 60 * 60 * 24 * 30],
    // months
    ["D", 1e3 * 60 * 60 * 24],
    // days
    ["H", 1e3 * 60 * 60],
    // hours
    ["m", 1e3 * 60],
    // minutes
    ["s", 1e3],
    // seconds
    ["S", 1]
    // million seconds
  ];
  const getTime = (value) => {
    return isNumber(value) ? new Date(value).getTime() : value.valueOf();
  };
  const formatTime$1 = (timestamp, format2) => {
    let timeLeft = timestamp;
    const escapeRegex = /\[([^\]]*)]/g;
    const replacedText = timeUnits.reduce((current, [name, unit2]) => {
      const replaceRegex = new RegExp(`${name}+(?![^\\[\\]]*\\])`, "g");
      if (replaceRegex.test(current)) {
        const value = Math.floor(timeLeft / unit2);
        timeLeft -= value * unit2;
        return current.replace(
          replaceRegex,
          (match) => String(value).padStart(match.length, "0")
        );
      }
      return current;
    }, format2);
    return replacedText.replace(escapeRegex, "$1");
  };
  var _sfc_main$1u = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElCountdown"
    },
    __name: "countdown",
    props: countdownProps,
    emits: countdownEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      let timer;
      const rawValue = ref(0);
      const displayValue = computed(() => formatTime$1(rawValue.value, props2.format));
      const formatter2 = (val) => formatTime$1(val, props2.format);
      const stopTimer = () => {
        if (timer) {
          cAF(timer);
          timer = void 0;
        }
      };
      const startTimer = () => {
        const timestamp = getTime(props2.value);
        const frameFunc = () => {
          let diff = timestamp - Date.now();
          emit2(CHANGE_EVENT, diff);
          if (diff <= 0) {
            diff = 0;
            stopTimer();
            emit2("finish");
          } else {
            timer = rAF(frameFunc);
          }
          rawValue.value = diff;
        };
        timer = rAF(frameFunc);
      };
      onMounted(() => {
        rawValue.value = getTime(props2.value) - Date.now();
        watch(
          () => [props2.value, props2.format],
          () => {
            stopTimer();
            startTimer();
          },
          {
            immediate: true
          }
        );
      });
      onBeforeUnmount(() => {
        stopTimer();
      });
      __expose({
        /**
         * @description current display value
         */
        displayValue
      });
      return (_ctx, _cache) => {
        return openBlock(), createBlock(unref(ElStatistic), {
          value: rawValue.value,
          title: __props.title,
          prefix: __props.prefix,
          suffix: __props.suffix,
          "value-style": __props.valueStyle,
          formatter: formatter2
        }, createSlots({
          _: 2
          /* DYNAMIC */
        }, [
          renderList(_ctx.$slots, (_2, name) => {
            return {
              name,
              fn: withCtx(() => [
                renderSlot(_ctx.$slots, name)
              ])
            };
          })
        ]), 1032, ["value", "title", "prefix", "suffix", "value-style"]);
      };
    }
  });
  const ElCountdown = withInstall(_sfc_main$1u);
  const stepsProps = buildProps({
    /**
     * @description the spacing of each step, will be responsive if omitted. Supports percentage.
     */
    space: {
      type: [Number, String],
      default: ""
    },
    /**
     * @description current activation step
     */
    active: {
      type: Number,
      default: 0
    },
    /**
     * @description display direction
     */
    direction: {
      type: String,
      default: "horizontal",
      values: ["horizontal", "vertical"]
    },
    /**
     * @description center title and description
     */
    alignCenter: {
      type: Boolean
    },
    /**
     * @description whether to apply simple theme
     */
    simple: {
      type: Boolean
    },
    /**
     * @description status of end step
     */
    finishStatus: {
      type: String,
      values: ["wait", "process", "finish", "error", "success"],
      default: "finish"
    },
    /**
     * @description status of current step
     */
    processStatus: {
      type: String,
      values: ["wait", "process", "finish", "error", "success"],
      default: "process"
    }
  });
  const stepsEmits = {
    [CHANGE_EVENT]: (newVal, oldVal) => [newVal, oldVal].every(isNumber)
  };
  const STEPS_INJECTION_KEY = "ElSteps";
  var _sfc_main$1t = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElSteps"
    },
    __name: "steps",
    props: stepsProps,
    emits: stepsEmits,
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const ns = useNamespace("steps");
      const {
        children: steps,
        addChild: addStep,
        removeChild: removeStep,
        ChildrenSorter: StepsSorter
      } = useOrderedChildren(getCurrentInstance(), "ElStep");
      watch(steps, () => {
        steps.value.forEach((instance, index) => {
          instance.setIndex(index);
        });
      });
      provide(STEPS_INJECTION_KEY, { props: props2, steps, addStep, removeStep });
      watch(
        () => props2.active,
        (newVal, oldVal) => {
          emit2(CHANGE_EVENT, newVal, oldVal);
        }
      );
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass([unref(ns).b(), unref(ns).m(__props.simple ? "simple" : __props.direction)])
          },
          [
            renderSlot(_ctx.$slots, "default"),
            createVNode(unref(StepsSorter))
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const stepProps = buildProps({
    /**
     * @description step title
     */
    title: {
      type: String,
      default: ""
    },
    /**
     * @description step custom icon. Icons can be passed via named slot as well
     */
    icon: {
      type: iconPropType
    },
    /**
     * @description step description
     */
    description: {
      type: String,
      default: ""
    },
    /**
     * @description current status. It will be automatically set by Steps if not configured.
     */
    status: {
      type: String,
      values: ["", "wait", "process", "finish", "error", "success"],
      default: ""
    }
  });
  var _sfc_main$1s = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElStep"
    },
    __name: "item",
    props: stepProps,
    setup(__props) {
      const props2 = __props;
      const ns = useNamespace("step");
      const index = ref(-1);
      const lineStyle = ref({});
      const internalStatus = ref("");
      const parent2 = inject(STEPS_INJECTION_KEY);
      const currentInstance2 = getCurrentInstance();
      let stepDiff = 0;
      let beforeActive = 0;
      onMounted(() => {
        watch(
          [
            () => parent2.props.active,
            () => parent2.props.processStatus,
            () => parent2.props.finishStatus
          ],
          ([active], [oldActive]) => {
            beforeActive = oldActive || 0;
            stepDiff = active - beforeActive;
            updateStatus(active);
          },
          { immediate: true }
        );
      });
      const currentStatus = computed(() => {
        return props2.status || internalStatus.value;
      });
      const prevInternalStatus = computed(() => {
        const prevStep = parent2.steps.value[index.value - 1];
        return prevStep ? prevStep.internalStatus.value : "wait";
      });
      const isCenter = computed(() => {
        return parent2.props.alignCenter;
      });
      const isVertical = computed(() => {
        return parent2.props.direction === "vertical";
      });
      const isSimple = computed(() => {
        return parent2.props.simple;
      });
      const stepsCount = computed(() => {
        return parent2.steps.value.length;
      });
      const isLast = computed(() => {
        var _a;
        return ((_a = parent2.steps.value[stepsCount.value - 1]) == null ? void 0 : _a.uid) === currentInstance2.uid;
      });
      const space = computed(() => {
        return isSimple.value ? "" : parent2.props.space;
      });
      const containerKls = computed(() => {
        return [
          ns.b(),
          ns.is(isSimple.value ? "simple" : parent2.props.direction),
          ns.is("flex", isLast.value && !space.value && !isCenter.value),
          ns.is("center", isCenter.value && !isVertical.value && !isSimple.value)
        ];
      });
      const style = computed(() => {
        const style2 = {
          flexBasis: isNumber(space.value) ? `${space.value}px` : space.value ? space.value : `${100 / (stepsCount.value - (isCenter.value ? 0 : 1))}%`
        };
        if (isVertical.value) return style2;
        if (isLast.value) {
          style2.maxWidth = `${100 / stepsCount.value}%`;
        }
        return style2;
      });
      const setIndex = (val) => {
        index.value = val;
      };
      const calcProgress = (status) => {
        const isWait = status === "wait";
        const delayTimer = Math.abs(stepDiff) === 1 ? 0 : stepDiff > 0 ? (index.value + 1 - beforeActive) * 150 : -(index.value + 1 - parent2.props.active) * 150;
        const style2 = {
          transitionDelay: `${delayTimer}ms`
        };
        const step2 = status === parent2.props.processStatus || isWait ? 0 : 100;
        style2.borderWidth = step2 && !isSimple.value ? "1px" : 0;
        style2[parent2.props.direction === "vertical" ? "height" : "width"] = `${step2}%`;
        lineStyle.value = style2;
      };
      const updateStatus = (activeIndex) => {
        if (activeIndex > index.value) {
          internalStatus.value = parent2.props.finishStatus;
        } else if (activeIndex === index.value && prevInternalStatus.value !== "error") {
          internalStatus.value = parent2.props.processStatus;
        } else {
          internalStatus.value = "wait";
        }
        const prevChild = parent2.steps.value[index.value - 1];
        if (prevChild) prevChild.calcProgress(internalStatus.value);
      };
      const stepItemState = {
        uid: currentInstance2.uid,
        getVnode: () => currentInstance2.vnode,
        currentStatus,
        internalStatus,
        setIndex,
        calcProgress
      };
      parent2.addStep(stepItemState);
      onBeforeUnmount(() => {
        parent2.removeStep(stepItemState);
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            style: normalizeStyle(style.value),
            class: normalizeClass(containerKls.value)
          },
          [
            createCommentVNode(" icon & line "),
            createBaseVNode(
              "div",
              {
                class: normalizeClass([unref(ns).e("head"), unref(ns).is(currentStatus.value)])
              },
              [
                !isSimple.value ? (openBlock(), createElementBlock(
                  "div",
                  {
                    key: 0,
                    class: normalizeClass(unref(ns).e("line"))
                  },
                  [
                    createBaseVNode(
                      "i",
                      {
                        class: normalizeClass(unref(ns).e("line-inner")),
                        style: normalizeStyle(lineStyle.value)
                      },
                      null,
                      6
                      /* CLASS, STYLE */
                    )
                  ],
                  2
                  /* CLASS */
                )) : createCommentVNode("v-if", true),
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass([unref(ns).e("icon"), unref(ns).is(__props.icon || _ctx.$slots.icon ? "icon" : "text")])
                  },
                  [
                    renderSlot(_ctx.$slots, "icon", {}, () => [
                      __props.icon ? (openBlock(), createBlock(unref(ElIcon), {
                        key: 0,
                        class: normalizeClass(unref(ns).e("icon-inner"))
                      }, {
                        default: withCtx(() => [
                          (openBlock(), createBlock(resolveDynamicComponent(__props.icon)))
                        ]),
                        _: 1
                        /* STABLE */
                      }, 8, ["class"])) : currentStatus.value === "success" ? (openBlock(), createBlock(unref(ElIcon), {
                        key: 1,
                        class: normalizeClass([unref(ns).e("icon-inner"), unref(ns).is("status")])
                      }, {
                        default: withCtx(() => [
                          createVNode(unref(check_default))
                        ]),
                        _: 1
                        /* STABLE */
                      }, 8, ["class"])) : currentStatus.value === "error" ? (openBlock(), createBlock(unref(ElIcon), {
                        key: 2,
                        class: normalizeClass([unref(ns).e("icon-inner"), unref(ns).is("status")])
                      }, {
                        default: withCtx(() => [
                          createVNode(unref(close_default))
                        ]),
                        _: 1
                        /* STABLE */
                      }, 8, ["class"])) : !isSimple.value ? (openBlock(), createElementBlock(
                        "div",
                        {
                          key: 3,
                          class: normalizeClass(unref(ns).e("icon-inner"))
                        },
                        toDisplayString(index.value + 1),
                        3
                        /* TEXT, CLASS */
                      )) : createCommentVNode("v-if", true)
                    ])
                  ],
                  2
                  /* CLASS */
                )
              ],
              2
              /* CLASS */
            ),
            createCommentVNode(" title & description "),
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(ns).e("main"))
              },
              [
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass([unref(ns).e("title"), unref(ns).is(currentStatus.value)])
                  },
                  [
                    renderSlot(_ctx.$slots, "title", {}, () => [
                      createTextVNode(
                        toDisplayString(__props.title),
                        1
                        /* TEXT */
                      )
                    ])
                  ],
                  2
                  /* CLASS */
                ),
                isSimple.value ? (openBlock(), createElementBlock(
                  "div",
                  {
                    key: 0,
                    class: normalizeClass(unref(ns).e("arrow"))
                  },
                  null,
                  2
                  /* CLASS */
                )) : (openBlock(), createElementBlock(
                  "div",
                  {
                    key: 1,
                    class: normalizeClass([unref(ns).e("description"), unref(ns).is(currentStatus.value)])
                  },
                  [
                    renderSlot(_ctx.$slots, "description", {}, () => [
                      createTextVNode(
                        toDisplayString(__props.description),
                        1
                        /* TEXT */
                      )
                    ])
                  ],
                  2
                  /* CLASS */
                ))
              ],
              2
              /* CLASS */
            )
          ],
          6
          /* CLASS, STYLE */
        );
      };
    }
  });
  const ElSteps = withInstall(_sfc_main$1t, {
    Step: _sfc_main$1s
  });
  const ElStep = withNoopInstall(_sfc_main$1s);
  const isValidComponentSize = (val) => ["", ...componentSizes].includes(val);
  const switchProps = buildProps({
    /**
     * @description binding value, it should be equivalent to either `active-value` or `inactive-value`, by default it's `boolean` type
     */
    modelValue: {
      type: [Boolean, String, Number],
      default: false
    },
    /**
     * @description whether Switch is disabled
     */
    disabled: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description whether Switch is in loading state
     */
    loading: Boolean,
    /**
     * @description size of Switch
     */
    size: {
      type: String,
      validator: isValidComponentSize
    },
    /**
     * @description width of Switch
     */
    width: {
      type: [String, Number],
      default: ""
    },
    /**
     * @description whether icon or text is displayed inside dot, only the first character will be rendered for text
     */
    inlinePrompt: Boolean,
    /**
     * @description component of the icon displayed in action when in `off` state
     */
    inactiveActionIcon: {
      type: iconPropType
    },
    /**
     * @description component of the icon displayed in action when in `on` state
     */
    activeActionIcon: {
      type: iconPropType
    },
    /**
     * @description component of the icon displayed when in `on` state, overrides `active-text`
     */
    activeIcon: {
      type: iconPropType
    },
    /**
     * @description component of the icon displayed when in `off` state, overrides `inactive-text`
     */
    inactiveIcon: {
      type: iconPropType
    },
    /**
     * @description text displayed when in `on` state
     */
    activeText: {
      type: String,
      default: ""
    },
    /**
     * @description text displayed when in `off` state
     */
    inactiveText: {
      type: String,
      default: ""
    },
    /**
     * @description switch value when in `on` state
     */
    activeValue: {
      type: [Boolean, String, Number],
      default: true
    },
    /**
     * @description switch value when in `off` state
     */
    inactiveValue: {
      type: [Boolean, String, Number],
      default: false
    },
    /**
     * @description input name of Switch
     */
    name: {
      type: String,
      default: ""
    },
    /**
     * @description whether to trigger form validation
     */
    validateEvent: {
      type: Boolean,
      default: true
    },
    /**
     * @description before-change hook before the switch state changes. If `false` is returned or a `Promise` is returned and then is rejected, will stop switching
     */
    beforeChange: {
      type: definePropType(Function)
    },
    /**
     * @description id for input
     */
    id: String,
    /**
     * @description tabindex for input
     */
    tabindex: {
      type: [String, Number]
    },
    ...useAriaProps(["ariaLabel"])
  });
  const switchEmits = {
    [UPDATE_MODEL_EVENT]: (val) => isBoolean(val) || isString(val) || isNumber(val),
    [CHANGE_EVENT]: (val) => isBoolean(val) || isString(val) || isNumber(val),
    [INPUT_EVENT]: (val) => isBoolean(val) || isString(val) || isNumber(val)
  };
  const _hoisted_1$17 = ["id", "aria-checked", "aria-disabled", "aria-label", "name", "true-value", "false-value", "disabled", "tabindex"];
  const _hoisted_2$$ = ["aria-hidden"];
  const _hoisted_3$Q = { key: 1 };
  const _hoisted_4$M = { key: 1 };
  const _hoisted_5$D = ["aria-hidden"];
  const COMPONENT_NAME$9 = "ElSwitch";
  var _sfc_main$1r = /* @__PURE__ */ defineComponent({
    ...{
      name: COMPONENT_NAME$9
    },
    __name: "switch",
    props: switchProps,
    emits: switchEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const { formItem } = useFormItem();
      const switchSize = useFormSize();
      const ns = useNamespace("switch");
      const { inputId } = useFormItemInputId(props2, {
        formItemContext: formItem
      });
      const switchDisabled = useFormDisabled(
        computed(() => {
          if (props2.loading) {
            return true;
          }
          return void 0;
        })
      );
      const isControlled = ref(props2.modelValue !== false);
      const input = shallowRef();
      const switchKls = computed(() => [
        ns.b(),
        ns.m(switchSize.value),
        ns.is("disabled", switchDisabled.value),
        ns.is("checked", checked.value)
      ]);
      const labelLeftKls = computed(() => [
        ns.e("label"),
        ns.em("label", "left"),
        ns.is("active", !checked.value)
      ]);
      const labelRightKls = computed(() => [
        ns.e("label"),
        ns.em("label", "right"),
        ns.is("active", checked.value)
      ]);
      const coreStyle = computed(() => ({
        width: addUnit(props2.width)
      }));
      watch(
        () => props2.modelValue,
        () => {
          isControlled.value = true;
        }
      );
      const actualValue = computed(() => {
        return isControlled.value ? props2.modelValue : false;
      });
      const checked = computed(() => actualValue.value === props2.activeValue);
      if (![props2.activeValue, props2.inactiveValue].includes(actualValue.value)) {
        emit2(UPDATE_MODEL_EVENT, props2.inactiveValue);
        emit2(CHANGE_EVENT, props2.inactiveValue);
        emit2(INPUT_EVENT, props2.inactiveValue);
      }
      watch(checked, (val) => {
        var _a;
        input.value.checked = val;
        if (props2.validateEvent) {
          (_a = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a.call(formItem, "change").catch((err) => debugWarn());
        }
      });
      const handleChange = () => {
        const val = checked.value ? props2.inactiveValue : props2.activeValue;
        emit2(UPDATE_MODEL_EVENT, val);
        emit2(CHANGE_EVENT, val);
        emit2(INPUT_EVENT, val);
        nextTick(() => {
          input.value.checked = checked.value;
        });
      };
      const switchValue = () => {
        if (switchDisabled.value) return;
        const { beforeChange } = props2;
        if (!beforeChange) {
          handleChange();
          return;
        }
        const shouldChange = beforeChange();
        const isPromiseOrBool = [
          isPromise(shouldChange),
          isBoolean(shouldChange)
        ].includes(true);
        if (!isPromiseOrBool) {
          throwError(
            COMPONENT_NAME$9,
            "beforeChange must return type `Promise<boolean>` or `boolean`"
          );
        }
        if (isPromise(shouldChange)) {
          shouldChange.then((result) => {
            if (result) {
              handleChange();
            }
          }).catch((e) => {
          });
        } else if (shouldChange) {
          handleChange();
        }
      };
      const focus = () => {
        var _a, _b;
        (_b = (_a = input.value) == null ? void 0 : _a.focus) == null ? void 0 : _b.call(_a);
      };
      onMounted(() => {
        input.value.checked = checked.value;
      });
      __expose({
        /**
         *  @description manual focus to the switch component
         **/
        focus,
        /**
         * @description whether Switch is checked
         */
        checked
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass(switchKls.value),
            onClick: withModifiers(switchValue, ["prevent"])
          },
          [
            createBaseVNode("input", {
              id: unref(inputId),
              ref_key: "input",
              ref: input,
              class: normalizeClass(unref(ns).e("input")),
              type: "checkbox",
              role: "switch",
              "aria-checked": checked.value,
              "aria-disabled": unref(switchDisabled),
              "aria-label": __props.ariaLabel,
              name: __props.name,
              "true-value": __props.activeValue,
              "false-value": __props.inactiveValue,
              disabled: unref(switchDisabled),
              tabindex: __props.tabindex,
              onChange: handleChange,
              onKeydown: withKeys(switchValue, ["enter"])
            }, null, 42, _hoisted_1$17),
            !__props.inlinePrompt && (__props.inactiveIcon || __props.inactiveText || _ctx.$slots.inactive) ? (openBlock(), createElementBlock(
              "span",
              {
                key: 0,
                class: normalizeClass(labelLeftKls.value)
              },
              [
                renderSlot(_ctx.$slots, "inactive", {}, () => [
                  __props.inactiveIcon ? (openBlock(), createBlock(unref(ElIcon), { key: 0 }, {
                    default: withCtx(() => [
                      (openBlock(), createBlock(resolveDynamicComponent(__props.inactiveIcon)))
                    ]),
                    _: 1
                    /* STABLE */
                  })) : createCommentVNode("v-if", true),
                  !__props.inactiveIcon && __props.inactiveText ? (openBlock(), createElementBlock("span", {
                    key: 1,
                    "aria-hidden": checked.value
                  }, toDisplayString(__props.inactiveText), 9, _hoisted_2$$)) : createCommentVNode("v-if", true)
                ])
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true),
            createBaseVNode(
              "span",
              {
                class: normalizeClass(unref(ns).e("core")),
                style: normalizeStyle(coreStyle.value)
              },
              [
                __props.inlinePrompt ? (openBlock(), createElementBlock(
                  "div",
                  {
                    key: 0,
                    class: normalizeClass(unref(ns).e("inner"))
                  },
                  [
                    !checked.value ? (openBlock(), createElementBlock(
                      "div",
                      {
                        key: 0,
                        class: normalizeClass(unref(ns).e("inner-wrapper"))
                      },
                      [
                        renderSlot(_ctx.$slots, "inactive", {}, () => [
                          __props.inactiveIcon ? (openBlock(), createBlock(unref(ElIcon), { key: 0 }, {
                            default: withCtx(() => [
                              (openBlock(), createBlock(resolveDynamicComponent(__props.inactiveIcon)))
                            ]),
                            _: 1
                            /* STABLE */
                          })) : createCommentVNode("v-if", true),
                          !__props.inactiveIcon && __props.inactiveText ? (openBlock(), createElementBlock(
                            "span",
                            _hoisted_3$Q,
                            toDisplayString(__props.inactiveText),
                            1
                            /* TEXT */
                          )) : createCommentVNode("v-if", true)
                        ])
                      ],
                      2
                      /* CLASS */
                    )) : (openBlock(), createElementBlock(
                      "div",
                      {
                        key: 1,
                        class: normalizeClass(unref(ns).e("inner-wrapper"))
                      },
                      [
                        renderSlot(_ctx.$slots, "active", {}, () => [
                          __props.activeIcon ? (openBlock(), createBlock(unref(ElIcon), { key: 0 }, {
                            default: withCtx(() => [
                              (openBlock(), createBlock(resolveDynamicComponent(__props.activeIcon)))
                            ]),
                            _: 1
                            /* STABLE */
                          })) : createCommentVNode("v-if", true),
                          !__props.activeIcon && __props.activeText ? (openBlock(), createElementBlock(
                            "span",
                            _hoisted_4$M,
                            toDisplayString(__props.activeText),
                            1
                            /* TEXT */
                          )) : createCommentVNode("v-if", true)
                        ])
                      ],
                      2
                      /* CLASS */
                    ))
                  ],
                  2
                  /* CLASS */
                )) : createCommentVNode("v-if", true),
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass(unref(ns).e("action"))
                  },
                  [
                    __props.loading ? (openBlock(), createBlock(unref(ElIcon), {
                      key: 0,
                      class: normalizeClass(unref(ns).is("loading"))
                    }, {
                      default: withCtx(() => [
                        createVNode(unref(loading_default))
                      ]),
                      _: 1
                      /* STABLE */
                    }, 8, ["class"])) : checked.value ? renderSlot(_ctx.$slots, "active-action", { key: 1 }, () => [
                      __props.activeActionIcon ? (openBlock(), createBlock(unref(ElIcon), { key: 0 }, {
                        default: withCtx(() => [
                          (openBlock(), createBlock(resolveDynamicComponent(__props.activeActionIcon)))
                        ]),
                        _: 1
                        /* STABLE */
                      })) : createCommentVNode("v-if", true)
                    ]) : !checked.value ? renderSlot(_ctx.$slots, "inactive-action", { key: 2 }, () => [
                      __props.inactiveActionIcon ? (openBlock(), createBlock(unref(ElIcon), { key: 0 }, {
                        default: withCtx(() => [
                          (openBlock(), createBlock(resolveDynamicComponent(__props.inactiveActionIcon)))
                        ]),
                        _: 1
                        /* STABLE */
                      })) : createCommentVNode("v-if", true)
                    ]) : createCommentVNode("v-if", true)
                  ],
                  2
                  /* CLASS */
                )
              ],
              6
              /* CLASS, STYLE */
            ),
            !__props.inlinePrompt && (__props.activeIcon || __props.activeText || _ctx.$slots.active) ? (openBlock(), createElementBlock(
              "span",
              {
                key: 1,
                class: normalizeClass(labelRightKls.value)
              },
              [
                renderSlot(_ctx.$slots, "active", {}, () => [
                  __props.activeIcon ? (openBlock(), createBlock(unref(ElIcon), { key: 0 }, {
                    default: withCtx(() => [
                      (openBlock(), createBlock(resolveDynamicComponent(__props.activeIcon)))
                    ]),
                    _: 1
                    /* STABLE */
                  })) : createCommentVNode("v-if", true),
                  !__props.activeIcon && __props.activeText ? (openBlock(), createElementBlock("span", {
                    key: 1,
                    "aria-hidden": !checked.value
                  }, toDisplayString(__props.activeText), 9, _hoisted_5$D)) : createCommentVNode("v-if", true)
                ])
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true)
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const ElSwitch = withInstall(_sfc_main$1r);
  const getCell = function(event) {
    var _a;
    return (_a = event.target) == null ? void 0 : _a.closest("td");
  };
  const orderBy = function(array, sortKey, reverse, sortMethod, sortBy) {
    if (!sortKey && !sortMethod && (!sortBy || isArray$1(sortBy) && !sortBy.length)) {
      return array;
    }
    if (isString(reverse)) {
      reverse = reverse === "descending" ? -1 : 1;
    } else {
      reverse = reverse && reverse < 0 ? -1 : 1;
    }
    const getKey = sortMethod ? null : function(value, index) {
      if (sortBy) {
        return flatMap(castArray$1(sortBy), (by) => {
          if (isString(by)) {
            return get(value, by);
          } else {
            return by(value, index, array);
          }
        });
      }
      if (sortKey !== "$key") {
        if (isObject$2(value) && "$value" in value) value = value.$value;
      }
      return [
        isObject$2(value) ? sortKey ? get(value, sortKey) : null : value
      ];
    };
    const compare = function(a2, b2) {
      var _a, _b, _c, _d, _e, _f;
      if (sortMethod) {
        return sortMethod(a2.value, b2.value);
      }
      for (let i = 0, len = (_b = (_a = a2.key) == null ? void 0 : _a.length) != null ? _b : 0; i < len; i++) {
        if (((_c = a2.key) == null ? void 0 : _c[i]) < ((_d = b2.key) == null ? void 0 : _d[i])) {
          return -1;
        }
        if (((_e = a2.key) == null ? void 0 : _e[i]) > ((_f = b2.key) == null ? void 0 : _f[i])) {
          return 1;
        }
      }
      return 0;
    };
    return array.map((value, index) => {
      return {
        value,
        index,
        key: getKey ? getKey(value, index) : null
      };
    }).sort((a2, b2) => {
      let order = compare(a2, b2);
      if (!order) {
        order = a2.index - b2.index;
      }
      return order * +reverse;
    }).map((item) => item.value);
  };
  const getColumnById = function(table, columnId) {
    let column = null;
    table.columns.forEach((item) => {
      if (item.id === columnId) {
        column = item;
      }
    });
    return column;
  };
  const getColumnByKey = function(table, columnKey) {
    let column = null;
    for (let i = 0; i < table.columns.length; i++) {
      const item = table.columns[i];
      if (item.columnKey === columnKey) {
        column = item;
        break;
      }
    }
    if (!column)
      throwError("ElTable", `No column matching with column-key: ${columnKey}`);
    return column;
  };
  const getColumnByCell = function(table, cell, namespace) {
    const matches2 = (cell.className || "").match(
      new RegExp(`${namespace}-table_[^\\s]+`, "gm")
    );
    if (matches2) {
      return getColumnById(table, matches2[0]);
    }
    return null;
  };
  const getRowIdentity = (row, rowKey2) => {
    if (!row) throw new Error("Row is required when get row identity");
    if (isString(rowKey2)) {
      if (!rowKey2.includes(".")) {
        return `${row[rowKey2]}`;
      }
      const key = rowKey2.split(".");
      let current = row;
      for (const element of key) {
        current = current[element];
      }
      return `${current}`;
    } else if (isFunction$1(rowKey2)) {
      return rowKey2.call(null, row);
    }
    return "";
  };
  const getKeysMap = function(array, rowKey2, flatten2 = false, childrenKey = "children") {
    const data = array || [];
    const arrayMap2 = {};
    data.forEach((row, index) => {
      arrayMap2[getRowIdentity(row, rowKey2)] = { row, index };
      if (flatten2) {
        const children = row[childrenKey];
        if (isArray$1(children)) {
          Object.assign(arrayMap2, getKeysMap(children, rowKey2, true, childrenKey));
        }
      }
    });
    return arrayMap2;
  };
  function mergeOptions(defaults, config) {
    const options = {};
    let key;
    for (key in defaults) {
      options[key] = defaults[key];
    }
    for (key in config) {
      if (hasOwn(config, key)) {
        const value = config[key];
        if (!isUndefined(value)) {
          options[key] = value;
        }
      }
    }
    return options;
  }
  function parseWidth(width) {
    if (width === "") return width;
    if (!isUndefined(width)) {
      width = Number.parseInt(width, 10);
      if (Number.isNaN(width)) {
        width = "";
      }
    }
    return width;
  }
  function parseMinWidth(minWidth) {
    if (minWidth === "") return minWidth;
    if (!isUndefined(minWidth)) {
      minWidth = parseWidth(minWidth);
      if (Number.isNaN(minWidth)) {
        minWidth = 80;
      }
    }
    return minWidth;
  }
  function parseHeight(height) {
    if (isNumber(height)) {
      return height;
    }
    if (isString(height)) {
      if (/^\d+(?:px)?$/.test(height)) {
        return Number.parseInt(height, 10);
      } else {
        return height;
      }
    }
    return null;
  }
  function compose(...funcs) {
    if (funcs.length === 0) {
      return (arg) => arg;
    }
    if (funcs.length === 1) {
      return funcs[0];
    }
    return funcs.reduce(
      (a2, b2) => (...args) => a2(b2(...args))
    );
  }
  function toggleRowStatus(statusArr, row, newVal, tableTreeProps, selectable, rowIndex, rowKey2) {
    let _rowIndex = rowIndex != null ? rowIndex : 0;
    let changed = false;
    const getIndex = () => {
      if (!rowKey2) {
        return statusArr.indexOf(row);
      }
      const id = getRowIdentity(row, rowKey2);
      return statusArr.findIndex((item) => getRowIdentity(item, rowKey2) === id);
    };
    const index = getIndex();
    const included = index !== -1;
    const isRowSelectable = selectable == null ? void 0 : selectable.call(null, row, _rowIndex);
    const toggleStatus = (type) => {
      if (type === "add") {
        statusArr.push(row);
      } else {
        statusArr.splice(index, 1);
      }
      changed = true;
    };
    const getChildrenCount = (row2) => {
      let count = 0;
      const children = (tableTreeProps == null ? void 0 : tableTreeProps.children) && row2[tableTreeProps.children];
      if (children && isArray$1(children)) {
        count += children.length;
        children.forEach((item) => {
          count += getChildrenCount(item);
        });
      }
      return count;
    };
    if (!selectable || isRowSelectable) {
      if (isBoolean(newVal)) {
        if (newVal && !included) {
          toggleStatus("add");
        } else if (!newVal && included) {
          toggleStatus("remove");
        }
      } else {
        included ? toggleStatus("remove") : toggleStatus("add");
      }
    }
    if (!(tableTreeProps == null ? void 0 : tableTreeProps.checkStrictly) && (tableTreeProps == null ? void 0 : tableTreeProps.children) && isArray$1(row[tableTreeProps.children])) {
      row[tableTreeProps.children].forEach((item) => {
        const childChanged = toggleRowStatus(
          statusArr,
          item,
          newVal != null ? newVal : !included,
          tableTreeProps,
          selectable,
          _rowIndex + 1,
          rowKey2
        );
        _rowIndex += getChildrenCount(item) + 1;
        if (childChanged) {
          changed = childChanged;
        }
      });
    }
    return changed;
  }
  function walkTreeNode(root2, cb, childrenKey = "children", lazyKey = "hasChildren", lazy = false) {
    const isNil2 = (array) => !(isArray$1(array) && array.length);
    function _walker(parent2, children, level) {
      cb(parent2, children, level);
      children.forEach((item) => {
        if (item[lazyKey] && lazy) {
          cb(item, null, level + 1);
          return;
        }
        const children2 = item[childrenKey];
        if (!isNil2(children2)) {
          _walker(item, children2, level + 1);
        }
      });
    }
    root2.forEach((item) => {
      if (item[lazyKey] && lazy) {
        cb(item, null, 0);
        return;
      }
      const children = item[childrenKey];
      if (!isNil2(children)) {
        _walker(item, children, 0);
      }
    });
  }
  const getTableOverflowTooltipProps = (props2, innerText, row, column) => {
    const popperOptions = {
      strategy: "fixed",
      ...props2.popperOptions
    };
    const tooltipFormatterContent = isFunction$1(column == null ? void 0 : column.tooltipFormatter) ? column.tooltipFormatter({
      row,
      column,
      cellValue: getProp(row, column.property).value
    }) : void 0;
    if (isVNode(tooltipFormatterContent)) {
      return {
        slotContent: tooltipFormatterContent,
        content: null,
        ...props2,
        popperOptions
      };
    }
    return {
      slotContent: null,
      content: tooltipFormatterContent != null ? tooltipFormatterContent : innerText,
      ...props2,
      popperOptions
    };
  };
  let removePopper = null;
  function createTablePopper(props2, popperContent, row, column, trigger2, table) {
    var _a;
    const tableOverflowTooltipProps = getTableOverflowTooltipProps(
      props2,
      popperContent,
      row,
      column
    );
    const mergedProps = {
      ...tableOverflowTooltipProps,
      slotContent: void 0
    };
    if ((removePopper == null ? void 0 : removePopper.trigger) === trigger2) {
      const comp = (_a = removePopper.vm) == null ? void 0 : _a.component;
      merge(comp == null ? void 0 : comp.props, mergedProps);
      if (comp && tableOverflowTooltipProps.slotContent) {
        comp.slots.content = () => [tableOverflowTooltipProps.slotContent];
      }
      return;
    }
    removePopper == null ? void 0 : removePopper();
    const parentNode = table == null ? void 0 : table.refs.tableWrapper;
    const ns = parentNode == null ? void 0 : parentNode.dataset.prefix;
    const vm = createVNode(
      ElTooltip,
      {
        virtualTriggering: true,
        virtualRef: trigger2,
        appendTo: parentNode,
        placement: "top",
        transition: "none",
        // Default does not require transition
        offset: 0,
        hideAfter: 0,
        ...mergedProps
      },
      tableOverflowTooltipProps.slotContent ? {
        content: () => tableOverflowTooltipProps.slotContent
      } : void 0
    );
    vm.appContext = { ...table.appContext, ...table };
    const container = document.createElement("div");
    render(vm, container);
    vm.component.exposed.onOpen();
    const scrollContainer = parentNode == null ? void 0 : parentNode.querySelector(`.${ns}-scrollbar__wrap`);
    removePopper = () => {
      var _a2, _b;
      if ((_b = (_a2 = vm.component) == null ? void 0 : _a2.exposed) == null ? void 0 : _b.onClose) {
        vm.component.exposed.onClose();
      }
      render(null, container);
      const currentRemovePopper = removePopper;
      scrollContainer == null ? void 0 : scrollContainer.removeEventListener("scroll", currentRemovePopper);
      currentRemovePopper.trigger = void 0;
      currentRemovePopper.vm = void 0;
      removePopper = null;
    };
    removePopper.trigger = trigger2 != null ? trigger2 : void 0;
    removePopper.vm = vm;
    scrollContainer == null ? void 0 : scrollContainer.addEventListener("scroll", removePopper);
  }
  function getCurrentColumns(column) {
    if (column.children) {
      return flatMap(column.children, getCurrentColumns);
    } else {
      return [column];
    }
  }
  function getColSpan(colSpan, column) {
    return colSpan + column.colSpan;
  }
  const isFixedColumn = (index, fixed, store, realColumns) => {
    let start = 0;
    let after = index;
    const columns2 = store.states.columns.value;
    if (realColumns) {
      const curColumns = getCurrentColumns(realColumns[index]);
      const preColumns = columns2.slice(0, columns2.indexOf(curColumns[0]));
      start = preColumns.reduce(getColSpan, 0);
      after = start + curColumns.reduce(getColSpan, 0) - 1;
    } else {
      start = index;
    }
    let fixedLayout;
    switch (fixed) {
      case "left":
        if (after < store.states.fixedLeafColumnsLength.value) {
          fixedLayout = "left";
        }
        break;
      case "right":
        if (start >= columns2.length - store.states.rightFixedLeafColumnsLength.value) {
          fixedLayout = "right";
        }
        break;
      default:
        if (after < store.states.fixedLeafColumnsLength.value) {
          fixedLayout = "left";
        } else if (start >= columns2.length - store.states.rightFixedLeafColumnsLength.value) {
          fixedLayout = "right";
        }
    }
    return fixedLayout ? {
      direction: fixedLayout,
      start,
      after
    } : {};
  };
  const getFixedColumnsClass = (namespace, index, fixed, store, realColumns, offset2 = 0) => {
    const classes = [];
    const { direction: direction2, start, after } = isFixedColumn(
      index,
      fixed,
      store,
      realColumns
    );
    if (direction2) {
      const isLeft = direction2 === "left";
      classes.push(`${namespace}-fixed-column--${direction2}`);
      if (isLeft && after + offset2 === store.states.fixedLeafColumnsLength.value - 1) {
        classes.push("is-last-column");
      } else if (!isLeft && start - offset2 === store.states.columns.value.length - store.states.rightFixedLeafColumnsLength.value) {
        classes.push("is-first-column");
      }
    }
    return classes;
  };
  function getOffset$1(offset2, column) {
    return offset2 + (isNull(column.realWidth) || Number.isNaN(column.realWidth) ? Number(column.width) : column.realWidth);
  }
  const getFixedColumnOffset = (index, fixed, store, realColumns) => {
    const {
      direction: direction2,
      start = 0,
      after = 0
    } = isFixedColumn(index, fixed, store, realColumns);
    if (!direction2) {
      return;
    }
    const styles = {};
    const isLeft = direction2 === "left";
    const columns2 = store.states.columns.value;
    if (isLeft) {
      styles.left = columns2.slice(0, start).reduce(getOffset$1, 0);
    } else {
      styles.right = columns2.slice(after + 1).reverse().reduce(getOffset$1, 0);
    }
    return styles;
  };
  const ensurePosition = (style, key) => {
    if (!style) return;
    if (!Number.isNaN(style[key])) {
      style[key] = `${style[key]}px`;
    }
  };
  function ensureValidVNode(vnodes) {
    return vnodes.some((child) => {
      if (!isVNode(child)) return true;
      if (child.type === Comment) return false;
      if (child.type === Fragment && !ensureValidVNode(child.children)) {
        return false;
      }
      return true;
    }) ? vnodes : null;
  }
  function useExpand(watcherData) {
    const instance = getCurrentInstance();
    const defaultExpandAll = ref(false);
    const expandRows = ref([]);
    const canRowExpand = (row, index) => {
      var _a;
      const expandableFn = instance.store.states.rowExpandable.value;
      return (_a = expandableFn == null ? void 0 : expandableFn(row, index)) != null ? _a : true;
    };
    const updateExpandRows = () => {
      const data = watcherData.data.value || [];
      const rowKey2 = watcherData.rowKey.value;
      if (defaultExpandAll.value) {
        expandRows.value = instance.store.states.rowExpandable.value ? data.filter(canRowExpand) : data.slice();
      } else if (rowKey2) {
        const expandRowsMap = getKeysMap(expandRows.value, rowKey2);
        expandRows.value = data.filter((row, index) => {
          const rowId = getRowIdentity(row, rowKey2);
          return !!expandRowsMap[rowId] && canRowExpand(row, index);
        });
      } else {
        expandRows.value = [];
      }
    };
    const toggleRowExpansion = (row, expanded) => {
      const dataArr = watcherData.data.value || [];
      const rowIndex = dataArr.indexOf(row);
      if (rowIndex > -1 && !canRowExpand(row, rowIndex)) return;
      const changed = toggleRowStatus(
        expandRows.value,
        row,
        expanded,
        void 0,
        void 0,
        void 0,
        watcherData.rowKey.value
      );
      if (changed) {
        instance.emit("expand-change", row, expandRows.value.slice());
      }
    };
    const setExpandRowKeys = (rowKeys) => {
      instance.store.assertRowKey();
      const data = watcherData.data.value || [];
      const rowKey2 = watcherData.rowKey.value;
      const keysMap = getKeysMap(data, rowKey2);
      expandRows.value = rowKeys.reduce((prev, cur) => {
        const info = keysMap[cur];
        if (info && canRowExpand(info.row, info.index)) {
          prev.push(info.row);
        }
        return prev;
      }, []);
    };
    const isRowExpanded = (row) => {
      const rowKey2 = watcherData.rowKey.value;
      if (rowKey2) {
        const expandMap = getKeysMap(expandRows.value, rowKey2);
        return !!expandMap[getRowIdentity(row, rowKey2)];
      }
      return expandRows.value.includes(row);
    };
    return {
      updateExpandRows,
      toggleRowExpansion,
      setExpandRowKeys,
      isRowExpanded,
      states: {
        expandRows,
        defaultExpandAll
      }
    };
  }
  function useCurrent(watcherData) {
    const instance = getCurrentInstance();
    const _currentRowKey = ref(null);
    const currentRow = ref(null);
    const setCurrentRowKey = (key) => {
      instance.store.assertRowKey();
      _currentRowKey.value = key;
      setCurrentRowByKey(key);
    };
    const restoreCurrentRowKey = () => {
      _currentRowKey.value = null;
    };
    const setCurrentRowByKey = (key) => {
      var _a;
      const { data, rowKey: rowKey2 } = watcherData;
      const oldCurrentRow = currentRow.value;
      let _currentRow = null;
      if (rowKey2.value) {
        _currentRow = (_a = (unref(data) || []).find(
          (item) => getRowIdentity(item, rowKey2.value) === key
        )) != null ? _a : null;
      }
      currentRow.value = _currentRow != null ? _currentRow : null;
      instance.emit("current-change", currentRow.value, oldCurrentRow);
    };
    const updateCurrentRow = (_currentRow) => {
      const oldCurrentRow = currentRow.value;
      if (_currentRow && _currentRow !== oldCurrentRow) {
        currentRow.value = _currentRow;
        instance.emit("current-change", currentRow.value, oldCurrentRow);
        return;
      }
      if (!_currentRow && oldCurrentRow) {
        currentRow.value = null;
        instance.emit("current-change", null, oldCurrentRow);
      }
    };
    const updateCurrentRowData = () => {
      const rowKey2 = watcherData.rowKey.value;
      const data = watcherData.data.value || [];
      const oldCurrentRow = currentRow.value;
      if (oldCurrentRow && !data.includes(oldCurrentRow)) {
        if (rowKey2) {
          const currentRowKey = getRowIdentity(oldCurrentRow, rowKey2);
          setCurrentRowByKey(currentRowKey);
        } else {
          currentRow.value = null;
          instance.emit("current-change", null, oldCurrentRow);
        }
      } else if (_currentRowKey.value) {
        setCurrentRowByKey(_currentRowKey.value);
        restoreCurrentRowKey();
      }
    };
    return {
      setCurrentRowKey,
      restoreCurrentRowKey,
      setCurrentRowByKey,
      updateCurrentRow,
      updateCurrentRowData,
      states: {
        _currentRowKey,
        currentRow
      }
    };
  }
  function useTree$2(watcherData) {
    const expandRowKeys = ref([]);
    const treeData = ref({});
    const indent = ref(16);
    const lazy = ref(false);
    const lazyTreeNodeMap = ref({});
    const lazyColumnIdentifier = ref("hasChildren");
    const childrenColumnName = ref("children");
    const checkStrictly = ref(false);
    const instance = getCurrentInstance();
    const normalizedData = computed(() => {
      if (!watcherData.rowKey.value) return {};
      const data = watcherData.data.value || [];
      return normalize(data);
    });
    const normalizedLazyNode = computed(() => {
      const rowKey2 = watcherData.rowKey.value;
      const keys2 = Object.keys(lazyTreeNodeMap.value);
      const res = {};
      if (!keys2.length) return res;
      keys2.forEach((key) => {
        if (lazyTreeNodeMap.value[key].length) {
          const item = { children: [] };
          lazyTreeNodeMap.value[key].forEach((row) => {
            const currentRowKey = getRowIdentity(row, rowKey2);
            item.children.push(currentRowKey);
            if (row[lazyColumnIdentifier.value] && !res[currentRowKey]) {
              res[currentRowKey] = { children: [] };
            }
          });
          res[key] = item;
        }
      });
      return res;
    });
    const normalize = (data) => {
      const rowKey2 = watcherData.rowKey.value;
      const res = {};
      walkTreeNode(
        data,
        (parent2, children, level) => {
          const parentId = getRowIdentity(parent2, rowKey2);
          if (isArray$1(children)) {
            res[parentId] = {
              children: children.map((row) => getRowIdentity(row, rowKey2)),
              level
            };
          } else if (lazy.value) {
            res[parentId] = {
              children: [],
              lazy: true,
              level
            };
          }
        },
        childrenColumnName.value,
        lazyColumnIdentifier.value,
        lazy.value
      );
      return res;
    };
    const updateTreeData = (ifChangeExpandRowKeys = false, ifExpandAll) => {
      var _a, _b;
      ifExpandAll || (ifExpandAll = (_a = instance.store) == null ? void 0 : _a.states.defaultExpandAll.value);
      const nested = normalizedData.value;
      const normalizedLazyNode_ = normalizedLazyNode.value;
      const keys2 = Object.keys(nested);
      const newTreeData = {};
      if (keys2.length) {
        const oldTreeData = unref(treeData);
        const rootLazyRowKeys = [];
        const getExpanded = (oldValue, key) => {
          if (ifChangeExpandRowKeys) {
            if (expandRowKeys.value) {
              return ifExpandAll || expandRowKeys.value.includes(key);
            } else {
              return !!(ifExpandAll || (oldValue == null ? void 0 : oldValue.expanded));
            }
          } else {
            const included = ifExpandAll || expandRowKeys.value && expandRowKeys.value.includes(key);
            return !!((oldValue == null ? void 0 : oldValue.expanded) || included);
          }
        };
        keys2.forEach((key) => {
          const oldValue = oldTreeData[key];
          const newValue = { ...nested[key] };
          newValue.expanded = getExpanded(oldValue, key);
          if (newValue.lazy) {
            const { loaded = false, loading = false } = oldValue || {};
            newValue.loaded = !!loaded;
            newValue.loading = !!loading;
            rootLazyRowKeys.push(key);
          }
          newTreeData[key] = newValue;
        });
        const lazyKeys = Object.keys(normalizedLazyNode_);
        if (lazy.value && lazyKeys.length && rootLazyRowKeys.length) {
          lazyKeys.forEach((key) => {
            var _a2;
            const oldValue = oldTreeData[key];
            const lazyNodeChildren = normalizedLazyNode_[key].children;
            if (rootLazyRowKeys.includes(key)) {
              if (((_a2 = newTreeData[key].children) == null ? void 0 : _a2.length) !== 0) {
                throw new Error("[ElTable]children must be an empty array.");
              }
              newTreeData[key].children = lazyNodeChildren;
            } else {
              const { loaded = false, loading = false } = oldValue || {};
              newTreeData[key] = {
                lazy: true,
                loaded: !!loaded,
                loading: !!loading,
                expanded: getExpanded(oldValue, key),
                children: lazyNodeChildren,
                level: void 0
              };
            }
          });
        }
      }
      treeData.value = newTreeData;
      (_b = instance.store) == null ? void 0 : _b.updateTableScrollY();
    };
    watch(
      () => expandRowKeys.value,
      () => {
        updateTreeData(true);
      }
    );
    watch(
      () => normalizedData.value,
      () => {
        updateTreeData();
      }
    );
    watch(
      () => normalizedLazyNode.value,
      () => {
        updateTreeData();
      }
    );
    const updateTreeExpandKeys = (value) => {
      expandRowKeys.value = value;
      updateTreeData();
    };
    const isUseLazy = (data) => {
      return lazy.value && data && "loaded" in data && !data.loaded;
    };
    const toggleTreeExpansion = (row, expanded) => {
      instance.store.assertRowKey();
      const rowKey2 = watcherData.rowKey.value;
      const id = getRowIdentity(row, rowKey2);
      const data = id && treeData.value[id];
      if (id && data && "expanded" in data) {
        const oldExpanded = data.expanded;
        expanded = isUndefined(expanded) ? !data.expanded : expanded;
        treeData.value[id].expanded = expanded;
        if (oldExpanded !== expanded) {
          instance.emit("expand-change", row, expanded);
        }
        expanded && isUseLazy(data) && loadData(row, id, data);
        instance.store.updateTableScrollY();
      }
    };
    const loadOrToggle = (row) => {
      instance.store.assertRowKey();
      const rowKey2 = watcherData.rowKey.value;
      const id = getRowIdentity(row, rowKey2);
      const data = treeData.value[id];
      if (isUseLazy(data)) {
        loadData(row, id, data);
      } else {
        toggleTreeExpansion(row, void 0);
      }
    };
    const loadData = (row, key, treeNode) => {
      const { load } = instance.props;
      if (load && !treeData.value[key].loaded) {
        treeData.value[key].loading = true;
        load(row, treeNode, (data) => {
          if (!isArray$1(data)) {
            throw new TypeError("[ElTable] data must be an array");
          }
          treeData.value[key].loading = false;
          treeData.value[key].loaded = true;
          treeData.value[key].expanded = true;
          if (data.length) {
            lazyTreeNodeMap.value[key] = data;
          }
          instance.emit("expand-change", row, true);
        });
      }
    };
    const updateKeyChildren = (key, data) => {
      const { lazy: lazy2, rowKey: rowKey2 } = instance.props;
      if (!lazy2) return;
      if (!rowKey2) throw new Error("[Table] rowKey is required in updateKeyChild");
      if (lazyTreeNodeMap.value[key]) {
        lazyTreeNodeMap.value[key] = data;
      }
    };
    return {
      loadData,
      loadOrToggle,
      toggleTreeExpansion,
      updateTreeExpandKeys,
      updateTreeData,
      updateKeyChildren,
      normalize,
      states: {
        expandRowKeys,
        treeData,
        indent,
        lazy,
        lazyTreeNodeMap,
        lazyColumnIdentifier,
        childrenColumnName,
        checkStrictly
      }
    };
  }
  const sortData = (data, states) => {
    const sortingColumn = states.sortingColumn;
    if (!sortingColumn || isString(sortingColumn.sortable)) {
      return data;
    }
    return orderBy(
      data,
      states.sortProp,
      states.sortOrder,
      sortingColumn.sortMethod,
      sortingColumn.sortBy
    );
  };
  const doFlattenColumns = (columns2) => {
    const result = [];
    columns2.forEach((column) => {
      if (column.children && column.children.length > 0) {
        result.push.apply(result, doFlattenColumns(column.children));
      } else {
        result.push(column);
      }
    });
    return result;
  };
  function useWatcher$1() {
    var _a;
    const instance = getCurrentInstance();
    const { size: tableSize } = toRefs((_a = instance.proxy) == null ? void 0 : _a.$props);
    const rowKey2 = ref(null);
    const data = ref([]);
    const _data = ref([]);
    const isComplex = ref(false);
    const _columns = ref([]);
    const originColumns = ref([]);
    const columns2 = ref([]);
    const fixedColumns = ref([]);
    const rightFixedColumns = ref([]);
    const leafColumns = ref([]);
    const fixedLeafColumns = ref([]);
    const rightFixedLeafColumns = ref([]);
    const updateOrderFns = [];
    const leafColumnsLength = ref(0);
    const fixedLeafColumnsLength = ref(0);
    const rightFixedLeafColumnsLength = ref(0);
    const isAllSelected = ref(false);
    const selection = ref([]);
    const reserveSelection = ref(false);
    const selectOnIndeterminate = ref(false);
    const selectable = ref(null);
    const rowExpandable = ref(null);
    const filters = ref({});
    const filteredData = ref(null);
    const sortingColumn = ref(null);
    const sortProp = ref(null);
    const sortOrder = ref(null);
    const hoverRow = ref(null);
    const selectedMap = computed(() => {
      return rowKey2.value ? getKeysMap(selection.value, rowKey2.value) : void 0;
    });
    watch(
      data,
      () => {
        var _a2;
        if (instance.state) {
          scheduleLayout(false);
          const needUpdateFixed = instance.props.tableLayout === "auto";
          if (needUpdateFixed) {
            (_a2 = instance.refs.tableHeaderRef) == null ? void 0 : _a2.updateFixedColumnStyle();
          }
        }
      },
      {
        deep: true
      }
    );
    const assertRowKey = () => {
      if (!rowKey2.value) throw new Error("[ElTable] prop row-key is required");
    };
    const updateChildFixed = (column) => {
      var _a2;
      (_a2 = column.children) == null ? void 0 : _a2.forEach((childColumn) => {
        childColumn.fixed = column.fixed;
        updateChildFixed(childColumn);
      });
    };
    const updateColumns = () => {
      _columns.value.forEach((column) => {
        updateChildFixed(column);
      });
      fixedColumns.value = _columns.value.filter(
        (column) => [true, "left"].includes(column.fixed)
      );
      const selectColumn = _columns.value.find(
        (column) => column.type === "selection"
      );
      let selectColFixLeft;
      if (selectColumn && selectColumn.fixed !== "right" && !fixedColumns.value.includes(selectColumn)) {
        const selectColumnIndex = _columns.value.indexOf(selectColumn);
        if (selectColumnIndex === 0 && fixedColumns.value.length) {
          fixedColumns.value.unshift(selectColumn);
          selectColFixLeft = true;
        }
      }
      rightFixedColumns.value = _columns.value.filter(
        (column) => column.fixed === "right"
      );
      const notFixedColumns = _columns.value.filter(
        (column) => (selectColFixLeft ? column.type !== "selection" : true) && !column.fixed
      );
      originColumns.value = Array.from(fixedColumns.value).concat(notFixedColumns).concat(rightFixedColumns.value);
      const leafColumns2 = doFlattenColumns(notFixedColumns);
      const fixedLeafColumns2 = doFlattenColumns(fixedColumns.value);
      const rightFixedLeafColumns2 = doFlattenColumns(rightFixedColumns.value);
      leafColumnsLength.value = leafColumns2.length;
      fixedLeafColumnsLength.value = fixedLeafColumns2.length;
      rightFixedLeafColumnsLength.value = rightFixedLeafColumns2.length;
      columns2.value = Array.from(fixedLeafColumns2).concat(leafColumns2).concat(rightFixedLeafColumns2);
      isComplex.value = fixedColumns.value.length > 0 || rightFixedColumns.value.length > 0;
    };
    const scheduleLayout = (needUpdateColumns, immediate = false) => {
      if (needUpdateColumns) {
        updateColumns();
      }
      if (immediate) {
        instance.state.doLayout();
      } else {
        instance.state.debouncedUpdateLayout();
      }
    };
    const isSelected = (row) => {
      if (selectedMap.value) {
        return !!selectedMap.value[getRowIdentity(row, rowKey2.value)];
      } else {
        return selection.value.includes(row);
      }
    };
    const clearSelection = () => {
      isAllSelected.value = false;
      const oldSelection = selection.value;
      selection.value = [];
      if (oldSelection.length) {
        instance.emit("selection-change", []);
      }
    };
    const cleanSelection = () => {
      var _a2, _b;
      let deleted;
      if (rowKey2.value) {
        deleted = [];
        const childrenKey = (_b = (_a2 = instance == null ? void 0 : instance.store) == null ? void 0 : _a2.states) == null ? void 0 : _b.childrenColumnName.value;
        const dataMap = getKeysMap(data.value, rowKey2.value, true, childrenKey);
        for (const key in selectedMap.value) {
          if (hasOwn(selectedMap.value, key) && !dataMap[key]) {
            deleted.push(selectedMap.value[key].row);
          }
        }
      } else {
        deleted = selection.value.filter((item) => !data.value.includes(item));
      }
      if (deleted.length) {
        const newSelection = selection.value.filter(
          (item) => !deleted.includes(item)
        );
        selection.value = newSelection;
        instance.emit("selection-change", newSelection.slice());
      }
    };
    const getSelectionRows = () => {
      return (selection.value || []).slice();
    };
    const toggleRowSelection = (row, selected, emitChange = true, ignoreSelectable = false) => {
      var _a2, _b, _c, _d;
      const treeProps2 = {
        children: (_b = (_a2 = instance == null ? void 0 : instance.store) == null ? void 0 : _a2.states) == null ? void 0 : _b.childrenColumnName.value,
        checkStrictly: (_d = (_c = instance == null ? void 0 : instance.store) == null ? void 0 : _c.states) == null ? void 0 : _d.checkStrictly.value
      };
      const changed = toggleRowStatus(
        selection.value,
        row,
        selected,
        treeProps2,
        ignoreSelectable ? void 0 : selectable.value,
        data.value.indexOf(row),
        rowKey2.value
      );
      if (changed) {
        const newSelection = (selection.value || []).slice();
        if (emitChange) {
          instance.emit("select", newSelection, row);
        }
        instance.emit("selection-change", newSelection);
      }
    };
    const _toggleAllSelection = () => {
      var _a2, _b;
      const value = selectOnIndeterminate.value ? !isAllSelected.value : !(isAllSelected.value || selection.value.length);
      isAllSelected.value = value;
      let selectionChanged = false;
      let childrenCount = 0;
      const rowKey22 = (_b = (_a2 = instance == null ? void 0 : instance.store) == null ? void 0 : _a2.states) == null ? void 0 : _b.rowKey.value;
      const { childrenColumnName } = instance.store.states;
      const treeProps2 = {
        children: childrenColumnName.value,
        checkStrictly: false
        // Disable checkStrictly when selecting all
      };
      data.value.forEach((row, index) => {
        const rowIndex = index + childrenCount;
        if (toggleRowStatus(
          selection.value,
          row,
          value,
          treeProps2,
          selectable.value,
          rowIndex,
          rowKey22
        )) {
          selectionChanged = true;
        }
        childrenCount += getChildrenCount(getRowIdentity(row, rowKey22));
      });
      if (selectionChanged) {
        instance.emit(
          "selection-change",
          selection.value ? selection.value.slice() : []
        );
      }
      instance.emit("select-all", (selection.value || []).slice());
    };
    const updateAllSelected = () => {
      var _a2;
      if (((_a2 = data.value) == null ? void 0 : _a2.length) === 0) {
        isAllSelected.value = false;
        return;
      }
      const { childrenColumnName } = instance.store.states;
      let rowIndex = 0;
      let selectedCount = 0;
      const checkSelectedStatus = (data2) => {
        var _a3;
        for (const row of data2) {
          const isRowSelectable = selectable.value && selectable.value.call(null, row, rowIndex);
          if (!isSelected(row)) {
            if (!selectable.value || isRowSelectable) {
              return false;
            }
          } else {
            selectedCount++;
          }
          rowIndex++;
          if (((_a3 = row[childrenColumnName.value]) == null ? void 0 : _a3.length) && !checkSelectedStatus(row[childrenColumnName.value])) {
            return false;
          }
        }
        return true;
      };
      const isAllSelected_ = checkSelectedStatus(data.value || []);
      isAllSelected.value = selectedCount === 0 ? false : isAllSelected_;
    };
    const getChildrenCount = (rowKey22) => {
      var _a2;
      if (!instance || !instance.store) return 0;
      const { treeData } = instance.store.states;
      let count = 0;
      const children = (_a2 = treeData.value[rowKey22]) == null ? void 0 : _a2.children;
      if (children) {
        count += children.length;
        children.forEach((childKey) => {
          count += getChildrenCount(childKey);
        });
      }
      return count;
    };
    const updateFilters = (column, values) => {
      const filters_ = {};
      castArray$1(column).forEach((col) => {
        filters.value[col.id] = values;
        filters_[col.columnKey || col.id] = values;
      });
      return filters_;
    };
    const updateSort = (column, prop, order) => {
      if (sortingColumn.value && sortingColumn.value !== column) {
        sortingColumn.value.order = null;
      }
      sortingColumn.value = column;
      sortProp.value = prop;
      sortOrder.value = order;
    };
    const execFilter = () => {
      let sourceData = unref(_data);
      Object.keys(filters.value).forEach((columnId) => {
        const values = filters.value[columnId];
        if (!values || values.length === 0) return;
        const column = getColumnById(
          {
            columns: columns2.value
          },
          columnId
        );
        if (column && column.filterMethod) {
          sourceData = sourceData.filter((row) => {
            return values.some(
              (value) => column.filterMethod.call(null, value, row, column)
            );
          });
        }
      });
      filteredData.value = sourceData;
    };
    const execSort = () => {
      var _a2;
      data.value = sortData((_a2 = filteredData.value) != null ? _a2 : [], {
        sortingColumn: sortingColumn.value,
        sortProp: sortProp.value,
        sortOrder: sortOrder.value
      });
    };
    const execQuery = (ignore = void 0) => {
      if (!(ignore == null ? void 0 : ignore.filter)) {
        execFilter();
      }
      execSort();
    };
    const clearFilter = (columnKeys) => {
      const { tableHeaderRef } = instance.refs;
      if (!tableHeaderRef) return;
      const panels = Object.assign({}, tableHeaderRef.filterPanels);
      const keys2 = Object.keys(panels);
      if (!keys2.length) return;
      if (isString(columnKeys)) {
        columnKeys = [columnKeys];
      }
      if (isArray$1(columnKeys)) {
        const columns_ = columnKeys.map(
          (key) => getColumnByKey(
            {
              columns: columns2.value
            },
            key
          )
        );
        keys2.forEach((key) => {
          const column = columns_.find((col) => col.id === key);
          if (column) {
            column.filteredValue = [];
          }
        });
        instance.store.commit("filterChange", {
          column: columns_,
          values: [],
          silent: true,
          multi: true
        });
      } else {
        keys2.forEach((key) => {
          const column = columns2.value.find((col) => col.id === key);
          if (column) {
            column.filteredValue = [];
          }
        });
        filters.value = {};
        instance.store.commit("filterChange", {
          column: {},
          values: [],
          silent: true
        });
      }
    };
    const clearSort = () => {
      if (!sortingColumn.value) return;
      updateSort(null, null, null);
      instance.store.commit("changeSortCondition", {
        silent: true
      });
    };
    const {
      setExpandRowKeys,
      toggleRowExpansion,
      updateExpandRows,
      states: expandStates,
      isRowExpanded
    } = useExpand({
      data,
      rowKey: rowKey2
    });
    const {
      updateTreeExpandKeys,
      toggleTreeExpansion,
      updateTreeData,
      updateKeyChildren,
      loadOrToggle,
      states: treeStates
    } = useTree$2({
      data,
      rowKey: rowKey2
    });
    const {
      updateCurrentRowData,
      updateCurrentRow,
      setCurrentRowKey,
      states: currentData
    } = useCurrent({
      data,
      rowKey: rowKey2
    });
    const setExpandRowKeysAdapter = (val) => {
      setExpandRowKeys(val);
      updateTreeExpandKeys(val);
    };
    const toggleRowExpansionAdapter = (row, expanded) => {
      const hasExpandColumn = columns2.value.some(({ type }) => type === "expand");
      if (hasExpandColumn) {
        toggleRowExpansion(row, expanded);
      } else {
        toggleTreeExpansion(row, expanded);
      }
    };
    return {
      assertRowKey,
      updateColumns,
      scheduleLayout,
      isSelected,
      clearSelection,
      cleanSelection,
      getSelectionRows,
      toggleRowSelection,
      _toggleAllSelection,
      toggleAllSelection: null,
      updateAllSelected,
      updateFilters,
      updateCurrentRow,
      updateSort,
      execFilter,
      execSort,
      execQuery,
      clearFilter,
      clearSort,
      toggleRowExpansion,
      setExpandRowKeysAdapter,
      setCurrentRowKey,
      toggleRowExpansionAdapter,
      isRowExpanded,
      updateExpandRows,
      updateCurrentRowData,
      loadOrToggle,
      updateTreeData,
      updateKeyChildren,
      states: {
        tableSize,
        rowKey: rowKey2,
        data,
        _data,
        isComplex,
        _columns,
        originColumns,
        columns: columns2,
        fixedColumns,
        rightFixedColumns,
        leafColumns,
        fixedLeafColumns,
        rightFixedLeafColumns,
        updateOrderFns,
        leafColumnsLength,
        fixedLeafColumnsLength,
        rightFixedLeafColumnsLength,
        isAllSelected,
        selection,
        reserveSelection,
        selectOnIndeterminate,
        selectable,
        rowExpandable,
        filters,
        filteredData,
        sortingColumn,
        sortProp,
        sortOrder,
        hoverRow,
        ...expandStates,
        ...treeStates,
        ...currentData
      }
    };
  }
  function replaceColumn(array, column) {
    return array.map((item) => {
      var _a;
      if (item.id === column.id) {
        return column;
      } else if ((_a = item.children) == null ? void 0 : _a.length) {
        item.children = replaceColumn(item.children, column);
      }
      return item;
    });
  }
  function sortColumn(array) {
    array.forEach((item) => {
      var _a, _b;
      item.no = (_a = item.getColumnIndex) == null ? void 0 : _a.call(item);
      if ((_b = item.children) == null ? void 0 : _b.length) {
        sortColumn(item.children);
      }
    });
    array.sort((cur, pre) => cur.no - pre.no);
  }
  function useStore() {
    const instance = getCurrentInstance();
    const watcher = useWatcher$1();
    const ns = useNamespace("table");
    const { t } = useLocale();
    const mutations = {
      setData(states, data) {
        const dataInstanceChanged = unref(states._data) !== data;
        states.data.value = data;
        states._data.value = data;
        instance.store.execQuery();
        instance.store.updateCurrentRowData();
        instance.store.updateExpandRows();
        instance.store.updateTreeData(
          instance.store.states.defaultExpandAll.value
        );
        if (unref(states.reserveSelection)) {
          instance.store.assertRowKey();
        } else {
          if (dataInstanceChanged) {
            instance.store.clearSelection();
          } else {
            instance.store.cleanSelection();
          }
        }
        instance.store.updateAllSelected();
        if (instance.$ready) {
          instance.store.scheduleLayout();
        }
      },
      insertColumn(states, column, parent2, updateColumnOrder) {
        var _a;
        const array = unref(states._columns);
        let newColumns = [];
        if (!parent2) {
          array.push(column);
          newColumns = array;
        } else {
          if (parent2 && !parent2.children) {
            parent2.children = [];
          }
          (_a = parent2.children) == null ? void 0 : _a.push(column);
          newColumns = replaceColumn(array, parent2);
        }
        sortColumn(newColumns);
        states._columns.value = newColumns;
        states.updateOrderFns.push(updateColumnOrder);
        if (column.type === "selection") {
          states.selectable.value = column.selectable;
          states.reserveSelection.value = column.reserveSelection;
        }
        if (instance.$ready) {
          instance.store.updateColumns();
          instance.store.scheduleLayout();
        }
      },
      updateColumnOrder(states, column) {
        var _a;
        const newColumnIndex = (_a = column.getColumnIndex) == null ? void 0 : _a.call(column);
        if (newColumnIndex === column.no) return;
        sortColumn(states._columns.value);
        if (instance.$ready) {
          instance.store.updateColumns();
        }
      },
      removeColumn(states, column, parent2, updateColumnOrder) {
        var _a;
        const array = unref(states._columns) || [];
        if (parent2) {
          (_a = parent2.children) == null ? void 0 : _a.splice(
            parent2.children.findIndex((item) => item.id === column.id),
            1
          );
          nextTick(() => {
            var _a2;
            if (((_a2 = parent2.children) == null ? void 0 : _a2.length) === 0) {
              delete parent2.children;
            }
          });
          states._columns.value = replaceColumn(array, parent2);
        } else {
          const index = array.indexOf(column);
          if (index > -1) {
            array.splice(index, 1);
            states._columns.value = array;
          }
        }
        const updateFnIndex = states.updateOrderFns.indexOf(updateColumnOrder);
        updateFnIndex > -1 && states.updateOrderFns.splice(updateFnIndex, 1);
        if (instance.$ready) {
          instance.store.updateColumns();
          instance.store.scheduleLayout();
        }
      },
      sort(states, options) {
        const { prop, order, init } = options;
        if (prop) {
          const column = unref(states.columns).find(
            (column2) => column2.property === prop
          );
          if (column) {
            column.order = order;
            instance.store.updateSort(column, prop, order);
            instance.store.commit("changeSortCondition", { init });
          }
        }
      },
      changeSortCondition(states, options) {
        const { sortingColumn, sortProp, sortOrder } = states;
        const columnValue = unref(sortingColumn), propValue = unref(sortProp), orderValue = unref(sortOrder);
        if (isNull(orderValue)) {
          states.sortingColumn.value = null;
          states.sortProp.value = null;
        }
        const ignore = { filter: true };
        instance.store.execQuery(ignore);
        if (!options || !(options.silent || options.init)) {
          instance.emit("sort-change", {
            column: columnValue,
            prop: propValue,
            order: orderValue
          });
        }
        instance.store.updateTableScrollY();
      },
      filterChange(_states, options) {
        const { column, values, silent } = options;
        const newFilters = instance.store.updateFilters(column, values);
        instance.store.execQuery();
        if (!silent) {
          instance.emit("filter-change", newFilters);
        }
        instance.store.updateTableScrollY();
      },
      toggleAllSelection() {
        var _a, _b;
        (_b = (_a = instance.store).toggleAllSelection) == null ? void 0 : _b.call(_a);
      },
      rowSelectedChanged(_states, row) {
        instance.store.toggleRowSelection(row);
        instance.store.updateAllSelected();
      },
      setHoverRow(states, row) {
        states.hoverRow.value = row;
      },
      setCurrentRow(_states, row) {
        instance.store.updateCurrentRow(row);
      }
    };
    const commit = function(name, ...args) {
      const mutations2 = instance.store.mutations;
      if (mutations2[name]) {
        mutations2[name].apply(instance, [
          instance.store.states,
          ...args
        ]);
      } else {
        throw new Error(`Action not found: ${name}`);
      }
    };
    const updateTableScrollY = function() {
      nextTick(() => instance.layout.updateScrollY.apply(instance.layout));
    };
    return {
      ns,
      t,
      ...watcher,
      mutations,
      commit,
      updateTableScrollY
    };
  }
  const InitialStateMap = {
    rowKey: "rowKey",
    defaultExpandAll: "defaultExpandAll",
    rowExpandable: "rowExpandable",
    selectOnIndeterminate: "selectOnIndeterminate",
    indent: "indent",
    lazy: "lazy",
    ["treeProps.hasChildren"]: {
      key: "lazyColumnIdentifier",
      default: "hasChildren"
    },
    ["treeProps.children"]: {
      key: "childrenColumnName",
      default: "children"
    },
    ["treeProps.checkStrictly"]: {
      key: "checkStrictly",
      default: false
    }
  };
  function createStore(table, props2) {
    if (!table) {
      throw new Error("Table is required.");
    }
    const store = useStore();
    store.toggleAllSelection = debounce(store._toggleAllSelection, 10);
    Object.keys(InitialStateMap).forEach((key) => {
      handleValue(getArrKeysValue(props2, key), key, store);
    });
    proxyTableProps(store, props2);
    return store;
  }
  function proxyTableProps(store, props2) {
    Object.keys(InitialStateMap).forEach((key) => {
      watch(
        () => getArrKeysValue(props2, key),
        (value) => {
          handleValue(value, key, store);
        }
      );
    });
  }
  function handleValue(value, propsKey, store) {
    let newVal = value;
    let storeKey = InitialStateMap[propsKey];
    if (isObject$2(storeKey)) {
      newVal = newVal || storeKey.default;
      storeKey = storeKey.key;
    }
    store.states[storeKey].value = newVal;
  }
  function getArrKeysValue(props2, key) {
    if (key.includes(".")) {
      const keyList = key.split(".");
      let value = props2;
      keyList.forEach((k) => {
        value = value[k];
      });
      return value;
    } else {
      return props2[key];
    }
  }
  var __defProp$3 = Object.defineProperty;
  var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  var __publicField$3 = (obj, key, value) => __defNormalProp$3(obj, typeof key !== "symbol" ? key + "" : key, value);
  class TableLayout {
    constructor(options) {
      __publicField$3(this, "observers");
      __publicField$3(this, "table");
      __publicField$3(this, "store");
      __publicField$3(this, "columns");
      __publicField$3(this, "fit");
      __publicField$3(this, "showHeader");
      __publicField$3(this, "height");
      __publicField$3(this, "scrollX");
      __publicField$3(this, "scrollY");
      __publicField$3(this, "bodyWidth");
      __publicField$3(this, "fixedWidth");
      __publicField$3(this, "rightFixedWidth");
      __publicField$3(this, "tableHeight");
      __publicField$3(this, "headerHeight");
      __publicField$3(this, "appendHeight");
      __publicField$3(this, "footerHeight");
      __publicField$3(this, "gutterWidth");
      this.observers = [];
      this.table = null;
      this.store = null;
      this.columns = [];
      this.fit = true;
      this.showHeader = true;
      this.height = ref(null);
      this.scrollX = ref(false);
      this.scrollY = ref(false);
      this.bodyWidth = ref(null);
      this.fixedWidth = ref(null);
      this.rightFixedWidth = ref(null);
      this.gutterWidth = 0;
      for (const name in options) {
        if (hasOwn(options, name)) {
          if (isRef(this[name])) {
            this[name].value = options[name];
          } else {
            this[name] = options[name];
          }
        }
      }
      if (!this.table) {
        throw new Error("Table is required for Table Layout");
      }
      if (!this.store) {
        throw new Error("Store is required for Table Layout");
      }
    }
    updateScrollY() {
      const height = this.height.value;
      if (isNull(height)) return false;
      const scrollBarRef = this.table.refs.scrollBarRef;
      if (this.table.vnode.el && (scrollBarRef == null ? void 0 : scrollBarRef.wrapRef)) {
        let scrollY = true;
        const prevScrollY = this.scrollY.value;
        scrollY = scrollBarRef.wrapRef.scrollHeight > scrollBarRef.wrapRef.clientHeight;
        this.scrollY.value = scrollY;
        return prevScrollY !== scrollY;
      }
      return false;
    }
    setHeight(value, prop = "height") {
      if (!isClient) return;
      const el = this.table.vnode.el;
      value = parseHeight(value);
      this.height.value = Number(value);
      if (!el && (value || value === 0)) {
        nextTick(() => this.setHeight(value, prop));
        return;
      }
      if (el && isNumber(value)) {
        el.style[prop] = `${value}px`;
        this.updateElsHeight();
      } else if (el && isString(value)) {
        el.style[prop] = value;
        this.updateElsHeight();
      }
    }
    setMaxHeight(value) {
      this.setHeight(value, "max-height");
    }
    getFlattenColumns() {
      const flattenColumns = [];
      const columns2 = this.table.store.states.columns.value;
      columns2.forEach((column) => {
        if (column.isColumnGroup) {
          flattenColumns.push.apply(flattenColumns, column.columns);
        } else {
          flattenColumns.push(column);
        }
      });
      return flattenColumns;
    }
    updateElsHeight() {
      this.updateScrollY();
      this.notifyObservers("scrollable");
    }
    headerDisplayNone(elm) {
      if (!elm) return true;
      let headerChild = elm;
      while (headerChild.tagName !== "DIV") {
        if (getComputedStyle(headerChild).display === "none") {
          return true;
        }
        headerChild = headerChild.parentElement;
      }
      return false;
    }
    updateColumnsWidth() {
      var _a;
      if (!isClient) return;
      const fit = this.fit;
      const bodyWidth = (_a = this.table.vnode.el) == null ? void 0 : _a.clientWidth;
      let bodyMinWidth = 0;
      const flattenColumns = this.getFlattenColumns();
      const flexColumns = flattenColumns.filter(
        (column) => !isNumber(column.width)
      );
      flattenColumns.forEach((column) => {
        if (isNumber(column.width) && column.realWidth) column.realWidth = null;
      });
      if (flexColumns.length > 0 && fit) {
        flattenColumns.forEach((column) => {
          bodyMinWidth += Number(column.width || column.minWidth || 80);
        });
        if (bodyMinWidth <= bodyWidth) {
          this.scrollX.value = false;
          const totalFlexWidth = bodyWidth - bodyMinWidth;
          if (flexColumns.length === 1) {
            flexColumns[0].realWidth = Number(flexColumns[0].minWidth || 80) + totalFlexWidth;
          } else {
            const allColumnsWidth = flexColumns.reduce(
              (prev, column) => prev + Number(column.minWidth || 80),
              0
            );
            const flexWidthPerPixel = totalFlexWidth / allColumnsWidth;
            let noneFirstWidth = 0;
            flexColumns.forEach((column, index) => {
              if (index === 0) return;
              const flexWidth = Math.floor(
                Number(column.minWidth || 80) * flexWidthPerPixel
              );
              noneFirstWidth += flexWidth;
              column.realWidth = Number(column.minWidth || 80) + flexWidth;
            });
            flexColumns[0].realWidth = Number(flexColumns[0].minWidth || 80) + totalFlexWidth - noneFirstWidth;
          }
        } else {
          this.scrollX.value = true;
          flexColumns.forEach((column) => {
            column.realWidth = Number(column.minWidth);
          });
        }
        this.bodyWidth.value = Math.max(bodyMinWidth, bodyWidth);
        this.table.state.resizeState.value.width = this.bodyWidth.value;
      } else {
        flattenColumns.forEach((column) => {
          if (!column.width && !column.minWidth) {
            column.realWidth = 80;
          } else {
            column.realWidth = Number(column.width || column.minWidth);
          }
          bodyMinWidth += column.realWidth;
        });
        this.scrollX.value = bodyMinWidth > bodyWidth;
        this.bodyWidth.value = bodyMinWidth;
      }
      const fixedColumns = this.store.states.fixedColumns.value;
      if (fixedColumns.length > 0) {
        let fixedWidth = 0;
        fixedColumns.forEach((column) => {
          fixedWidth += Number(column.realWidth || column.width);
        });
        this.fixedWidth.value = fixedWidth;
      }
      const rightFixedColumns = this.store.states.rightFixedColumns.value;
      if (rightFixedColumns.length > 0) {
        let rightFixedWidth = 0;
        rightFixedColumns.forEach((column) => {
          rightFixedWidth += Number(column.realWidth || column.width);
        });
        this.rightFixedWidth.value = rightFixedWidth;
      }
      this.notifyObservers("columns");
    }
    addObserver(observer) {
      this.observers.push(observer);
    }
    removeObserver(observer) {
      const index = this.observers.indexOf(observer);
      if (index !== -1) {
        this.observers.splice(index, 1);
      }
    }
    notifyObservers(event) {
      const observers = this.observers;
      observers.forEach((observer) => {
        var _a, _b;
        switch (event) {
          case "columns":
            (_a = observer.state) == null ? void 0 : _a.onColumnsChange(this);
            break;
          case "scrollable":
            (_b = observer.state) == null ? void 0 : _b.onScrollableChange(this);
            break;
          default:
            throw new Error(`Table Layout don't have event ${event}.`);
        }
      });
    }
  }
  var _sfc_main$1q = /* @__PURE__ */ defineComponent({
    name: "ElTableFilterPanel",
    components: {
      ElCheckbox,
      ElCheckboxGroup,
      ElScrollbar,
      ElTooltip,
      ElIcon,
      ArrowDown: arrow_down_default,
      ArrowUp: arrow_up_default
    },
    props: {
      placement: {
        type: String,
        default: "bottom-start"
      },
      store: {
        type: Object
      },
      column: {
        type: Object
      },
      upDataColumn: {
        type: Function
      },
      appendTo: useTooltipContentProps.appendTo
    },
    setup(props2) {
      const instance = getCurrentInstance();
      const { t } = useLocale();
      const ns = useNamespace("table-filter");
      const parent2 = instance == null ? void 0 : instance.parent;
      if (props2.column && !parent2.filterPanels.value[props2.column.id]) {
        parent2.filterPanels.value[props2.column.id] = instance;
      }
      const tooltipRef = ref(null);
      const rootRef = ref(null);
      const checkedIndex = ref(0);
      const filters = computed(() => {
        return props2.column && props2.column.filters;
      });
      const filterClassName = computed(() => {
        if (props2.column && props2.column.filterClassName) {
          return `${ns.b()} ${props2.column.filterClassName}`;
        }
        return ns.b();
      });
      const filterValue = computed({
        get: () => {
          var _a;
          return (((_a = props2.column) == null ? void 0 : _a.filteredValue) || [])[0];
        },
        set: (value) => {
          if (filteredValue.value) {
            if (!isPropAbsent(value)) {
              filteredValue.value.splice(0, 1, value);
            } else {
              filteredValue.value.splice(0, 1);
            }
          }
        }
      });
      const filteredValue = computed({
        get() {
          if (props2.column) {
            return props2.column.filteredValue || [];
          }
          return [];
        },
        set(value) {
          var _a;
          if (props2.column) {
            (_a = props2.upDataColumn) == null ? void 0 : _a.call(props2, "filteredValue", value);
          }
        }
      });
      const multiple = computed(() => {
        if (props2.column) {
          return props2.column.filterMultiple;
        }
        return true;
      });
      const isActive = (filter) => {
        return filter.value === filterValue.value;
      };
      const hidden = () => {
        var _a;
        (_a = tooltipRef.value) == null ? void 0 : _a.onClose();
      };
      const handleConfirm = () => {
        confirmFilter(filteredValue.value);
        hidden();
      };
      const handleReset = () => {
        filteredValue.value = [];
        confirmFilter(filteredValue.value);
        hidden();
      };
      const handleSelect = (_filterValue, index) => {
        filterValue.value = _filterValue;
        checkedIndex.value = index;
        if (!isPropAbsent(_filterValue)) {
          confirmFilter(filteredValue.value);
        } else {
          confirmFilter([]);
        }
        hidden();
      };
      const confirmFilter = (filteredValue2) => {
        var _a, _b;
        (_a = props2.store) == null ? void 0 : _a.commit("filterChange", {
          column: props2.column,
          values: filteredValue2
        });
        (_b = props2.store) == null ? void 0 : _b.updateAllSelected();
      };
      const handleShowTooltip = () => {
        var _a, _b;
        (_a = rootRef.value) == null ? void 0 : _a.focus();
        !multiple.value && initCheckedIndex();
        if (props2.column) {
          (_b = props2.upDataColumn) == null ? void 0 : _b.call(props2, "filterOpened", true);
        }
      };
      const handleHideTooltip = () => {
        var _a;
        if (props2.column) {
          (_a = props2.upDataColumn) == null ? void 0 : _a.call(props2, "filterOpened", false);
        }
      };
      const initCheckedIndex = () => {
        if (isPropAbsent(filterValue)) {
          checkedIndex.value = 0;
          return;
        }
        const idx = (filters.value || []).findIndex((item) => {
          return item.value === filterValue.value;
        });
        checkedIndex.value = idx >= 0 ? idx + 1 : 0;
      };
      const handleKeydown = (event) => {
        var _a, _b;
        const code = getEventCode(event);
        const len = (filters.value ? filters.value.length : 0) + 1;
        let index = checkedIndex.value;
        let isPreventDefault = true;
        switch (code) {
          case EVENT_CODE.down:
          case EVENT_CODE.right:
            index = (index + 1) % len;
            break;
          case EVENT_CODE.up:
          case EVENT_CODE.left:
            index = (index - 1 + len) % len;
            break;
          case EVENT_CODE.tab:
            hidden();
            isPreventDefault = false;
            break;
          case EVENT_CODE.enter:
          case EVENT_CODE.space:
            if (index === 0) {
              handleSelect(null, 0);
            } else {
              const item = (filters.value || [])[index - 1];
              item.value && handleSelect(item.value, index);
            }
            break;
          default:
            isPreventDefault = false;
            break;
        }
        isPreventDefault && event.preventDefault();
        checkedIndex.value = index;
        (_b = (_a = rootRef.value) == null ? void 0 : _a.querySelector(
          `.${ns.e("list-item")}:nth-child(${index + 1})`
        )) == null ? void 0 : _b.focus();
      };
      return {
        multiple,
        filterClassName,
        filteredValue,
        filterValue,
        filters,
        handleConfirm,
        handleReset,
        handleSelect,
        isPropAbsent,
        isActive,
        t,
        ns,
        tooltipRef,
        rootRef,
        checkedIndex,
        handleShowTooltip,
        handleHideTooltip,
        handleKeydown
      };
    }
  });
  const _hoisted_1$16 = ["disabled"];
  const _hoisted_2$_ = ["tabindex", "aria-checked"];
  const _hoisted_3$P = ["tabindex", "aria-checked", "onClick"];
  const _hoisted_4$L = ["aria-label"];
  function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
    const _component_el_checkbox = resolveComponent("el-checkbox");
    const _component_el_checkbox_group = resolveComponent("el-checkbox-group");
    const _component_el_scrollbar = resolveComponent("el-scrollbar");
    const _component_arrow_up = resolveComponent("arrow-up");
    const _component_arrow_down = resolveComponent("arrow-down");
    const _component_el_icon = resolveComponent("el-icon");
    const _component_el_tooltip = resolveComponent("el-tooltip");
    return openBlock(), createBlock(_component_el_tooltip, {
      ref: "tooltipRef",
      offset: 0,
      placement: _ctx.placement,
      "show-arrow": false,
      trigger: "click",
      role: "dialog",
      teleported: "",
      effect: "light",
      pure: "",
      loop: "",
      "popper-class": _ctx.filterClassName,
      persistent: "",
      "append-to": _ctx.appendTo,
      onShow: _ctx.handleShowTooltip,
      onHide: _ctx.handleHideTooltip
    }, {
      content: withCtx(() => [
        _ctx.multiple ? (openBlock(), createElementBlock(
          "div",
          {
            key: 0,
            ref: "rootRef",
            tabindex: "-1",
            class: normalizeClass(_ctx.ns.e("multiple"))
          },
          [
            createBaseVNode(
              "div",
              {
                class: normalizeClass(_ctx.ns.e("content"))
              },
              [
                createVNode(_component_el_scrollbar, {
                  "wrap-class": _ctx.ns.e("wrap")
                }, {
                  default: withCtx(() => [
                    createVNode(_component_el_checkbox_group, {
                      modelValue: _ctx.filteredValue,
                      "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.filteredValue = $event),
                      class: normalizeClass(_ctx.ns.e("checkbox-group"))
                    }, {
                      default: withCtx(() => [
                        (openBlock(true), createElementBlock(
                          Fragment,
                          null,
                          renderList(_ctx.filters, (filter) => {
                            return openBlock(), createBlock(_component_el_checkbox, {
                              key: filter.value,
                              value: filter.value
                            }, {
                              default: withCtx(() => [
                                createTextVNode(
                                  toDisplayString(filter.text),
                                  1
                                  /* TEXT */
                                )
                              ]),
                              _: 2
                              /* DYNAMIC */
                            }, 1032, ["value"]);
                          }),
                          128
                          /* KEYED_FRAGMENT */
                        ))
                      ]),
                      _: 1
                      /* STABLE */
                    }, 8, ["modelValue", "class"])
                  ]),
                  _: 1
                  /* STABLE */
                }, 8, ["wrap-class"])
              ],
              2
              /* CLASS */
            ),
            createBaseVNode(
              "div",
              {
                class: normalizeClass(_ctx.ns.e("bottom"))
              },
              [
                createBaseVNode("button", {
                  class: normalizeClass(_ctx.ns.is("disabled", _ctx.filteredValue.length === 0)),
                  disabled: _ctx.filteredValue.length === 0,
                  type: "button",
                  onClick: _cache[1] || (_cache[1] = (...args) => _ctx.handleConfirm && _ctx.handleConfirm(...args))
                }, toDisplayString(_ctx.t("el.table.confirmFilter")), 11, _hoisted_1$16),
                createBaseVNode(
                  "button",
                  {
                    type: "button",
                    onClick: _cache[2] || (_cache[2] = (...args) => _ctx.handleReset && _ctx.handleReset(...args))
                  },
                  toDisplayString(_ctx.t("el.table.resetFilter")),
                  1
                  /* TEXT */
                )
              ],
              2
              /* CLASS */
            )
          ],
          2
          /* CLASS */
        )) : (openBlock(), createElementBlock(
          "ul",
          {
            key: 1,
            ref: "rootRef",
            tabindex: "-1",
            role: "radiogroup",
            class: normalizeClass(_ctx.ns.e("list")),
            onKeydown: _cache[4] || (_cache[4] = (...args) => _ctx.handleKeydown && _ctx.handleKeydown(...args))
          },
          [
            createBaseVNode("li", {
              role: "radio",
              class: normalizeClass([
                _ctx.ns.e("list-item"),
                _ctx.ns.is("active", _ctx.isPropAbsent(_ctx.filterValue))
              ]),
              tabindex: _ctx.checkedIndex === 0 ? 0 : -1,
              "aria-checked": _ctx.isPropAbsent(_ctx.filterValue),
              onClick: _cache[3] || (_cache[3] = ($event) => _ctx.handleSelect(null, 0))
            }, toDisplayString(_ctx.t("el.table.clearFilter")), 11, _hoisted_2$_),
            (openBlock(true), createElementBlock(
              Fragment,
              null,
              renderList(_ctx.filters, (filter, idx) => {
                return openBlock(), createElementBlock("li", {
                  key: filter.value,
                  role: "radio",
                  class: normalizeClass([_ctx.ns.e("list-item"), _ctx.ns.is("active", _ctx.isActive(filter))]),
                  tabindex: _ctx.checkedIndex === idx + 1 ? 0 : -1,
                  "aria-checked": _ctx.isActive(filter),
                  onClick: ($event) => _ctx.handleSelect(filter.value, idx + 1)
                }, toDisplayString(filter.text), 11, _hoisted_3$P);
              }),
              128
              /* KEYED_FRAGMENT */
            ))
          ],
          34
          /* CLASS, NEED_HYDRATION */
        ))
      ]),
      default: withCtx(() => {
        var _a;
        return [
          createBaseVNode("button", {
            type: "button",
            class: normalizeClass(`${_ctx.ns.namespace.value}-table__column-filter-trigger`),
            "aria-label": _ctx.t("el.table.filterLabel", { column: ((_a = _ctx.column) == null ? void 0 : _a.label) || "" })
          }, [
            createVNode(_component_el_icon, null, {
              default: withCtx(() => [
                renderSlot(_ctx.$slots, "filter-icon", {}, () => {
                  var _a2;
                  return [
                    ((_a2 = _ctx.column) == null ? void 0 : _a2.filterOpened) ? (openBlock(), createBlock(_component_arrow_up, { key: 0 })) : (openBlock(), createBlock(_component_arrow_down, { key: 1 }))
                  ];
                })
              ]),
              _: 3
              /* FORWARDED */
            })
          ], 10, _hoisted_4$L)
        ];
      }),
      _: 3
      /* FORWARDED */
    }, 8, ["placement", "popper-class", "append-to", "onShow", "onHide"]);
  }
  var FilterPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$1q, [["render", _sfc_render$5]]);
  function useLayoutObserver(root2) {
    const instance = getCurrentInstance();
    onBeforeMount(() => {
      tableLayout.value.addObserver(instance);
    });
    onMounted(() => {
      onColumnsChange(tableLayout.value);
      onScrollableChange(tableLayout.value);
    });
    onUpdated(() => {
      onColumnsChange(tableLayout.value);
      onScrollableChange(tableLayout.value);
    });
    onUnmounted(() => {
      tableLayout.value.removeObserver(instance);
    });
    const tableLayout = computed(() => {
      const layout2 = root2.layout;
      if (!layout2) {
        throw new Error("Can not find table layout.");
      }
      return layout2;
    });
    const onColumnsChange = (layout2) => {
      var _a;
      const cols = ((_a = root2.vnode.el) == null ? void 0 : _a.querySelectorAll("colgroup > col")) || [];
      if (!cols.length) return;
      const flattenColumns = layout2.getFlattenColumns();
      const columnsMap = {};
      flattenColumns.forEach((column) => {
        columnsMap[column.id] = column;
      });
      for (let i = 0, j = cols.length; i < j; i++) {
        const col = cols[i];
        const name = col.getAttribute("name");
        const column = columnsMap[name];
        if (column) {
          col.setAttribute("width", column.realWidth || column.width);
        }
      }
    };
    const onScrollableChange = (layout2) => {
      var _a, _b;
      const cols = ((_a = root2.vnode.el) == null ? void 0 : _a.querySelectorAll("colgroup > col[name=gutter]")) || [];
      for (let i = 0, j = cols.length; i < j; i++) {
        const col = cols[i];
        col.setAttribute("width", layout2.scrollY.value ? layout2.gutterWidth : "0");
      }
      const ths = ((_b = root2.vnode.el) == null ? void 0 : _b.querySelectorAll("th.gutter")) || [];
      for (let i = 0, j = ths.length; i < j; i++) {
        const th = ths[i];
        th.style.width = layout2.scrollY.value ? `${layout2.gutterWidth}px` : "0";
        th.style.display = layout2.scrollY.value ? "" : "none";
      }
    };
    return {
      tableLayout: tableLayout.value,
      onColumnsChange,
      onScrollableChange
    };
  }
  const TABLE_INJECTION_KEY = /* @__PURE__ */ Symbol("ElTable");
  function useEvent(props2, emit2) {
    const instance = getCurrentInstance();
    const parent2 = inject(TABLE_INJECTION_KEY);
    const handleFilterClick = (event) => {
      event.stopPropagation();
      return;
    };
    const handleHeaderClick = (event, column) => {
      if (!column.filters && column.sortable) {
        handleSortClick(event, column, false);
      } else if (column.filterable && !column.sortable) {
        handleFilterClick(event);
      }
      parent2 == null ? void 0 : parent2.emit("header-click", column, event);
    };
    const handleHeaderContextMenu = (event, column) => {
      parent2 == null ? void 0 : parent2.emit("header-contextmenu", column, event);
    };
    const draggingColumn = ref(null);
    const dragging = ref(false);
    const dragState = ref();
    const handleMouseDown = (event, column) => {
      var _a, _b;
      if (!isClient) return;
      if (column.children && column.children.length > 0) return;
      if (draggingColumn.value && props2.border && draggingColumn.value.id === column.id) {
        dragging.value = true;
        const table = parent2;
        emit2("set-drag-visible", true);
        const tableEl = table == null ? void 0 : table.vnode.el;
        const tableLeft = tableEl == null ? void 0 : tableEl.getBoundingClientRect().left;
        const columnEl = (_b = (_a = instance == null ? void 0 : instance.vnode) == null ? void 0 : _a.el) == null ? void 0 : _b.querySelector(`th.${column.id}`);
        const columnRect = columnEl.getBoundingClientRect();
        const minLeft = columnRect.left - tableLeft + 30;
        addClass(columnEl, "noclick");
        dragState.value = {
          startMouseLeft: event.clientX,
          startLeft: columnRect.right - tableLeft,
          startColumnLeft: columnRect.left - tableLeft,
          tableLeft
        };
        const resizeProxy = table == null ? void 0 : table.refs.resizeProxy;
        resizeProxy.style.left = `${dragState.value.startLeft}px`;
        document.onselectstart = function() {
          return false;
        };
        document.ondragstart = function() {
          return false;
        };
        const handleMouseMove2 = (event2) => {
          const deltaLeft = event2.clientX - dragState.value.startMouseLeft;
          const proxyLeft = dragState.value.startLeft + deltaLeft;
          resizeProxy.style.left = `${Math.max(minLeft, proxyLeft)}px`;
        };
        const handleMouseUp = () => {
          if (dragging.value) {
            const { startColumnLeft, startLeft } = dragState.value;
            const finalLeft = Number.parseInt(resizeProxy.style.left, 10);
            const columnWidth = finalLeft - startColumnLeft;
            column.width = column.realWidth = columnWidth;
            table == null ? void 0 : table.emit(
              "header-dragend",
              column.width,
              startLeft - startColumnLeft,
              column,
              event
            );
            requestAnimationFrame(() => {
              props2.store.scheduleLayout(false, true);
            });
            document.body.style.cursor = "";
            dragging.value = false;
            draggingColumn.value = null;
            dragState.value = void 0;
            emit2("set-drag-visible", false);
          }
          document.removeEventListener("mousemove", handleMouseMove2);
          document.removeEventListener("mouseup", handleMouseUp);
          document.onselectstart = null;
          document.ondragstart = null;
          setTimeout(() => {
            removeClass(columnEl, "noclick");
          }, 0);
        };
        document.addEventListener("mousemove", handleMouseMove2);
        document.addEventListener("mouseup", handleMouseUp);
      }
    };
    const handleMouseMove = (event, column) => {
      var _a;
      if (!props2.border || column.children && column.children.length > 0) return;
      const el = event.target;
      const target = isElement$1(el) ? el.closest("th") : null;
      if (!target) {
        return;
      }
      const isSortable = hasClass(target, "is-sortable");
      if (isSortable) {
        const cursor2 = dragging.value ? "col-resize" : "";
        target.style.cursor = cursor2;
        const caret = target.querySelector(".caret-wrapper");
        if (caret) {
          caret.style.cursor = cursor2;
        }
      }
      if (!column.resizable || dragging.value) {
        draggingColumn.value = null;
        return;
      }
      const rect = target.getBoundingClientRect();
      const isLastTh = ((_a = target.parentNode) == null ? void 0 : _a.lastElementChild) === target;
      const allowDrag = props2.allowDragLastColumn || !isLastTh;
      const isResizeHandleActive = rect.width > 12 && rect.right - event.clientX < 8 && allowDrag;
      const cursor = isResizeHandleActive ? "col-resize" : "";
      document.body.style.cursor = cursor;
      draggingColumn.value = isResizeHandleActive ? column : null;
      if (isSortable) {
        target.style.cursor = cursor;
      }
    };
    const handleMouseOut = () => {
      if (!isClient || dragging.value) return;
      document.body.style.cursor = "";
    };
    const toggleOrder = ({ order, sortOrders }) => {
      if (order === "") return sortOrders[0];
      const index = sortOrders.indexOf(order || null);
      return sortOrders[index > sortOrders.length - 2 ? 0 : index + 1];
    };
    const handleSortClick = (event, column, givenOrder) => {
      var _a;
      event.stopPropagation();
      const order = column.order === givenOrder ? null : givenOrder || toggleOrder(column);
      const target = (_a = event.target) == null ? void 0 : _a.closest("th");
      if (target) {
        if (hasClass(target, "noclick")) {
          removeClass(target, "noclick");
          return;
        }
      }
      if (!column.sortable) return;
      const clickTarget = event.currentTarget;
      if (["ascending", "descending"].some(
        (str) => hasClass(clickTarget, str) && !column.sortOrders.includes(str)
      )) {
        return;
      }
      const states = props2.store.states;
      let sortProp = states.sortProp.value;
      let sortOrder;
      const sortingColumn = states.sortingColumn.value;
      if (sortingColumn !== column || sortingColumn === column && isNull(sortingColumn.order)) {
        if (sortingColumn) {
          sortingColumn.order = null;
        }
        states.sortingColumn.value = column;
        sortProp = column.property;
      }
      if (!order) {
        sortOrder = column.order = null;
      } else {
        sortOrder = column.order = order;
      }
      states.sortProp.value = sortProp;
      states.sortOrder.value = sortOrder;
      parent2 == null ? void 0 : parent2.store.commit("changeSortCondition");
    };
    return {
      handleHeaderClick,
      handleHeaderContextMenu,
      handleMouseDown,
      handleMouseMove,
      handleMouseOut,
      handleSortClick,
      handleFilterClick
    };
  }
  function useStyle$2(props2) {
    const parent2 = inject(TABLE_INJECTION_KEY);
    const ns = useNamespace("table");
    const getHeaderRowStyle = (rowIndex) => {
      const headerRowStyle = parent2 == null ? void 0 : parent2.props.headerRowStyle;
      if (isFunction$1(headerRowStyle)) {
        return headerRowStyle.call(null, { rowIndex });
      }
      return headerRowStyle;
    };
    const getHeaderRowClass = (rowIndex) => {
      const classes = [];
      const headerRowClassName = parent2 == null ? void 0 : parent2.props.headerRowClassName;
      if (isString(headerRowClassName)) {
        classes.push(headerRowClassName);
      } else if (isFunction$1(headerRowClassName)) {
        classes.push(headerRowClassName.call(null, { rowIndex }));
      }
      return classes.join(" ");
    };
    const getHeaderCellStyle = (rowIndex, columnIndex, row, column) => {
      var _a;
      let headerCellStyles = (_a = parent2 == null ? void 0 : parent2.props.headerCellStyle) != null ? _a : {};
      if (isFunction$1(headerCellStyles)) {
        headerCellStyles = headerCellStyles.call(null, {
          rowIndex,
          columnIndex,
          row,
          column
        });
      }
      const fixedStyle = getFixedColumnOffset(
        columnIndex,
        column.fixed,
        props2.store,
        row
      );
      ensurePosition(fixedStyle, "left");
      ensurePosition(fixedStyle, "right");
      return Object.assign({}, headerCellStyles, fixedStyle);
    };
    const getHeaderCellClass = (rowIndex, columnIndex, row, column) => {
      const fixedClasses = getFixedColumnsClass(
        ns.b(),
        columnIndex,
        column.fixed,
        props2.store,
        row
      );
      const classes = [
        column.id,
        column.order,
        column.headerAlign,
        column.className,
        column.labelClassName,
        ...fixedClasses
      ];
      if (!column.children) {
        classes.push("is-leaf");
      }
      if (column.sortable) {
        classes.push("is-sortable");
      }
      const headerCellClassName = parent2 == null ? void 0 : parent2.props.headerCellClassName;
      if (isString(headerCellClassName)) {
        classes.push(headerCellClassName);
      } else if (isFunction$1(headerCellClassName)) {
        classes.push(
          headerCellClassName.call(null, {
            rowIndex,
            columnIndex,
            row,
            column
          })
        );
      }
      classes.push(ns.e("cell"));
      return classes.filter((className) => Boolean(className)).join(" ");
    };
    return {
      getHeaderRowStyle,
      getHeaderRowClass,
      getHeaderCellStyle,
      getHeaderCellClass
    };
  }
  const getAllColumns = (columns2) => {
    const result = [];
    columns2.forEach((column) => {
      if (column.children) {
        result.push(column);
        result.push.apply(result, getAllColumns(column.children));
      } else {
        result.push(column);
      }
    });
    return result;
  };
  const convertToRows = (originColumns) => {
    let maxLevel = 1;
    const traverse2 = (column, parent2) => {
      if (parent2) {
        column.level = parent2.level + 1;
        if (maxLevel < column.level) {
          maxLevel = column.level;
        }
      }
      if (column.children) {
        let colSpan = 0;
        column.children.forEach((subColumn) => {
          traverse2(subColumn, column);
          colSpan += subColumn.colSpan;
        });
        column.colSpan = colSpan;
      } else {
        column.colSpan = 1;
      }
    };
    originColumns.forEach((column) => {
      column.level = 1;
      traverse2(column, void 0);
    });
    const rows = [];
    for (let i = 0; i < maxLevel; i++) {
      rows.push([]);
    }
    const allColumns = getAllColumns(originColumns);
    allColumns.forEach((column) => {
      if (!column.children) {
        column.rowSpan = maxLevel - column.level + 1;
      } else {
        column.rowSpan = 1;
        column.children.forEach((col) => col.isSubColumn = true);
      }
      rows[column.level - 1].push(column);
    });
    return rows;
  };
  function useUtils$1(props2) {
    const parent2 = inject(TABLE_INJECTION_KEY);
    const columnRows = computed(() => {
      return convertToRows(props2.store.states.originColumns.value);
    });
    const isGroup = computed(() => {
      const result = columnRows.value.length > 1;
      if (result && parent2) {
        parent2.state.isGroup.value = true;
      }
      return result;
    });
    const toggleAllSelection = (event) => {
      event.stopPropagation();
      parent2 == null ? void 0 : parent2.store.commit("toggleAllSelection");
    };
    return {
      isGroup,
      toggleAllSelection,
      columnRows
    };
  }
  var TableHeader = /* @__PURE__ */ defineComponent({
    name: "ElTableHeader",
    components: {
      ElCheckbox
    },
    props: {
      fixed: {
        type: String,
        default: ""
      },
      store: {
        required: true,
        type: Object
      },
      border: Boolean,
      defaultSort: {
        type: Object,
        default: () => {
          return {
            prop: "",
            order: ""
          };
        }
      },
      appendFilterPanelTo: {
        type: String
      },
      allowDragLastColumn: {
        type: Boolean
      }
    },
    setup(props2, { emit: emit2 }) {
      const instance = getCurrentInstance();
      const parent2 = inject(TABLE_INJECTION_KEY);
      const ns = useNamespace("table");
      const filterPanels = ref({});
      const { onColumnsChange, onScrollableChange } = useLayoutObserver(parent2);
      const isTableLayoutAuto = (parent2 == null ? void 0 : parent2.props.tableLayout) === "auto";
      const saveIndexSelection = reactive(/* @__PURE__ */ new Map());
      const theadRef = ref();
      let delayId;
      const updateFixedColumnStyle = () => {
        delayId = setTimeout(() => {
          if (saveIndexSelection.size > 0) {
            saveIndexSelection.forEach((column, key) => {
              const el = theadRef.value.querySelector(
                `.${key.replace(/\s/g, ".")}`
              );
              if (el) {
                const width = el.getBoundingClientRect().width;
                column.width = width || column.width;
              }
            });
            saveIndexSelection.clear();
          }
        });
      };
      watch(saveIndexSelection, updateFixedColumnStyle);
      onBeforeUnmount(() => {
        if (delayId) {
          clearTimeout(delayId);
          delayId = void 0;
        }
      });
      onMounted(async () => {
        await nextTick();
        await nextTick();
        const { prop, order } = props2.defaultSort;
        parent2 == null ? void 0 : parent2.store.commit("sort", { prop, order, init: true });
        updateFixedColumnStyle();
      });
      const {
        handleHeaderClick,
        handleHeaderContextMenu,
        handleMouseDown,
        handleMouseMove,
        handleMouseOut,
        handleSortClick,
        handleFilterClick
      } = useEvent(props2, emit2);
      const {
        getHeaderRowStyle,
        getHeaderRowClass,
        getHeaderCellStyle,
        getHeaderCellClass
      } = useStyle$2(props2);
      const { isGroup, toggleAllSelection, columnRows } = useUtils$1(
        props2
      );
      const { t } = useLocale();
      instance.state = {
        onColumnsChange,
        onScrollableChange
      };
      instance.filterPanels = filterPanels;
      return {
        ns,
        t,
        filterPanels,
        onColumnsChange,
        onScrollableChange,
        columnRows,
        getHeaderRowClass,
        getHeaderRowStyle,
        getHeaderCellClass,
        getHeaderCellStyle,
        handleHeaderClick,
        handleHeaderContextMenu,
        handleMouseDown,
        handleMouseMove,
        handleMouseOut,
        handleSortClick,
        handleFilterClick,
        isGroup,
        toggleAllSelection,
        saveIndexSelection,
        isTableLayoutAuto,
        theadRef,
        updateFixedColumnStyle
      };
    },
    render() {
      const {
        ns,
        t,
        isGroup,
        columnRows,
        getHeaderCellStyle,
        getHeaderCellClass,
        getHeaderRowClass,
        getHeaderRowStyle,
        handleHeaderClick,
        handleHeaderContextMenu,
        handleMouseDown,
        handleMouseMove,
        handleSortClick,
        handleMouseOut,
        store,
        $parent,
        saveIndexSelection,
        isTableLayoutAuto
      } = this;
      let rowSpan = 1;
      return h$1(
        "thead",
        {
          ref: "theadRef",
          class: ns.is("group", isGroup)
        },
        columnRows.map(
          (subColumns, rowIndex) => h$1(
            "tr",
            {
              class: getHeaderRowClass(rowIndex),
              key: rowIndex,
              style: getHeaderRowStyle(rowIndex)
            },
            subColumns.map((column, cellIndex) => {
              if (column.rowSpan > rowSpan) {
                rowSpan = column.rowSpan;
              }
              const _class = getHeaderCellClass(
                rowIndex,
                cellIndex,
                subColumns,
                column
              );
              if (isTableLayoutAuto && column.fixed) {
                saveIndexSelection.set(_class, column);
              }
              return h$1(
                "th",
                {
                  class: _class,
                  colspan: column.colSpan,
                  key: `${column.id}-thead`,
                  rowspan: column.rowSpan,
                  scope: column.colSpan > 1 ? "colgroup" : "col",
                  ariaSort: column.sortable ? column.order : void 0,
                  style: getHeaderCellStyle(
                    rowIndex,
                    cellIndex,
                    subColumns,
                    column
                  ),
                  onClick: ($event) => {
                    var _a;
                    if ((_a = $event.currentTarget) == null ? void 0 : _a.classList.contains(
                      "noclick"
                    )) {
                      return;
                    }
                    handleHeaderClick($event, column);
                  },
                  onContextmenu: ($event) => handleHeaderContextMenu($event, column),
                  onMousedown: ($event) => handleMouseDown($event, column),
                  onMousemove: ($event) => handleMouseMove($event, column),
                  onMouseout: handleMouseOut
                },
                [
                  h$1(
                    "div",
                    {
                      class: [
                        "cell",
                        column.filteredValue && column.filteredValue.length > 0 ? "highlight" : ""
                      ]
                    },
                    [
                      column.renderHeader ? column.renderHeader({
                        column,
                        $index: cellIndex,
                        store,
                        _self: $parent
                      }) : column.label,
                      column.sortable && h$1(
                        "button",
                        {
                          type: "button",
                          class: "caret-wrapper",
                          "aria-label": t("el.table.sortLabel", {
                            column: column.label || ""
                          }),
                          onClick: ($event) => handleSortClick($event, column)
                        },
                        [
                          h$1("i", {
                            onClick: ($event) => handleSortClick($event, column, "ascending"),
                            class: "sort-caret ascending"
                          }),
                          h$1("i", {
                            onClick: ($event) => handleSortClick($event, column, "descending"),
                            class: "sort-caret descending"
                          })
                        ]
                      ),
                      column.filterable && h$1(
                        FilterPanel,
                        {
                          store,
                          placement: column.filterPlacement || "bottom-start",
                          appendTo: $parent == null ? void 0 : $parent.appendFilterPanelTo,
                          column,
                          upDataColumn: (key, value) => {
                            column[key] = value;
                          }
                        },
                        {
                          "filter-icon": () => column.renderFilterIcon ? column.renderFilterIcon({
                            filterOpened: column.filterOpened
                          }) : null
                        }
                      )
                    ]
                  )
                ]
              );
            })
          )
        )
      );
    }
  });
  function isGreaterThan(a2, b2, epsilon = 0.03) {
    return a2 - b2 > epsilon;
  }
  function useEvents(props2) {
    const parent2 = inject(TABLE_INJECTION_KEY);
    const tooltipContent = ref("");
    const tooltipTrigger = ref(h$1("div"));
    const handleEvent = (event, row, name) => {
      var _a, _b, _c;
      const table = parent2;
      const cell = getCell(event);
      let column = null;
      const namespace = (_a = table == null ? void 0 : table.vnode.el) == null ? void 0 : _a.dataset.prefix;
      if (cell) {
        column = getColumnByCell(
          {
            columns: (_c = (_b = props2.store) == null ? void 0 : _b.states.columns.value) != null ? _c : []
          },
          cell,
          namespace
        );
        if (column) {
          table == null ? void 0 : table.emit(`cell-${name}`, row, column, cell, event);
        }
      }
      table == null ? void 0 : table.emit(`row-${name}`, row, column, event);
    };
    const handleDoubleClick = (event, row) => {
      handleEvent(event, row, "dblclick");
    };
    const handleClick = (event, row) => {
      var _a;
      (_a = props2.store) == null ? void 0 : _a.commit("setCurrentRow", row);
      handleEvent(event, row, "click");
    };
    const handleContextMenu = (event, row) => {
      handleEvent(event, row, "contextmenu");
    };
    const handleMouseEnter = debounce((index) => {
      var _a;
      (_a = props2.store) == null ? void 0 : _a.commit("setHoverRow", index);
    }, 30);
    const handleMouseLeave = debounce(() => {
      var _a;
      (_a = props2.store) == null ? void 0 : _a.commit("setHoverRow", null);
    }, 30);
    const getPadding = (el) => {
      const style = window.getComputedStyle(el, null);
      const paddingLeft = Number.parseInt(style.paddingLeft, 10) || 0;
      const paddingRight = Number.parseInt(style.paddingRight, 10) || 0;
      const paddingTop = Number.parseInt(style.paddingTop, 10) || 0;
      const paddingBottom = Number.parseInt(style.paddingBottom, 10) || 0;
      return {
        left: paddingLeft,
        right: paddingRight,
        top: paddingTop,
        bottom: paddingBottom
      };
    };
    const toggleRowClassByCell = (rowSpan, event, toggle) => {
      var _a;
      let node = (_a = event == null ? void 0 : event.target) == null ? void 0 : _a.parentNode;
      while (rowSpan > 1) {
        node = node == null ? void 0 : node.nextSibling;
        if (!node || node.nodeName !== "TR") break;
        toggle(node, "hover-row hover-fixed-row");
        rowSpan--;
      }
    };
    const handleCellMouseEnter = (event, row, tooltipOptions) => {
      var _a, _b, _c, _d, _e, _f, _g, _h, _i;
      if (!parent2) return;
      const table = parent2;
      const cell = getCell(event);
      const namespace = (_a = table == null ? void 0 : table.vnode.el) == null ? void 0 : _a.dataset.prefix;
      let column = null;
      if (cell) {
        column = getColumnByCell(
          {
            columns: (_c = (_b = props2.store) == null ? void 0 : _b.states.columns.value) != null ? _c : []
          },
          cell,
          namespace
        );
        if (!column) {
          return;
        }
        if (cell.rowSpan > 1) {
          toggleRowClassByCell(cell.rowSpan, event, addClass);
        }
        const hoverState = table.hoverState = {
          cell,
          column,
          row
        };
        table == null ? void 0 : table.emit(
          "cell-mouse-enter",
          hoverState.row,
          hoverState.column,
          hoverState.cell,
          event
        );
      }
      if (!tooltipOptions) {
        if (((_d = removePopper) == null ? void 0 : _d.trigger) === cell) {
          (_e = removePopper) == null ? void 0 : _e();
        }
        return;
      }
      const cellChild = event.target.querySelector(
        ".cell"
      );
      if (!(hasClass(cellChild, `${namespace}-tooltip`) && cellChild.childNodes.length && ((_f = cellChild.textContent) == null ? void 0 : _f.trim()))) {
        return;
      }
      const range2 = document.createRange();
      range2.setStart(cellChild, 0);
      range2.setEnd(cellChild, cellChild.childNodes.length);
      const { width: rangeWidth, height: rangeHeight } = range2.getBoundingClientRect();
      const { width: cellChildWidth, height: cellChildHeight } = cellChild.getBoundingClientRect();
      const { top, left, right, bottom } = getPadding(cellChild);
      const horizontalPadding = left + right;
      const verticalPadding = top + bottom;
      if (isGreaterThan(rangeWidth + horizontalPadding, cellChildWidth) || isGreaterThan(rangeHeight + verticalPadding, cellChildHeight) || // When using a high-resolution screen, it is possible that a returns cellChild.scrollWidth value of 1921 and
      // cellChildWidth returns a value of 1920.994140625. #16856 #16673
      isGreaterThan(cellChild.scrollWidth, cellChildWidth)) {
        createTablePopper(
          tooltipOptions,
          (_g = (cell == null ? void 0 : cell.innerText) || (cell == null ? void 0 : cell.textContent)) != null ? _g : "",
          row,
          column,
          cell,
          table
        );
      } else if (((_h = removePopper) == null ? void 0 : _h.trigger) === cell) {
        (_i = removePopper) == null ? void 0 : _i();
      }
    };
    const handleCellMouseLeave = (event) => {
      const cell = getCell(event);
      if (!cell) return;
      if (cell.rowSpan > 1) {
        toggleRowClassByCell(cell.rowSpan, event, removeClass);
      }
      const oldHoverState = parent2 == null ? void 0 : parent2.hoverState;
      parent2 == null ? void 0 : parent2.emit(
        "cell-mouse-leave",
        oldHoverState == null ? void 0 : oldHoverState.row,
        oldHoverState == null ? void 0 : oldHoverState.column,
        oldHoverState == null ? void 0 : oldHoverState.cell,
        event
      );
    };
    return {
      handleDoubleClick,
      handleClick,
      handleContextMenu,
      handleMouseEnter,
      handleMouseLeave,
      handleCellMouseEnter,
      handleCellMouseLeave,
      tooltipContent,
      tooltipTrigger
    };
  }
  function useStyles$1(props2) {
    const parent2 = inject(TABLE_INJECTION_KEY);
    const ns = useNamespace("table");
    const getRowStyle = (row, rowIndex) => {
      const rowStyle = parent2 == null ? void 0 : parent2.props.rowStyle;
      if (isFunction$1(rowStyle)) {
        return rowStyle.call(null, {
          row,
          rowIndex
        });
      }
      return rowStyle || null;
    };
    const getRowClass = (row, rowIndex, displayIndex) => {
      var _a;
      const classes = [ns.e("row")];
      if ((parent2 == null ? void 0 : parent2.props.highlightCurrentRow) && row === ((_a = props2.store) == null ? void 0 : _a.states.currentRow.value)) {
        classes.push("current-row");
      }
      if (props2.stripe && displayIndex % 2 === 1) {
        classes.push(ns.em("row", "striped"));
      }
      const rowClassName = parent2 == null ? void 0 : parent2.props.rowClassName;
      if (isString(rowClassName)) {
        classes.push(rowClassName);
      } else if (isFunction$1(rowClassName)) {
        classes.push(
          rowClassName.call(null, {
            row,
            rowIndex
          })
        );
      }
      return classes;
    };
    const getCellStyle = (rowIndex, columnIndex, row, column) => {
      const cellStyle = parent2 == null ? void 0 : parent2.props.cellStyle;
      let cellStyles = cellStyle != null ? cellStyle : {};
      if (isFunction$1(cellStyle)) {
        cellStyles = cellStyle.call(null, {
          rowIndex,
          columnIndex,
          row,
          column
        });
      }
      const fixedStyle = getFixedColumnOffset(
        columnIndex,
        props2 == null ? void 0 : props2.fixed,
        props2.store
      );
      ensurePosition(fixedStyle, "left");
      ensurePosition(fixedStyle, "right");
      return Object.assign({}, cellStyles, fixedStyle);
    };
    const getCellClass = (rowIndex, columnIndex, row, column, offset2) => {
      const fixedClasses = getFixedColumnsClass(
        ns.b(),
        columnIndex,
        props2 == null ? void 0 : props2.fixed,
        props2.store,
        void 0,
        offset2
      );
      const classes = [column.id, column.align, column.className, ...fixedClasses];
      const cellClassName = parent2 == null ? void 0 : parent2.props.cellClassName;
      if (isString(cellClassName)) {
        classes.push(cellClassName);
      } else if (isFunction$1(cellClassName)) {
        classes.push(
          cellClassName.call(null, {
            rowIndex,
            columnIndex,
            row,
            column
          })
        );
      }
      classes.push(ns.e("cell"));
      return classes.filter((className) => Boolean(className)).join(" ");
    };
    const getSpan = (row, column, rowIndex, columnIndex) => {
      let rowspan = 1;
      let colspan = 1;
      const fn2 = parent2 == null ? void 0 : parent2.props.spanMethod;
      if (isFunction$1(fn2)) {
        const result = fn2({
          row,
          column,
          rowIndex,
          columnIndex
        });
        if (isArray$1(result)) {
          rowspan = result[0];
          colspan = result[1];
        } else if (isObject$2(result)) {
          rowspan = result.rowspan;
          colspan = result.colspan;
        }
      }
      return { rowspan, colspan };
    };
    const getColspanRealWidth = (columns2, colspan, index) => {
      if (colspan < 1) {
        return columns2[index].realWidth;
      }
      const widthArr = columns2.map(({ realWidth, width }) => realWidth || width).slice(index, index + colspan);
      return Number(
        widthArr.reduce((acc, width) => Number(acc) + Number(width), -1)
      );
    };
    return {
      getRowStyle,
      getRowClass,
      getCellStyle,
      getCellClass,
      getSpan,
      getColspanRealWidth
    };
  }
  const _hoisted_1$15 = ["colspan", "rowspan"];
  var _sfc_main$1p = /* @__PURE__ */ defineComponent({
    ...{
      name: "TableTdWrapper"
    },
    __name: "td-wrapper",
    props: {
      colspan: {
        type: Number,
        default: 1
      },
      rowspan: {
        type: Number,
        default: 1
      }
    },
    setup(__props) {
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock("td", {
          colspan: __props.colspan,
          rowspan: __props.rowspan
        }, [
          renderSlot(_ctx.$slots, "default")
        ], 8, _hoisted_1$15);
      };
    }
  });
  function useRender$1(props2) {
    const parent2 = inject(TABLE_INJECTION_KEY);
    const ns = useNamespace("table");
    const {
      handleDoubleClick,
      handleClick,
      handleContextMenu,
      handleMouseEnter,
      handleMouseLeave,
      handleCellMouseEnter,
      handleCellMouseLeave,
      tooltipContent,
      tooltipTrigger
    } = useEvents(props2);
    const {
      getRowStyle,
      getRowClass,
      getCellStyle,
      getCellClass,
      getSpan,
      getColspanRealWidth
    } = useStyles$1(props2);
    let displayIndex = -1;
    const firstDefaultColumnIndex = computed(() => {
      var _a;
      return (_a = props2.store) == null ? void 0 : _a.states.columns.value.findIndex(
        ({ type }) => type === "default"
      );
    });
    const getKeyOfRow = (row, index) => {
      var _a;
      const rowKey2 = (_a = parent2 == null ? void 0 : parent2.props) == null ? void 0 : _a.rowKey;
      if (rowKey2) {
        return getRowIdentity(row, rowKey2);
      }
      return index;
    };
    const rowRender = (row, $index, treeRowData, expanded = false) => {
      const { tooltipEffect, tooltipOptions, store } = props2;
      const { indent, columns: columns2 } = store.states;
      const rowClasses = [];
      let display = true;
      if (treeRowData) {
        rowClasses.push(ns.em("row", `level-${treeRowData.level}`));
        display = !!treeRowData.display;
      }
      if ($index === 0) {
        displayIndex = -1;
      }
      if (props2.stripe && display) {
        displayIndex++;
      }
      rowClasses.push(...getRowClass(row, $index, displayIndex));
      const displayStyle = display ? null : { display: "none" };
      return h$1(
        "tr",
        {
          style: [displayStyle, getRowStyle(row, $index)],
          class: rowClasses,
          key: getKeyOfRow(row, $index),
          onDblclick: ($event) => handleDoubleClick($event, row),
          onClick: ($event) => handleClick($event, row),
          onContextmenu: ($event) => handleContextMenu($event, row),
          onMouseenter: () => handleMouseEnter($index),
          onMouseleave: handleMouseLeave
        },
        columns2.value.map((column, cellIndex) => {
          const { rowspan, colspan } = getSpan(row, column, $index, cellIndex);
          if (!rowspan || !colspan) {
            return null;
          }
          const columnData = Object.assign({}, column);
          columnData.realWidth = getColspanRealWidth(
            columns2.value,
            colspan,
            cellIndex
          );
          const data = {
            store,
            _self: props2.context || parent2,
            column: columnData,
            row,
            $index,
            cellIndex,
            expanded
          };
          if (cellIndex === firstDefaultColumnIndex.value && treeRowData) {
            data.treeNode = {
              indent: treeRowData.level && treeRowData.level * indent.value,
              level: treeRowData.level
            };
            if (isBoolean(treeRowData.expanded)) {
              data.treeNode.expanded = treeRowData.expanded;
              if ("loading" in treeRowData) {
                data.treeNode.loading = treeRowData.loading;
              }
              if ("noLazyChildren" in treeRowData) {
                data.treeNode.noLazyChildren = treeRowData.noLazyChildren;
              }
            }
          }
          const baseKey = `${getKeyOfRow(row, $index)},${cellIndex}`;
          const patchKey = columnData.columnKey || columnData.rawColumnKey || "";
          const mergedTooltipOptions = column.showOverflowTooltip && merge(
            {
              effect: tooltipEffect
            },
            tooltipOptions,
            column.showOverflowTooltip
          );
          return h$1(
            _sfc_main$1p,
            {
              style: getCellStyle($index, cellIndex, row, column),
              class: getCellClass($index, cellIndex, row, column, colspan - 1),
              key: `${patchKey}${baseKey}`,
              rowspan,
              colspan,
              onMouseenter: ($event) => handleCellMouseEnter(
                $event,
                row,
                mergedTooltipOptions
              ),
              onMouseleave: handleCellMouseLeave
            },
            {
              default: () => cellChildren(cellIndex, column, data)
            }
          );
        })
      );
    };
    const cellChildren = (_cellIndex, column, data) => {
      return column.renderCell(data);
    };
    const wrappedRowRender = (row, $index) => {
      const store = props2.store;
      const { isRowExpanded, assertRowKey } = store;
      const { treeData, lazyTreeNodeMap, childrenColumnName, rowKey: rowKey2 } = store.states;
      const columns2 = store.states.columns.value;
      const hasExpandColumn = columns2.some(({ type }) => type === "expand");
      if (hasExpandColumn) {
        const expanded = isRowExpanded(row);
        const tr = rowRender(row, $index, void 0, expanded);
        const renderExpanded = parent2 == null ? void 0 : parent2.renderExpanded;
        if (!renderExpanded) {
          console.error("[Element Error]renderExpanded is required.");
          return tr;
        }
        const rows = [[tr]];
        if (parent2.props.preserveExpandedContent || expanded) {
          rows[0].push(
            h$1(
              "tr",
              {
                key: `expanded-row__${tr.key}`,
                style: { display: expanded ? "" : "none" }
              },
              [
                h$1(
                  "td",
                  {
                    colspan: columns2.length,
                    class: `${ns.e("cell")} ${ns.e("expanded-cell")}`
                  },
                  [renderExpanded({ row, $index, store, expanded })]
                )
              ]
            )
          );
        }
        return rows;
      } else if (Object.keys(treeData.value).length) {
        assertRowKey();
        const key = getRowIdentity(row, rowKey2.value);
        let cur = treeData.value[key];
        let treeRowData = null;
        if (cur) {
          treeRowData = {
            expanded: cur.expanded,
            level: cur.level,
            display: true,
            noLazyChildren: void 0,
            loading: void 0
          };
          if (isBoolean(cur.lazy)) {
            if (treeRowData && isBoolean(cur.loaded) && cur.loaded) {
              treeRowData.noLazyChildren = !(cur.children && cur.children.length);
            }
            treeRowData.loading = cur.loading;
          }
        }
        const tmp = [rowRender(row, $index, treeRowData != null ? treeRowData : void 0)];
        if (cur) {
          let i = 0;
          const traverse2 = (children, parent22) => {
            if (!(children && children.length && parent22)) return;
            children.forEach((node) => {
              const innerTreeRowData = {
                display: parent22.display && parent22.expanded,
                level: parent22.level + 1,
                expanded: false,
                noLazyChildren: false,
                loading: false
              };
              const childKey = getRowIdentity(node, rowKey2.value);
              if (isPropAbsent(childKey)) {
                throw new Error("For nested data item, row-key is required.");
              }
              cur = { ...treeData.value[childKey] };
              if (cur) {
                innerTreeRowData.expanded = cur.expanded;
                cur.level = cur.level || innerTreeRowData.level;
                cur.display = !!(cur.expanded && innerTreeRowData.display);
                if (isBoolean(cur.lazy)) {
                  if (isBoolean(cur.loaded) && cur.loaded) {
                    innerTreeRowData.noLazyChildren = !(cur.children && cur.children.length);
                  }
                  innerTreeRowData.loading = cur.loading;
                }
              }
              i++;
              tmp.push(rowRender(node, $index + i, innerTreeRowData));
              if (cur) {
                const nodes2 = lazyTreeNodeMap.value[childKey] || node[childrenColumnName.value];
                traverse2(nodes2, cur);
              }
            });
          };
          cur.display = true;
          const nodes = lazyTreeNodeMap.value[key] || row[childrenColumnName.value];
          traverse2(nodes, cur);
        }
        return tmp;
      } else {
        return rowRender(row, $index, void 0);
      }
    };
    return {
      wrappedRowRender,
      tooltipContent,
      tooltipTrigger
    };
  }
  const defaultProps$3 = {
    store: {
      required: true,
      type: Object
    },
    stripe: Boolean,
    tooltipEffect: String,
    tooltipOptions: {
      type: Object
    },
    context: {
      default: () => ({}),
      type: Object
    },
    rowClassName: [String, Function],
    rowStyle: [Object, Function],
    fixed: {
      type: String,
      default: ""
    },
    highlight: Boolean
  };
  var TableBody = /* @__PURE__ */ defineComponent({
    name: "ElTableBody",
    props: defaultProps$3,
    setup(props2) {
      var _a;
      const instance = getCurrentInstance();
      const parent2 = inject(TABLE_INJECTION_KEY);
      const ns = useNamespace("table");
      const { wrappedRowRender, tooltipContent, tooltipTrigger } = useRender$1(props2);
      const { onColumnsChange, onScrollableChange } = useLayoutObserver(parent2);
      const hoveredCellList = [];
      watch((_a = props2.store) == null ? void 0 : _a.states.hoverRow, (newVal, oldVal) => {
        var _a2, _b;
        const el = instance == null ? void 0 : instance.vnode.el;
        const rows = Array.from((el == null ? void 0 : el.children) || []).filter(
          (e) => e == null ? void 0 : e.classList.contains(`${ns.e("row")}`)
        );
        let rowNum = newVal;
        const childNodes = (_a2 = rows[rowNum]) == null ? void 0 : _a2.childNodes;
        if (childNodes == null ? void 0 : childNodes.length) {
          let control = 0;
          const indexes = Array.from(childNodes).reduce((acc, item, index) => {
            var _a3, _b2;
            if (((_a3 = childNodes[index]) == null ? void 0 : _a3.colSpan) > 1) {
              control = (_b2 = childNodes[index]) == null ? void 0 : _b2.colSpan;
            }
            if (item.nodeName !== "TD" && control === 0) {
              acc.push(index);
            }
            control > 0 && control--;
            return acc;
          }, []);
          indexes.forEach((rowIndex) => {
            var _a3;
            rowNum = newVal;
            while (rowNum > 0) {
              const preChildNodes = (_a3 = rows[rowNum - 1]) == null ? void 0 : _a3.childNodes;
              if (preChildNodes[rowIndex] && preChildNodes[rowIndex].nodeName === "TD" && preChildNodes[rowIndex].rowSpan > 1) {
                addClass(preChildNodes[rowIndex], "hover-cell");
                hoveredCellList.push(preChildNodes[rowIndex]);
                break;
              }
              rowNum--;
            }
          });
        } else {
          hoveredCellList.forEach((item) => removeClass(item, "hover-cell"));
          hoveredCellList.length = 0;
        }
        if (!((_b = props2.store) == null ? void 0 : _b.states.isComplex.value) || !isClient) return;
        rAF(() => {
          const oldRow = rows[oldVal];
          const newRow = rows[newVal];
          if (oldRow && !oldRow.classList.contains("hover-fixed-row")) {
            removeClass(oldRow, "hover-row");
          }
          if (newRow) {
            addClass(newRow, "hover-row");
          }
        });
      });
      onUnmounted(() => {
        var _a2;
        (_a2 = removePopper) == null ? void 0 : _a2();
      });
      return {
        ns,
        onColumnsChange,
        onScrollableChange,
        wrappedRowRender,
        tooltipContent,
        tooltipTrigger
      };
    },
    render() {
      const { wrappedRowRender, store } = this;
      const data = (store == null ? void 0 : store.states.data.value) || [];
      return h$1("tbody", { tabIndex: -1 }, [
        data.reduce((acc, row) => {
          return acc.concat(wrappedRowRender(row, acc.length));
        }, [])
      ]);
    }
  });
  function useMapState() {
    const table = inject(TABLE_INJECTION_KEY);
    const store = table == null ? void 0 : table.store;
    const leftFixedLeafCount = computed(() => {
      var _a;
      return (_a = store == null ? void 0 : store.states.fixedLeafColumnsLength.value) != null ? _a : 0;
    });
    const rightFixedLeafCount = computed(() => {
      var _a;
      return (_a = store == null ? void 0 : store.states.rightFixedColumns.value.length) != null ? _a : 0;
    });
    const columnsCount = computed(() => {
      var _a;
      return (_a = store == null ? void 0 : store.states.columns.value.length) != null ? _a : 0;
    });
    const leftFixedCount = computed(() => {
      var _a;
      return (_a = store == null ? void 0 : store.states.fixedColumns.value.length) != null ? _a : 0;
    });
    const rightFixedCount = computed(() => {
      var _a;
      return (_a = store == null ? void 0 : store.states.rightFixedColumns.value.length) != null ? _a : 0;
    });
    return {
      leftFixedLeafCount,
      rightFixedLeafCount,
      columnsCount,
      leftFixedCount,
      rightFixedCount,
      columns: computed(() => {
        var _a;
        return (_a = store == null ? void 0 : store.states.columns.value) != null ? _a : [];
      })
    };
  }
  function useStyle$1(props2) {
    const { columns: columns2 } = useMapState();
    const ns = useNamespace("table");
    const getCellClasses = (columns22, cellIndex) => {
      const column = columns22[cellIndex];
      const classes = [
        ns.e("cell"),
        column.id,
        column.align,
        column.labelClassName,
        ...getFixedColumnsClass(ns.b(), cellIndex, column.fixed, props2.store)
      ];
      if (column.className) {
        classes.push(column.className);
      }
      if (!column.children) {
        classes.push(ns.is("leaf"));
      }
      return classes;
    };
    const getCellStyles = (column, cellIndex) => {
      const fixedStyle = getFixedColumnOffset(
        cellIndex,
        column.fixed,
        props2.store
      );
      ensurePosition(fixedStyle, "left");
      ensurePosition(fixedStyle, "right");
      return fixedStyle;
    };
    return {
      getCellClasses,
      getCellStyles,
      columns: columns2
    };
  }
  var TableFooter = /* @__PURE__ */ defineComponent({
    name: "ElTableFooter",
    props: {
      fixed: {
        type: String,
        default: ""
      },
      store: {
        required: true,
        type: Object
      },
      summaryMethod: Function,
      sumText: String,
      border: Boolean,
      defaultSort: {
        type: Object,
        default: () => {
          return {
            prop: "",
            order: ""
          };
        }
      }
    },
    setup(props2) {
      const parent2 = inject(TABLE_INJECTION_KEY);
      const ns = useNamespace("table");
      const { getCellClasses, getCellStyles, columns: columns2 } = useStyle$1(
        props2
      );
      const { onScrollableChange, onColumnsChange } = useLayoutObserver(parent2);
      return {
        ns,
        onScrollableChange,
        onColumnsChange,
        getCellClasses,
        getCellStyles,
        columns: columns2
      };
    },
    render() {
      const { columns: columns2, getCellStyles, getCellClasses, summaryMethod, sumText } = this;
      const data = this.store.states.data.value;
      let sums = [];
      if (summaryMethod) {
        sums = summaryMethod({
          columns: columns2,
          data
        });
      } else {
        columns2.forEach((column, index) => {
          if (index === 0) {
            sums[index] = sumText;
            return;
          }
          const values = data.map((item) => Number(item[column.property]));
          const precisions = [];
          let notNumber = true;
          values.forEach((value) => {
            if (!Number.isNaN(+value)) {
              notNumber = false;
              const decimal = `${value}`.split(".")[1];
              precisions.push(decimal ? decimal.length : 0);
            }
          });
          const precision = Math.max.apply(null, precisions);
          if (!notNumber) {
            sums[index] = values.reduce((prev, curr) => {
              const value = Number(curr);
              if (!Number.isNaN(+value)) {
                return Number.parseFloat(
                  (prev + curr).toFixed(Math.min(precision, 20))
                );
              } else {
                return prev;
              }
            }, 0);
          } else {
            sums[index] = "";
          }
        });
      }
      return h$1(
        h$1("tfoot", [
          h$1("tr", {}, [
            ...columns2.map(
              (column, cellIndex) => h$1(
                "td",
                {
                  key: cellIndex,
                  colspan: column.colSpan,
                  rowspan: column.rowSpan,
                  class: getCellClasses(columns2, cellIndex),
                  style: getCellStyles(column, cellIndex)
                },
                [
                  h$1(
                    "div",
                    {
                      class: ["cell", column.labelClassName]
                    },
                    [sums[cellIndex]]
                  )
                ]
              )
            )
          ])
        ])
      );
    }
  });
  function useUtils(store) {
    const setCurrentRow = (row) => {
      store.commit("setCurrentRow", row);
    };
    const getSelectionRows = () => {
      return store.getSelectionRows();
    };
    const toggleRowSelection = (row, selected, ignoreSelectable = true) => {
      store.toggleRowSelection(row, selected, false, ignoreSelectable);
      store.updateAllSelected();
    };
    const clearSelection = () => {
      store.clearSelection();
    };
    const clearFilter = (columnKeys) => {
      store.clearFilter(columnKeys);
    };
    const toggleAllSelection = () => {
      store.commit("toggleAllSelection");
    };
    const toggleRowExpansion = (row, expanded) => {
      store.toggleRowExpansionAdapter(row, expanded);
    };
    const clearSort = () => {
      store.clearSort();
    };
    const sort = (prop, order) => {
      store.commit("sort", { prop, order });
    };
    const updateKeyChildren = (key, data) => {
      store.updateKeyChildren(key, data);
    };
    return {
      setCurrentRow,
      getSelectionRows,
      toggleRowSelection,
      clearSelection,
      clearFilter,
      toggleAllSelection,
      toggleRowExpansion,
      clearSort,
      sort,
      updateKeyChildren
    };
  }
  function useStyle(props2, layout2, store, table) {
    const isHidden2 = ref(false);
    const renderExpanded = ref(null);
    const resizeProxyVisible = ref(false);
    const setDragVisible = (visible) => {
      resizeProxyVisible.value = visible;
    };
    const resizeState = ref({
      width: null,
      height: null,
      headerHeight: null
    });
    const isGroup = ref(false);
    const scrollbarViewStyle = {
      display: "inline-block",
      verticalAlign: "middle"
    };
    const tableWidth = ref();
    const tableScrollHeight = ref(0);
    const bodyScrollHeight = ref(0);
    const headerScrollHeight = ref(0);
    const footerScrollHeight = ref(0);
    const appendScrollHeight = ref(0);
    watch(
      () => props2.height,
      (value) => {
        layout2.setHeight(value != null ? value : null);
      },
      { immediate: true }
    );
    watch(
      () => props2.maxHeight,
      (value) => {
        layout2.setMaxHeight(value != null ? value : null);
      },
      { immediate: true }
    );
    watch(
      () => [props2.currentRowKey, store.states.rowKey],
      ([currentRowKey, rowKey2]) => {
        if (!unref(rowKey2) || !unref(currentRowKey)) return;
        store.setCurrentRowKey(`${currentRowKey}`);
      },
      {
        immediate: true
      }
    );
    watch(
      () => props2.data,
      (data) => {
        table.store.commit("setData", data);
      },
      {
        immediate: true,
        deep: true
      }
    );
    watchEffect(() => {
      if (props2.expandRowKeys) {
        store.setExpandRowKeysAdapter(props2.expandRowKeys);
      }
    });
    const handleMouseLeave = () => {
      table.store.commit("setHoverRow", null);
      if (table.hoverState) table.hoverState = null;
    };
    const handleHeaderFooterMousewheel = (_event2, data) => {
      const { pixelX, pixelY } = data;
      if (Math.abs(pixelX) >= Math.abs(pixelY)) {
        table.refs.bodyWrapper.scrollLeft += data.pixelX / 5;
      }
    };
    const shouldUpdateHeight = computed(() => {
      return props2.height || props2.maxHeight || store.states.fixedColumns.value.length > 0 || store.states.rightFixedColumns.value.length > 0;
    });
    const tableBodyStyles = computed(() => {
      return {
        width: layout2.bodyWidth.value ? `${layout2.bodyWidth.value}px` : ""
      };
    });
    const doLayout = () => {
      if (shouldUpdateHeight.value) {
        layout2.updateElsHeight();
      }
      layout2.updateColumnsWidth();
      if (typeof window === "undefined") return;
      requestAnimationFrame(syncPosition);
    };
    onMounted(async () => {
      await nextTick();
      store.updateColumns();
      bindEvents();
      requestAnimationFrame(doLayout);
      const el = table.vnode.el;
      const tableHeader = table.refs.headerWrapper;
      if (props2.flexible && el && el.parentElement) {
        el.parentElement.style.minWidth = "0";
      }
      resizeState.value = {
        width: tableWidth.value = el.offsetWidth,
        height: el.offsetHeight,
        headerHeight: props2.showHeader && tableHeader ? tableHeader.offsetHeight : null
      };
      store.states.columns.value.forEach((column) => {
        if (column.filteredValue && column.filteredValue.length) {
          table.store.commit("filterChange", {
            column,
            values: column.filteredValue,
            silent: true
          });
        }
      });
      table.$ready = true;
    });
    const setScrollClassByEl = (el, className) => {
      if (!el) return;
      const classList = Array.from(el.classList).filter(
        (item) => !item.startsWith("is-scrolling-")
      );
      classList.push(layout2.scrollX.value ? className : "is-scrolling-none");
      el.className = classList.join(" ");
    };
    const setScrollClass = (className) => {
      const { tableWrapper } = table.refs;
      setScrollClassByEl(tableWrapper, className);
    };
    const hasScrollClass = (className) => {
      const { tableWrapper } = table.refs;
      return !!(tableWrapper && tableWrapper.classList.contains(className));
    };
    const syncPosition = function() {
      if (!table.refs.scrollBarRef) return;
      if (!layout2.scrollX.value) {
        const scrollingNoneClass = "is-scrolling-none";
        if (!hasScrollClass(scrollingNoneClass)) {
          setScrollClass(scrollingNoneClass);
        }
        return;
      }
      const scrollContainer = table.refs.scrollBarRef.wrapRef;
      if (!scrollContainer) return;
      const { scrollLeft, offsetWidth, scrollWidth } = scrollContainer;
      const { headerWrapper, footerWrapper } = table.refs;
      if (headerWrapper) headerWrapper.scrollLeft = scrollLeft;
      if (footerWrapper) footerWrapper.scrollLeft = scrollLeft;
      const maxScrollLeftPosition = scrollWidth - offsetWidth - 1;
      if (scrollLeft >= maxScrollLeftPosition) {
        setScrollClass("is-scrolling-right");
      } else if (scrollLeft === 0) {
        setScrollClass("is-scrolling-left");
      } else {
        setScrollClass("is-scrolling-middle");
      }
    };
    const bindEvents = () => {
      if (!table.refs.scrollBarRef) return;
      if (table.refs.scrollBarRef.wrapRef) {
        useEventListener(
          table.refs.scrollBarRef.wrapRef,
          "scroll",
          syncPosition,
          {
            passive: true
          }
        );
      }
      if (props2.fit) {
        useResizeObserver(table.vnode.el, resizeListener);
      } else {
        useEventListener(window, "resize", resizeListener);
      }
      useResizeObserver(table.refs.tableInnerWrapper, () => {
        var _a, _b;
        resizeListener();
        (_b = (_a = table.refs) == null ? void 0 : _a.scrollBarRef) == null ? void 0 : _b.update();
      });
    };
    const resizeListener = () => {
      var _a, _b, _c, _d;
      const el = table.vnode.el;
      if (!table.$ready || !el) return;
      let shouldUpdateLayout = false;
      const {
        width: oldWidth,
        height: oldHeight,
        headerHeight: oldHeaderHeight
      } = resizeState.value;
      const width = tableWidth.value = el.offsetWidth;
      if (oldWidth !== width) {
        shouldUpdateLayout = true;
      }
      const height = el.offsetHeight;
      if ((props2.height || shouldUpdateHeight.value) && oldHeight !== height) {
        shouldUpdateLayout = true;
      }
      const tableHeader = props2.tableLayout === "fixed" ? table.refs.headerWrapper : (_a = table.refs.tableHeaderRef) == null ? void 0 : _a.$el;
      if (props2.showHeader && (tableHeader == null ? void 0 : tableHeader.offsetHeight) !== oldHeaderHeight) {
        shouldUpdateLayout = true;
      }
      tableScrollHeight.value = ((_b = table.refs.tableWrapper) == null ? void 0 : _b.scrollHeight) || 0;
      headerScrollHeight.value = (tableHeader == null ? void 0 : tableHeader.scrollHeight) || 0;
      footerScrollHeight.value = ((_c = table.refs.footerWrapper) == null ? void 0 : _c.offsetHeight) || 0;
      appendScrollHeight.value = ((_d = table.refs.appendWrapper) == null ? void 0 : _d.offsetHeight) || 0;
      bodyScrollHeight.value = tableScrollHeight.value - headerScrollHeight.value - footerScrollHeight.value - appendScrollHeight.value;
      if (shouldUpdateLayout) {
        resizeState.value = {
          width,
          height,
          headerHeight: props2.showHeader && (tableHeader == null ? void 0 : tableHeader.offsetHeight) || 0
        };
        doLayout();
      }
    };
    const tableSize = useFormSize();
    const bodyWidth = computed(() => {
      const { bodyWidth: bodyWidth_, scrollY, gutterWidth } = layout2;
      return bodyWidth_.value ? `${bodyWidth_.value - (scrollY.value ? gutterWidth : 0)}px` : "";
    });
    const tableLayout = computed(() => {
      if (props2.maxHeight) return "fixed";
      return props2.tableLayout;
    });
    const emptyBlockStyle = computed(() => {
      if (props2.data && props2.data.length) return;
      let height = "100%";
      if (props2.height && bodyScrollHeight.value) {
        height = `${bodyScrollHeight.value}px`;
      }
      const width = tableWidth.value;
      return {
        width: width ? `${width}px` : "",
        height
      };
    });
    const scrollbarStyle = computed(() => {
      if (props2.height) {
        return {
          height: "100%"
        };
      }
      if (props2.maxHeight) {
        if (!Number.isNaN(Number(props2.maxHeight))) {
          return {
            maxHeight: `${+props2.maxHeight - headerScrollHeight.value - footerScrollHeight.value}px`
          };
        } else {
          return {
            maxHeight: `calc(${props2.maxHeight} - ${headerScrollHeight.value + footerScrollHeight.value}px)`
          };
        }
      }
      return {};
    });
    return {
      isHidden: isHidden2,
      renderExpanded,
      setDragVisible,
      isGroup,
      handleMouseLeave,
      handleHeaderFooterMousewheel,
      tableSize,
      emptyBlockStyle,
      resizeProxyVisible,
      bodyWidth,
      resizeState,
      doLayout,
      tableBodyStyles,
      tableLayout,
      scrollbarViewStyle,
      scrollbarStyle
    };
  }
  function useKeyRender(table) {
    let observer;
    const initWatchDom = () => {
      const el = table.vnode.el;
      const columnsWrapper = el.querySelector(".hidden-columns");
      const config = { childList: true, subtree: true };
      const updateOrderFns = table.store.states.updateOrderFns;
      observer = new MutationObserver(() => {
        updateOrderFns.forEach((fn2) => fn2());
      });
      observer.observe(columnsWrapper, config);
    };
    onMounted(() => {
      initWatchDom();
    });
    onUnmounted(() => {
      observer == null ? void 0 : observer.disconnect();
    });
  }
  var defaultProps$2 = {
    /**
     * @description table data
     */
    data: {
      type: Array,
      default: () => []
    },
    /**
     * @description size of Table
     */
    size: useSizeProp,
    width: [String, Number],
    /**
     * @description table's height. By default it has an `auto` height. If its value is a number, the height is measured in pixels; if its value is a string, the value will be assigned to element's style.height, the height is affected by external styles
     */
    height: [String, Number],
    /**
     * @description table's max-height. The legal value is a number or the height in px
     */
    maxHeight: [String, Number],
    /**
     * @description whether width of column automatically fits its container
     */
    fit: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether Table is striped
     */
    stripe: Boolean,
    /**
     * @description whether Table has vertical border
     */
    border: Boolean,
    /**
     * @description key of row data, used for optimizing rendering. Required if `reserve-selection` is on or display tree data. When its type is String, multi-level access is supported, e.g. `user.info.id`, but `user.info[0].id` is not supported, in which case `Function` should be used
     */
    rowKey: [String, Function],
    /**
     * @description whether Table header is visible
     */
    showHeader: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether to display a summary row
     */
    showSummary: Boolean,
    /**
     * @description displayed text for the first column of summary row
     */
    sumText: String,
    /**
     * @description custom summary method
     */
    summaryMethod: Function,
    /**
     * @description function that returns custom class names for a row, or a string assigning class names for every row
     */
    rowClassName: [String, Function],
    /**
     * @description function that returns custom style for a row, or an object assigning custom style for every row
     */
    rowStyle: [Object, Function],
    /**
     * @description function that returns custom class names for a cell, or a string assigning class names for every cell
     */
    cellClassName: [String, Function],
    /**
     * @description function that returns custom style for a cell, or an object assigning custom style for every cell
     */
    cellStyle: [Object, Function],
    /**
     * @description function that returns custom class names for a row in table header, or a string assigning class names for every row in table header
     */
    headerRowClassName: [String, Function],
    /**
     * @description function that returns custom style for a row in table header, or an object assigning custom style for every row in table header
     */
    headerRowStyle: [Object, Function],
    /**
     * @description function that returns custom class names for a cell in table header, or a string assigning class names for every cell in table header
     */
    headerCellClassName: [String, Function],
    /**
     * @description function that returns custom style for a cell in table header, or an object assigning custom style for every cell in table header
     */
    headerCellStyle: [Object, Function],
    /**
     * @description whether current row is highlighted
     */
    highlightCurrentRow: Boolean,
    /**
     * @description key of current row, a set only prop
     */
    currentRowKey: [String, Number],
    /**
     * @description displayed text when data is empty. You can customize this area with `#empty`
     */
    emptyText: String,
    /**
     * @description set expanded rows by this prop, prop's value is the keys of expand rows, you should set row-key before using this prop
     */
    expandRowKeys: Array,
    /**
     * @description whether expand all rows by default, works when the table has a column type="expand" or contains tree structure data
     */
    defaultExpandAll: Boolean,
    /**
     * @description enable expandable rows, works when the table has a column type="expand"
     */
    rowExpandable: {
      type: Function
    },
    /**
     * @description set the default sort column and order. property `prop` is used to set default sort column, property `order` is used to set default sort order
     */
    defaultSort: Object,
    /**
     * @description the `effect` of the overflow tooltip
     */
    tooltipEffect: String,
    /**
     * @description the options for the overflow tooltip, [see the following tooltip component](tooltip.html#attributes)
     */
    tooltipOptions: Object,
    /**
     * @description method that returns rowspan and colspan
     */
    spanMethod: Function,
    /**
     * @description controls the behavior of master checkbox in multi-select tables when only some rows are selected (but not all). If true, all rows will be selected, else deselected
     */
    selectOnIndeterminate: {
      type: Boolean,
      default: true
    },
    /**
     * @description horizontal indentation of tree data
     */
    indent: {
      type: Number,
      default: 16
    },
    /**
     * @description configuration for rendering nested data
     */
    treeProps: {
      type: Object,
      default: () => {
        return {
          hasChildren: "hasChildren",
          children: "children",
          checkStrictly: false
        };
      }
    },
    /**
     * @description whether to lazy loading data
     */
    lazy: Boolean,
    /**
     * @description method for loading child row data, only works when `lazy` is true
     */
    load: Function,
    style: {
      type: [String, Object, Array],
      default: () => ({})
    },
    className: {
      type: String,
      default: ""
    },
    /**
     * @description sets the algorithm used to lay out table cells, rows, and columns
     */
    tableLayout: {
      type: String,
      default: "fixed"
    },
    /**
     * @description always show scrollbar
     */
    scrollbarAlwaysOn: Boolean,
    /**
     * @description ensure main axis minimum-size doesn't follow the content
     */
    flexible: Boolean,
    /**
     * @description whether to hide extra content and show them in a tooltip when hovering on the cell.It will affect all the table columns
     */
    showOverflowTooltip: [Boolean, Object],
    /**
     * @description function that formats cell tooltip content, works when `show-overflow-tooltip` is `true`
     */
    tooltipFormatter: Function,
    appendFilterPanelTo: String,
    scrollbarTabindex: {
      type: [Number, String],
      default: void 0
    },
    /**
     * @description whether to allow drag the last column
     */
    allowDragLastColumn: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether to preserve expanded row content in DOM when collapsed
     */
    preserveExpandedContent: Boolean,
    /**
     * @description whether to use native scrollbars
     */
    nativeScrollbar: Boolean
  };
  function hColgroup(props2) {
    const isAuto = props2.tableLayout === "auto";
    let columns2 = props2.columns || [];
    if (isAuto) {
      if (columns2.every(({ width }) => isUndefined(width))) {
        columns2 = [];
      }
    }
    const getPropsData = (column) => {
      const propsData = {
        key: `${props2.tableLayout}_${column.id}`,
        style: {},
        name: void 0
      };
      if (isAuto) {
        propsData.style = {
          width: `${column.width}px`
        };
      } else {
        propsData.name = column.id;
      }
      return propsData;
    };
    return h$1(
      "colgroup",
      {},
      columns2.map((column) => h$1("col", getPropsData(column)))
    );
  }
  hColgroup.props = ["columns", "tableLayout"];
  const useScrollbar$1 = () => {
    const scrollBarRef = ref();
    const scrollTo = (options, yCoord) => {
      const scrollbar = scrollBarRef.value;
      if (scrollbar) {
        scrollbar.scrollTo(options, yCoord);
      }
    };
    const setScrollPosition = (position, offset2) => {
      const scrollbar = scrollBarRef.value;
      if (scrollbar && isNumber(offset2) && ["Top", "Left"].includes(position)) {
        scrollbar[`setScroll${position}`](offset2);
      }
    };
    const setScrollTop = (top) => setScrollPosition("Top", top);
    const setScrollLeft = (left) => setScrollPosition("Left", left);
    return {
      scrollBarRef,
      scrollTo,
      setScrollTop,
      setScrollLeft
    };
  };
  var v = false, o, f, s, u, d, N, l, p, m, w, D, x, E, M, F;
  function a() {
    if (!v) {
      v = true;
      var e = navigator.userAgent, n = /(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e), i = /(Mac OS X)|(Windows)|(Linux)/.exec(e);
      if (x = /\b(iPhone|iP[ao]d)/.exec(e), E = /\b(iP[ao]d)/.exec(e), w = /Android/i.exec(e), M = /FBAN\/\w+;/i.exec(e), F = /Mobile/i.exec(e), D = !!/Win64/.exec(e), n) {
        o = n[1] ? parseFloat(n[1]) : n[5] ? parseFloat(n[5]) : NaN, o && document && document.documentMode && (o = document.documentMode);
        var r = /(?:Trident\/(\d+.\d+))/.exec(e);
        N = r ? parseFloat(r[1]) + 4 : o, f = n[2] ? parseFloat(n[2]) : NaN, s = n[3] ? parseFloat(n[3]) : NaN, u = n[4] ? parseFloat(n[4]) : NaN, u ? (n = /(?:Chrome\/(\d+\.\d+))/.exec(e), d = n && n[1] ? parseFloat(n[1]) : NaN) : d = NaN;
      } else o = f = s = d = u = NaN;
      if (i) {
        if (i[1]) {
          var t = /(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);
          l = t ? parseFloat(t[1].replace("_", ".")) : true;
        } else l = false;
        p = !!i[2], m = !!i[3];
      } else l = p = m = false;
    }
  }
  var _ = { ie: function() {
    return a() || o;
  }, ieCompatibilityMode: function() {
    return a() || N > o;
  }, ie64: function() {
    return _.ie() && D;
  }, firefox: function() {
    return a() || f;
  }, opera: function() {
    return a() || s;
  }, webkit: function() {
    return a() || u;
  }, safari: function() {
    return _.webkit();
  }, chrome: function() {
    return a() || d;
  }, windows: function() {
    return a() || p;
  }, osx: function() {
    return a() || l;
  }, linux: function() {
    return a() || m;
  }, iphone: function() {
    return a() || x;
  }, mobile: function() {
    return a() || x || E || w || F;
  }, nativeApp: function() {
    return a() || M;
  }, android: function() {
    return a() || w;
  }, ipad: function() {
    return a() || E;
  } }, A = _;
  var c = !!(typeof window < "u" && window.document && window.document.createElement), U = { canUseDOM: c }, h = U;
  var X;
  h.canUseDOM && (X = document.implementation && document.implementation.hasFeature && document.implementation.hasFeature("", "") !== true);
  function S(e, n) {
    if (!h.canUseDOM || n && !("addEventListener" in document)) return false;
    var i = "on" + e, r = i in document;
    if (!r) {
      var t = document.createElement("div");
      t.setAttribute(i, "return;"), r = typeof t[i] == "function";
    }
    return !r && X && e === "wheel" && (r = document.implementation.hasFeature("Events.wheel", "3.0")), r;
  }
  var b = S;
  var O = 10, I = 40, P = 800;
  function T(e) {
    var n = 0, i = 0, r = 0, t = 0;
    return "detail" in e && (i = e.detail), "wheelDelta" in e && (i = -e.wheelDelta / 120), "wheelDeltaY" in e && (i = -e.wheelDeltaY / 120), "wheelDeltaX" in e && (n = -e.wheelDeltaX / 120), "axis" in e && e.axis === e.HORIZONTAL_AXIS && (n = i, i = 0), r = n * O, t = i * O, "deltaY" in e && (t = e.deltaY), "deltaX" in e && (r = e.deltaX), (r || t) && e.deltaMode && (e.deltaMode == 1 ? (r *= I, t *= I) : (r *= P, t *= P)), r && !n && (n = r < 1 ? -1 : 1), t && !i && (i = t < 1 ? -1 : 1), { spinX: n, spinY: i, pixelX: r, pixelY: t };
  }
  T.getEventType = function() {
    return A.firefox() ? "DOMMouseScroll" : b("wheel") ? "wheel" : "mousewheel";
  };
  var Y = T;
  const SCOPE$3 = "_Mousewheel";
  const mousewheel = function(element, callback) {
    if (element && element.addEventListener) {
      removeWheelHandler(element);
      const fn2 = function(event) {
        const normalized = Y(event);
        callback && Reflect.apply(callback, this, [event, normalized]);
      };
      element[SCOPE$3] = { wheelHandler: fn2 };
      element.addEventListener("wheel", fn2, { passive: true });
    }
  };
  const removeWheelHandler = (element) => {
    var _a;
    if ((_a = element[SCOPE$3]) == null ? void 0 : _a.wheelHandler) {
      element.removeEventListener("wheel", element[SCOPE$3].wheelHandler);
      element[SCOPE$3] = null;
    }
  };
  const Mousewheel = {
    beforeMount(el, binding) {
      mousewheel(el, binding.value);
    },
    unmounted(el) {
      removeWheelHandler(el);
    },
    updated(el, binding) {
      if (binding.value !== binding.oldValue) {
        mousewheel(el, binding.value);
      }
    }
  };
  let tableIdSeed = 1;
  var _sfc_main$1o = /* @__PURE__ */ defineComponent({
    name: "ElTable",
    directives: {
      Mousewheel
    },
    components: {
      TableHeader,
      TableBody,
      TableFooter,
      ElScrollbar,
      hColgroup
    },
    props: defaultProps$2,
    emits: [
      "select",
      "select-all",
      "selection-change",
      "cell-mouse-enter",
      "cell-mouse-leave",
      "cell-contextmenu",
      "cell-click",
      "cell-dblclick",
      "row-click",
      "row-contextmenu",
      "row-dblclick",
      "header-click",
      "header-contextmenu",
      "sort-change",
      "filter-change",
      "current-change",
      "header-dragend",
      "expand-change",
      "scroll"
    ],
    setup(props2) {
      const { t } = useLocale();
      const ns = useNamespace("table");
      const table = getCurrentInstance();
      provide(TABLE_INJECTION_KEY, table);
      const store = createStore(table, props2);
      table.store = store;
      const layout2 = new TableLayout({
        store: table.store,
        table,
        fit: props2.fit,
        showHeader: props2.showHeader
      });
      table.layout = layout2;
      const isEmpty2 = computed(() => (store.states.data.value || []).length === 0);
      const {
        setCurrentRow,
        getSelectionRows,
        toggleRowSelection,
        clearSelection,
        clearFilter,
        toggleAllSelection,
        toggleRowExpansion,
        clearSort,
        sort,
        updateKeyChildren
      } = useUtils(store);
      const {
        isHidden: isHidden2,
        renderExpanded,
        setDragVisible,
        isGroup,
        handleMouseLeave,
        handleHeaderFooterMousewheel,
        tableSize,
        emptyBlockStyle,
        resizeProxyVisible,
        bodyWidth,
        resizeState,
        doLayout,
        tableBodyStyles,
        tableLayout,
        scrollbarViewStyle,
        scrollbarStyle
      } = useStyle(props2, layout2, store, table);
      const { scrollBarRef, scrollTo, setScrollLeft, setScrollTop } = useScrollbar$1();
      const debouncedUpdateLayout = debounce(doLayout, 50);
      const tableId = `${ns.namespace.value}-table_${tableIdSeed++}`;
      table.tableId = tableId;
      table.state = {
        isGroup,
        resizeState,
        doLayout,
        debouncedUpdateLayout
      };
      const computedSumText = computed(
        () => {
          var _a;
          return (_a = props2.sumText) != null ? _a : t("el.table.sumText");
        }
      );
      const computedEmptyText = computed(() => {
        var _a;
        return (_a = props2.emptyText) != null ? _a : t("el.table.emptyText");
      });
      const columns2 = computed(() => {
        return convertToRows(store.states.originColumns.value)[0];
      });
      useKeyRender(table);
      onBeforeUnmount(() => {
        debouncedUpdateLayout.cancel();
      });
      return {
        ns,
        layout: layout2,
        store,
        columns: columns2,
        handleHeaderFooterMousewheel,
        handleMouseLeave,
        tableId,
        tableSize,
        isHidden: isHidden2,
        isEmpty: isEmpty2,
        renderExpanded,
        resizeProxyVisible,
        resizeState,
        isGroup,
        bodyWidth,
        tableBodyStyles,
        emptyBlockStyle,
        debouncedUpdateLayout,
        /**
         * @description used in single selection Table, set a certain row selected. If called without any parameter, it will clear selection
         */
        setCurrentRow,
        /**
         * @description returns the currently selected rows
         */
        getSelectionRows,
        /**
         * @description used in multiple selection Table, toggle if a certain row is selected. With the second parameter, you can directly set if this row is selected
         */
        toggleRowSelection,
        /**
         * @description used in multiple selection Table, clear user selection
         */
        clearSelection,
        /**
         * @description clear filters of the columns whose `columnKey` are passed in. If no params, clear all filters
         */
        clearFilter,
        /**
         * @description used in multiple selection Table, toggle select all and deselect all
         */
        toggleAllSelection,
        /**
         * @description used in expandable Table or tree Table, toggle if a certain row is expanded. With the second parameter, you can directly set if this row is expanded or collapsed
         */
        toggleRowExpansion,
        /**
         * @description clear sorting, restore data to the original order
         */
        clearSort,
        /**
         * @description refresh the layout of Table. When the visibility of Table changes, you may need to call this method to get a correct layout
         */
        doLayout,
        /**
         * @description sort Table manually. Property `prop` is used to set sort column, property `order` is used to set sort order
         */
        sort,
        /**
         * @description used in lazy Table, must set `rowKey`, update key children
         */
        updateKeyChildren,
        t,
        setDragVisible,
        context: table,
        computedSumText,
        computedEmptyText,
        tableLayout,
        scrollbarViewStyle,
        scrollbarStyle,
        scrollBarRef,
        /**
         * @description scrolls to a particular set of coordinates
         */
        scrollTo,
        /**
         * @description set horizontal scroll position
         */
        setScrollLeft,
        /**
         * @description set vertical scroll position
         */
        setScrollTop,
        /**
         * @description whether to allow drag the last column
         */
        allowDragLastColumn: props2.allowDragLastColumn
      };
    }
  });
  const _hoisted_1$14 = ["data-prefix"];
  const _hoisted_2$Z = {
    ref: "hiddenColumns",
    class: "hidden-columns"
  };
  function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
    const _component_hColgroup = resolveComponent("hColgroup");
    const _component_table_header = resolveComponent("table-header");
    const _component_table_body = resolveComponent("table-body");
    const _component_table_footer = resolveComponent("table-footer");
    const _component_el_scrollbar = resolveComponent("el-scrollbar");
    const _directive_mousewheel = resolveDirective("mousewheel");
    return openBlock(), createElementBlock("div", {
      ref: "tableWrapper",
      class: normalizeClass([
        {
          [_ctx.ns.m("fit")]: _ctx.fit,
          [_ctx.ns.m("striped")]: _ctx.stripe,
          [_ctx.ns.m("border")]: _ctx.border || _ctx.isGroup,
          [_ctx.ns.m("hidden")]: _ctx.isHidden,
          [_ctx.ns.m("group")]: _ctx.isGroup,
          [_ctx.ns.m("fluid-height")]: _ctx.maxHeight,
          [_ctx.ns.m("scrollable-x")]: _ctx.layout.scrollX.value,
          [_ctx.ns.m("scrollable-y")]: _ctx.layout.scrollY.value,
          [_ctx.ns.m("enable-row-hover")]: !_ctx.store.states.isComplex.value,
          [_ctx.ns.m("enable-row-transition")]: (_ctx.store.states.data.value || []).length !== 0 && (_ctx.store.states.data.value || []).length < 100,
          "has-footer": _ctx.showSummary
        },
        _ctx.ns.m(_ctx.tableSize),
        _ctx.className,
        _ctx.ns.b(),
        _ctx.ns.m(`layout-${_ctx.tableLayout}`)
      ]),
      style: normalizeStyle(_ctx.style),
      "data-prefix": _ctx.ns.namespace.value,
      onMouseleave: _cache[1] || (_cache[1] = (...args) => _ctx.handleMouseLeave && _ctx.handleMouseLeave(...args))
    }, [
      createBaseVNode(
        "div",
        {
          ref: "tableInnerWrapper",
          class: normalizeClass(_ctx.ns.e("inner-wrapper"))
        },
        [
          createBaseVNode(
            "div",
            _hoisted_2$Z,
            [
              renderSlot(_ctx.$slots, "default")
            ],
            512
            /* NEED_PATCH */
          ),
          _ctx.showHeader && _ctx.tableLayout === "fixed" ? withDirectives((openBlock(), createElementBlock(
            "div",
            {
              key: 0,
              ref: "headerWrapper",
              class: normalizeClass(_ctx.ns.e("header-wrapper"))
            },
            [
              createBaseVNode(
                "table",
                {
                  ref: "tableHeader",
                  class: normalizeClass(_ctx.ns.e("header")),
                  style: normalizeStyle(_ctx.tableBodyStyles),
                  border: "0",
                  cellpadding: "0",
                  cellspacing: "0"
                },
                [
                  createVNode(_component_hColgroup, {
                    columns: _ctx.store.states.columns.value,
                    "table-layout": _ctx.tableLayout
                  }, null, 8, ["columns", "table-layout"]),
                  createVNode(_component_table_header, {
                    ref: "tableHeaderRef",
                    border: _ctx.border,
                    "default-sort": _ctx.defaultSort,
                    store: _ctx.store,
                    "append-filter-panel-to": _ctx.appendFilterPanelTo,
                    "allow-drag-last-column": _ctx.allowDragLastColumn,
                    onSetDragVisible: _ctx.setDragVisible
                  }, null, 8, ["border", "default-sort", "store", "append-filter-panel-to", "allow-drag-last-column", "onSetDragVisible"])
                ],
                6
                /* CLASS, STYLE */
              )
            ],
            2
            /* CLASS */
          )), [
            [_directive_mousewheel, _ctx.handleHeaderFooterMousewheel]
          ]) : createCommentVNode("v-if", true),
          createBaseVNode(
            "div",
            {
              ref: "bodyWrapper",
              class: normalizeClass(_ctx.ns.e("body-wrapper"))
            },
            [
              createVNode(_component_el_scrollbar, {
                ref: "scrollBarRef",
                "view-style": _ctx.scrollbarViewStyle,
                "wrap-style": _ctx.scrollbarStyle,
                always: _ctx.scrollbarAlwaysOn,
                tabindex: _ctx.scrollbarTabindex,
                native: _ctx.nativeScrollbar,
                onScroll: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("scroll", $event))
              }, {
                default: withCtx(() => [
                  createBaseVNode(
                    "table",
                    {
                      ref: "tableBody",
                      class: normalizeClass(_ctx.ns.e("body")),
                      cellspacing: "0",
                      cellpadding: "0",
                      border: "0",
                      style: normalizeStyle({
                        width: _ctx.bodyWidth,
                        tableLayout: _ctx.tableLayout
                      })
                    },
                    [
                      createVNode(_component_hColgroup, {
                        columns: _ctx.store.states.columns.value,
                        "table-layout": _ctx.tableLayout
                      }, null, 8, ["columns", "table-layout"]),
                      _ctx.showHeader && _ctx.tableLayout === "auto" ? (openBlock(), createBlock(_component_table_header, {
                        key: 0,
                        ref: "tableHeaderRef",
                        class: normalizeClass(_ctx.ns.e("body-header")),
                        border: _ctx.border,
                        "default-sort": _ctx.defaultSort,
                        store: _ctx.store,
                        "append-filter-panel-to": _ctx.appendFilterPanelTo,
                        onSetDragVisible: _ctx.setDragVisible
                      }, null, 8, ["class", "border", "default-sort", "store", "append-filter-panel-to", "onSetDragVisible"])) : createCommentVNode("v-if", true),
                      createVNode(_component_table_body, {
                        context: _ctx.context,
                        highlight: _ctx.highlightCurrentRow,
                        "row-class-name": _ctx.rowClassName,
                        "tooltip-effect": _ctx.tooltipEffect,
                        "tooltip-options": _ctx.tooltipOptions,
                        "row-style": _ctx.rowStyle,
                        store: _ctx.store,
                        stripe: _ctx.stripe
                      }, null, 8, ["context", "highlight", "row-class-name", "tooltip-effect", "tooltip-options", "row-style", "store", "stripe"]),
                      _ctx.showSummary && _ctx.tableLayout === "auto" ? (openBlock(), createBlock(_component_table_footer, {
                        key: 1,
                        class: normalizeClass(_ctx.ns.e("body-footer")),
                        border: _ctx.border,
                        "default-sort": _ctx.defaultSort,
                        store: _ctx.store,
                        "sum-text": _ctx.computedSumText,
                        "summary-method": _ctx.summaryMethod
                      }, null, 8, ["class", "border", "default-sort", "store", "sum-text", "summary-method"])) : createCommentVNode("v-if", true)
                    ],
                    6
                    /* CLASS, STYLE */
                  ),
                  _ctx.isEmpty ? (openBlock(), createElementBlock(
                    "div",
                    {
                      key: 0,
                      ref: "emptyBlock",
                      style: normalizeStyle(_ctx.emptyBlockStyle),
                      class: normalizeClass(_ctx.ns.e("empty-block"))
                    },
                    [
                      createBaseVNode(
                        "span",
                        {
                          class: normalizeClass(_ctx.ns.e("empty-text"))
                        },
                        [
                          renderSlot(_ctx.$slots, "empty", {}, () => [
                            createTextVNode(
                              toDisplayString(_ctx.computedEmptyText),
                              1
                              /* TEXT */
                            )
                          ])
                        ],
                        2
                        /* CLASS */
                      )
                    ],
                    6
                    /* CLASS, STYLE */
                  )) : createCommentVNode("v-if", true),
                  _ctx.$slots.append ? (openBlock(), createElementBlock(
                    "div",
                    {
                      key: 1,
                      ref: "appendWrapper",
                      class: normalizeClass(_ctx.ns.e("append-wrapper"))
                    },
                    [
                      renderSlot(_ctx.$slots, "append")
                    ],
                    2
                    /* CLASS */
                  )) : createCommentVNode("v-if", true)
                ]),
                _: 3
                /* FORWARDED */
              }, 8, ["view-style", "wrap-style", "always", "tabindex", "native"])
            ],
            2
            /* CLASS */
          ),
          _ctx.showSummary && _ctx.tableLayout === "fixed" ? withDirectives((openBlock(), createElementBlock(
            "div",
            {
              key: 1,
              ref: "footerWrapper",
              class: normalizeClass(_ctx.ns.e("footer-wrapper"))
            },
            [
              createBaseVNode(
                "table",
                {
                  class: normalizeClass(_ctx.ns.e("footer")),
                  cellspacing: "0",
                  cellpadding: "0",
                  border: "0",
                  style: normalizeStyle(_ctx.tableBodyStyles)
                },
                [
                  createVNode(_component_hColgroup, {
                    columns: _ctx.store.states.columns.value,
                    "table-layout": _ctx.tableLayout
                  }, null, 8, ["columns", "table-layout"]),
                  createVNode(_component_table_footer, {
                    border: _ctx.border,
                    "default-sort": _ctx.defaultSort,
                    store: _ctx.store,
                    "sum-text": _ctx.computedSumText,
                    "summary-method": _ctx.summaryMethod
                  }, null, 8, ["border", "default-sort", "store", "sum-text", "summary-method"])
                ],
                6
                /* CLASS, STYLE */
              )
            ],
            2
            /* CLASS */
          )), [
            [vShow, !_ctx.isEmpty],
            [_directive_mousewheel, _ctx.handleHeaderFooterMousewheel]
          ]) : createCommentVNode("v-if", true),
          _ctx.border || _ctx.isGroup ? (openBlock(), createElementBlock(
            "div",
            {
              key: 2,
              class: normalizeClass(_ctx.ns.e("border-left-patch"))
            },
            null,
            2
            /* CLASS */
          )) : createCommentVNode("v-if", true)
        ],
        2
        /* CLASS */
      ),
      withDirectives(createBaseVNode(
        "div",
        {
          ref: "resizeProxy",
          class: normalizeClass(_ctx.ns.e("column-resize-proxy"))
        },
        null,
        2
        /* CLASS */
      ), [
        [vShow, _ctx.resizeProxyVisible]
      ])
    ], 46, _hoisted_1$14);
  }
  var Table = /* @__PURE__ */ _export_sfc$1(_sfc_main$1o, [["render", _sfc_render$4]]);
  const defaultClassNames = {
    selection: "table-column--selection",
    expand: "table__expand-column"
  };
  const cellStarts = {
    default: {
      order: ""
    },
    selection: {
      width: 48,
      minWidth: 48,
      realWidth: 48,
      order: ""
    },
    expand: {
      width: 48,
      minWidth: 48,
      realWidth: 48,
      order: ""
    },
    index: {
      width: 48,
      minWidth: 48,
      realWidth: 48,
      order: ""
    }
  };
  const getDefaultClassName = (type) => {
    return defaultClassNames[type] || "";
  };
  const cellForced = {
    selection: {
      renderHeader({ store }) {
        var _a;
        function isDisabled() {
          return store.states.data.value && store.states.data.value.length === 0;
        }
        return h$1(ElCheckbox, {
          disabled: isDisabled(),
          size: store.states.tableSize.value,
          indeterminate: store.states.selection.value.length > 0 && !store.states.isAllSelected.value,
          "onUpdate:modelValue": (_a = store.toggleAllSelection) != null ? _a : void 0,
          modelValue: store.states.isAllSelected.value,
          ariaLabel: store.t("el.table.selectAllLabel")
        });
      },
      renderCell({
        row,
        column,
        store,
        $index
      }) {
        return h$1(ElCheckbox, {
          disabled: column.selectable ? !column.selectable.call(null, row, $index) : false,
          size: store.states.tableSize.value,
          onChange: () => {
            store.commit("rowSelectedChanged", row);
          },
          onClick: (event) => event.stopPropagation(),
          modelValue: store.isSelected(row),
          ariaLabel: store.t("el.table.selectRowLabel")
        });
      },
      sortable: false,
      resizable: false
    },
    index: {
      renderHeader({
        column
      }) {
        return column.label || "#";
      },
      renderCell({
        column,
        $index
      }) {
        let i = $index + 1;
        const index = column.index;
        if (isNumber(index)) {
          i = $index + index;
        } else if (isFunction$1(index)) {
          i = index($index);
        }
        return h$1("div", {}, [i]);
      },
      sortable: false
    },
    expand: {
      renderHeader({
        column
      }) {
        return column.label || "";
      },
      renderCell({
        column,
        row,
        store,
        expanded,
        $index
      }) {
        var _a, _b, _c;
        const { ns } = store;
        const classes = [ns.e("expand-icon")];
        if (!column.renderExpand && expanded) {
          classes.push(ns.em("expand-icon", "expanded"));
        }
        const callback = function(e) {
          e.stopPropagation();
          store.toggleRowExpansion(row);
        };
        const isRowExpandable = (_c = (_b = (_a = store.states.rowExpandable).value) == null ? void 0 : _b.call(_a, row, $index)) != null ? _c : true;
        if (!isRowExpandable) {
          classes.push(ns.is("disabled"));
        }
        return h$1(
          "button",
          {
            type: "button",
            disabled: !isRowExpandable,
            "aria-label": store.t(
              expanded ? "el.table.collapseRowLabel" : "el.table.expandRowLabel"
            ),
            "aria-expanded": expanded,
            class: classes,
            onClick: callback
          },
          {
            default: () => {
              if (column.renderExpand) {
                return [
                  column.renderExpand({
                    expanded,
                    expandable: isRowExpandable
                  })
                ];
              }
              return [
                h$1(ElIcon, null, {
                  default: () => {
                    return [h$1(arrow_right_default)];
                  }
                })
              ];
            }
          }
        );
      },
      sortable: false,
      resizable: false
    }
  };
  function defaultRenderCell({
    row,
    column,
    $index
  }) {
    var _a;
    const property2 = column.property;
    const value = property2 && getProp(row, property2).value;
    if (column && column.formatter) {
      return column.formatter(row, column, value, $index);
    }
    return ((_a = value == null ? void 0 : value.toString) == null ? void 0 : _a.call(value)) || "";
  }
  function treeCellPrefix({
    row,
    treeNode,
    store
  }, createPlaceholder = false) {
    const { ns } = store;
    if (!treeNode) {
      if (createPlaceholder) {
        return [
          h$1("span", {
            class: ns.e("placeholder")
          })
        ];
      }
      return null;
    }
    const ele = [];
    const callback = function(e) {
      e.stopPropagation();
      if (treeNode.loading) {
        return;
      }
      store.loadOrToggle(row);
    };
    if (treeNode.indent) {
      ele.push(
        h$1("span", {
          class: ns.e("indent"),
          style: { "padding-left": `${treeNode.indent}px` }
        })
      );
    }
    if (isBoolean(treeNode.expanded) && !treeNode.noLazyChildren) {
      const expandClasses = [
        ns.e("expand-icon"),
        treeNode.expanded ? ns.em("expand-icon", "expanded") : ""
      ];
      let icon = arrow_right_default;
      if (treeNode.loading) {
        icon = loading_default;
      }
      ele.push(
        h$1(
          "button",
          {
            type: "button",
            "aria-label": store.t(
              treeNode.expanded ? "el.table.collapseRowLabel" : "el.table.expandRowLabel"
            ),
            "aria-expanded": treeNode.expanded,
            class: expandClasses,
            onClick: callback
          },
          {
            default: () => {
              return [
                h$1(
                  ElIcon,
                  { class: ns.is("loading", treeNode.loading) },
                  {
                    default: () => [h$1(icon)]
                  }
                )
              ];
            }
          }
        )
      );
    } else {
      ele.push(
        h$1("span", {
          class: ns.e("placeholder")
        })
      );
    }
    return ele;
  }
  function getAllAliases(props2, aliases) {
    return props2.reduce((prev, cur) => {
      prev[cur] = cur;
      return prev;
    }, aliases);
  }
  function useWatcher(owner, props_) {
    const instance = getCurrentInstance();
    const registerComplexWatchers = () => {
      const props2 = ["fixed"];
      const aliases = {
        realWidth: "width",
        realMinWidth: "minWidth"
      };
      const allAliases = getAllAliases(props2, aliases);
      Object.keys(allAliases).forEach((key) => {
        const columnKey = aliases[key];
        if (hasOwn(props_, columnKey)) {
          watch(
            () => props_[columnKey],
            (newVal) => {
              let value = newVal;
              if (columnKey === "width" && key === "realWidth") {
                value = parseWidth(newVal);
              }
              if (columnKey === "minWidth" && key === "realMinWidth") {
                value = parseMinWidth(newVal);
              }
              instance.columnConfig.value[columnKey] = value;
              instance.columnConfig.value[key] = value;
              const updateColumns = columnKey === "fixed";
              owner.value.store.scheduleLayout(updateColumns);
            }
          );
        }
      });
    };
    const registerNormalWatchers = () => {
      const props2 = [
        "label",
        "filters",
        "filterMultiple",
        "filteredValue",
        "sortable",
        "index",
        "formatter",
        "className",
        "labelClassName",
        "filterClassName",
        "showOverflowTooltip",
        "tooltipFormatter",
        "resizable"
      ];
      const parentProps = ["showOverflowTooltip"];
      const aliases = {
        property: "prop",
        align: "realAlign",
        headerAlign: "realHeaderAlign"
      };
      const allAliases = getAllAliases(props2, aliases);
      Object.keys(allAliases).forEach((key) => {
        const columnKey = aliases[key];
        if (hasOwn(props_, columnKey)) {
          watch(
            () => props_[columnKey],
            (newVal) => {
              instance.columnConfig.value[key] = newVal;
              if (key === "filters" || key === "filterMethod") {
                instance.columnConfig.value["filterable"] = !!(instance.columnConfig.value["filters"] || instance.columnConfig.value["filterMethod"]);
              }
            }
          );
        }
      });
      parentProps.forEach((key) => {
        if (hasOwn(owner.value.props, key)) {
          watch(
            () => owner.value.props[key],
            (newVal) => {
              if (instance.columnConfig.value.type === "selection") return;
              if (!isUndefined(props_[key])) return;
              instance.columnConfig.value[key] = newVal;
            }
          );
        }
      });
    };
    return {
      registerComplexWatchers,
      registerNormalWatchers
    };
  }
  function useRender(props2, slots, owner) {
    const instance = getCurrentInstance();
    const columnId = ref("");
    const isSubColumn = ref(false);
    const realAlign = ref();
    const realHeaderAlign = ref();
    const ns = useNamespace("table");
    watchEffect(() => {
      realAlign.value = props2.align ? `is-${props2.align}` : null;
      realAlign.value;
    });
    watchEffect(() => {
      realHeaderAlign.value = props2.headerAlign ? `is-${props2.headerAlign}` : realAlign.value;
      realHeaderAlign.value;
    });
    const columnOrTableParent = computed(() => {
      let parent2 = instance.vnode.vParent || instance.parent;
      while (parent2 && !parent2.tableId && !parent2.columnId) {
        parent2 = parent2.vnode.vParent || parent2.parent;
      }
      return parent2;
    });
    const hasTreeColumn = computed(() => {
      const { store } = instance.parent;
      if (!store) return false;
      const { treeData } = store.states;
      const treeDataValue = treeData.value;
      return treeDataValue && Object.keys(treeDataValue).length > 0;
    });
    const realWidth = ref(parseWidth(props2.width));
    const realMinWidth = ref(parseMinWidth(props2.minWidth));
    const setColumnWidth = (column) => {
      if (realWidth.value) column.width = realWidth.value;
      if (realMinWidth.value) {
        column.minWidth = realMinWidth.value;
      }
      if (!realWidth.value && realMinWidth.value) {
        column.width = void 0;
      }
      if (!column.minWidth) {
        column.minWidth = 80;
      }
      column.realWidth = Number(
        isUndefined(column.width) ? column.minWidth : column.width
      );
      return column;
    };
    const setColumnForcedProps = (column) => {
      const type = column.type;
      const source = cellForced[type] || {};
      Object.keys(source).forEach((prop) => {
        const value = source[prop];
        if (prop !== "className" && !isUndefined(value)) {
          column[prop] = value;
        }
      });
      const className = getDefaultClassName(type);
      if (className) {
        const forceClass = `${unref(ns.namespace)}-${className}`;
        column.className = column.className ? `${column.className} ${forceClass}` : forceClass;
      }
      return column;
    };
    const checkSubColumn = (children) => {
      if (isArray$1(children)) {
        children.forEach((child) => check(child));
      } else {
        check(children);
      }
      function check(item) {
        var _a;
        if (((_a = item == null ? void 0 : item.type) == null ? void 0 : _a.name) === "ElTableColumn") {
          item.vParent = instance;
        }
      }
    };
    const setColumnRenders = (column) => {
      if (props2.renderHeader) ;
      else if (column.type !== "selection") {
        column.renderHeader = (scope) => {
          instance.columnConfig.value["label"];
          if (slots.header) {
            const slotResult = slots.header(scope);
            if (ensureValidVNode(slotResult)) {
              return h$1(Fragment, slotResult);
            }
          }
          return createTextVNode(column.label);
        };
      }
      if (slots["filter-icon"]) {
        column.renderFilterIcon = (scope) => {
          return renderSlot(slots, "filter-icon", scope);
        };
      }
      if (slots.expand) {
        column.renderExpand = (scope) => {
          return renderSlot(slots, "expand", scope);
        };
      }
      let originRenderCell = column.renderCell;
      if (column.type === "expand") {
        column.renderCell = (data) => h$1(
          "div",
          {
            class: "cell"
          },
          [originRenderCell(data)]
        );
        owner.value.renderExpanded = (row) => {
          return slots.default ? slots.default(row) : slots.default;
        };
      } else {
        originRenderCell = originRenderCell || defaultRenderCell;
        column.renderCell = (data) => {
          let children = null;
          if (slots.default) {
            const vnodes = slots.default(data);
            children = vnodes.some((v2) => v2.type !== Comment) ? vnodes : originRenderCell(data);
          } else {
            children = originRenderCell(data);
          }
          const { columns: columns2 } = owner.value.store.states;
          const firstUserColumnIndex = columns2.value.findIndex(
            (item) => item.type === "default"
          );
          const shouldCreatePlaceholder = hasTreeColumn.value && data.cellIndex === firstUserColumnIndex;
          const prefix = treeCellPrefix(data, shouldCreatePlaceholder);
          const props22 = {
            class: "cell",
            style: {}
          };
          if (column.showOverflowTooltip) {
            props22.class = `${props22.class} ${unref(ns.namespace)}-tooltip`;
            props22.style = {
              width: `${(data.column.realWidth || Number(data.column.width)) - 1}px`
            };
          }
          checkSubColumn(children);
          return h$1("div", props22, [prefix, children]);
        };
      }
      return column;
    };
    const getPropsData = (...propsKey) => {
      return propsKey.reduce(
        (prev, cur) => {
          if (isArray$1(cur)) {
            cur.forEach((key) => {
              prev[key] = props2[key];
            });
          }
          return prev;
        },
        {}
      );
    };
    const getColumnElIndex = (children, child) => {
      return Array.prototype.indexOf.call(children, child);
    };
    const updateColumnOrder = () => {
      owner.value.store.commit("updateColumnOrder", instance.columnConfig.value);
    };
    return {
      columnId,
      realAlign,
      isSubColumn,
      realHeaderAlign,
      columnOrTableParent,
      setColumnWidth,
      setColumnForcedProps,
      setColumnRenders,
      getPropsData,
      getColumnElIndex,
      updateColumnOrder
    };
  }
  var defaultProps$1 = {
    /**
     * @description type of the column. If set to `selection`, the column will display checkbox. If set to `index`, the column will display index of the row (staring from 1). If set to `expand`, the column will display expand icon
     */
    type: {
      type: String,
      default: "default"
    },
    /**
     * @description column label
     */
    label: String,
    /**
     * @description class name of cells in the column
     */
    className: String,
    /**
     * @description class name of the label of this column
     */
    labelClassName: String,
    /**
     * @description
     */
    property: String,
    /**
     * @description field name. You can also use its alias: `property`
     */
    prop: String,
    /**
     * @description column width
     */
    width: {
      type: [String, Number],
      default: ""
    },
    /**
     * @description column minimum width. Columns with `width` has a fixed width, while columns with `min-width` has a width that is distributed in proportion
     */
    minWidth: {
      type: [String, Number],
      default: ""
    },
    /**
     * @description render function for table header of this column
     */
    renderHeader: Function,
    /**
     * @description whether column can be sorted. Remote sorting can be done by setting this attribute to 'custom' and listening to the `sort-change` event of Table
     */
    sortable: {
      type: [Boolean, String],
      default: false
    },
    /**
     * @description sorting method, works when `sortable` is `true`. Should return a number, just like Array.sort
     */
    sortMethod: Function,
    /**
     * @description specify which property to sort by, works when `sortable` is `true` and `sort-method` is `undefined`. If set to an Array, the column will sequentially sort by the next property if the previous one is equal
     */
    sortBy: [String, Function, Array],
    /**
     * @description whether column width can be resized, works when `border` of `el-table` is `true`
     */
    resizable: {
      type: Boolean,
      default: true
    },
    /**
     * @description column's key. If you need to use the filter-change event, you need this attribute to identify which column is being filtered
     */
    columnKey: String,
    /**
     * @description alignment, the value should be 'left' \/ 'center' \/ 'right'
     */
    align: String,
    /**
     * @description alignment of the table header. If omitted, the value of the above `align` attribute will be applied, the value should be 'left' \/ 'center' \/ 'right'
     */
    headerAlign: String,
    /**
     * @description whether to hide extra content and show them in a tooltip when hovering on the cell
     */
    showOverflowTooltip: {
      type: [Boolean, Object],
      default: void 0
    },
    /**
     * @description function that formats cell tooltip content, works when `show-overflow-tooltip` is `true`
     */
    tooltipFormatter: Function,
    /**
     * @description whether column is fixed at left / right. Will be fixed at left if `true`
     */
    fixed: [Boolean, String],
    /**
     * @description function that formats cell content
     */
    formatter: Function,
    /**
     * @description function that determines if a certain row can be selected, works when `type` is 'selection'
     */
    selectable: Function,
    /**
     * @description whether to reserve selection after data refreshing, works when `type` is 'selection'. Note that `row-key` is required for this to work
     */
    reserveSelection: Boolean,
    /**
     * @description data filtering method. If `filter-multiple` is on, this method will be called multiple times for each row, and a row will display if one of the calls returns `true`
     */
    filterMethod: Function,
    /**
     * @description filter value for selected data, might be useful when table header is rendered with `render-header`
     */
    filteredValue: Array,
    /**
     * @description an array of data filtering options. For each element in this array, `text` and `value` are required
     */
    filters: Array,
    /**
     * @description placement for the filter dropdown
     */
    filterPlacement: String,
    /**
     * @description whether data filtering supports multiple options
     */
    filterMultiple: {
      type: Boolean,
      default: true
    },
    /**
     * @description className for the filter dropdown
     */
    filterClassName: String,
    /**
     * @description customize indices for each row, works on columns with `type=index`
     */
    index: [Number, Function],
    /**
     * @description the order of the sorting strategies used when sorting the data, works when `sortable` is `true`. Accepts an array, as the user clicks on the header, the column is sorted in order of the elements in the array
     */
    sortOrders: {
      type: Array,
      default: () => {
        return ["ascending", "descending", null];
      },
      validator: (val) => {
        return val.every(
          (order) => ["ascending", "descending", null].includes(order)
        );
      }
    }
  };
  let columnIdSeed = 1;
  var ElTableColumn$1 = /* @__PURE__ */ defineComponent({
    name: "ElTableColumn",
    components: {
      ElCheckbox
    },
    props: defaultProps$1,
    setup(props2, { slots }) {
      const instance = getCurrentInstance();
      const columnConfig = ref({});
      const owner = computed(() => {
        let parent22 = instance.parent;
        while (parent22 && !parent22.tableId) {
          parent22 = parent22.parent;
        }
        return parent22;
      });
      const { registerNormalWatchers, registerComplexWatchers } = useWatcher(
        owner,
        props2
      );
      const {
        columnId,
        isSubColumn,
        realHeaderAlign,
        columnOrTableParent,
        setColumnWidth,
        setColumnForcedProps,
        setColumnRenders,
        getPropsData,
        getColumnElIndex,
        realAlign,
        updateColumnOrder
      } = useRender(props2, slots, owner);
      const parent2 = columnOrTableParent.value;
      columnId.value = `${"tableId" in parent2 && parent2.tableId || "columnId" in parent2 && parent2.columnId}_column_${columnIdSeed++}`;
      onBeforeMount(() => {
        isSubColumn.value = owner.value !== parent2;
        const type = props2.type || "default";
        const sortable = props2.sortable === "" ? true : props2.sortable;
        const showOverflowTooltip = type === "selection" ? false : isUndefined(props2.showOverflowTooltip) ? parent2.props.showOverflowTooltip : props2.showOverflowTooltip;
        const tooltipFormatter = isUndefined(props2.tooltipFormatter) ? parent2.props.tooltipFormatter : props2.tooltipFormatter;
        const defaults = {
          ...cellStarts[type],
          id: columnId.value,
          type,
          property: props2.prop || props2.property,
          align: realAlign,
          headerAlign: realHeaderAlign,
          showOverflowTooltip,
          tooltipFormatter,
          // filter 相关属性
          filterable: props2.filters || props2.filterMethod,
          filteredValue: [],
          filterPlacement: "",
          filterClassName: "",
          isColumnGroup: false,
          isSubColumn: false,
          filterOpened: false,
          // sort 相关属性
          sortable,
          // index 列
          index: props2.index,
          // <el-table-column key="xxx" />
          rawColumnKey: instance.vnode.key
        };
        const basicProps = [
          "columnKey",
          "label",
          "className",
          "labelClassName",
          "type",
          "renderHeader",
          "formatter",
          "fixed",
          "resizable"
        ];
        const sortProps = ["sortMethod", "sortBy", "sortOrders"];
        const selectProps2 = ["selectable", "reserveSelection"];
        const filterProps = [
          "filterMethod",
          "filters",
          "filterMultiple",
          "filterOpened",
          "filteredValue",
          "filterPlacement",
          "filterClassName"
        ];
        let column = getPropsData(basicProps, sortProps, selectProps2, filterProps);
        column = mergeOptions(defaults, column);
        const chains = compose(
          setColumnRenders,
          setColumnWidth,
          setColumnForcedProps
        );
        column = chains(column);
        columnConfig.value = column;
        registerNormalWatchers();
        registerComplexWatchers();
      });
      onMounted(() => {
        var _a, _b;
        const parent22 = columnOrTableParent.value;
        const children = isSubColumn.value ? (_a = parent22.vnode.el) == null ? void 0 : _a.children : (_b = parent22.refs.hiddenColumns) == null ? void 0 : _b.children;
        const getColumnIndex = () => getColumnElIndex(children || [], instance.vnode.el);
        columnConfig.value.getColumnIndex = getColumnIndex;
        const columnIndex = getColumnIndex();
        columnIndex > -1 && owner.value.store.commit(
          "insertColumn",
          columnConfig.value,
          isSubColumn.value ? "columnConfig" in parent22 && parent22.columnConfig.value : null,
          updateColumnOrder
        );
      });
      onBeforeUnmount(() => {
        const getColumnIndex = columnConfig.value.getColumnIndex;
        const columnIndex = getColumnIndex ? getColumnIndex() : -1;
        columnIndex > -1 && owner.value.store.commit(
          "removeColumn",
          columnConfig.value,
          isSubColumn.value ? "columnConfig" in parent2 && parent2.columnConfig.value : null,
          updateColumnOrder
        );
      });
      instance.columnId = columnId.value;
      instance.columnConfig = columnConfig;
      return;
    },
    render() {
      var _a, _b, _c;
      try {
        const renderDefault = (_b = (_a = this.$slots).default) == null ? void 0 : _b.call(_a, {
          row: {},
          column: {},
          $index: -1
        });
        const children = [];
        if (isArray$1(renderDefault)) {
          for (const childNode of renderDefault) {
            if (((_c = childNode.type) == null ? void 0 : _c.name) === "ElTableColumn" || childNode.shapeFlag & 2) {
              children.push(childNode);
            } else if (childNode.type === Fragment && isArray$1(childNode.children)) {
              childNode.children.forEach((vnode2) => {
                if ((vnode2 == null ? void 0 : vnode2.patchFlag) !== 1024 && !isString(vnode2 == null ? void 0 : vnode2.children)) {
                  children.push(vnode2);
                }
              });
            }
          }
        }
        const vnode = h$1("div", children);
        return vnode;
      } catch (e) {
        return h$1("div", []);
      }
    }
  });
  const ElTable = withInstall(Table, {
    TableColumn: ElTableColumn$1
  });
  const ElTableColumn = withNoopInstall(ElTableColumn$1);
  var SortOrder = /* @__PURE__ */ ((SortOrder2) => {
    SortOrder2["ASC"] = "asc";
    SortOrder2["DESC"] = "desc";
    return SortOrder2;
  })(SortOrder || {});
  var Alignment = /* @__PURE__ */ ((Alignment2) => {
    Alignment2["LEFT"] = "left";
    Alignment2["CENTER"] = "center";
    Alignment2["RIGHT"] = "right";
    return Alignment2;
  })(Alignment || {});
  var FixedDir = /* @__PURE__ */ ((FixedDir2) => {
    FixedDir2["LEFT"] = "left";
    FixedDir2["RIGHT"] = "right";
    return FixedDir2;
  })(FixedDir || {});
  const oppositeOrderMap = {
    [
      "asc"
      /* ASC */
    ]: "desc",
    [
      "desc"
      /* DESC */
    ]: "asc"
    /* ASC */
  };
  const placeholderSign = /* @__PURE__ */ Symbol("placeholder");
  const calcColumnStyle = (column, fixedColumn, fixed) => {
    var _a, _b, _c;
    const flex = {
      flexGrow: 0,
      flexShrink: 0,
      ...fixed ? {} : {
        flexGrow: (_a = column.flexGrow) != null ? _a : 0,
        flexShrink: (_b = column.flexShrink) != null ? _b : 1
      }
    };
    const style = {
      ...(_c = column.style) != null ? _c : {},
      ...flex,
      flexBasis: "auto",
      width: column.width
    };
    if (!fixedColumn) {
      if (column.maxWidth) style.maxWidth = column.maxWidth;
      if (column.minWidth) style.minWidth = column.minWidth;
    }
    return style;
  };
  function useColumns(props2, columns2, fixed) {
    const _columns = computed(
      () => unref(columns2).map((column, index) => {
        var _a, _b;
        return {
          ...column,
          key: (_b = (_a = column.key) != null ? _a : column.dataKey) != null ? _b : index
        };
      })
    );
    const visibleColumns = computed(() => {
      return unref(_columns).filter((column) => !column.hidden);
    });
    const fixedColumnsOnLeft = computed(
      () => unref(visibleColumns).filter(
        (column) => column.fixed === "left" || column.fixed === true
      )
    );
    const fixedColumnsOnRight = computed(
      () => unref(visibleColumns).filter((column) => column.fixed === "right")
    );
    const normalColumns = computed(
      () => unref(visibleColumns).filter((column) => !column.fixed)
    );
    const mainColumns = computed(() => {
      const ret = [];
      unref(fixedColumnsOnLeft).forEach((column) => {
        ret.push({
          ...column,
          placeholderSign
        });
      });
      unref(normalColumns).forEach((column) => {
        ret.push(column);
      });
      unref(fixedColumnsOnRight).forEach((column) => {
        ret.push({
          ...column,
          placeholderSign
        });
      });
      return ret;
    });
    const hasFixedColumns = computed(() => {
      return unref(fixedColumnsOnLeft).length || unref(fixedColumnsOnRight).length;
    });
    const columnsStyles = computed(() => {
      return unref(_columns).reduce(
        (style, column) => {
          style[column.key] = calcColumnStyle(column, unref(fixed), props2.fixed);
          return style;
        },
        {}
      );
    });
    const columnsTotalWidth = computed(() => {
      return unref(visibleColumns).reduce(
        (width, column) => width + column.width,
        0
      );
    });
    const getColumn = (key) => {
      return unref(_columns).find((column) => column.key === key);
    };
    const getColumnStyle = (key) => {
      return unref(columnsStyles)[key];
    };
    const updateColumnWidth = (column, width) => {
      column.width = width;
    };
    function onColumnSorted(e) {
      var _a;
      const { key } = e.currentTarget.dataset;
      if (!key) return;
      const { sortState, sortBy } = props2;
      let order = SortOrder.ASC;
      if (isObject$2(sortState)) {
        order = oppositeOrderMap[sortState[key]];
      } else {
        order = oppositeOrderMap[sortBy.order];
      }
      (_a = props2.onColumnSort) == null ? void 0 : _a.call(props2, { column: getColumn(key), key, order });
    }
    return {
      columns: _columns,
      columnsStyles,
      columnsTotalWidth,
      fixedColumnsOnLeft,
      fixedColumnsOnRight,
      hasFixedColumns,
      mainColumns,
      normalColumns,
      visibleColumns,
      getColumn,
      getColumnStyle,
      updateColumnWidth,
      onColumnSorted
    };
  }
  const useScrollbar = (props2, {
    mainTableRef,
    leftTableRef,
    rightTableRef,
    onMaybeEndReached
  }) => {
    const scrollPos = ref({ scrollLeft: 0, scrollTop: 0 });
    function doScroll(params) {
      var _a, _b, _c;
      const { scrollTop } = params;
      (_a = mainTableRef.value) == null ? void 0 : _a.scrollTo(params);
      (_b = leftTableRef.value) == null ? void 0 : _b.scrollToTop(scrollTop);
      (_c = rightTableRef.value) == null ? void 0 : _c.scrollToTop(scrollTop);
    }
    function scrollTo(params) {
      scrollPos.value = params;
      doScroll(params);
    }
    function scrollToTop(scrollTop) {
      scrollPos.value.scrollTop = scrollTop;
      doScroll(unref(scrollPos));
    }
    function scrollToLeft(scrollLeft) {
      var _a, _b;
      scrollPos.value.scrollLeft = scrollLeft;
      (_b = (_a = mainTableRef.value) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, unref(scrollPos));
    }
    function onScroll(params) {
      var _a;
      scrollTo(params);
      (_a = props2.onScroll) == null ? void 0 : _a.call(props2, params);
    }
    function onVerticalScroll({ scrollTop }) {
      const { scrollTop: currentScrollTop } = unref(scrollPos);
      if (scrollTop !== currentScrollTop) scrollToTop(scrollTop);
    }
    function scrollToRow(row, strategy = "auto") {
      var _a;
      (_a = mainTableRef.value) == null ? void 0 : _a.scrollToRow(row, strategy);
    }
    watch(
      () => unref(scrollPos).scrollTop,
      (cur, prev) => {
        if (cur > prev) onMaybeEndReached();
      }
    );
    return {
      scrollPos,
      scrollTo,
      scrollToLeft,
      scrollToTop,
      scrollToRow,
      onScroll,
      onVerticalScroll
    };
  };
  const useRow = (props2, {
    mainTableRef,
    leftTableRef,
    rightTableRef,
    tableInstance,
    ns,
    isScrolling
  }) => {
    const vm = getCurrentInstance();
    const { emit: emit2 } = vm;
    const isResetting = shallowRef(false);
    const expandedRowKeys = ref(props2.defaultExpandedRowKeys || []);
    const lastRenderedRowIndex = ref(-1);
    const resetIndex = shallowRef(null);
    const rowHeights = ref({});
    const pendingRowHeights = ref({});
    const leftTableHeights = shallowRef({});
    const mainTableHeights = shallowRef({});
    const rightTableHeights = shallowRef({});
    const isDynamic = computed(() => isNumber(props2.estimatedRowHeight));
    function onRowsRendered(params) {
      var _a;
      (_a = props2.onRowsRendered) == null ? void 0 : _a.call(props2, params);
      if (params.rowCacheEnd > unref(lastRenderedRowIndex)) {
        lastRenderedRowIndex.value = params.rowCacheEnd;
      }
    }
    function onRowHovered({ hovered, rowKey: rowKey2 }) {
      if (isScrolling.value) {
        return;
      }
      const tableRoot = tableInstance.vnode.el;
      const rows = tableRoot.querySelectorAll(`[rowkey="${String(rowKey2)}"]`);
      rows.forEach((row) => {
        if (hovered) {
          row.classList.add(ns.is("hovered"));
        } else {
          row.classList.remove(ns.is("hovered"));
        }
      });
    }
    function onRowExpanded({
      expanded,
      rowData,
      rowIndex,
      rowKey: rowKey2
    }) {
      var _a, _b;
      const _expandedRowKeys = [...unref(expandedRowKeys)];
      const currentKeyIndex = _expandedRowKeys.indexOf(rowKey2);
      if (expanded) {
        if (currentKeyIndex === -1) _expandedRowKeys.push(rowKey2);
      } else {
        if (currentKeyIndex > -1) _expandedRowKeys.splice(currentKeyIndex, 1);
      }
      expandedRowKeys.value = _expandedRowKeys;
      emit2("update:expandedRowKeys", _expandedRowKeys);
      (_a = props2.onRowExpand) == null ? void 0 : _a.call(props2, {
        expanded,
        rowData,
        rowIndex,
        rowKey: rowKey2
      });
      (_b = props2.onExpandedRowsChange) == null ? void 0 : _b.call(props2, _expandedRowKeys);
      const tableRoot = tableInstance.vnode.el;
      const hoverRow = tableRoot.querySelector(
        `.${ns.is("hovered")}[rowkey="${String(rowKey2)}"]`
      );
      if (hoverRow) {
        nextTick(() => onRowHovered({ hovered: true, rowKey: rowKey2 }));
      }
    }
    const flushingRowHeights = debounce(() => {
      var _a, _b, _c, _d;
      isResetting.value = true;
      rowHeights.value = { ...unref(rowHeights), ...unref(pendingRowHeights) };
      resetAfterIndex(unref(resetIndex), false);
      pendingRowHeights.value = {};
      resetIndex.value = null;
      (_a = mainTableRef.value) == null ? void 0 : _a.forceUpdate();
      (_b = leftTableRef.value) == null ? void 0 : _b.forceUpdate();
      (_c = rightTableRef.value) == null ? void 0 : _c.forceUpdate();
      (_d = vm.proxy) == null ? void 0 : _d.$forceUpdate();
      isResetting.value = false;
    }, 0);
    function resetAfterIndex(index, forceUpdate = false) {
      if (!unref(isDynamic)) return;
      [mainTableRef, leftTableRef, rightTableRef].forEach((tableRef) => {
        const table = unref(tableRef);
        if (table) table.resetAfterRowIndex(index, forceUpdate);
      });
    }
    function resetHeights(rowKey2, height, rowIdx) {
      const resetIdx = unref(resetIndex);
      if (resetIdx === null) {
        resetIndex.value = rowIdx;
      } else {
        if (resetIdx > rowIdx) {
          resetIndex.value = rowIdx;
        }
      }
      pendingRowHeights.value[rowKey2] = height;
    }
    function onRowHeightChange({ rowKey: rowKey2, height, rowIndex }, fixedDir) {
      if (!fixedDir) {
        mainTableHeights.value[rowKey2] = height;
      } else {
        if (fixedDir === FixedDir.RIGHT) {
          rightTableHeights.value[rowKey2] = height;
        } else {
          leftTableHeights.value[rowKey2] = height;
        }
      }
      const maximumHeight = Math.max(
        ...[leftTableHeights, rightTableHeights, mainTableHeights].map(
          (records) => records.value[rowKey2] || 0
        )
      );
      if (unref(rowHeights)[rowKey2] !== maximumHeight) {
        resetHeights(rowKey2, maximumHeight, rowIndex);
        flushingRowHeights();
      }
    }
    return {
      expandedRowKeys,
      lastRenderedRowIndex,
      isDynamic,
      isResetting,
      rowHeights,
      resetAfterIndex,
      onRowExpanded,
      onRowHovered,
      onRowsRendered,
      onRowHeightChange
    };
  };
  const useData = (props2, { expandedRowKeys, lastRenderedRowIndex, resetAfterIndex }) => {
    const depthMap = ref({});
    const flattenedData = computed(() => {
      const depths = {};
      const { data: data2, rowKey: rowKey2 } = props2;
      const _expandedRowKeys = unref(expandedRowKeys);
      if (!_expandedRowKeys || !_expandedRowKeys.length) return data2;
      const array = [];
      const keysSet = /* @__PURE__ */ new Set();
      _expandedRowKeys.forEach((x2) => keysSet.add(x2));
      let copy = data2.slice();
      copy.forEach((x2) => depths[x2[rowKey2]] = 0);
      while (copy.length > 0) {
        const item = copy.shift();
        array.push(item);
        if (keysSet.has(item[rowKey2]) && isArray$1(item.children) && item.children.length > 0) {
          copy = [...item.children, ...copy];
          item.children.forEach(
            (child) => depths[child[rowKey2]] = depths[item[rowKey2]] + 1
          );
        }
      }
      depthMap.value = depths;
      return array;
    });
    const data = computed(() => {
      const { data: data2, expandColumnKey: expandColumnKey2 } = props2;
      return expandColumnKey2 ? unref(flattenedData) : data2;
    });
    watch(data, (val, prev) => {
      if (val !== prev) {
        lastRenderedRowIndex.value = -1;
        resetAfterIndex(0, true);
      }
    });
    return {
      data,
      depthMap
    };
  };
  const sumReducer = (sum2, num) => sum2 + num;
  const sum = (listLike) => {
    return isArray$1(listLike) ? listLike.reduce(sumReducer, 0) : listLike;
  };
  const tryCall = (fLike, params, defaultRet = {}) => {
    return isFunction$1(fLike) ? fLike(params) : fLike != null ? fLike : defaultRet;
  };
  const enforceUnit = (style) => {
    ["width", "maxWidth", "minWidth", "height"].forEach((key) => {
      style[key] = addUnit(style[key]);
    });
    return style;
  };
  const componentToSlot = (ComponentLike) => isVNode(ComponentLike) ? (props2) => h$1(ComponentLike, props2) : ComponentLike;
  const useStyles = (props2, {
    columnsTotalWidth,
    rowsHeight,
    fixedColumnsOnLeft,
    fixedColumnsOnRight
  }) => {
    const bodyWidth = computed(() => {
      const { fixed, width, vScrollbarSize } = props2;
      const ret = width - vScrollbarSize;
      return fixed ? Math.max(Math.round(unref(columnsTotalWidth)), ret) : ret;
    });
    const mainTableHeight = computed(() => {
      const { height = 0, maxHeight = 0, footerHeight: footerHeight2, hScrollbarSize } = props2;
      if (maxHeight > 0) {
        const _fixedRowsHeight = unref(fixedRowsHeight);
        const _rowsHeight = unref(rowsHeight);
        const _headerHeight = unref(headerHeight);
        const total2 = _headerHeight + _fixedRowsHeight + _rowsHeight + hScrollbarSize;
        return Math.min(total2, maxHeight - footerHeight2);
      }
      return height - footerHeight2;
    });
    const fixedTableHeight = computed(() => {
      const { maxHeight } = props2;
      const tableHeight = unref(mainTableHeight);
      if (isNumber(maxHeight) && maxHeight > 0) return tableHeight;
      const totalHeight = unref(rowsHeight) + unref(headerHeight) + unref(fixedRowsHeight);
      return Math.min(tableHeight, totalHeight);
    });
    const mapColumn = (column) => column.width;
    const leftTableWidth = computed(
      () => sum(unref(fixedColumnsOnLeft).map(mapColumn))
    );
    const rightTableWidth = computed(
      () => sum(unref(fixedColumnsOnRight).map(mapColumn))
    );
    const headerHeight = computed(() => sum(props2.headerHeight));
    const fixedRowsHeight = computed(() => {
      var _a;
      return (((_a = props2.fixedData) == null ? void 0 : _a.length) || 0) * props2.rowHeight;
    });
    const windowHeight = computed(() => {
      return unref(mainTableHeight) - unref(headerHeight) - unref(fixedRowsHeight);
    });
    const rootStyle = computed(() => {
      const { style = {}, height, width } = props2;
      return enforceUnit({
        ...style,
        height,
        width
      });
    });
    const footerHeight = computed(
      () => enforceUnit({ height: props2.footerHeight })
    );
    const emptyStyle = computed(() => ({
      top: addUnit(unref(headerHeight)),
      bottom: addUnit(props2.footerHeight),
      width: addUnit(props2.width)
    }));
    return {
      bodyWidth,
      fixedTableHeight,
      mainTableHeight,
      leftTableWidth,
      rightTableWidth,
      windowHeight,
      footerHeight,
      emptyStyle,
      rootStyle,
      headerHeight
    };
  };
  function useTable(props2) {
    const mainTableRef = ref();
    const leftTableRef = ref();
    const rightTableRef = ref();
    const {
      columns: columns2,
      columnsStyles,
      columnsTotalWidth,
      fixedColumnsOnLeft,
      fixedColumnsOnRight,
      hasFixedColumns,
      mainColumns,
      onColumnSorted
    } = useColumns(props2, toRef(props2, "columns"), toRef(props2, "fixed"));
    const {
      scrollTo,
      scrollToLeft,
      scrollToTop,
      scrollToRow,
      onScroll,
      onVerticalScroll,
      scrollPos
    } = useScrollbar(props2, {
      mainTableRef,
      leftTableRef,
      rightTableRef,
      onMaybeEndReached
    });
    const ns = useNamespace("table-v2");
    const instance = getCurrentInstance();
    const isScrolling = shallowRef(false);
    const {
      expandedRowKeys,
      lastRenderedRowIndex,
      isDynamic,
      isResetting,
      rowHeights,
      resetAfterIndex,
      onRowExpanded,
      onRowHeightChange,
      onRowHovered,
      onRowsRendered
    } = useRow(props2, {
      mainTableRef,
      leftTableRef,
      rightTableRef,
      tableInstance: instance,
      ns,
      isScrolling
    });
    const { data, depthMap } = useData(props2, {
      expandedRowKeys,
      lastRenderedRowIndex,
      resetAfterIndex
    });
    const rowsHeight = computed(() => {
      const { estimatedRowHeight, rowHeight } = props2;
      const _data = unref(data);
      if (isNumber(estimatedRowHeight)) {
        return Object.values(unref(rowHeights)).reduce(
          (acc, curr) => acc + curr,
          0
        );
      }
      return _data.length * rowHeight;
    });
    const {
      bodyWidth,
      fixedTableHeight,
      mainTableHeight,
      leftTableWidth,
      rightTableWidth,
      windowHeight,
      footerHeight,
      emptyStyle,
      rootStyle,
      headerHeight
    } = useStyles(props2, {
      columnsTotalWidth,
      fixedColumnsOnLeft,
      fixedColumnsOnRight,
      rowsHeight
    });
    const containerRef = ref();
    const showEmpty = computed(() => {
      const noData = unref(data).length === 0;
      return isArray$1(props2.fixedData) ? props2.fixedData.length === 0 && noData : noData;
    });
    function getRowHeight(rowIndex) {
      const { estimatedRowHeight, rowHeight, rowKey: rowKey2 } = props2;
      if (!estimatedRowHeight) return rowHeight;
      return unref(rowHeights)[unref(data)[rowIndex][rowKey2]] || estimatedRowHeight;
    }
    const isEndReached = ref(false);
    function onMaybeEndReached() {
      const { onEndReached } = props2;
      if (!onEndReached) return;
      const { scrollTop } = unref(scrollPos);
      const _totalHeight = unref(rowsHeight);
      const clientHeight = unref(windowHeight);
      const remainDistance = _totalHeight - (scrollTop + clientHeight) + props2.hScrollbarSize;
      if (!isEndReached.value && unref(lastRenderedRowIndex) >= 0 && _totalHeight <= scrollTop + unref(mainTableHeight) - unref(headerHeight)) {
        isEndReached.value = true;
        onEndReached(remainDistance);
      } else {
        isEndReached.value = false;
      }
    }
    watch(
      () => unref(rowsHeight),
      () => isEndReached.value = false
    );
    watch(
      () => props2.expandedRowKeys,
      (val) => expandedRowKeys.value = val,
      {
        deep: true
      }
    );
    return {
      // models
      columns: columns2,
      containerRef,
      mainTableRef,
      leftTableRef,
      rightTableRef,
      // states
      isDynamic,
      isResetting,
      isScrolling,
      hasFixedColumns,
      // records
      columnsStyles,
      columnsTotalWidth,
      data,
      expandedRowKeys,
      depthMap,
      fixedColumnsOnLeft,
      fixedColumnsOnRight,
      mainColumns,
      // metadata
      bodyWidth,
      emptyStyle,
      rootStyle,
      footerHeight,
      mainTableHeight,
      fixedTableHeight,
      leftTableWidth,
      rightTableWidth,
      // flags
      showEmpty,
      // methods
      getRowHeight,
      // event handlers
      onColumnSorted,
      onRowHovered,
      onRowExpanded,
      onRowsRendered,
      onRowHeightChange,
      // use scrollbars
      scrollTo,
      scrollToLeft,
      scrollToTop,
      scrollToRow,
      onScroll,
      onVerticalScroll
    };
  }
  const TableV2InjectionKey = /* @__PURE__ */ Symbol("tableV2");
  const TABLE_V2_GRID_INJECTION_KEY = "tableV2GridScrollLeft";
  const classType = String;
  const columns = {
    type: definePropType(Array),
    required: true
  };
  const fixedDataType = {
    type: definePropType(Array)
  };
  const dataType = {
    ...fixedDataType,
    required: true
  };
  const expandColumnKey = String;
  const expandKeys = {
    type: definePropType(Array),
    default: () => mutable([])
  };
  const requiredNumber = {
    type: Number,
    required: true
  };
  const rowKey = {
    type: definePropType([String, Number, Symbol]),
    default: "id"
  };
  const styleType = {
    type: definePropType(Object)
  };
  const tableV2RowProps = buildProps({
    class: String,
    columns,
    columnsStyles: {
      type: definePropType(Object),
      required: true
    },
    depth: Number,
    expandColumnKey,
    estimatedRowHeight: {
      ...virtualizedGridProps.estimatedRowHeight,
      default: void 0
    },
    isScrolling: Boolean,
    onRowExpand: {
      type: definePropType(Function)
    },
    onRowHover: {
      type: definePropType(Function)
    },
    onRowHeightChange: {
      type: definePropType(Function)
    },
    rowData: {
      type: definePropType(Object),
      required: true
    },
    rowEventHandlers: {
      type: definePropType(Object)
    },
    rowIndex: {
      type: Number,
      required: true
    },
    /**
     * Unique item key
     */
    rowKey,
    style: {
      type: definePropType(Object)
    }
  });
  const requiredNumberType = {
    type: Number,
    required: true
  };
  const tableV2HeaderProps = buildProps({
    class: String,
    columns,
    fixedHeaderData: {
      type: definePropType(Array)
    },
    headerData: {
      type: definePropType(Array),
      required: true
    },
    headerHeight: {
      type: definePropType([Number, Array]),
      default: 50
    },
    rowWidth: requiredNumberType,
    rowHeight: {
      type: Number,
      default: 50
    },
    height: requiredNumberType,
    width: requiredNumberType
  });
  const tableV2GridProps = buildProps({
    columns,
    data: dataType,
    fixedData: fixedDataType,
    estimatedRowHeight: tableV2RowProps.estimatedRowHeight,
    /**
     * Size related attributes
     */
    width: requiredNumber,
    height: requiredNumber,
    headerWidth: requiredNumber,
    headerHeight: tableV2HeaderProps.headerHeight,
    bodyWidth: requiredNumber,
    rowHeight: requiredNumber,
    /**
     * Special attributes
     */
    cache: virtualizedListProps.cache,
    useIsScrolling: Boolean,
    scrollbarAlwaysOn: virtualizedGridProps.scrollbarAlwaysOn,
    scrollbarStartGap: virtualizedGridProps.scrollbarStartGap,
    scrollbarEndGap: virtualizedGridProps.scrollbarEndGap,
    /**
     * CSS attributes
     */
    class: classType,
    style: styleType,
    containerStyle: styleType,
    getRowHeight: {
      type: definePropType(Function),
      required: true
    },
    rowKey: tableV2RowProps.rowKey,
    /**
     * Event handlers
     */
    onRowsRendered: {
      type: definePropType(Function)
    },
    onScroll: {
      type: definePropType(Function)
    }
  });
  const tableV2Props = buildProps({
    cache: tableV2GridProps.cache,
    estimatedRowHeight: tableV2RowProps.estimatedRowHeight,
    rowKey,
    // Header attributes
    headerClass: {
      type: definePropType([
        String,
        Function
      ])
    },
    headerProps: {
      type: definePropType([
        Object,
        Function
      ])
    },
    headerCellProps: {
      type: definePropType([
        Object,
        Function
      ])
    },
    headerHeight: tableV2HeaderProps.headerHeight,
    /**
     * Footer attributes
     */
    footerHeight: {
      type: Number,
      default: 0
    },
    /**
     * Row attributes
     */
    rowClass: {
      type: definePropType([String, Function])
    },
    rowProps: {
      type: definePropType([Object, Function])
    },
    rowHeight: {
      type: Number,
      default: 50
    },
    /**
     * Cell attributes
     */
    cellProps: {
      type: definePropType([
        Object,
        Function
      ])
    },
    /**
     * Data models
     */
    columns,
    data: dataType,
    dataGetter: {
      type: definePropType(Function)
    },
    fixedData: fixedDataType,
    /**
     * Expanded keys
     */
    expandColumnKey: tableV2RowProps.expandColumnKey,
    expandedRowKeys: expandKeys,
    defaultExpandedRowKeys: expandKeys,
    /**
     * Attributes
     */
    class: classType,
    // disabled: Boolean,
    fixed: Boolean,
    style: {
      type: definePropType(Object)
    },
    width: requiredNumber,
    height: requiredNumber,
    maxHeight: Number,
    useIsScrolling: Boolean,
    indentSize: {
      type: Number,
      default: 12
    },
    iconSize: {
      type: Number,
      default: 12
    },
    hScrollbarSize: virtualizedGridProps.hScrollbarSize,
    vScrollbarSize: virtualizedGridProps.vScrollbarSize,
    scrollbarAlwaysOn: virtualizedScrollbarProps.alwaysOn,
    /**
     * Sorting
     */
    sortBy: {
      type: definePropType(Object),
      default: () => ({})
    },
    sortState: {
      type: definePropType(Object),
      default: void 0
    },
    /**
     * Handlers
     */
    onColumnSort: {
      type: definePropType(Function)
    },
    onExpandedRowsChange: {
      type: definePropType(Function)
    },
    onEndReached: {
      type: definePropType(Function)
    },
    onRowExpand: tableV2RowProps.onRowExpand,
    onScroll: tableV2GridProps.onScroll,
    onRowsRendered: tableV2GridProps.onRowsRendered,
    rowEventHandlers: tableV2RowProps.rowEventHandlers
  });
  const useGridWheel = ({ atXEndEdge, atXStartEdge, atYEndEdge, atYStartEdge }, onWheelDelta) => {
    let frameHandle = null;
    let xOffset = 0;
    let yOffset = 0;
    const hasReachedEdge = (x2, y) => {
      const xEdgeReached = x2 < 0 && atXStartEdge.value || x2 > 0 && atXEndEdge.value;
      const yEdgeReached = y < 0 && atYStartEdge.value || y > 0 && atYEndEdge.value;
      return xEdgeReached || yEdgeReached;
    };
    const onWheel = (e) => {
      cAF(frameHandle);
      let x2 = e.deltaX;
      let y = e.deltaY;
      if (Math.abs(x2) > Math.abs(y)) {
        y = 0;
      } else {
        x2 = 0;
      }
      if (e.shiftKey && y !== 0) {
        x2 = y;
        y = 0;
      }
      if (hasReachedEdge(x2, y)) return;
      xOffset += x2;
      yOffset += y;
      e.preventDefault();
      frameHandle = rAF(() => {
        onWheelDelta(xOffset, yOffset);
        xOffset = 0;
        yOffset = 0;
      });
    };
    return {
      hasReachedEdge,
      onWheel
    };
  };
  const useGridTouch = (windowRef, states, scrollTo, estimatedTotalWidth, estimatedTotalHeight, parsedWidth, parsedHeight) => {
    const touchStartX = ref(0);
    const touchStartY = ref(0);
    let frameHandle;
    let deltaX = 0;
    let deltaY = 0;
    const handleTouchStart = (event) => {
      cAF(frameHandle);
      touchStartX.value = event.touches[0].clientX;
      touchStartY.value = event.touches[0].clientY;
      deltaX = 0;
      deltaY = 0;
    };
    const handleTouchMove = (event) => {
      event.preventDefault();
      cAF(frameHandle);
      deltaX += touchStartX.value - event.touches[0].clientX;
      deltaY += touchStartY.value - event.touches[0].clientY;
      touchStartX.value = event.touches[0].clientX;
      touchStartY.value = event.touches[0].clientY;
      frameHandle = rAF(() => {
        const maxScrollLeft = estimatedTotalWidth.value - unref(parsedWidth);
        const maxScrollTop = estimatedTotalHeight.value - unref(parsedHeight);
        const safeScrollLeft = Math.min(
          states.value.scrollLeft + deltaX,
          maxScrollLeft
        );
        const safeScrollTop = Math.min(
          states.value.scrollTop + deltaY,
          maxScrollTop
        );
        scrollTo({
          scrollLeft: safeScrollLeft,
          scrollTop: safeScrollTop
        });
        deltaX = 0;
        deltaY = 0;
      });
    };
    useEventListener(windowRef, "touchstart", handleTouchStart, {
      passive: true
    });
    useEventListener(windowRef, "touchmove", handleTouchMove, {
      passive: false
    });
    return {
      touchStartX,
      touchStartY,
      handleTouchStart,
      handleTouchMove
    };
  };
  const createGrid = ({
    name,
    clearCache,
    getColumnPosition,
    getColumnStartIndexForOffset,
    getColumnStopIndexForStartIndex,
    getEstimatedTotalHeight: getEstimatedTotalHeight2,
    getEstimatedTotalWidth: getEstimatedTotalWidth2,
    getColumnOffset,
    getRowOffset,
    getRowPosition,
    getRowStartIndexForOffset,
    getRowStopIndexForStartIndex,
    initCache,
    injectToInstance,
    validateProps
  }) => {
    return /* @__PURE__ */ defineComponent({
      name: name != null ? name : "ElVirtualList",
      props: virtualizedGridProps,
      emits: [ITEM_RENDER_EVT, SCROLL_EVT],
      setup(props2, { emit: emit2, expose, slots }) {
        const ns = useNamespace("vl");
        validateProps(props2);
        const instance = getCurrentInstance();
        const cache2 = ref(initCache(props2, instance));
        injectToInstance == null ? void 0 : injectToInstance(instance, cache2);
        const windowRef = ref();
        const hScrollbar = ref();
        const vScrollbar = ref();
        const innerRef = ref();
        const states = ref({
          isScrolling: false,
          scrollLeft: isNumber(props2.initScrollLeft) ? props2.initScrollLeft : 0,
          scrollTop: isNumber(props2.initScrollTop) ? props2.initScrollTop : 0,
          updateRequested: false,
          xAxisScrollDir: FORWARD,
          yAxisScrollDir: FORWARD
        });
        const getItemStyleCache = useCache();
        const parsedHeight = computed(
          () => Number.parseInt(`${props2.height}`, 10)
        );
        const parsedWidth = computed(() => Number.parseInt(`${props2.width}`, 10));
        const columnsToRender = computed(() => {
          const { totalColumn, totalRow, columnCache } = props2;
          const { isScrolling, xAxisScrollDir, scrollLeft } = unref(states);
          if (totalColumn === 0 || totalRow === 0) {
            return [0, 0, 0, 0];
          }
          const startIndex = getColumnStartIndexForOffset(
            props2,
            scrollLeft,
            unref(cache2)
          );
          const stopIndex = getColumnStopIndexForStartIndex(
            props2,
            startIndex,
            scrollLeft,
            unref(cache2)
          );
          const cacheBackward = !isScrolling || xAxisScrollDir === BACKWARD ? Math.max(1, columnCache) : 1;
          const cacheForward = !isScrolling || xAxisScrollDir === FORWARD ? Math.max(1, columnCache) : 1;
          return [
            Math.max(0, startIndex - cacheBackward),
            Math.max(0, Math.min(totalColumn - 1, stopIndex + cacheForward)),
            startIndex,
            stopIndex
          ];
        });
        const rowsToRender = computed(() => {
          const { totalColumn, totalRow, rowCache } = props2;
          const { isScrolling, yAxisScrollDir, scrollTop } = unref(states);
          if (totalColumn === 0 || totalRow === 0) {
            return [0, 0, 0, 0];
          }
          const startIndex = getRowStartIndexForOffset(
            props2,
            scrollTop,
            unref(cache2)
          );
          const stopIndex = getRowStopIndexForStartIndex(
            props2,
            startIndex,
            scrollTop,
            unref(cache2)
          );
          const cacheBackward = !isScrolling || yAxisScrollDir === BACKWARD ? Math.max(1, rowCache) : 1;
          const cacheForward = !isScrolling || yAxisScrollDir === FORWARD ? Math.max(1, rowCache) : 1;
          return [
            Math.max(0, startIndex - cacheBackward),
            Math.max(0, Math.min(totalRow - 1, stopIndex + cacheForward)),
            startIndex,
            stopIndex
          ];
        });
        const estimatedTotalHeight = computed(
          () => getEstimatedTotalHeight2(props2, unref(cache2))
        );
        const estimatedTotalWidth = computed(
          () => getEstimatedTotalWidth2(props2, unref(cache2))
        );
        const windowStyle = computed(() => {
          var _a;
          return [
            {
              position: "relative",
              overflow: "hidden",
              WebkitOverflowScrolling: "touch",
              willChange: "transform"
            },
            {
              direction: props2.direction,
              height: isNumber(props2.height) ? `${props2.height}px` : props2.height,
              width: isNumber(props2.width) ? `${props2.width}px` : props2.width
            },
            (_a = props2.style) != null ? _a : {}
          ];
        });
        const innerStyle = computed(() => {
          const width = `${unref(estimatedTotalWidth)}px`;
          const height = `${unref(estimatedTotalHeight)}px`;
          return {
            height,
            pointerEvents: unref(states).isScrolling ? "none" : void 0,
            width,
            // fix scrolling issues in Firefox.
            margin: 0,
            boxSizing: "border-box"
          };
        });
        const emitEvents = () => {
          const { totalColumn, totalRow } = props2;
          if (totalColumn > 0 && totalRow > 0) {
            const [
              columnCacheStart,
              columnCacheEnd,
              columnVisibleStart,
              columnVisibleEnd
            ] = unref(columnsToRender);
            const [rowCacheStart, rowCacheEnd, rowVisibleStart, rowVisibleEnd] = unref(rowsToRender);
            emit2(ITEM_RENDER_EVT, {
              columnCacheStart,
              columnCacheEnd,
              rowCacheStart,
              rowCacheEnd,
              columnVisibleStart,
              columnVisibleEnd,
              rowVisibleStart,
              rowVisibleEnd
            });
          }
          const {
            scrollLeft,
            scrollTop,
            updateRequested,
            xAxisScrollDir,
            yAxisScrollDir
          } = unref(states);
          emit2(SCROLL_EVT, {
            xAxisScrollDir,
            scrollLeft,
            yAxisScrollDir,
            scrollTop,
            updateRequested
          });
        };
        const onScroll = (e) => {
          const {
            clientHeight,
            clientWidth,
            scrollHeight,
            scrollLeft,
            scrollTop,
            scrollWidth
          } = e.currentTarget;
          const _states = unref(states);
          if (_states.scrollTop === scrollTop && _states.scrollLeft === scrollLeft) {
            return;
          }
          let _scrollLeft = scrollLeft;
          if (isRTL$1(props2.direction)) {
            switch (getRTLOffsetType()) {
              case RTL_OFFSET_NAG:
                _scrollLeft = -scrollLeft;
                break;
              case RTL_OFFSET_POS_DESC:
                _scrollLeft = scrollWidth - clientWidth - scrollLeft;
                break;
            }
          }
          states.value = {
            ..._states,
            isScrolling: true,
            scrollLeft: _scrollLeft,
            scrollTop: Math.max(
              0,
              Math.min(scrollTop, scrollHeight - clientHeight)
            ),
            updateRequested: true,
            xAxisScrollDir: getScrollDir(_states.scrollLeft, _scrollLeft),
            yAxisScrollDir: getScrollDir(_states.scrollTop, scrollTop)
          };
          nextTick(() => resetIsScrolling());
          onUpdated2();
          emitEvents();
        };
        const onVerticalScroll = (distance, totalSteps) => {
          const height = unref(parsedHeight);
          const offset2 = (estimatedTotalHeight.value - height) / totalSteps * distance;
          scrollTo({
            scrollTop: Math.min(estimatedTotalHeight.value - height, offset2)
          });
        };
        const onHorizontalScroll = (distance, totalSteps) => {
          const width = unref(parsedWidth);
          const offset2 = (estimatedTotalWidth.value - width) / totalSteps * distance;
          scrollTo({
            scrollLeft: Math.min(estimatedTotalWidth.value - width, offset2)
          });
        };
        const { onWheel } = useGridWheel(
          {
            atXStartEdge: computed(() => states.value.scrollLeft <= 0),
            atXEndEdge: computed(
              () => states.value.scrollLeft >= estimatedTotalWidth.value - unref(parsedWidth)
            ),
            atYStartEdge: computed(() => states.value.scrollTop <= 0),
            atYEndEdge: computed(
              () => states.value.scrollTop >= estimatedTotalHeight.value - unref(parsedHeight)
            )
          },
          (x2, y) => {
            var _a, _b, _c, _d;
            (_b = (_a = hScrollbar.value) == null ? void 0 : _a.onMouseUp) == null ? void 0 : _b.call(_a);
            (_d = (_c = vScrollbar.value) == null ? void 0 : _c.onMouseUp) == null ? void 0 : _d.call(_c);
            const width = unref(parsedWidth);
            const height = unref(parsedHeight);
            scrollTo({
              scrollLeft: Math.min(
                states.value.scrollLeft + x2,
                estimatedTotalWidth.value - width
              ),
              scrollTop: Math.min(
                states.value.scrollTop + y,
                estimatedTotalHeight.value - height
              )
            });
          }
        );
        useEventListener(windowRef, "wheel", onWheel, {
          passive: false
        });
        const scrollTo = ({
          scrollLeft = states.value.scrollLeft,
          scrollTop = states.value.scrollTop
        }) => {
          scrollLeft = Math.max(scrollLeft, 0);
          scrollTop = Math.max(scrollTop, 0);
          const _states = unref(states);
          if (scrollTop === _states.scrollTop && scrollLeft === _states.scrollLeft) {
            return;
          }
          states.value = {
            ..._states,
            xAxisScrollDir: getScrollDir(_states.scrollLeft, scrollLeft),
            yAxisScrollDir: getScrollDir(_states.scrollTop, scrollTop),
            scrollLeft,
            scrollTop,
            updateRequested: true
          };
          nextTick(() => resetIsScrolling());
          onUpdated2();
          emitEvents();
        };
        const { touchStartX, touchStartY, handleTouchStart, handleTouchMove } = useGridTouch(
          windowRef,
          states,
          scrollTo,
          estimatedTotalWidth,
          estimatedTotalHeight,
          parsedWidth,
          parsedHeight
        );
        const scrollToItem = (rowIndex = 0, columnIdx = 0, alignment = AUTO_ALIGNMENT) => {
          const _states = unref(states);
          columnIdx = Math.max(0, Math.min(columnIdx, props2.totalColumn - 1));
          rowIndex = Math.max(0, Math.min(rowIndex, props2.totalRow - 1));
          const scrollBarWidth2 = getScrollBarWidth(ns.namespace.value);
          const _cache = unref(cache2);
          const estimatedHeight = getEstimatedTotalHeight2(props2, _cache);
          const estimatedWidth = getEstimatedTotalWidth2(props2, _cache);
          scrollTo({
            scrollLeft: getColumnOffset(
              props2,
              columnIdx,
              alignment,
              _states.scrollLeft,
              _cache,
              estimatedWidth > props2.width ? scrollBarWidth2 : 0
            ),
            scrollTop: getRowOffset(
              props2,
              rowIndex,
              alignment,
              _states.scrollTop,
              _cache,
              estimatedHeight > props2.height ? scrollBarWidth2 : 0
            )
          });
        };
        const getItemStyle = (rowIndex, columnIndex) => {
          const { columnWidth, direction: direction2, rowHeight } = props2;
          const itemStyleCache = getItemStyleCache.value(
            clearCache && columnWidth,
            clearCache && rowHeight,
            clearCache && direction2
          );
          const key = `${rowIndex},${columnIndex}`;
          if (hasOwn(itemStyleCache, key)) {
            return itemStyleCache[key];
          } else {
            const [, left] = getColumnPosition(props2, columnIndex, unref(cache2));
            const _cache = unref(cache2);
            const rtl = isRTL$1(direction2);
            const [height, top] = getRowPosition(props2, rowIndex, _cache);
            const [width] = getColumnPosition(props2, columnIndex, _cache);
            itemStyleCache[key] = {
              position: "absolute",
              left: rtl ? void 0 : `${left}px`,
              right: rtl ? `${left}px` : void 0,
              top: `${top}px`,
              height: `${height}px`,
              width: `${width}px`
            };
            return itemStyleCache[key];
          }
        };
        const resetIsScrolling = () => {
          states.value.isScrolling = false;
          nextTick(() => {
            getItemStyleCache.value(-1, null, null);
          });
        };
        onMounted(() => {
          if (!isClient) return;
          const { initScrollLeft, initScrollTop } = props2;
          const windowElement = unref(windowRef);
          if (windowElement) {
            if (isNumber(initScrollLeft)) {
              windowElement.scrollLeft = initScrollLeft;
            }
            if (isNumber(initScrollTop)) {
              windowElement.scrollTop = initScrollTop;
            }
          }
          emitEvents();
        });
        const onUpdated2 = () => {
          const { direction: direction2 } = props2;
          const { scrollLeft, scrollTop, updateRequested } = unref(states);
          const windowElement = unref(windowRef);
          if (updateRequested && windowElement) {
            if (direction2 === RTL) {
              switch (getRTLOffsetType()) {
                case RTL_OFFSET_NAG: {
                  windowElement.scrollLeft = -scrollLeft;
                  break;
                }
                case RTL_OFFSET_POS_ASC: {
                  windowElement.scrollLeft = scrollLeft;
                  break;
                }
                default: {
                  const { clientWidth, scrollWidth } = windowElement;
                  windowElement.scrollLeft = scrollWidth - clientWidth - scrollLeft;
                  break;
                }
              }
            } else {
              windowElement.scrollLeft = Math.max(0, scrollLeft);
            }
            windowElement.scrollTop = Math.max(0, scrollTop);
          }
        };
        const { resetAfterColumnIndex, resetAfterRowIndex, resetAfter } = instance.proxy;
        expose({
          windowRef,
          innerRef,
          getItemStyleCache,
          touchStartX,
          touchStartY,
          handleTouchStart,
          handleTouchMove,
          scrollTo,
          scrollToItem,
          states,
          resetAfterColumnIndex,
          resetAfterRowIndex,
          resetAfter
        });
        const renderScrollbars = () => {
          const {
            scrollbarAlwaysOn,
            scrollbarStartGap,
            scrollbarEndGap,
            totalColumn,
            totalRow
          } = props2;
          const width = unref(parsedWidth);
          const height = unref(parsedHeight);
          const estimatedWidth = unref(estimatedTotalWidth);
          const estimatedHeight = unref(estimatedTotalHeight);
          const { scrollLeft, scrollTop } = unref(states);
          const horizontalScrollbar = h$1(ScrollBar, {
            ref: hScrollbar,
            alwaysOn: scrollbarAlwaysOn,
            startGap: scrollbarStartGap,
            endGap: scrollbarEndGap,
            class: ns.e("horizontal"),
            clientSize: width,
            layout: "horizontal",
            onScroll: onHorizontalScroll,
            ratio: width * 100 / estimatedWidth,
            scrollFrom: scrollLeft / (estimatedWidth - width),
            total: totalRow,
            visible: true
          });
          const verticalScrollbar = h$1(ScrollBar, {
            ref: vScrollbar,
            alwaysOn: scrollbarAlwaysOn,
            startGap: scrollbarStartGap,
            endGap: scrollbarEndGap,
            class: ns.e("vertical"),
            clientSize: height,
            layout: "vertical",
            onScroll: onVerticalScroll,
            ratio: height * 100 / estimatedHeight,
            scrollFrom: scrollTop / (estimatedHeight - height),
            total: totalColumn,
            visible: true
          });
          return {
            horizontalScrollbar,
            verticalScrollbar
          };
        };
        const renderItems = () => {
          var _a;
          const [columnStart, columnEnd] = unref(columnsToRender);
          const [rowStart, rowEnd] = unref(rowsToRender);
          const { data, totalColumn, totalRow, useIsScrolling, itemKey } = props2;
          const children = [];
          if (totalRow > 0 && totalColumn > 0) {
            for (let row = rowStart; row <= rowEnd; row++) {
              for (let column = columnStart; column <= columnEnd; column++) {
                const key = itemKey({ columnIndex: column, data, rowIndex: row });
                children.push(
                  h$1(
                    Fragment,
                    { key },
                    (_a = slots.default) == null ? void 0 : _a.call(slots, {
                      columnIndex: column,
                      data,
                      isScrolling: useIsScrolling ? unref(states).isScrolling : void 0,
                      style: getItemStyle(row, column),
                      rowIndex: row
                    })
                  )
                );
              }
            }
          }
          return children;
        };
        const renderInner = () => {
          const Inner = resolveDynamicComponent(props2.innerElement);
          const children = renderItems();
          return [
            h$1(
              Inner,
              mergeProps(props2.innerProps, {
                style: unref(innerStyle),
                ref: innerRef
              }),
              !isString(Inner) ? {
                default: () => children
              } : children
            )
          ];
        };
        const renderWindow = () => {
          const Container = resolveDynamicComponent(
            props2.containerElement
          );
          const { horizontalScrollbar, verticalScrollbar } = renderScrollbars();
          const Inner = renderInner();
          return h$1(
            "div",
            {
              key: 0,
              class: ns.e("wrapper"),
              role: props2.role
            },
            [
              h$1(
                Container,
                {
                  class: props2.className,
                  style: unref(windowStyle),
                  onScroll,
                  ref: windowRef
                },
                !isString(Container) ? { default: () => Inner } : Inner
              ),
              horizontalScrollbar,
              verticalScrollbar
            ]
          );
        };
        return renderWindow;
      }
    });
  };
  const { max: max$1, min: min$1, floor: floor$1 } = Math;
  const ACCESS_SIZER_KEY_MAP = {
    column: "columnWidth",
    row: "rowHeight"
  };
  const ACCESS_LAST_VISITED_KEY_MAP = {
    column: "lastVisitedColumnIndex",
    row: "lastVisitedRowIndex"
  };
  const getItemFromCache = (props2, index, gridCache, type) => {
    const [cachedItems, sizer, lastVisited] = [
      gridCache[type],
      props2[ACCESS_SIZER_KEY_MAP[type]],
      gridCache[ACCESS_LAST_VISITED_KEY_MAP[type]]
    ];
    if (index > lastVisited) {
      let offset2 = 0;
      if (lastVisited >= 0) {
        const item = cachedItems[lastVisited];
        offset2 = item.offset + item.size;
      }
      for (let i = lastVisited + 1; i <= index; i++) {
        const size = sizer(i);
        cachedItems[i] = {
          offset: offset2,
          size
        };
        offset2 += size;
      }
      gridCache[ACCESS_LAST_VISITED_KEY_MAP[type]] = index;
    }
    return cachedItems[index];
  };
  const bs = (props2, gridCache, low, high, offset2, type) => {
    while (low <= high) {
      const mid = low + floor$1((high - low) / 2);
      const currentOffset = getItemFromCache(props2, mid, gridCache, type).offset;
      if (currentOffset === offset2) {
        return mid;
      } else if (currentOffset < offset2) {
        low = mid + 1;
      } else {
        high = mid - 1;
      }
    }
    return max$1(0, low - 1);
  };
  const es = (props2, gridCache, idx, offset2, type) => {
    const total2 = type === "column" ? props2.totalColumn : props2.totalRow;
    let exponent = 1;
    while (idx < total2 && getItemFromCache(props2, idx, gridCache, type).offset < offset2) {
      idx += exponent;
      exponent *= 2;
    }
    return bs(props2, gridCache, floor$1(idx / 2), min$1(idx, total2 - 1), offset2, type);
  };
  const findItem = (props2, gridCache, offset2, type) => {
    const [cache2, lastVisitedIndex] = [
      gridCache[type],
      gridCache[ACCESS_LAST_VISITED_KEY_MAP[type]]
    ];
    const lastVisitedItemOffset = lastVisitedIndex > 0 ? cache2[lastVisitedIndex].offset : 0;
    if (lastVisitedItemOffset >= offset2) {
      return bs(props2, gridCache, 0, lastVisitedIndex, offset2, type);
    }
    return es(props2, gridCache, max$1(0, lastVisitedIndex), offset2, type);
  };
  const getEstimatedTotalHeight = ({ totalRow }, { estimatedRowHeight, lastVisitedRowIndex, row }) => {
    let sizeOfVisitedRows = 0;
    if (lastVisitedRowIndex >= totalRow) {
      lastVisitedRowIndex = totalRow - 1;
    }
    if (lastVisitedRowIndex >= 0) {
      const item = row[lastVisitedRowIndex];
      sizeOfVisitedRows = item.offset + item.size;
    }
    const unvisitedItems = totalRow - lastVisitedRowIndex - 1;
    const sizeOfUnvisitedItems = unvisitedItems * estimatedRowHeight;
    return sizeOfVisitedRows + sizeOfUnvisitedItems;
  };
  const getEstimatedTotalWidth = ({ totalColumn }, { column, estimatedColumnWidth, lastVisitedColumnIndex }) => {
    let sizeOfVisitedColumns = 0;
    if (lastVisitedColumnIndex > totalColumn) {
      lastVisitedColumnIndex = totalColumn - 1;
    }
    if (lastVisitedColumnIndex >= 0) {
      const item = column[lastVisitedColumnIndex];
      sizeOfVisitedColumns = item.offset + item.size;
    }
    const unvisitedItems = totalColumn - lastVisitedColumnIndex - 1;
    const sizeOfUnvisitedItems = unvisitedItems * estimatedColumnWidth;
    return sizeOfVisitedColumns + sizeOfUnvisitedItems;
  };
  const ACCESS_ESTIMATED_SIZE_KEY_MAP = {
    column: getEstimatedTotalWidth,
    row: getEstimatedTotalHeight
  };
  const getOffset = (props2, index, alignment, scrollOffset, cache2, type, scrollBarWidth2) => {
    const [size, estimatedSizeAssociates] = [
      type === "row" ? props2.height : props2.width,
      ACCESS_ESTIMATED_SIZE_KEY_MAP[type]
    ];
    const item = getItemFromCache(props2, index, cache2, type);
    const estimatedSize = estimatedSizeAssociates(props2, cache2);
    const maxOffset = max$1(0, min$1(estimatedSize - size, item.offset));
    const minOffset = max$1(0, item.offset - size + scrollBarWidth2 + item.size);
    if (alignment === SMART_ALIGNMENT) {
      if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {
        alignment = AUTO_ALIGNMENT;
      } else {
        alignment = CENTERED_ALIGNMENT;
      }
    }
    switch (alignment) {
      case START_ALIGNMENT: {
        return maxOffset;
      }
      case END_ALIGNMENT: {
        return minOffset;
      }
      case CENTERED_ALIGNMENT: {
        return Math.round(minOffset + (maxOffset - minOffset) / 2);
      }
      case AUTO_ALIGNMENT:
      default: {
        if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {
          return scrollOffset;
        } else if (minOffset > maxOffset) {
          return minOffset;
        } else if (scrollOffset < minOffset) {
          return minOffset;
        } else {
          return maxOffset;
        }
      }
    }
  };
  const DynamicSizeGrid = createGrid({
    name: "ElDynamicSizeGrid",
    getColumnPosition: (props2, idx, cache2) => {
      const item = getItemFromCache(props2, idx, cache2, "column");
      return [item.size, item.offset];
    },
    getRowPosition: (props2, idx, cache2) => {
      const item = getItemFromCache(props2, idx, cache2, "row");
      return [item.size, item.offset];
    },
    getColumnOffset: (props2, columnIndex, alignment, scrollLeft, cache2, scrollBarWidth2) => getOffset(
      props2,
      columnIndex,
      alignment,
      scrollLeft,
      cache2,
      "column",
      scrollBarWidth2
    ),
    getRowOffset: (props2, rowIndex, alignment, scrollTop, cache2, scrollBarWidth2) => getOffset(
      props2,
      rowIndex,
      alignment,
      scrollTop,
      cache2,
      "row",
      scrollBarWidth2
    ),
    getColumnStartIndexForOffset: (props2, scrollLeft, cache2) => findItem(props2, cache2, scrollLeft, "column"),
    getColumnStopIndexForStartIndex: (props2, startIndex, scrollLeft, cache2) => {
      const item = getItemFromCache(props2, startIndex, cache2, "column");
      const maxOffset = scrollLeft + props2.width;
      let offset2 = item.offset + item.size;
      let stopIndex = startIndex;
      while (stopIndex < props2.totalColumn - 1 && offset2 < maxOffset) {
        stopIndex++;
        offset2 += getItemFromCache(props2, startIndex, cache2, "column").size;
      }
      return stopIndex;
    },
    getEstimatedTotalHeight,
    getEstimatedTotalWidth,
    getRowStartIndexForOffset: (props2, scrollTop, cache2) => findItem(props2, cache2, scrollTop, "row"),
    getRowStopIndexForStartIndex: (props2, startIndex, scrollTop, cache2) => {
      const { totalRow, height } = props2;
      const item = getItemFromCache(props2, startIndex, cache2, "row");
      const maxOffset = scrollTop + height;
      let offset2 = item.size + item.offset;
      let stopIndex = startIndex;
      while (stopIndex < totalRow - 1 && offset2 < maxOffset) {
        stopIndex++;
        offset2 += getItemFromCache(props2, stopIndex, cache2, "row").size;
      }
      return stopIndex;
    },
    injectToInstance: (instance, cache2) => {
      const resetAfter = ({ columnIndex, rowIndex }, forceUpdate) => {
        var _a, _b;
        forceUpdate = isUndefined(forceUpdate) ? true : forceUpdate;
        if (isNumber(columnIndex)) {
          cache2.value.lastVisitedColumnIndex = Math.min(
            cache2.value.lastVisitedColumnIndex,
            columnIndex - 1
          );
        }
        if (isNumber(rowIndex)) {
          cache2.value.lastVisitedRowIndex = Math.min(
            cache2.value.lastVisitedRowIndex,
            rowIndex - 1
          );
        }
        (_a = instance.exposed) == null ? void 0 : _a.getItemStyleCache.value(-1, null, null);
        if (forceUpdate) (_b = instance.proxy) == null ? void 0 : _b.$forceUpdate();
      };
      const resetAfterColumnIndex = (columnIndex, forceUpdate) => {
        resetAfter(
          {
            columnIndex
          },
          forceUpdate
        );
      };
      const resetAfterRowIndex = (rowIndex, forceUpdate) => {
        resetAfter(
          {
            rowIndex
          },
          forceUpdate
        );
      };
      Object.assign(instance.proxy, {
        resetAfterColumnIndex,
        resetAfterRowIndex,
        resetAfter
      });
    },
    initCache: ({
      estimatedColumnWidth = DEFAULT_DYNAMIC_LIST_ITEM_SIZE,
      estimatedRowHeight = DEFAULT_DYNAMIC_LIST_ITEM_SIZE
    }) => {
      const cache2 = {
        column: {},
        estimatedColumnWidth,
        estimatedRowHeight,
        lastVisitedColumnIndex: -1,
        lastVisitedRowIndex: -1,
        row: {}
      };
      return cache2;
    },
    clearCache: false,
    validateProps: ({ columnWidth, rowHeight }) => {
    }
  });
  const FixedSizeGrid = createGrid({
    name: "ElFixedSizeGrid",
    getColumnPosition: ({ columnWidth }, index) => [
      columnWidth,
      index * columnWidth
    ],
    getRowPosition: ({ rowHeight }, index) => [
      rowHeight,
      index * rowHeight
    ],
    getEstimatedTotalHeight: ({ totalRow, rowHeight }) => rowHeight * totalRow,
    getEstimatedTotalWidth: ({ totalColumn, columnWidth }) => columnWidth * totalColumn,
    getColumnOffset: ({ totalColumn, columnWidth, width }, columnIndex, alignment, scrollLeft, _2, scrollBarWidth2) => {
      width = Number(width);
      const lastColumnOffset = Math.max(
        0,
        totalColumn * columnWidth - width
      );
      const maxOffset = Math.min(
        lastColumnOffset,
        columnIndex * columnWidth
      );
      const minOffset = Math.max(
        0,
        columnIndex * columnWidth - width + scrollBarWidth2 + columnWidth
      );
      if (alignment === "smart") {
        if (scrollLeft >= minOffset - width && scrollLeft <= maxOffset + width) {
          alignment = AUTO_ALIGNMENT;
        } else {
          alignment = CENTERED_ALIGNMENT;
        }
      }
      switch (alignment) {
        case START_ALIGNMENT:
          return maxOffset;
        case END_ALIGNMENT:
          return minOffset;
        case CENTERED_ALIGNMENT: {
          const middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);
          if (middleOffset < Math.ceil(width / 2)) {
            return 0;
          } else if (middleOffset > lastColumnOffset + Math.floor(width / 2)) {
            return lastColumnOffset;
          } else {
            return middleOffset;
          }
        }
        case AUTO_ALIGNMENT:
        default:
          if (scrollLeft >= minOffset && scrollLeft <= maxOffset) {
            return scrollLeft;
          } else if (minOffset > maxOffset) {
            return minOffset;
          } else if (scrollLeft < minOffset) {
            return minOffset;
          } else {
            return maxOffset;
          }
      }
    },
    getRowOffset: ({ rowHeight, height, totalRow }, rowIndex, align, scrollTop, _2, scrollBarWidth2) => {
      height = Number(height);
      const lastRowOffset = Math.max(0, totalRow * rowHeight - height);
      const maxOffset = Math.min(lastRowOffset, rowIndex * rowHeight);
      const minOffset = Math.max(
        0,
        rowIndex * rowHeight - height + scrollBarWidth2 + rowHeight
      );
      if (align === SMART_ALIGNMENT) {
        if (scrollTop >= minOffset - height && scrollTop <= maxOffset + height) {
          align = AUTO_ALIGNMENT;
        } else {
          align = CENTERED_ALIGNMENT;
        }
      }
      switch (align) {
        case START_ALIGNMENT:
          return maxOffset;
        case END_ALIGNMENT:
          return minOffset;
        case CENTERED_ALIGNMENT: {
          const middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);
          if (middleOffset < Math.ceil(height / 2)) {
            return 0;
          } else if (middleOffset > lastRowOffset + Math.floor(height / 2)) {
            return lastRowOffset;
          } else {
            return middleOffset;
          }
        }
        case AUTO_ALIGNMENT:
        default:
          if (scrollTop >= minOffset && scrollTop <= maxOffset) {
            return scrollTop;
          } else if (minOffset > maxOffset) {
            return minOffset;
          } else if (scrollTop < minOffset) {
            return minOffset;
          } else {
            return maxOffset;
          }
      }
    },
    getColumnStartIndexForOffset: ({ columnWidth, totalColumn }, scrollLeft) => Math.max(
      0,
      Math.min(
        totalColumn - 1,
        Math.floor(scrollLeft / columnWidth)
      )
    ),
    getColumnStopIndexForStartIndex: ({ columnWidth, totalColumn, width }, startIndex, scrollLeft) => {
      const left = startIndex * columnWidth;
      const visibleColumnsCount = Math.ceil(
        (width + scrollLeft - left) / columnWidth
      );
      return Math.max(
        0,
        Math.min(totalColumn - 1, startIndex + visibleColumnsCount - 1)
      );
    },
    getRowStartIndexForOffset: ({ rowHeight, totalRow }, scrollTop) => Math.max(
      0,
      Math.min(totalRow - 1, Math.floor(scrollTop / rowHeight))
    ),
    getRowStopIndexForStartIndex: ({ rowHeight, totalRow, height }, startIndex, scrollTop) => {
      const top = startIndex * rowHeight;
      const numVisibleRows = Math.ceil(
        (height + scrollTop - top) / rowHeight
      );
      return Math.max(
        0,
        Math.min(
          totalRow - 1,
          startIndex + numVisibleRows - 1
          // -1 is because stop index is inclusive
        )
      );
    },
    /**
     * Fixed size grid does not need this cache
     * Using any to bypass it, TODO: Using type inference to fix this.
     */
    initCache: () => void 0,
    clearCache: true,
    validateProps: ({ columnWidth, rowHeight }) => {
    }
  });
  const COMPONENT_NAME$8 = "ElTableV2Header";
  const TableV2Header = /* @__PURE__ */ defineComponent({
    name: COMPONENT_NAME$8,
    props: tableV2HeaderProps,
    setup(props2, {
      slots,
      expose
    }) {
      const ns = useNamespace("table-v2");
      const scrollLeftInfo = inject(TABLE_V2_GRID_INJECTION_KEY);
      const headerRef = ref();
      const headerStyle = computed(() => enforceUnit({
        width: props2.width,
        height: props2.height
      }));
      const rowStyle = computed(() => enforceUnit({
        width: props2.rowWidth,
        height: props2.height
      }));
      const headerHeights = computed(() => castArray$1(unref(props2.headerHeight)));
      const scrollToLeft = (left) => {
        const headerEl = unref(headerRef);
        nextTick(() => {
          (headerEl == null ? void 0 : headerEl.scroll) && headerEl.scroll({
            left
          });
        });
      };
      const renderFixedRows = () => {
        const fixedRowClassName = ns.e("fixed-header-row");
        const {
          columns: columns2,
          fixedHeaderData,
          rowHeight
        } = props2;
        return fixedHeaderData == null ? void 0 : fixedHeaderData.map((fixedRowData, fixedRowIndex) => {
          var _a;
          const style = enforceUnit({
            height: rowHeight,
            width: "100%"
          });
          return (_a = slots.fixed) == null ? void 0 : _a.call(slots, {
            class: fixedRowClassName,
            columns: columns2,
            rowData: fixedRowData,
            rowIndex: -(fixedRowIndex + 1),
            style
          });
        });
      };
      const renderDynamicRows = () => {
        const dynamicRowClassName = ns.e("dynamic-header-row");
        const {
          columns: columns2
        } = props2;
        return unref(headerHeights).map((rowHeight, rowIndex) => {
          var _a;
          const style = enforceUnit({
            width: "100%",
            height: rowHeight
          });
          return (_a = slots.dynamic) == null ? void 0 : _a.call(slots, {
            class: dynamicRowClassName,
            columns: columns2,
            headerIndex: rowIndex,
            style
          });
        });
      };
      onUpdated(() => {
        if (scrollLeftInfo == null ? void 0 : scrollLeftInfo.value) {
          scrollToLeft(scrollLeftInfo.value);
        }
      });
      expose({
        /**
         * @description scroll to position based on the provided value
         */
        scrollToLeft
      });
      return () => {
        if (props2.height <= 0) return;
        return createVNode("div", {
          "ref": headerRef,
          "class": props2.class,
          "style": unref(headerStyle),
          "role": "rowgroup"
        }, [createVNode("div", {
          "style": unref(rowStyle),
          "class": ns.e("header")
        }, [renderDynamicRows(), renderFixedRows()])]);
      };
    }
  });
  const COMPONENT_NAME$7 = "ElTableV2Grid";
  const useTableGrid = (props2) => {
    const headerRef = ref();
    const bodyRef = ref();
    const scrollLeft = ref(0);
    const totalHeight = computed(() => {
      const {
        data,
        rowHeight,
        estimatedRowHeight
      } = props2;
      if (estimatedRowHeight) {
        return;
      }
      return data.length * rowHeight;
    });
    const fixedRowHeight = computed(() => {
      const {
        fixedData,
        rowHeight
      } = props2;
      return ((fixedData == null ? void 0 : fixedData.length) || 0) * rowHeight;
    });
    const headerHeight = computed(() => sum(props2.headerHeight));
    const gridHeight = computed(() => {
      const {
        height
      } = props2;
      return Math.max(0, height - unref(headerHeight) - unref(fixedRowHeight));
    });
    const hasHeader = computed(() => {
      return unref(headerHeight) + unref(fixedRowHeight) > 0;
    });
    const itemKey = ({
      data,
      rowIndex
    }) => data[rowIndex][props2.rowKey];
    function onItemRendered({
      rowCacheStart,
      rowCacheEnd,
      rowVisibleStart,
      rowVisibleEnd
    }) {
      var _a;
      (_a = props2.onRowsRendered) == null ? void 0 : _a.call(props2, {
        rowCacheStart,
        rowCacheEnd,
        rowVisibleStart,
        rowVisibleEnd
      });
    }
    function resetAfterRowIndex(index, forceUpdate2) {
      var _a;
      (_a = bodyRef.value) == null ? void 0 : _a.resetAfterRowIndex(index, forceUpdate2);
    }
    function scrollTo(leftOrOptions, top) {
      const header$ = unref(headerRef);
      const body$ = unref(bodyRef);
      if (isObject$2(leftOrOptions)) {
        header$ == null ? void 0 : header$.scrollToLeft(leftOrOptions.scrollLeft);
        scrollLeft.value = leftOrOptions.scrollLeft;
        body$ == null ? void 0 : body$.scrollTo(leftOrOptions);
      } else {
        header$ == null ? void 0 : header$.scrollToLeft(leftOrOptions);
        scrollLeft.value = leftOrOptions;
        body$ == null ? void 0 : body$.scrollTo({
          scrollLeft: leftOrOptions,
          scrollTop: top
        });
      }
    }
    function scrollToTop(scrollTop) {
      var _a;
      (_a = unref(bodyRef)) == null ? void 0 : _a.scrollTo({
        scrollTop
      });
    }
    function scrollToRow(row, strategy) {
      const body = unref(bodyRef);
      if (!body) return;
      const prevScrollLeft = scrollLeft.value;
      body.scrollToItem(row, 0, strategy);
      if (prevScrollLeft) {
        scrollTo({
          scrollLeft: prevScrollLeft
        });
      }
    }
    function forceUpdate() {
      var _a, _b;
      (_a = unref(bodyRef)) == null ? void 0 : _a.$forceUpdate();
      (_b = unref(headerRef)) == null ? void 0 : _b.$forceUpdate();
    }
    watch(() => props2.bodyWidth, () => {
      var _a;
      if (isNumber(props2.estimatedRowHeight)) (_a = bodyRef.value) == null ? void 0 : _a.resetAfter({
        columnIndex: 0
      }, false);
    });
    return {
      bodyRef,
      forceUpdate,
      fixedRowHeight,
      gridHeight,
      hasHeader,
      headerHeight,
      headerRef,
      totalHeight,
      itemKey,
      onItemRendered,
      resetAfterRowIndex,
      scrollTo,
      scrollToTop,
      scrollToRow,
      scrollLeft
    };
  };
  const TableGrid = /* @__PURE__ */ defineComponent({
    name: COMPONENT_NAME$7,
    props: tableV2GridProps,
    setup(props2, {
      slots,
      expose
    }) {
      const {
        ns
      } = inject(TableV2InjectionKey);
      const {
        bodyRef,
        fixedRowHeight,
        gridHeight,
        hasHeader,
        headerRef,
        headerHeight,
        totalHeight,
        forceUpdate,
        itemKey,
        onItemRendered,
        resetAfterRowIndex,
        scrollTo,
        scrollToTop,
        scrollToRow,
        scrollLeft
      } = useTableGrid(props2);
      provide(TABLE_V2_GRID_INJECTION_KEY, scrollLeft);
      onActivated(async () => {
        var _a;
        await nextTick();
        const scrollTop = (_a = bodyRef.value) == null ? void 0 : _a.states.scrollTop;
        scrollTop && scrollToTop(Math.round(scrollTop) + 1);
      });
      expose({
        forceUpdate,
        /**
         * @description fetch total height
         */
        totalHeight,
        /**
         * @description scroll to a position
         */
        scrollTo,
        /**
         * @description scroll vertically to position y
         */
        scrollToTop,
        /**
         * @description scroll to a given row
         * @params row {Number} which row to scroll to
         * @params strategy {ScrollStrategy} use what strategy to scroll to
         */
        scrollToRow,
        /**
         * @description reset rendered state after row index
         */
        resetAfterRowIndex
      });
      const getColumnWidth = () => props2.bodyWidth;
      return () => {
        const {
          cache: cache2,
          columns: columns2,
          data,
          fixedData,
          useIsScrolling,
          scrollbarAlwaysOn,
          scrollbarEndGap,
          scrollbarStartGap,
          style,
          rowHeight,
          bodyWidth,
          estimatedRowHeight,
          headerWidth,
          height,
          width,
          getRowHeight,
          onScroll
        } = props2;
        const isDynamicRowEnabled = isNumber(estimatedRowHeight);
        const Grid = isDynamicRowEnabled ? DynamicSizeGrid : FixedSizeGrid;
        const _headerHeight = unref(headerHeight);
        return createVNode("div", {
          "role": "table",
          "class": [ns.e("table"), props2.class],
          "style": style
        }, [createVNode(Grid, {
          "ref": bodyRef,
          "data": data,
          "useIsScrolling": useIsScrolling,
          "itemKey": itemKey,
          "columnCache": 0,
          "columnWidth": isDynamicRowEnabled ? getColumnWidth : bodyWidth,
          "totalColumn": 1,
          "totalRow": data.length,
          "rowCache": cache2,
          "rowHeight": isDynamicRowEnabled ? getRowHeight : rowHeight,
          "width": width,
          "height": unref(gridHeight),
          "class": ns.e("body"),
          "role": "rowgroup",
          "scrollbarStartGap": scrollbarStartGap,
          "scrollbarEndGap": scrollbarEndGap,
          "scrollbarAlwaysOn": scrollbarAlwaysOn,
          "onScroll": onScroll,
          "onItemRendered": onItemRendered,
          "perfMode": false
        }, {
          default: (params) => {
            var _a;
            const rowData = data[params.rowIndex];
            return (_a = slots.row) == null ? void 0 : _a.call(slots, {
              ...params,
              columns: columns2,
              rowData
            });
          }
        }), unref(hasHeader) && createVNode(TableV2Header, {
          "ref": headerRef,
          "class": ns.e("header-wrapper"),
          "columns": columns2,
          "headerData": data,
          "headerHeight": props2.headerHeight,
          "fixedHeaderData": fixedData,
          "rowWidth": headerWidth,
          "rowHeight": rowHeight,
          "width": width,
          "height": Math.min(_headerHeight + unref(fixedRowHeight), height)
        }, {
          dynamic: slots.header,
          fixed: slots.row
        })]);
      };
    }
  });
  function _isSlot$5(s2) {
    return typeof s2 === "function" || Object.prototype.toString.call(s2) === "[object Object]" && !isVNode(s2);
  }
  const MainTable = (props2, {
    slots
  }) => {
    const {
      mainTableRef,
      ...rest
    } = props2;
    return createVNode(TableGrid, mergeProps({
      "ref": mainTableRef
    }, rest), _isSlot$5(slots) ? slots : {
      default: () => [slots]
    });
  };
  function _isSlot$4(s2) {
    return typeof s2 === "function" || Object.prototype.toString.call(s2) === "[object Object]" && !isVNode(s2);
  }
  const LeftTable = (props2, {
    slots
  }) => {
    if (!props2.columns.length) return;
    const {
      leftTableRef,
      ...rest
    } = props2;
    return createVNode(TableGrid, mergeProps({
      "ref": leftTableRef
    }, rest), _isSlot$4(slots) ? slots : {
      default: () => [slots]
    });
  };
  function _isSlot$3(s2) {
    return typeof s2 === "function" || Object.prototype.toString.call(s2) === "[object Object]" && !isVNode(s2);
  }
  const RightTable = (props2, {
    slots
  }) => {
    if (!props2.columns.length) return;
    const {
      rightTableRef,
      ...rest
    } = props2;
    return createVNode(TableGrid, mergeProps({
      "ref": rightTableRef
    }, rest), _isSlot$3(slots) ? slots : {
      default: () => [slots]
    });
  };
  const useTableRow = (props2) => {
    const {
      isScrolling
    } = inject(TableV2InjectionKey);
    const measured = ref(false);
    const rowRef = ref();
    const measurable = computed(() => {
      return isNumber(props2.estimatedRowHeight) && props2.rowIndex >= 0;
    });
    const doMeasure = (isInit = false) => {
      const $rowRef = unref(rowRef);
      if (!$rowRef) return;
      const {
        columns: columns2,
        onRowHeightChange,
        rowKey: rowKey2,
        rowIndex,
        style
      } = props2;
      const {
        height
      } = $rowRef.getBoundingClientRect();
      measured.value = true;
      nextTick(() => {
        if (isInit || height !== Number.parseInt(style.height)) {
          const firstColumn = columns2[0];
          const isPlaceholder = (firstColumn == null ? void 0 : firstColumn.placeholderSign) === placeholderSign;
          onRowHeightChange == null ? void 0 : onRowHeightChange({
            rowKey: rowKey2,
            height,
            rowIndex
          }, firstColumn && !isPlaceholder && firstColumn.fixed);
        }
      });
    };
    const eventHandlers = computed(() => {
      const {
        rowData,
        rowIndex,
        rowKey: rowKey2,
        onRowHover
      } = props2;
      const handlers = props2.rowEventHandlers || {};
      const eventHandlers2 = {};
      Object.entries(handlers).forEach(([eventName, handler]) => {
        if (isFunction$1(handler)) {
          eventHandlers2[eventName] = (event) => {
            handler({
              event,
              rowData,
              rowIndex,
              rowKey: rowKey2
            });
          };
        }
      });
      if (onRowHover) {
        [{
          name: "onMouseleave",
          hovered: false
        }, {
          name: "onMouseenter",
          hovered: true
        }].forEach(({
          name,
          hovered
        }) => {
          const existedHandler = eventHandlers2[name];
          eventHandlers2[name] = (event) => {
            onRowHover({
              event,
              hovered,
              rowData,
              rowIndex,
              rowKey: rowKey2
            });
            existedHandler == null ? void 0 : existedHandler(event);
          };
        });
      }
      return eventHandlers2;
    });
    const onExpand = (expanded) => {
      const {
        onRowExpand,
        rowData,
        rowIndex,
        rowKey: rowKey2
      } = props2;
      onRowExpand == null ? void 0 : onRowExpand({
        expanded,
        rowData,
        rowIndex,
        rowKey: rowKey2
      });
    };
    onMounted(() => {
      if (unref(measurable)) {
        doMeasure(true);
      }
    });
    return {
      isScrolling,
      measurable,
      measured,
      rowRef,
      eventHandlers,
      onExpand
    };
  };
  const COMPONENT_NAME$6 = "ElTableV2TableRow";
  const TableV2Row = /* @__PURE__ */ defineComponent({
    name: COMPONENT_NAME$6,
    props: tableV2RowProps,
    setup(props2, {
      expose,
      slots,
      attrs
    }) {
      const {
        eventHandlers,
        isScrolling,
        measurable,
        measured,
        rowRef,
        onExpand
      } = useTableRow(props2);
      expose({
        /**
         * @description manually dispatching expand action on row.
         */
        onExpand
      });
      return () => {
        const {
          columns: columns2,
          columnsStyles,
          expandColumnKey: expandColumnKey2,
          depth,
          rowData,
          rowIndex,
          style
        } = props2;
        let ColumnCells = columns2.map((column, columnIndex) => {
          const expandable = isArray$1(rowData.children) && rowData.children.length > 0 && column.key === expandColumnKey2;
          return slots.cell({
            column,
            columns: columns2,
            columnIndex,
            depth,
            style: columnsStyles[column.key],
            rowData,
            rowIndex,
            isScrolling: unref(isScrolling),
            expandIconProps: expandable ? {
              rowData,
              rowIndex,
              onExpand
            } : void 0
          });
        });
        if (slots.row) {
          ColumnCells = slots.row({
            cells: ColumnCells.map((node) => {
              if (isArray$1(node) && node.length === 1) {
                return node[0];
              }
              return node;
            }),
            style,
            columns: columns2,
            depth,
            rowData,
            rowIndex,
            isScrolling: unref(isScrolling)
          });
        }
        if (unref(measurable)) {
          const {
            height,
            ...exceptHeightStyle
          } = style || {};
          const _measured = unref(measured);
          return createVNode("div", mergeProps({
            "ref": rowRef,
            "class": props2.class,
            "style": _measured ? style : exceptHeightStyle,
            "role": "row"
          }, attrs, unref(eventHandlers)), [ColumnCells]);
        }
        return createVNode("div", mergeProps(attrs, {
          "ref": rowRef,
          "class": props2.class,
          "style": style,
          "role": "row"
        }, unref(eventHandlers)), [ColumnCells]);
      };
    }
  });
  function _isSlot$2(s2) {
    return typeof s2 === "function" || Object.prototype.toString.call(s2) === "[object Object]" && !isVNode(s2);
  }
  const RowRenderer = (props2, {
    slots
  }) => {
    const {
      columns: columns2,
      columnsStyles,
      depthMap,
      expandColumnKey: expandColumnKey2,
      expandedRowKeys,
      estimatedRowHeight,
      hasFixedColumns,
      rowData,
      rowIndex,
      style,
      isScrolling,
      rowProps: rowProps2,
      rowClass,
      rowKey: rowKey2,
      rowEventHandlers,
      ns,
      onRowHovered,
      onRowExpanded
    } = props2;
    const rowKls = tryCall(rowClass, {
      columns: columns2,
      rowData,
      rowIndex
    }, "");
    const additionalProps = tryCall(rowProps2, {
      columns: columns2,
      rowData,
      rowIndex
    });
    const _rowKey = rowData[rowKey2];
    const depth = depthMap[_rowKey] || 0;
    const canExpand = Boolean(expandColumnKey2);
    const isFixedRow = rowIndex < 0;
    const kls = [ns.e("row"), rowKls, ns.is("expanded", canExpand && expandedRowKeys.includes(_rowKey)), ns.is("fixed", !depth && isFixedRow), ns.is("customized", Boolean(slots.row)), {
      [ns.e(`row-depth-${depth}`)]: canExpand && rowIndex >= 0
    }];
    const onRowHover = hasFixedColumns ? onRowHovered : void 0;
    const _rowProps = {
      ...additionalProps,
      columns: columns2,
      columnsStyles,
      class: kls,
      depth,
      expandColumnKey: expandColumnKey2,
      estimatedRowHeight: isFixedRow ? void 0 : estimatedRowHeight,
      isScrolling,
      rowIndex,
      rowData,
      rowKey: _rowKey,
      rowEventHandlers,
      style
    };
    const handlerMouseEnter = (e) => {
      onRowHover == null ? void 0 : onRowHover({
        hovered: true,
        rowKey: _rowKey,
        event: e,
        rowData,
        rowIndex
      });
    };
    const handlerMouseLeave = (e) => {
      onRowHover == null ? void 0 : onRowHover({
        hovered: false,
        rowKey: _rowKey,
        event: e,
        rowData,
        rowIndex
      });
    };
    return createVNode(TableV2Row, mergeProps(_rowProps, {
      "onRowExpand": onRowExpanded,
      "onMouseenter": handlerMouseEnter,
      "onMouseleave": handlerMouseLeave,
      "rowkey": _rowKey
    }), _isSlot$2(slots) ? slots : {
      default: () => [slots]
    });
  };
  const TableV2Cell = (props2, {
    slots
  }) => {
    var _a;
    const {
      cellData,
      style
    } = props2;
    const displayText = ((_a = cellData == null ? void 0 : cellData.toString) == null ? void 0 : _a.call(cellData)) || "";
    const defaultSlot = renderSlot(slots, "default", props2, () => [displayText]);
    return createVNode("div", {
      "class": props2.class,
      "title": displayText,
      "style": style
    }, [defaultSlot]);
  };
  TableV2Cell.displayName = "ElTableV2Cell";
  TableV2Cell.inheritAttrs = false;
  const ExpandIcon = (props2) => {
    const {
      expanded,
      expandable,
      onExpand,
      style,
      size,
      ariaLabel
    } = props2;
    const expandIconProps = {
      onClick: expandable ? () => onExpand(!expanded) : void 0,
      ariaLabel,
      ariaExpanded: expanded,
      class: props2.class
    };
    return createVNode("button", mergeProps(expandIconProps, {
      "type": "button"
    }), [createVNode(ElIcon, {
      "size": size,
      "style": style
    }, {
      default: () => [createVNode(arrow_right_default, null, null)]
    })]);
  };
  ExpandIcon.inheritAttrs = false;
  const CellRenderer = ({
    // renderer props
    columns: columns2,
    column,
    columnIndex,
    depth,
    expandIconProps,
    isScrolling,
    rowData,
    rowIndex,
    // from use-table
    style,
    expandedRowKeys,
    ns,
    t,
    // derived props
    cellProps: _cellProps,
    expandColumnKey: expandColumnKey2,
    indentSize,
    iconSize,
    rowKey: rowKey2
  }, {
    slots
  }) => {
    const cellStyle = enforceUnit(style);
    if (column.placeholderSign === placeholderSign) {
      return createVNode("div", {
        "class": ns.em("row-cell", "placeholder"),
        "style": cellStyle
      }, null);
    }
    const {
      cellRenderer,
      dataKey,
      dataGetter
    } = column;
    const cellData = isFunction$1(dataGetter) ? dataGetter({
      columns: columns2,
      column,
      columnIndex,
      rowData,
      rowIndex
    }) : get(rowData, dataKey != null ? dataKey : "");
    const extraCellProps = tryCall(_cellProps, {
      cellData,
      columns: columns2,
      column,
      columnIndex,
      rowIndex,
      rowData
    });
    const cellProps = {
      class: ns.e("cell-text"),
      columns: columns2,
      column,
      columnIndex,
      cellData,
      isScrolling,
      rowData,
      rowIndex
    };
    const columnCellRenderer = componentToSlot(cellRenderer);
    const Cell = columnCellRenderer ? columnCellRenderer(cellProps) : renderSlot(slots, "default", cellProps, () => [createVNode(TableV2Cell, cellProps, null)]);
    const kls = [ns.e("row-cell"), column.class, column.align === Alignment.CENTER && ns.is("align-center"), column.align === Alignment.RIGHT && ns.is("align-right")];
    const expandable = rowIndex >= 0 && expandColumnKey2 && column.key === expandColumnKey2;
    const expanded = rowIndex >= 0 && expandedRowKeys.includes(rowData[rowKey2]);
    let IconOrPlaceholder;
    const iconStyle = `margin-inline-start: ${depth * indentSize}px;`;
    if (expandable) {
      if (isObject$2(expandIconProps)) {
        IconOrPlaceholder = createVNode(ExpandIcon, mergeProps(expandIconProps, {
          "class": [ns.e("expand-icon"), ns.is("expanded", expanded)],
          "size": iconSize,
          "expanded": expanded,
          "ariaLabel": t(expanded ? "el.table.collapseRowLabel" : "el.table.expandRowLabel"),
          "style": iconStyle,
          "expandable": true
        }), null);
      } else {
        IconOrPlaceholder = createVNode("div", {
          "style": [iconStyle, `width: ${iconSize}px; height: ${iconSize}px;`].join(" ")
        }, null);
      }
    }
    return createVNode("div", mergeProps({
      "class": kls,
      "style": cellStyle
    }, extraCellProps, {
      "role": "cell"
    }), [IconOrPlaceholder, Cell]);
  };
  CellRenderer.inheritAttrs = false;
  const tableV2HeaderRowProps = buildProps({
    class: String,
    columns,
    columnsStyles: {
      type: definePropType(Object),
      required: true
    },
    headerIndex: Number,
    style: { type: definePropType(Object) }
  });
  const TableV2HeaderRow = /* @__PURE__ */ defineComponent({
    name: "ElTableV2HeaderRow",
    props: tableV2HeaderRowProps,
    setup(props2, {
      slots
    }) {
      return () => {
        const {
          columns: columns2,
          columnsStyles,
          headerIndex,
          style
        } = props2;
        let Cells = columns2.map((column, columnIndex) => {
          return slots.cell({
            columns: columns2,
            column,
            columnIndex,
            headerIndex,
            style: columnsStyles[column.key]
          });
        });
        if (slots.header) {
          Cells = slots.header({
            cells: Cells.map((node) => {
              if (isArray$1(node) && node.length === 1) {
                return node[0];
              }
              return node;
            }),
            columns: columns2,
            headerIndex
          });
        }
        return createVNode("div", {
          "class": props2.class,
          "style": style,
          "role": "row"
        }, [Cells]);
      };
    }
  });
  function _isSlot$1(s2) {
    return typeof s2 === "function" || Object.prototype.toString.call(s2) === "[object Object]" && !isVNode(s2);
  }
  const HeaderRenderer = ({
    columns: columns2,
    columnsStyles,
    headerIndex,
    style,
    // derived from root
    headerClass,
    headerProps,
    ns
  }, {
    slots
  }) => {
    const param = {
      columns: columns2,
      headerIndex
    };
    const kls = [ns.e("header-row"), tryCall(headerClass, param, ""), ns.is("customized", Boolean(slots.header))];
    const extraProps = {
      ...tryCall(headerProps, param),
      columnsStyles,
      class: kls,
      columns: columns2,
      headerIndex,
      style
    };
    return createVNode(TableV2HeaderRow, extraProps, _isSlot$1(slots) ? slots : {
      default: () => [slots]
    });
  };
  const HeaderCell = (props2, {
    slots
  }) => renderSlot(slots, "default", props2, () => {
    var _a, _b;
    return [createVNode("div", {
      "class": props2.class,
      "title": (_a = props2.column) == null ? void 0 : _a.title
    }, [(_b = props2.column) == null ? void 0 : _b.title])];
  });
  HeaderCell.displayName = "ElTableV2HeaderCell";
  HeaderCell.inheritAttrs = false;
  const SortIcon = (props2) => {
    const {
      sortOrder
    } = props2;
    return createVNode("button", {
      "type": "button",
      "aria-label": props2.ariaLabel,
      "class": props2.class
    }, [createVNode(ElIcon, {
      "size": 14
    }, {
      default: () => [sortOrder === SortOrder.ASC ? createVNode(sort_up_default, null, null) : createVNode(sort_down_default, null, null)]
    })]);
  };
  const HeaderCellRenderer = (props2, {
    slots
  }) => {
    const {
      column,
      ns,
      t,
      style,
      onColumnSorted
    } = props2;
    const cellStyle = enforceUnit(style);
    if (column.placeholderSign === placeholderSign) {
      return createVNode("div", {
        "class": ns.em("header-row-cell", "placeholder"),
        "style": cellStyle
      }, null);
    }
    const {
      headerCellRenderer,
      headerClass,
      sortable
    } = column;
    const cellProps = {
      ...props2,
      class: ns.e("header-cell-text")
    };
    const columnCellRenderer = componentToSlot(headerCellRenderer);
    const Cell = columnCellRenderer ? columnCellRenderer(cellProps) : renderSlot(slots, "default", cellProps, () => [createVNode(HeaderCell, cellProps, null)]);
    const {
      sortBy,
      sortState,
      headerCellProps
    } = props2;
    let sorting, sortOrder, ariaSort;
    if (sortState) {
      const order = sortState[column.key];
      sorting = Boolean(oppositeOrderMap[order]);
      sortOrder = sorting ? order : SortOrder.ASC;
    } else {
      sorting = column.key === sortBy.key;
      sortOrder = sorting ? sortBy.order : SortOrder.ASC;
    }
    if (sortOrder === SortOrder.ASC) {
      ariaSort = "ascending";
    } else if (sortOrder === SortOrder.DESC) {
      ariaSort = "descending";
    } else {
      ariaSort = void 0;
    }
    const cellKls = [ns.e("header-cell"), tryCall(headerClass, props2, ""), column.align === Alignment.CENTER && ns.is("align-center"), column.align === Alignment.RIGHT && ns.is("align-right"), sortable && ns.is("sortable")];
    const cellWrapperProps = {
      ...tryCall(headerCellProps, props2),
      onClick: column.sortable ? onColumnSorted : void 0,
      ariaSort: sortable ? ariaSort : void 0,
      class: cellKls,
      style: cellStyle,
      ["data-key"]: column.key
    };
    return createVNode("div", mergeProps(cellWrapperProps, {
      "role": "columnheader"
    }), [Cell, sortable && createVNode(SortIcon, {
      "class": [ns.e("sort-icon"), sorting && ns.is("sorting")],
      "sortOrder": sortOrder,
      "ariaLabel": t("el.table.sortLabel", {
        column: column.title || ""
      })
    }, null)]);
  };
  const Footer$1 = (props2, {
    slots
  }) => {
    var _a;
    return createVNode("div", {
      "class": props2.class,
      "style": props2.style
    }, [(_a = slots.default) == null ? void 0 : _a.call(slots)]);
  };
  Footer$1.displayName = "ElTableV2Footer";
  const Footer = (props2, {
    slots
  }) => {
    const defaultSlot = renderSlot(slots, "default", {}, () => [createVNode(ElEmpty, null, null)]);
    return createVNode("div", {
      "class": props2.class,
      "style": props2.style
    }, [defaultSlot]);
  };
  Footer.displayName = "ElTableV2Empty";
  const Overlay = (props2, {
    slots
  }) => {
    var _a;
    return createVNode("div", {
      "class": props2.class,
      "style": props2.style
    }, [(_a = slots.default) == null ? void 0 : _a.call(slots)]);
  };
  Overlay.displayName = "ElTableV2Overlay";
  function _isSlot(s2) {
    return typeof s2 === "function" || Object.prototype.toString.call(s2) === "[object Object]" && !isVNode(s2);
  }
  const COMPONENT_NAME$5 = "ElTableV2";
  const TableV2 = /* @__PURE__ */ defineComponent({
    name: COMPONENT_NAME$5,
    props: tableV2Props,
    setup(props2, {
      slots,
      expose
    }) {
      const ns = useNamespace("table-v2");
      const {
        t
      } = useLocale();
      const {
        columnsStyles,
        fixedColumnsOnLeft,
        fixedColumnsOnRight,
        mainColumns,
        mainTableHeight,
        fixedTableHeight,
        leftTableWidth,
        rightTableWidth,
        data,
        depthMap,
        expandedRowKeys,
        hasFixedColumns,
        mainTableRef,
        leftTableRef,
        rightTableRef,
        isDynamic,
        isResetting,
        isScrolling,
        bodyWidth,
        emptyStyle,
        rootStyle,
        footerHeight,
        showEmpty,
        // exposes
        scrollTo,
        scrollToLeft,
        scrollToTop,
        scrollToRow,
        getRowHeight,
        onColumnSorted,
        onRowHeightChange,
        onRowHovered,
        onRowExpanded,
        onRowsRendered,
        onScroll,
        onVerticalScroll
      } = useTable(props2);
      expose({
        /**
         * @description scroll to a given position
         * @params params {{ scrollLeft?: number, scrollTop?: number }} where to scroll to.
         */
        scrollTo,
        /**
         * @description scroll to a given position horizontally
         * @params scrollLeft {Number} where to scroll to.
         */
        scrollToLeft,
        /**
         * @description scroll to a given position vertically
         * @params scrollTop { Number } where to scroll to.
         */
        scrollToTop,
        /**
         * @description scroll to a given row
         * @params row {Number} which row to scroll to
         * @params @optional strategy {ScrollStrategy} use what strategy to scroll to
         */
        scrollToRow
      });
      provide(TableV2InjectionKey, {
        ns,
        isResetting,
        isScrolling
      });
      return () => {
        const {
          cache: cache2,
          cellProps,
          estimatedRowHeight,
          expandColumnKey: expandColumnKey2,
          fixedData,
          headerHeight,
          headerClass,
          headerProps,
          headerCellProps,
          sortBy,
          sortState,
          rowHeight,
          rowClass,
          rowEventHandlers,
          rowKey: rowKey2,
          rowProps: rowProps2,
          scrollbarAlwaysOn,
          indentSize,
          iconSize,
          useIsScrolling,
          vScrollbarSize,
          width
        } = props2;
        const _data = unref(data);
        const mainTableProps = {
          cache: cache2,
          class: ns.e("main"),
          columns: unref(mainColumns),
          data: _data,
          fixedData,
          estimatedRowHeight,
          bodyWidth: unref(bodyWidth),
          headerHeight,
          headerWidth: unref(bodyWidth),
          height: unref(mainTableHeight),
          mainTableRef,
          rowKey: rowKey2,
          rowHeight,
          scrollbarAlwaysOn,
          scrollbarStartGap: 2,
          scrollbarEndGap: vScrollbarSize,
          useIsScrolling,
          width,
          getRowHeight,
          onRowsRendered,
          onScroll
        };
        const leftColumnsWidth = unref(leftTableWidth);
        const _fixedTableHeight = unref(fixedTableHeight);
        const leftTableProps = {
          cache: cache2,
          class: ns.e("left"),
          columns: unref(fixedColumnsOnLeft),
          data: _data,
          fixedData,
          estimatedRowHeight,
          leftTableRef,
          rowHeight,
          bodyWidth: leftColumnsWidth,
          headerWidth: leftColumnsWidth,
          headerHeight,
          height: _fixedTableHeight,
          rowKey: rowKey2,
          scrollbarAlwaysOn,
          scrollbarStartGap: 2,
          scrollbarEndGap: vScrollbarSize,
          useIsScrolling,
          width: leftColumnsWidth,
          getRowHeight,
          onScroll: onVerticalScroll
        };
        const rightColumnsWidth = unref(rightTableWidth);
        const rightTableProps = {
          cache: cache2,
          class: ns.e("right"),
          columns: unref(fixedColumnsOnRight),
          data: _data,
          fixedData,
          estimatedRowHeight,
          rightTableRef,
          rowHeight,
          bodyWidth: rightColumnsWidth,
          headerWidth: rightColumnsWidth,
          headerHeight,
          height: _fixedTableHeight,
          rowKey: rowKey2,
          scrollbarAlwaysOn,
          scrollbarStartGap: 2,
          scrollbarEndGap: vScrollbarSize,
          width: rightColumnsWidth,
          style: `${ns.cssVarName("table-scrollbar-size")}: ${vScrollbarSize}px`,
          useIsScrolling,
          getRowHeight,
          onScroll: onVerticalScroll
        };
        const _columnsStyles = unref(columnsStyles);
        const tableRowProps = {
          ns,
          depthMap: unref(depthMap),
          columnsStyles: _columnsStyles,
          expandColumnKey: expandColumnKey2,
          expandedRowKeys: unref(expandedRowKeys),
          estimatedRowHeight,
          hasFixedColumns: unref(hasFixedColumns),
          rowProps: rowProps2,
          rowClass,
          rowKey: rowKey2,
          rowEventHandlers,
          onRowHovered,
          onRowExpanded,
          onRowHeightChange
        };
        const tableCellProps = {
          cellProps,
          expandColumnKey: expandColumnKey2,
          indentSize,
          iconSize,
          rowKey: rowKey2,
          expandedRowKeys: unref(expandedRowKeys),
          ns,
          t
        };
        const tableHeaderProps = {
          ns,
          headerClass,
          headerProps,
          columnsStyles: _columnsStyles
        };
        const tableHeaderCellProps = {
          ns,
          t,
          sortBy,
          sortState,
          headerCellProps,
          onColumnSorted
        };
        const tableSlots = {
          row: (props22) => createVNode(RowRenderer, mergeProps(props22, tableRowProps), {
            row: slots.row,
            cell: (props3) => {
              let _slot;
              return slots.cell ? createVNode(CellRenderer, mergeProps(props3, tableCellProps, {
                "style": _columnsStyles[props3.column.key]
              }), _isSlot(_slot = slots.cell(props3)) ? _slot : {
                default: () => [_slot]
              }) : createVNode(CellRenderer, mergeProps(props3, tableCellProps, {
                "style": _columnsStyles[props3.column.key]
              }), null);
            }
          }),
          header: (props22) => createVNode(HeaderRenderer, mergeProps(props22, tableHeaderProps), {
            header: slots.header,
            cell: (props3) => {
              let _slot2;
              return slots["header-cell"] ? createVNode(HeaderCellRenderer, mergeProps(props3, tableHeaderCellProps, {
                "style": _columnsStyles[props3.column.key]
              }), _isSlot(_slot2 = slots["header-cell"](props3)) ? _slot2 : {
                default: () => [_slot2]
              }) : createVNode(HeaderCellRenderer, mergeProps(props3, tableHeaderCellProps, {
                "style": _columnsStyles[props3.column.key]
              }), null);
            }
          })
        };
        const rootKls = [props2.class, ns.b(), ns.e("root"), ns.is("dynamic", unref(isDynamic))];
        const footerProps = {
          class: ns.e("footer"),
          style: unref(footerHeight)
        };
        return createVNode("div", {
          "class": rootKls,
          "style": unref(rootStyle)
        }, [createVNode(MainTable, mainTableProps, _isSlot(tableSlots) ? tableSlots : {
          default: () => [tableSlots]
        }), createVNode(LeftTable, leftTableProps, _isSlot(tableSlots) ? tableSlots : {
          default: () => [tableSlots]
        }), createVNode(RightTable, rightTableProps, _isSlot(tableSlots) ? tableSlots : {
          default: () => [tableSlots]
        }), slots.footer && createVNode(Footer$1, footerProps, {
          default: slots.footer
        }), unref(showEmpty) && createVNode(Footer, {
          "class": ns.e("empty"),
          "style": unref(emptyStyle)
        }, {
          default: slots.empty
        }), slots.overlay && createVNode(Overlay, {
          "class": ns.e("overlay")
        }, {
          default: slots.overlay
        })]);
      };
    }
  });
  const autoResizerProps = buildProps({
    disableWidth: Boolean,
    disableHeight: Boolean,
    onResize: {
      type: definePropType(Function)
    }
  });
  const useAutoResize = (props2) => {
    const sizer = ref();
    const width$ = ref(0);
    const height$ = ref(0);
    let resizerStopper;
    onMounted(() => {
      resizerStopper = useResizeObserver(sizer, ([entry]) => {
        const { width, height } = entry.contentRect;
        const { paddingLeft, paddingRight, paddingTop, paddingBottom } = getComputedStyle(entry.target);
        const left = Number.parseInt(paddingLeft) || 0;
        const right = Number.parseInt(paddingRight) || 0;
        const top = Number.parseInt(paddingTop) || 0;
        const bottom = Number.parseInt(paddingBottom) || 0;
        width$.value = width - left - right;
        height$.value = height - top - bottom;
      }).stop;
    });
    onBeforeUnmount(() => {
      resizerStopper == null ? void 0 : resizerStopper();
    });
    watch([width$, height$], ([width, height]) => {
      var _a;
      (_a = props2.onResize) == null ? void 0 : _a.call(props2, {
        width,
        height
      });
    });
    return {
      sizer,
      width: width$,
      height: height$
    };
  };
  const AutoResizer = /* @__PURE__ */ defineComponent({
    name: "ElAutoResizer",
    props: autoResizerProps,
    setup(props2, {
      slots
    }) {
      const ns = useNamespace("auto-resizer");
      const {
        height,
        width,
        sizer
      } = useAutoResize(props2);
      const style = {
        width: "100%",
        height: "100%"
      };
      return () => {
        var _a;
        return createVNode("div", {
          "ref": sizer,
          "class": ns.b(),
          "style": style
        }, [(_a = slots.default) == null ? void 0 : _a.call(slots, {
          height: height.value,
          width: width.value
        })]);
      };
    }
  });
  const ElTableV2 = withInstall(TableV2);
  const ElAutoResizer = withInstall(AutoResizer);
  const tabsRootContextKey = /* @__PURE__ */ Symbol("tabsRootContextKey");
  const tabBarProps = buildProps({
    tabs: {
      type: definePropType(Array),
      default: () => mutable([])
    },
    tabRefs: {
      type: definePropType(Object),
      default: () => mutable({})
    }
  });
  const COMPONENT_NAME$4 = "ElTabBar";
  var _sfc_main$1n = /* @__PURE__ */ defineComponent({
    ...{
      name: COMPONENT_NAME$4
    },
    __name: "tab-bar",
    props: tabBarProps,
    setup(__props, { expose: __expose }) {
      const props2 = __props;
      const rootTabs = inject(tabsRootContextKey);
      if (!rootTabs) throwError(COMPONENT_NAME$4, "<el-tabs><el-tab-bar /></el-tabs>");
      const ns = useNamespace("tabs");
      const barRef = ref();
      const barStyle = ref();
      const renderActiveBar = computed(
        () => {
          var _a;
          return isUndefined(rootTabs.props.defaultValue) || Boolean((_a = barStyle.value) == null ? void 0 : _a.transform);
        }
      );
      const getBarStyle = () => {
        let offset2 = 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";
        props2.tabs.every((tab) => {
          if (isUndefined(tab.paneName)) return false;
          const $el = props2.tabRefs[tab.paneName];
          if (!$el) return false;
          if (!tab.active) {
            return true;
          }
          offset2 = $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);
            offset2 += Number.parseFloat(tabStyles.paddingLeft);
          }
          return false;
        });
        return {
          [sizeName]: `${tabSize}px`,
          transform: `translate${capitalize(sizeDir)}(${offset2}px)`
        };
      };
      const update = () => barStyle.value = getBarStyle();
      const tabObservers = [];
      const observerTabs = () => {
        tabObservers.forEach((observer) => observer.stop());
        tabObservers.length = 0;
        Object.values(props2.tabRefs).forEach((tab) => {
          tabObservers.push(useResizeObserver(tab, update));
        });
      };
      watch(
        () => props2.tabs,
        async () => {
          await nextTick();
          update();
          observerTabs();
        },
        { immediate: true }
      );
      const barObserver = useResizeObserver(barRef, () => update());
      onBeforeUnmount(() => {
        tabObservers.forEach((observer) => observer.stop());
        tabObservers.length = 0;
        barObserver.stop();
      });
      __expose({
        /** @description tab root html element */
        ref: barRef,
        /** @description method to manually update tab bar style */
        update
      });
      return (_ctx, _cache) => {
        return renderActiveBar.value ? (openBlock(), createElementBlock(
          "div",
          {
            key: 0,
            ref_key: "barRef",
            ref: barRef,
            class: normalizeClass([unref(ns).e("active-bar"), unref(ns).is(unref(rootTabs).props.tabPosition)]),
            style: normalizeStyle(barStyle.value)
          },
          null,
          6
          /* CLASS, STYLE */
        )) : createCommentVNode("v-if", true);
      };
    }
  });
  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,
    /**
     * @description tab-nav tabindex
     */
    tabindex: {
      type: [String, Number],
      default: void 0
    }
  });
  const tabNavEmits = {
    tabClick: (tab, tabName, ev) => ev instanceof Event,
    tabRemove: (tab, ev) => ev instanceof Event
  };
  const COMPONENT_NAME$3 = "ElTabNav";
  const TabNav = /* @__PURE__ */ defineComponent({
    name: COMPONENT_NAME$3,
    props: tabNavProps,
    emits: tabNavEmits,
    setup(props2, {
      expose,
      emit: emit2
    }) {
      const rootTabs = inject(tabsRootContextKey);
      if (!rootTabs) throwError(COMPONENT_NAME$3, `<el-tabs><tab-nav /></el-tabs>`);
      const ns = useNamespace("tabs");
      const visibility = useDocumentVisibility();
      const focused = useWindowFocus();
      const navScroll$ = ref();
      const nav$ = ref();
      const el$ = ref();
      const tabRefsMap = ref({});
      const tabBarRef = ref();
      const scrollable = ref(false);
      const navOffset = ref(0);
      const isFocus = ref(false);
      const focusable = ref(true);
      const tracker = shallowRef();
      const isHorizontal2 = computed(() => ["top", "bottom"].includes(rootTabs.props.tabPosition));
      const sizeName = computed(() => isHorizontal2.value ? "width" : "height");
      const navStyle = computed(() => {
        const dir = sizeName.value === "width" ? "X" : "Y";
        return {
          transform: `translate${dir}(-${navOffset.value}px)`
        };
      });
      const {
        width: navContainerWidth,
        height: navContainerHeight
      } = useElementSize(navScroll$);
      const {
        width: navWidth,
        height: navHeight
      } = useElementSize(nav$, {
        width: 0,
        height: 0
      }, {
        box: "border-box"
      });
      const navContainerSize = computed(() => isHorizontal2.value ? navContainerWidth.value : navContainerHeight.value);
      const navSize = computed(() => isHorizontal2.value ? navWidth.value : navHeight.value);
      const {
        onWheel
      } = useWheel({
        atStartEdge: computed(() => navOffset.value <= 0),
        atEndEdge: computed(() => navSize.value - navOffset.value <= navContainerSize.value),
        layout: computed(() => isHorizontal2.value ? "horizontal" : "vertical")
      }, (offset2) => {
        navOffset.value = clamp$2(navOffset.value + offset2, 0, navSize.value - navContainerSize.value);
      });
      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 navSize2 = nav$.value[`offset${capitalize(sizeName.value)}`];
        const containerSize = navScroll$.value[`offset${capitalize(sizeName.value)}`];
        const currentOffset = navOffset.value;
        if (navSize2 - currentOffset <= containerSize) return;
        const newOffset = navSize2 - currentOffset > containerSize * 2 ? currentOffset + containerSize : navSize2 - containerSize;
        navOffset.value = newOffset;
      };
      const scrollToActiveTab = async () => {
        const nav = nav$.value;
        if (!scrollable.value || !el$.value || !navScroll$.value || !nav) return;
        await nextTick();
        const activeTab = tabRefsMap.value[props2.currentName];
        if (!activeTab) return;
        const navScroll = navScroll$.value;
        const activeTabBounding = activeTab.getBoundingClientRect();
        const navScrollBounding = navScroll.getBoundingClientRect();
        const maxOffset = isHorizontal2.value ? nav.offsetWidth - navScrollBounding.width : nav.offsetHeight - navScrollBounding.height;
        const currentOffset = navOffset.value;
        let newOffset = currentOffset;
        if (isHorizontal2.value) {
          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 _a;
        if (!nav$.value || !navScroll$.value) return;
        props2.stretch && ((_a = tabBarRef.value) == null ? void 0 : _a.update());
        const navSize2 = nav$.value[`offset${capitalize(sizeName.value)}`];
        const containerSize = navScroll$.value[`offset${capitalize(sizeName.value)}`];
        const currentOffset = navOffset.value;
        if (containerSize < navSize2) {
          scrollable.value = scrollable.value || {};
          scrollable.value.prev = currentOffset;
          scrollable.value.next = currentOffset + containerSize < navSize2;
          if (navSize2 - currentOffset < containerSize) {
            navOffset.value = navSize2 - containerSize;
          }
        } else {
          scrollable.value = false;
          if (currentOffset > 0) {
            navOffset.value = 0;
          }
        }
      };
      const changeTab = (event) => {
        const code = getEventCode(event);
        let step2 = 0;
        switch (code) {
          case EVENT_CODE.left:
          case EVENT_CODE.up:
            step2 = -1;
            break;
          case EVENT_CODE.right:
          case EVENT_CODE.down:
            step2 = 1;
            break;
          default:
            return;
        }
        const tabList = Array.from(event.currentTarget.querySelectorAll("[role=tab]:not(.is-disabled)"));
        const currentIndex = tabList.indexOf(event.target);
        let nextIndex = currentIndex + step2;
        if (nextIndex < 0) {
          nextIndex = tabList.length - 1;
        } else if (nextIndex >= tabList.length) {
          nextIndex = 0;
        }
        tabList[nextIndex].focus({
          preventScroll: true
        });
        tabList[nextIndex].click();
        setFocus();
      };
      const setFocus = () => {
        if (focusable.value) isFocus.value = true;
      };
      const removeFocus = () => isFocus.value = false;
      const setRefs = (el, key) => {
        tabRefsMap.value[key] = el;
      };
      const focusActiveTab = async () => {
        await nextTick();
        const activeTab = tabRefsMap.value[props2.currentName];
        activeTab == null ? void 0 : activeTab.focus({
          preventScroll: true
        });
      };
      watch(visibility, (visibility2) => {
        if (visibility2 === "hidden") {
          focusable.value = false;
        } else if (visibility2 === "visible") {
          setTimeout(() => focusable.value = true, 50);
        }
      });
      watch(focused, (focused2) => {
        if (focused2) {
          setTimeout(() => focusable.value = true, 50);
        } else {
          focusable.value = false;
        }
      });
      useResizeObserver(el$, () => {
        rAF(update);
      });
      onMounted(() => setTimeout(() => scrollToActiveTab(), 0));
      onUpdated(() => update());
      expose({
        scrollToActiveTab,
        removeFocus,
        focusActiveTab,
        tabListRef: nav$,
        tabBarRef,
        scheduleRender: () => triggerRef(tracker)
      });
      return () => {
        const scrollBtn = scrollable.value ? [createVNode("span", {
          "class": [ns.e("nav-prev"), ns.is("disabled", !scrollable.value.prev)],
          "onClick": scrollPrev
        }, [createVNode(ElIcon, null, {
          default: () => [createVNode(arrow_left_default, null, null)]
        })]), createVNode("span", {
          "class": [ns.e("nav-next"), ns.is("disabled", !scrollable.value.next)],
          "onClick": scrollNext
        }, [createVNode(ElIcon, null, {
          default: () => [createVNode(arrow_right_default, null, null)]
        })])] : null;
        const tabs = props2.panes.map((pane, index) => {
          var _a, _b, _c, _d, _e;
          const uid2 = pane.uid;
          const disabled = pane.props.disabled;
          const tabName = (_b = (_a = pane.props.name) != null ? _a : pane.index) != null ? _b : `${index}`;
          const closable = !disabled && (pane.isClosable || pane.props.closable !== false && props2.editable);
          pane.index = `${index}`;
          const btnClose = closable ? createVNode(ElIcon, {
            "class": "is-icon-close",
            "onClick": (ev) => emit2("tabRemove", pane, ev)
          }, {
            default: () => [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 ? (_e = props2.tabindex) != null ? _e : rootTabs.props.tabindex : -1;
          return createVNode("div", {
            "ref": (el) => setRefs(el, tabName),
            "class": [ns.e("item"), ns.is(rootTabs.props.tabPosition), ns.is("active", pane.active), ns.is("disabled", disabled), ns.is("closable", closable), ns.is("focus", isFocus.value)],
            "id": `tab-${tabName}`,
            "key": `tab-${uid2}`,
            "aria-controls": `pane-${tabName}`,
            "role": "tab",
            "aria-selected": pane.active,
            "tabindex": tabindex,
            "onFocus": () => setFocus(),
            "onBlur": () => removeFocus(),
            "onClick": (ev) => {
              removeFocus();
              emit2("tabClick", pane, tabName, ev);
            },
            "onKeydown": (ev) => {
              const code = getEventCode(ev);
              if (closable && (code === EVENT_CODE.delete || code === EVENT_CODE.backspace)) {
                emit2("tabRemove", pane, ev);
              }
            }
          }, [...[tabLabelContent, btnClose]]);
        });
        tracker.value;
        return createVNode("div", {
          "ref": el$,
          "class": [ns.e("nav-wrap"), ns.is("scrollable", !!scrollable.value), ns.is(rootTabs.props.tabPosition)]
        }, [scrollBtn, createVNode("div", {
          "class": ns.e("nav-scroll"),
          "ref": navScroll$
        }, [props2.panes.length > 0 ? createVNode("div", {
          "class": [ns.e("nav"), ns.is(rootTabs.props.tabPosition), ns.is("stretch", props2.stretch && ["top", "bottom"].includes(rootTabs.props.tabPosition))],
          "ref": nav$,
          "style": navStyle.value,
          "role": "tablist",
          "onKeydown": changeTab,
          "onWheel": onWheel
        }, [...[!props2.type ? createVNode(_sfc_main$1n, {
          "ref": tabBarRef,
          "tabs": [...props2.panes],
          "tabRefs": tabRefsMap.value
        }, null) : null, tabs]]) : null])]);
      };
    }
  });
  const tabsProps = buildProps({
    /**
     * @description type of Tab
     */
    type: {
      type: String,
      values: ["card", "border-card", ""],
      default: ""
    },
    /**
     * @description whether Tab is closable
     */
    closable: Boolean,
    /**
     * @description whether Tab is addable
     */
    addable: Boolean,
    /**
     * @description binding value, name of the selected tab
     */
    modelValue: {
      type: [String, Number]
    },
    /**
     * @description initial value when `model-value` is not set
     */
    defaultValue: {
      type: [String, Number]
    },
    /**
     * @description whether Tab is addable and closable
     */
    editable: Boolean,
    /**
     * @description position of tabs
     */
    tabPosition: {
      type: String,
      values: ["top", "right", "bottom", "left"],
      default: "top"
    },
    /**
     * @description hook function before switching tab. If `false` is returned or a `Promise` is returned and then is rejected, switching will be prevented
     */
    beforeLeave: {
      type: definePropType(Function),
      default: () => true
    },
    /**
     * @description whether width of tab automatically fits its container
     */
    stretch: Boolean,
    /**
     * @description tabs tabindex
     */
    tabindex: {
      type: [String, Number],
      default: 0
    }
  });
  const isPaneName = (value) => isString(value) || isNumber(value);
  const tabsEmits = {
    [UPDATE_MODEL_EVENT]: (name) => isPaneName(name),
    tabClick: (pane, ev) => ev instanceof Event,
    tabChange: (name) => isPaneName(name),
    edit: (paneName, action) => ["remove", "add"].includes(action),
    tabRemove: (name) => isPaneName(name),
    tabAdd: () => true
  };
  const Tabs = /* @__PURE__ */ defineComponent({
    name: "ElTabs",
    props: tabsProps,
    emits: tabsEmits,
    setup(props2, {
      emit: emit2,
      slots,
      expose
    }) {
      var _a;
      const ns = useNamespace("tabs");
      const isVertical = computed(() => ["left", "right"].includes(props2.tabPosition));
      const {
        children: panes,
        addChild: registerPane,
        removeChild: unregisterPane,
        ChildrenSorter: PanesSorter
      } = useOrderedChildren(getCurrentInstance(), "ElTabPane");
      const nav$ = ref();
      const currentName = ref((_a = isUndefined(props2.modelValue) ? props2.defaultValue : props2.modelValue) != null ? _a : "0");
      const setCurrentName = async (value, trigger2 = false) => {
        var _a2, _b, _c, _d;
        if (currentName.value === value || isUndefined(value)) return;
        try {
          let canLeave;
          if (props2.beforeLeave) {
            const result = props2.beforeLeave(value, currentName.value);
            canLeave = result instanceof Promise ? await result : result;
          } else {
            canLeave = true;
          }
          if (canLeave !== false) {
            const isFocusInsidePane = (_a2 = panes.value.find((item) => item.paneName === currentName.value)) == null ? void 0 : _a2.isFocusInsidePane();
            currentName.value = value;
            if (trigger2) {
              emit2(UPDATE_MODEL_EVENT, value);
              emit2("tabChange", value);
            }
            (_c = (_b = nav$.value) == null ? void 0 : _b.removeFocus) == null ? void 0 : _c.call(_b);
            if (isFocusInsidePane) {
              (_d = nav$.value) == null ? void 0 : _d.focusActiveTab();
            }
          }
        } catch (e) {
        }
      };
      const handleTabClick = (tab, tabName, event) => {
        if (tab.props.disabled) return;
        emit2("tabClick", tab, event);
        setCurrentName(tabName, true);
      };
      const handleTabRemove = (pane, ev) => {
        if (pane.props.disabled || isUndefined(pane.props.name)) return;
        ev.stopPropagation();
        emit2("edit", pane.props.name, "remove");
        emit2("tabRemove", pane.props.name);
      };
      const handleTabAdd = () => {
        emit2("edit", void 0, "add");
        emit2("tabAdd");
      };
      const handleKeydown = (event) => {
        const code = getEventCode(event);
        if ([EVENT_CODE.enter, EVENT_CODE.numpadEnter].includes(code)) handleTabAdd();
      };
      const swapChildren = (vnode) => {
        const actualFirstChild = vnode.el.firstChild;
        const firstChild = ["bottom", "right"].includes(props2.tabPosition) ? vnode.children[0].el : vnode.children[1].el;
        if (actualFirstChild !== firstChild) {
          actualFirstChild.before(firstChild);
        }
      };
      watch(() => props2.modelValue, (modelValue) => setCurrentName(modelValue));
      watch(currentName, async () => {
        var _a2;
        await nextTick();
        (_a2 = nav$.value) == null ? void 0 : _a2.scrollToActiveTab();
      });
      provide(tabsRootContextKey, {
        props: props2,
        currentName,
        registerPane,
        unregisterPane,
        nav$
      });
      expose({
        currentName,
        get tabNavRef() {
          return omit(nav$.value, ["scheduleRender"]);
        }
      });
      return () => {
        const addSlot = slots["add-icon"];
        const newButton = props2.editable || props2.addable ? createVNode("div", {
          "class": [ns.e("new-tab"), isVertical.value && ns.e("new-tab-vertical")],
          "tabindex": props2.tabindex,
          "onClick": handleTabAdd,
          "onKeydown": handleKeydown
        }, [addSlot ? renderSlot(slots, "add-icon") : createVNode(ElIcon, {
          "class": ns.is("icon-plus")
        }, {
          default: () => [createVNode(plus_default, null, null)]
        })]) : null;
        const tabNav = () => createVNode(TabNav, {
          "ref": nav$,
          "currentName": currentName.value,
          "editable": props2.editable,
          "type": props2.type,
          "panes": panes.value,
          "stretch": props2.stretch,
          "onTabClick": handleTabClick,
          "onTabRemove": handleTabRemove
        }, null);
        const header = createVNode("div", {
          "class": [ns.e("header"), isVertical.value && ns.e("header-vertical"), ns.is(props2.tabPosition)]
        }, [createVNode(PanesSorter, null, {
          default: tabNav,
          $stable: true
        }), newButton]);
        const panels = createVNode("div", {
          "class": ns.e("content")
        }, [renderSlot(slots, "default")]);
        return createVNode("div", {
          "class": [ns.b(), ns.m(props2.tabPosition), {
            [ns.m("card")]: props2.type === "card",
            [ns.m("border-card")]: props2.type === "border-card"
          }],
          "onVnodeMounted": swapChildren,
          "onVnodeUpdated": swapChildren
        }, [panels, header]);
      };
    }
  });
  const tabPaneProps = buildProps({
    /**
     * @description title of the tab
     */
    label: {
      type: String,
      default: ""
    },
    /**
     * @description identifier corresponding to the name of Tabs, representing the alias of the tab-pane, the default is ordinal number of the tab-pane in the sequence, e.g. the first tab-pane is '0'
     */
    name: {
      type: [String, Number]
    },
    /**
     * @description whether Tab is closable
     */
    closable: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description whether Tab is disabled
     */
    disabled: Boolean,
    /**
     * @description whether Tab is lazily rendered
     */
    lazy: Boolean
  });
  const _hoisted_1$13 = ["id", "aria-hidden", "aria-labelledby"];
  const COMPONENT_NAME$2 = "ElTabPane";
  var _sfc_main$1m = /* @__PURE__ */ defineComponent({
    ...{
      name: COMPONENT_NAME$2
    },
    __name: "tab-pane",
    props: tabPaneProps,
    setup(__props) {
      const props2 = __props;
      const instance = getCurrentInstance();
      const slots = useSlots();
      const tabsRoot = inject(tabsRootContextKey);
      if (!tabsRoot)
        throwError(COMPONENT_NAME$2, "usage: <el-tabs><el-tab-pane /></el-tabs/>");
      const ns = useNamespace("tab-pane");
      const paneRef = ref();
      const index = ref();
      const isClosable = computed(() => {
        var _a;
        return (_a = props2.closable) != null ? _a : tabsRoot.props.closable;
      });
      const active = computed(
        () => {
          var _a;
          return tabsRoot.currentName.value === ((_a = props2.name) != null ? _a : index.value);
        }
      );
      const loaded = ref(active.value);
      const paneName = computed(() => {
        var _a;
        return (_a = props2.name) != null ? _a : index.value;
      });
      const shouldBeRender = computed(
        () => !props2.lazy || loaded.value || active.value
      );
      const isFocusInsidePane = () => {
        var _a;
        return (_a = paneRef.value) == null ? void 0 : _a.contains(document.activeElement);
      };
      watch(active, (val) => {
        if (val) loaded.value = true;
      });
      const pane = reactive({
        uid: instance.uid,
        getVnode: () => instance.vnode,
        slots,
        props: props2,
        paneName,
        active,
        index,
        isClosable,
        isFocusInsidePane
      });
      tabsRoot.registerPane(pane);
      onBeforeUnmount(() => {
        tabsRoot.unregisterPane(pane);
      });
      onBeforeUpdate(() => {
        var _a;
        if (slots.label) (_a = tabsRoot.nav$.value) == null ? void 0 : _a.scheduleRender();
      });
      return (_ctx, _cache) => {
        return shouldBeRender.value ? withDirectives((openBlock(), createElementBlock("div", {
          key: 0,
          id: `pane-${paneName.value}`,
          ref_key: "paneRef",
          ref: paneRef,
          class: normalizeClass(unref(ns).b()),
          role: "tabpanel",
          "aria-hidden": !active.value,
          "aria-labelledby": `tab-${paneName.value}`
        }, [
          renderSlot(_ctx.$slots, "default")
        ], 10, _hoisted_1$13)), [
          [vShow, active.value]
        ]) : createCommentVNode("v-if", true);
      };
    }
  });
  const ElTabs = withInstall(Tabs, {
    TabPane: _sfc_main$1m
  });
  const ElTabPane = withNoopInstall(_sfc_main$1m);
  const textProps = buildProps({
    /**
     * @description text type
     */
    type: {
      type: String,
      values: ["primary", "success", "info", "warning", "danger", ""],
      default: ""
    },
    /**
     * @description text size
     */
    size: {
      type: String,
      values: componentSizes,
      default: ""
    },
    /**
     * @description render ellipsis
     */
    truncated: Boolean,
    /**
     * @description maximum lines
     */
    lineClamp: {
      type: [String, Number]
    },
    /**
     * @description custom element tag
     */
    tag: {
      type: String,
      default: "span"
    }
  });
  var _sfc_main$1l = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElText"
    },
    __name: "text",
    props: textProps,
    setup(__props) {
      const props2 = __props;
      const textRef = ref();
      const textSize = useFormSize();
      const ns = useNamespace("text");
      const textKls = computed(() => [
        ns.b(),
        ns.m(props2.type),
        ns.m(textSize.value),
        ns.is("truncated", props2.truncated),
        ns.is("line-clamp", !isUndefined(props2.lineClamp))
      ]);
      const bindTitle = () => {
        var _a, _b, _c, _d, _e, _f, _g;
        const inheritTitle = useAttrs$1().title;
        if (inheritTitle) return;
        let shouldAddTitle = false;
        const text = ((_a = textRef.value) == null ? void 0 : _a.textContent) || "";
        if (props2.truncated) {
          const width = (_b = textRef.value) == null ? void 0 : _b.offsetWidth;
          const scrollWidth = (_c = textRef.value) == null ? void 0 : _c.scrollWidth;
          if (width && scrollWidth && scrollWidth > width) {
            shouldAddTitle = true;
          }
        } else if (!isUndefined(props2.lineClamp)) {
          const height = (_d = textRef.value) == null ? void 0 : _d.offsetHeight;
          const scrollHeight = (_e = textRef.value) == null ? void 0 : _e.scrollHeight;
          if (height && scrollHeight && scrollHeight > height) {
            shouldAddTitle = true;
          }
        }
        if (shouldAddTitle) {
          (_f = textRef.value) == null ? void 0 : _f.setAttribute("title", text);
        } else {
          (_g = textRef.value) == null ? void 0 : _g.removeAttribute("title");
        }
      };
      onMounted(bindTitle);
      onUpdated(bindTitle);
      return (_ctx, _cache) => {
        return openBlock(), createBlock(resolveDynamicComponent(__props.tag), {
          ref_key: "textRef",
          ref: textRef,
          class: normalizeClass(textKls.value),
          style: normalizeStyle({ "-webkit-line-clamp": __props.lineClamp })
        }, {
          default: withCtx(() => [
            renderSlot(_ctx.$slots, "default")
          ]),
          _: 3
          /* FORWARDED */
        }, 8, ["class", "style"]);
      };
    }
  });
  const ElText = withInstall(_sfc_main$1l);
  const timeSelectProps = buildProps({
    /**
     * @description set format of time
     */
    format: {
      type: String,
      default: "HH:mm"
    },
    /**
     * @description binding value
     */
    modelValue: {
      type: definePropType(String)
    },
    /**
     * @description whether TimeSelect is disabled
     */
    disabled: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description whether the input is editable
     */
    editable: {
      type: Boolean,
      default: true
    },
    /**
     * @description Tooltip theme, built-in theme: `dark` / `light`
     */
    effect: {
      type: definePropType(String),
      default: "light"
    },
    /**
     * @description whether to show clear button
     */
    clearable: {
      type: Boolean,
      default: true
    },
    /**
     * @description size of Input
     */
    size: useSizeProp,
    /**
     * @description placeholder in non-range mode
     */
    placeholder: String,
    /**
     * @description start time
     */
    start: {
      type: String,
      default: "09:00"
    },
    /**
     * @description end time
     */
    end: {
      type: String,
      default: "18:00"
    },
    /**
     * @description time step
     */
    step: {
      type: String,
      default: "00:30"
    },
    /**
     * @description minimum time, any time before this time will be disabled
     */
    minTime: {
      type: definePropType(String)
    },
    /**
     * @description maximum time, any time after this time will be disabled
     */
    maxTime: {
      type: definePropType(String)
    },
    /**
     * @description whether `end` is included in options
     */
    includeEndTime: Boolean,
    /**
     * @description same as `name` in native input
     */
    name: String,
    /**
     * @description custom prefix icon component
     */
    prefixIcon: {
      type: definePropType([String, Object]),
      default: () => clock_default
    },
    /**
     * @description custom clear icon component
     */
    clearIcon: {
      type: definePropType([String, Object]),
      default: () => circle_close_default
    },
    /**
     * @description custom class name for TimeSelect's dropdown
     */
    popperClass: {
      type: String,
      default: ""
    },
    /**
     * @description custom style for TimeSelect's dropdown
     */
    popperStyle: {
      type: definePropType([String, Object])
    },
    ...useEmptyValuesProps
  });
  const parseTime = (time) => {
    const values = (time || "").split(":");
    if (values.length >= 2) {
      let hours = Number.parseInt(values[0], 10);
      const minutes = Number.parseInt(values[1], 10);
      const timeUpper = time.toUpperCase();
      if (timeUpper.includes("AM") && hours === 12) {
        hours = 0;
      } else if (timeUpper.includes("PM") && hours !== 12) {
        hours += 12;
      }
      return {
        hours,
        minutes
      };
    }
    return null;
  };
  const compareTime = (time1, time2) => {
    const value1 = parseTime(time1);
    if (!value1) return -1;
    const value2 = parseTime(time2);
    if (!value2) return -1;
    const minutes1 = value1.minutes + value1.hours * 60;
    const minutes2 = value2.minutes + value2.hours * 60;
    if (minutes1 === minutes2) {
      return 0;
    }
    return minutes1 > minutes2 ? 1 : -1;
  };
  const padTime = (time) => {
    return `${time}`.padStart(2, "0");
  };
  const formatTime = (time) => {
    return `${padTime(time.hours)}:${padTime(time.minutes)}`;
  };
  const nextTime = (time, step2) => {
    const timeValue = parseTime(time);
    if (!timeValue) return "";
    const stepValue = parseTime(step2);
    if (!stepValue) return "";
    const next = {
      hours: timeValue.hours,
      minutes: timeValue.minutes
    };
    next.minutes += stepValue.minutes;
    next.hours += stepValue.hours;
    next.hours += Math.floor(next.minutes / 60);
    next.minutes = next.minutes % 60;
    return formatTime(next);
  };
  var _sfc_main$1k = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElTimeSelect"
    },
    __name: "time-select",
    props: timeSelectProps,
    emits: [CHANGE_EVENT, "blur", "focus", "clear", UPDATE_MODEL_EVENT],
    setup(__props, { expose: __expose }) {
      dayjs.extend(customParseFormat);
      const { Option: ElOption2 } = ElSelect;
      const props2 = __props;
      const nsInput = useNamespace("input");
      const select = ref();
      const _disabled = useFormDisabled();
      const { lang } = useLocale();
      const value = computed(() => props2.modelValue);
      const start = computed(() => {
        const time = parseTime(props2.start);
        return time ? formatTime(time) : null;
      });
      const end = computed(() => {
        const time = parseTime(props2.end);
        return time ? formatTime(time) : null;
      });
      const step2 = computed(() => {
        const time = parseTime(props2.step);
        return time ? formatTime(time) : null;
      });
      const minTime = computed(() => {
        const time = parseTime(props2.minTime || "");
        return time ? formatTime(time) : null;
      });
      const maxTime = computed(() => {
        const time = parseTime(props2.maxTime || "");
        return time ? formatTime(time) : null;
      });
      const items = computed(() => {
        var _a;
        const result = [];
        const push = (formattedValue, rawValue) => {
          result.push({
            value: formattedValue,
            disabled: compareTime(rawValue, minTime.value || "-1:-1") <= 0 || compareTime(rawValue, maxTime.value || "100:100") >= 0
          });
        };
        if (props2.start && props2.end && props2.step) {
          let current = start.value;
          let currentTime;
          while (current && end.value && compareTime(current, end.value) <= 0) {
            currentTime = dayjs(current, "HH:mm").locale(lang.value).format(props2.format);
            push(currentTime, current);
            current = nextTime(current, step2.value);
          }
          if (props2.includeEndTime && end.value && ((_a = result[result.length - 1]) == null ? void 0 : _a.value) !== end.value) {
            const formattedValue = dayjs(end.value, "HH:mm").locale(lang.value).format(props2.format);
            push(formattedValue, end.value);
          }
        }
        return result;
      });
      const blur = () => {
        var _a, _b;
        (_b = (_a = select.value) == null ? void 0 : _a.blur) == null ? void 0 : _b.call(_a);
      };
      const focus = () => {
        var _a, _b;
        (_b = (_a = select.value) == null ? void 0 : _a.focus) == null ? void 0 : _b.call(_a);
      };
      __expose({
        /**
         * @description blur the Input component
         */
        blur,
        /**
         * @description focus the Input component
         */
        focus
      });
      return (_ctx, _cache) => {
        return openBlock(), createBlock(unref(ElSelect), {
          ref_key: "select",
          ref: select,
          "model-value": value.value,
          disabled: unref(_disabled),
          clearable: __props.clearable,
          "clear-icon": __props.clearIcon,
          size: __props.size,
          effect: __props.effect,
          placeholder: __props.placeholder,
          "default-first-option": "",
          filterable: __props.editable,
          "empty-values": __props.emptyValues,
          "value-on-clear": __props.valueOnClear,
          "popper-class": __props.popperClass,
          "popper-style": __props.popperStyle,
          "onUpdate:modelValue": _cache[0] || (_cache[0] = (event) => _ctx.$emit(unref(UPDATE_MODEL_EVENT), event)),
          onChange: _cache[1] || (_cache[1] = (event) => _ctx.$emit(unref(CHANGE_EVENT), event)),
          onBlur: _cache[2] || (_cache[2] = (event) => _ctx.$emit("blur", event)),
          onFocus: _cache[3] || (_cache[3] = (event) => _ctx.$emit("focus", event)),
          onClear: _cache[4] || (_cache[4] = () => _ctx.$emit("clear"))
        }, {
          prefix: withCtx(() => [
            __props.prefixIcon ? (openBlock(), createBlock(unref(ElIcon), {
              key: 0,
              class: normalizeClass(unref(nsInput).e("prefix-icon"))
            }, {
              default: withCtx(() => [
                (openBlock(), createBlock(resolveDynamicComponent(__props.prefixIcon)))
              ]),
              _: 1
              /* STABLE */
            }, 8, ["class"])) : createCommentVNode("v-if", true)
          ]),
          default: withCtx(() => [
            (openBlock(true), createElementBlock(
              Fragment,
              null,
              renderList(items.value, (item) => {
                return openBlock(), createBlock(unref(ElOption2), {
                  key: item.value,
                  label: item.value,
                  value: item.value,
                  disabled: item.disabled
                }, null, 8, ["label", "value", "disabled"]);
              }),
              128
              /* KEYED_FRAGMENT */
            ))
          ]),
          _: 1
          /* STABLE */
        }, 8, ["model-value", "disabled", "clearable", "clear-icon", "size", "effect", "placeholder", "filterable", "empty-values", "value-on-clear", "popper-class", "popper-style"]);
      };
    }
  });
  const ElTimeSelect = withInstall(_sfc_main$1k);
  const TIMELINE_INJECTION_KEY = "timeline";
  const timelineProps = buildProps({
    /**
     * @description relative position of timeline and content
     */
    mode: {
      type: String,
      values: ["start", "alternate", "alternate-reverse", "end"],
      default: "start"
    },
    /**
     * @description whether reverse order
     */
    reverse: Boolean
  });
  const Timeline = /* @__PURE__ */ defineComponent({
    name: "ElTimeline",
    props: timelineProps,
    setup(props2, { slots }) {
      const ns = useNamespace("timeline");
      provide(TIMELINE_INJECTION_KEY, { props: props2, slots });
      const timelineKls = computed(() => [ns.b(), ns.is(props2.mode)]);
      return () => {
        var _a, _b;
        const children = flattedChildren(
          (_b = (_a = slots.default) == null ? void 0 : _a.call(slots)) != null ? _b : []
        );
        return h$1(
          "ul",
          { class: timelineKls.value },
          props2.reverse ? children.reverse() : children
        );
      };
    }
  });
  const timelineItemProps = buildProps({
    /**
     * @description timestamp content
     */
    timestamp: {
      type: String,
      default: ""
    },
    /**
     * @description whether to show timestamp
     */
    hideTimestamp: Boolean,
    /**
     * @description whether vertically centered
     */
    center: Boolean,
    /**
     * @description position of timestamp
     */
    placement: {
      type: String,
      values: ["top", "bottom"],
      default: "bottom"
    },
    /**
     * @description node type
     */
    type: {
      type: String,
      values: ["primary", "success", "warning", "danger", "info"],
      default: ""
    },
    /**
     * @description background color of node
     */
    color: {
      type: String,
      default: ""
    },
    /**
     * @description node size
     */
    size: {
      type: String,
      values: ["normal", "large"],
      default: "normal"
    },
    /**
     * @description icon component
     */
    icon: {
      type: iconPropType
    },
    /**
     * @description icon is hollow
     */
    hollow: Boolean
  });
  var _sfc_main$1j = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElTimelineItem"
    },
    __name: "timeline-item",
    props: timelineItemProps,
    setup(__props) {
      const props2 = __props;
      const { props: timelineProps2 } = inject(
        TIMELINE_INJECTION_KEY
      );
      const ns = useNamespace("timeline-item");
      const defaultNodeKls = computed(() => [
        ns.e("node"),
        ns.em("node", props2.size || ""),
        ns.em("node", props2.type || ""),
        ns.is("hollow", props2.hollow)
      ]);
      const timelineItemKls = computed(() => [
        ns.b(),
        { [ns.e("center")]: props2.center },
        ns.is(timelineProps2.mode)
      ]);
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "li",
          {
            class: normalizeClass(timelineItemKls.value)
          },
          [
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(ns).e("tail"))
              },
              null,
              2
              /* CLASS */
            ),
            !_ctx.$slots.dot ? (openBlock(), createElementBlock(
              "div",
              {
                key: 0,
                class: normalizeClass(defaultNodeKls.value),
                style: normalizeStyle({
                  backgroundColor: __props.color
                })
              },
              [
                __props.icon ? (openBlock(), createBlock(unref(ElIcon), {
                  key: 0,
                  class: normalizeClass(unref(ns).e("icon"))
                }, {
                  default: withCtx(() => [
                    (openBlock(), createBlock(resolveDynamicComponent(__props.icon)))
                  ]),
                  _: 1
                  /* STABLE */
                }, 8, ["class"])) : createCommentVNode("v-if", true)
              ],
              6
              /* CLASS, STYLE */
            )) : createCommentVNode("v-if", true),
            _ctx.$slots.dot ? (openBlock(), createElementBlock(
              "div",
              {
                key: 1,
                class: normalizeClass(unref(ns).e("dot"))
              },
              [
                renderSlot(_ctx.$slots, "dot")
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true),
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(ns).e("wrapper"))
              },
              [
                !__props.hideTimestamp && __props.placement === "top" ? (openBlock(), createElementBlock(
                  "div",
                  {
                    key: 0,
                    class: normalizeClass([unref(ns).e("timestamp"), unref(ns).is("top")])
                  },
                  toDisplayString(__props.timestamp),
                  3
                  /* TEXT, CLASS */
                )) : createCommentVNode("v-if", true),
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass(unref(ns).e("content"))
                  },
                  [
                    renderSlot(_ctx.$slots, "default")
                  ],
                  2
                  /* CLASS */
                ),
                !__props.hideTimestamp && __props.placement === "bottom" ? (openBlock(), createElementBlock(
                  "div",
                  {
                    key: 1,
                    class: normalizeClass([unref(ns).e("timestamp"), unref(ns).is("bottom")])
                  },
                  toDisplayString(__props.timestamp),
                  3
                  /* TEXT, CLASS */
                )) : createCommentVNode("v-if", true)
              ],
              2
              /* CLASS */
            )
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const ElTimeline = withInstall(Timeline, {
    TimelineItem: _sfc_main$1j
  });
  const ElTimelineItem = withNoopInstall(_sfc_main$1j);
  const LEFT_CHECK_CHANGE_EVENT = "left-check-change";
  const RIGHT_CHECK_CHANGE_EVENT = "right-check-change";
  const transferProps = buildProps({
    /**
     * @description data source
     */
    data: {
      type: definePropType(Array),
      default: () => []
    },
    /**
     * @description custom list titles
     */
    titles: {
      type: definePropType(Array),
      default: () => []
    },
    /**
     * @description custom button texts
     */
    buttonTexts: {
      type: definePropType(Array),
      default: () => []
    },
    /**
     * @description placeholder for the filter input
     */
    filterPlaceholder: String,
    /**
     * @description custom filter method
     */
    filterMethod: {
      type: definePropType(
        Function
      )
    },
    /**
     * @description key array of initially checked data items of the left list
     */
    leftDefaultChecked: {
      type: definePropType(Array),
      default: () => []
    },
    /**
     * @description key array of initially checked data items of the right list
     */
    rightDefaultChecked: {
      type: definePropType(Array),
      default: () => []
    },
    /**
     * @description custom render function for data items
     */
    renderContent: {
      type: definePropType(Function)
    },
    /**
     * @description binding value
     */
    modelValue: {
      type: definePropType(Array),
      default: () => []
    },
    /**
     * @description texts for checking status in list header
     */
    format: {
      type: definePropType(Object),
      default: () => ({})
    },
    /**
     * @description whether Transfer is filterable
     */
    filterable: Boolean,
    /**
     * @description prop aliases for data source
     */
    props: {
      type: definePropType(Object),
      default: () => mutable({
        label: "label",
        key: "key",
        disabled: "disabled"
      })
    },
    /**
     * @description order strategy for elements in the target list. If set to `original`, the elements will keep the same order as the data source. If set to `push`, the newly added elements will be pushed to the bottom. If set to `unshift`, the newly added elements will be inserted on the top
     */
    targetOrder: {
      type: String,
      values: ["original", "push", "unshift"],
      default: "original"
    },
    /**
     * @description whether to trigger form validation
     */
    validateEvent: {
      type: Boolean,
      default: true
    }
  });
  const transferCheckedChangeFn = (value, movedKeys) => [value, movedKeys].every(isArray$1) || isArray$1(value) && isNil(movedKeys);
  const transferEmits = {
    [CHANGE_EVENT]: (value, direction2, movedKeys) => [value, movedKeys].every(isArray$1) && ["left", "right"].includes(direction2),
    [UPDATE_MODEL_EVENT]: (value) => isArray$1(value),
    [LEFT_CHECK_CHANGE_EVENT]: transferCheckedChangeFn,
    [RIGHT_CHECK_CHANGE_EVENT]: transferCheckedChangeFn
  };
  const CHECKED_CHANGE_EVENT = "checked-change";
  const transferPanelProps = buildProps({
    data: transferProps.data,
    optionRender: {
      type: definePropType(
        Function
      )
    },
    placeholder: String,
    title: String,
    filterable: Boolean,
    format: transferProps.format,
    filterMethod: transferProps.filterMethod,
    defaultChecked: transferProps.leftDefaultChecked,
    props: transferProps.props
  });
  const transferPanelEmits = {
    [CHECKED_CHANGE_EVENT]: transferCheckedChangeFn
  };
  const usePropsAlias = (props2) => {
    const initProps2 = {
      label: "label",
      key: "key",
      disabled: "disabled"
    };
    return computed(() => ({
      ...initProps2,
      ...props2.props
    }));
  };
  const useCheck$1 = (props2, panelState, emit2) => {
    const propsAlias = usePropsAlias(props2);
    const filteredData = computed(() => {
      return props2.data.filter((item) => {
        if (isFunction$1(props2.filterMethod)) {
          return props2.filterMethod(panelState.query, item);
        } else {
          const label = String(
            item[propsAlias.value.label] || item[propsAlias.value.key]
          );
          return label.toLowerCase().includes(panelState.query.toLowerCase());
        }
      });
    });
    const checkableData = computed(
      () => filteredData.value.filter((item) => !item[propsAlias.value.disabled])
    );
    const checkedSummary = computed(() => {
      const checkedLength = panelState.checked.length;
      const dataLength = props2.data.length;
      const { noChecked, hasChecked } = props2.format;
      if (noChecked && hasChecked) {
        return checkedLength > 0 ? hasChecked.replace(/\${checked}/g, checkedLength.toString()).replace(/\${total}/g, dataLength.toString()) : noChecked.replace(/\${total}/g, dataLength.toString());
      } else {
        return `${checkedLength}/${dataLength}`;
      }
    });
    const isIndeterminate = computed(() => {
      const checkedLength = panelState.checked.length;
      return checkedLength > 0 && checkedLength < checkableData.value.length;
    });
    const updateAllChecked = () => {
      const checkableDataKeys = checkableData.value.map(
        (item) => item[propsAlias.value.key]
      );
      panelState.allChecked = checkableDataKeys.length > 0 && checkableDataKeys.every((item) => panelState.checked.includes(item));
    };
    const handleAllCheckedChange = (value) => {
      panelState.checked = value ? checkableData.value.map((item) => item[propsAlias.value.key]) : [];
    };
    watch(
      () => panelState.checked,
      (val, oldVal) => {
        updateAllChecked();
        if (panelState.checkChangeByUser) {
          const movedKeys = val.concat(oldVal).filter((v2) => !val.includes(v2) || !oldVal.includes(v2));
          emit2(CHECKED_CHANGE_EVENT, val, movedKeys);
        } else {
          emit2(CHECKED_CHANGE_EVENT, val);
          panelState.checkChangeByUser = true;
        }
      }
    );
    watch(checkableData, () => {
      updateAllChecked();
    });
    watch(
      () => props2.data,
      () => {
        const checked = [];
        const filteredDataKeys = filteredData.value.map(
          (item) => item[propsAlias.value.key]
        );
        panelState.checked.forEach((item) => {
          if (filteredDataKeys.includes(item)) {
            checked.push(item);
          }
        });
        panelState.checkChangeByUser = false;
        panelState.checked = checked;
      }
    );
    watch(
      () => props2.defaultChecked,
      (val, oldVal) => {
        if (oldVal && val.length === oldVal.length && val.every((item) => oldVal.includes(item)))
          return;
        const checked = [];
        const checkableDataKeys = checkableData.value.map(
          (item) => item[propsAlias.value.key]
        );
        val.forEach((item) => {
          if (checkableDataKeys.includes(item)) {
            checked.push(item);
          }
        });
        panelState.checkChangeByUser = false;
        panelState.checked = checked;
      },
      {
        immediate: true
      }
    );
    return {
      filteredData,
      checkableData,
      checkedSummary,
      isIndeterminate,
      updateAllChecked,
      handleAllCheckedChange
    };
  };
  var _sfc_main$1i = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElTransferPanel"
    },
    __name: "transfer-panel",
    props: transferPanelProps,
    emits: transferPanelEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const slots = useSlots();
      const OptionContent = ({ option }) => option;
      const { t } = useLocale();
      const ns = useNamespace("transfer");
      const panelState = reactive({
        checked: [],
        allChecked: false,
        query: "",
        checkChangeByUser: true
      });
      const propsAlias = usePropsAlias(props2);
      const {
        filteredData,
        checkedSummary,
        isIndeterminate,
        handleAllCheckedChange
      } = useCheck$1(props2, panelState, emit2);
      const hasNoMatch = computed(
        () => !isEmpty(panelState.query) && isEmpty(filteredData.value)
      );
      const hasFooter = computed(() => !isEmpty(slots.default()[0].children));
      const { checked, allChecked, query } = toRefs(panelState);
      __expose({
        /** @description filter keyword */
        query
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass(unref(ns).b("panel"))
          },
          [
            createBaseVNode(
              "p",
              {
                class: normalizeClass(unref(ns).be("panel", "header"))
              },
              [
                createVNode(unref(ElCheckbox), {
                  modelValue: unref(allChecked),
                  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(allChecked) ? allChecked.value = $event : null),
                  indeterminate: unref(isIndeterminate),
                  "validate-event": false,
                  onChange: unref(handleAllCheckedChange)
                }, {
                  default: withCtx(() => [
                    createTextVNode(
                      toDisplayString(__props.title) + " ",
                      1
                      /* TEXT */
                    ),
                    createBaseVNode(
                      "span",
                      null,
                      toDisplayString(unref(checkedSummary)),
                      1
                      /* TEXT */
                    )
                  ]),
                  _: 1
                  /* STABLE */
                }, 8, ["modelValue", "indeterminate", "onChange"])
              ],
              2
              /* CLASS */
            ),
            createBaseVNode(
              "div",
              {
                class: normalizeClass([unref(ns).be("panel", "body"), unref(ns).is("with-footer", hasFooter.value)])
              },
              [
                __props.filterable ? (openBlock(), createBlock(unref(ElInput), {
                  key: 0,
                  modelValue: unref(query),
                  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => isRef(query) ? query.value = $event : null),
                  class: normalizeClass(unref(ns).be("panel", "filter")),
                  size: "default",
                  placeholder: __props.placeholder,
                  "prefix-icon": unref(search_default),
                  clearable: "",
                  "validate-event": false
                }, null, 8, ["modelValue", "class", "placeholder", "prefix-icon"])) : createCommentVNode("v-if", true),
                withDirectives(createVNode(unref(ElCheckboxGroup), {
                  modelValue: unref(checked),
                  "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => isRef(checked) ? checked.value = $event : null),
                  "validate-event": false,
                  class: normalizeClass([unref(ns).is("filterable", __props.filterable), unref(ns).be("panel", "list")])
                }, {
                  default: withCtx(() => [
                    (openBlock(true), createElementBlock(
                      Fragment,
                      null,
                      renderList(unref(filteredData), (item) => {
                        return openBlock(), createBlock(unref(ElCheckbox), {
                          key: item[unref(propsAlias).key],
                          class: normalizeClass(unref(ns).be("panel", "item")),
                          value: item[unref(propsAlias).key],
                          disabled: item[unref(propsAlias).disabled],
                          "validate-event": false
                        }, {
                          default: withCtx(() => {
                            var _a;
                            return [
                              createVNode(OptionContent, {
                                option: (_a = __props.optionRender) == null ? void 0 : _a.call(__props, item)
                              }, null, 8, ["option"])
                            ];
                          }),
                          _: 2
                          /* DYNAMIC */
                        }, 1032, ["class", "value", "disabled"]);
                      }),
                      128
                      /* KEYED_FRAGMENT */
                    ))
                  ]),
                  _: 1
                  /* STABLE */
                }, 8, ["modelValue", "class"]), [
                  [vShow, !hasNoMatch.value && !unref(isEmpty)(__props.data)]
                ]),
                withDirectives(createBaseVNode(
                  "div",
                  {
                    class: normalizeClass(unref(ns).be("panel", "empty"))
                  },
                  [
                    renderSlot(_ctx.$slots, "empty", {}, () => [
                      createTextVNode(
                        toDisplayString(hasNoMatch.value ? unref(t)("el.transfer.noMatch") : unref(t)("el.transfer.noData")),
                        1
                        /* TEXT */
                      )
                    ])
                  ],
                  2
                  /* CLASS */
                ), [
                  [vShow, hasNoMatch.value || unref(isEmpty)(__props.data)]
                ])
              ],
              2
              /* CLASS */
            ),
            hasFooter.value ? (openBlock(), createElementBlock(
              "p",
              {
                key: 0,
                class: normalizeClass(unref(ns).be("panel", "footer"))
              },
              [
                renderSlot(_ctx.$slots, "default")
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true)
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const useComputedData = (props2) => {
    const propsAlias = usePropsAlias(props2);
    const dataObj = computed(
      () => props2.data.reduce((o2, cur) => (o2[cur[propsAlias.value.key]] = cur) && o2, {})
    );
    const sourceData = computed(
      () => props2.data.filter(
        (item) => !props2.modelValue.includes(item[propsAlias.value.key])
      )
    );
    const targetData = computed(() => {
      if (props2.targetOrder === "original") {
        return props2.data.filter(
          (item) => props2.modelValue.includes(item[propsAlias.value.key])
        );
      } else {
        return props2.modelValue.reduce(
          (arr, cur) => {
            const val = dataObj.value[cur];
            if (val) {
              arr.push(val);
            }
            return arr;
          },
          []
        );
      }
    });
    return {
      sourceData,
      targetData
    };
  };
  const useMove = (props2, checkedState, emit2) => {
    const propsAlias = usePropsAlias(props2);
    const _emit = (value, direction2, movedKeys) => {
      emit2(UPDATE_MODEL_EVENT, value);
      emit2(CHANGE_EVENT, value, direction2, movedKeys);
    };
    const addToLeft = () => {
      const currentValue = props2.modelValue.slice();
      checkedState.rightChecked.forEach((item) => {
        const index = currentValue.indexOf(item);
        if (index > -1) {
          currentValue.splice(index, 1);
        }
      });
      _emit(currentValue, "left", checkedState.rightChecked);
    };
    const addToRight = () => {
      let currentValue = props2.modelValue.slice();
      const itemsToBeMoved = props2.data.filter((item) => {
        const itemKey = item[propsAlias.value.key];
        return checkedState.leftChecked.includes(itemKey) && !props2.modelValue.includes(itemKey);
      }).map((item) => item[propsAlias.value.key]);
      currentValue = props2.targetOrder === "unshift" ? itemsToBeMoved.concat(currentValue) : currentValue.concat(itemsToBeMoved);
      if (props2.targetOrder === "original") {
        currentValue = props2.data.filter((item) => currentValue.includes(item[propsAlias.value.key])).map((item) => item[propsAlias.value.key]);
      }
      _emit(currentValue, "right", checkedState.leftChecked);
    };
    return {
      addToLeft,
      addToRight
    };
  };
  const useCheckedChange = (checkedState, emit2) => {
    const onSourceCheckedChange = (val, movedKeys) => {
      checkedState.leftChecked = val;
      if (!movedKeys) return;
      emit2(LEFT_CHECK_CHANGE_EVENT, val, movedKeys);
    };
    const onTargetCheckedChange = (val, movedKeys) => {
      checkedState.rightChecked = val;
      if (!movedKeys) return;
      emit2(RIGHT_CHECK_CHANGE_EVENT, val, movedKeys);
    };
    return {
      onSourceCheckedChange,
      onTargetCheckedChange
    };
  };
  const _hoisted_1$12 = { key: 0 };
  const _hoisted_2$Y = { key: 0 };
  var _sfc_main$1h = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElTransfer"
    },
    __name: "transfer",
    props: transferProps,
    emits: transferEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const slots = useSlots();
      const { t } = useLocale();
      const ns = useNamespace("transfer");
      const { formItem } = useFormItem();
      const checkedState = reactive({
        leftChecked: [],
        rightChecked: []
      });
      const propsAlias = usePropsAlias(props2);
      const { sourceData, targetData } = useComputedData(props2);
      const { onSourceCheckedChange, onTargetCheckedChange } = useCheckedChange(
        checkedState,
        emit2
      );
      const { addToLeft, addToRight } = useMove(props2, checkedState, emit2);
      const leftPanel = ref();
      const rightPanel = ref();
      const clearQuery = (which) => {
        switch (which) {
          case "left":
            leftPanel.value.query = "";
            break;
          case "right":
            rightPanel.value.query = "";
            break;
        }
      };
      const hasButtonTexts = computed(() => props2.buttonTexts.length === 2);
      const leftPanelTitle = computed(
        () => props2.titles[0] || t("el.transfer.titles.0")
      );
      const rightPanelTitle = computed(
        () => props2.titles[1] || t("el.transfer.titles.1")
      );
      const panelFilterPlaceholder = computed(
        () => props2.filterPlaceholder || t("el.transfer.filterPlaceholder")
      );
      watch(
        () => props2.modelValue,
        () => {
          var _a;
          if (props2.validateEvent) {
            (_a = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a.call(formItem, "change").catch((err) => debugWarn());
          }
        }
      );
      const optionRender = computed(() => (option) => {
        var _a;
        if (props2.renderContent) return props2.renderContent(h$1, option);
        const defaultSlotVNodes = (((_a = slots.default) == null ? void 0 : _a.call(slots, { option })) || []).filter(
          (node) => node.type !== Comment
        );
        if (defaultSlotVNodes.length) {
          return defaultSlotVNodes;
        }
        return h$1(
          "span",
          option[propsAlias.value.label] || option[propsAlias.value.key]
        );
      });
      __expose({
        /** @description clear the filter keyword of a certain panel */
        clearQuery,
        /** @description left panel ref */
        leftPanel,
        /** @description right panel ref */
        rightPanel
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass(unref(ns).b())
          },
          [
            createVNode(_sfc_main$1i, {
              ref_key: "leftPanel",
              ref: leftPanel,
              data: unref(sourceData),
              "option-render": optionRender.value,
              placeholder: panelFilterPlaceholder.value,
              title: leftPanelTitle.value,
              filterable: __props.filterable,
              format: __props.format,
              "filter-method": __props.filterMethod,
              "default-checked": __props.leftDefaultChecked,
              props: props2.props,
              onCheckedChange: unref(onSourceCheckedChange)
            }, {
              empty: withCtx(() => [
                renderSlot(_ctx.$slots, "left-empty")
              ]),
              default: withCtx(() => [
                renderSlot(_ctx.$slots, "left-footer")
              ]),
              _: 3
              /* FORWARDED */
            }, 8, ["data", "option-render", "placeholder", "title", "filterable", "format", "filter-method", "default-checked", "props", "onCheckedChange"]),
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(ns).e("buttons"))
              },
              [
                createVNode(unref(ElButton), {
                  type: "primary",
                  class: normalizeClass([unref(ns).e("button"), unref(ns).is("with-texts", hasButtonTexts.value)]),
                  disabled: unref(isEmpty)(checkedState.rightChecked),
                  onClick: unref(addToLeft)
                }, {
                  default: withCtx(() => [
                    createVNode(unref(ElIcon), null, {
                      default: withCtx(() => [
                        createVNode(unref(arrow_left_default))
                      ]),
                      _: 1
                      /* STABLE */
                    }),
                    !unref(isUndefined)(__props.buttonTexts[0]) ? (openBlock(), createElementBlock(
                      "span",
                      _hoisted_1$12,
                      toDisplayString(__props.buttonTexts[0]),
                      1
                      /* TEXT */
                    )) : createCommentVNode("v-if", true)
                  ]),
                  _: 1
                  /* STABLE */
                }, 8, ["class", "disabled", "onClick"]),
                createVNode(unref(ElButton), {
                  type: "primary",
                  class: normalizeClass([unref(ns).e("button"), unref(ns).is("with-texts", hasButtonTexts.value)]),
                  disabled: unref(isEmpty)(checkedState.leftChecked),
                  onClick: unref(addToRight)
                }, {
                  default: withCtx(() => [
                    !unref(isUndefined)(__props.buttonTexts[1]) ? (openBlock(), createElementBlock(
                      "span",
                      _hoisted_2$Y,
                      toDisplayString(__props.buttonTexts[1]),
                      1
                      /* TEXT */
                    )) : createCommentVNode("v-if", true),
                    createVNode(unref(ElIcon), null, {
                      default: withCtx(() => [
                        createVNode(unref(arrow_right_default))
                      ]),
                      _: 1
                      /* STABLE */
                    })
                  ]),
                  _: 1
                  /* STABLE */
                }, 8, ["class", "disabled", "onClick"])
              ],
              2
              /* CLASS */
            ),
            createVNode(_sfc_main$1i, {
              ref_key: "rightPanel",
              ref: rightPanel,
              data: unref(targetData),
              "option-render": optionRender.value,
              placeholder: panelFilterPlaceholder.value,
              filterable: __props.filterable,
              format: __props.format,
              "filter-method": __props.filterMethod,
              title: rightPanelTitle.value,
              "default-checked": __props.rightDefaultChecked,
              props: props2.props,
              onCheckedChange: unref(onTargetCheckedChange)
            }, {
              empty: withCtx(() => [
                renderSlot(_ctx.$slots, "right-empty")
              ]),
              default: withCtx(() => [
                renderSlot(_ctx.$slots, "right-footer")
              ]),
              _: 3
              /* FORWARDED */
            }, 8, ["data", "option-render", "placeholder", "filterable", "format", "filter-method", "title", "default-checked", "props", "onCheckedChange"])
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const ElTransfer = withInstall(_sfc_main$1h);
  const NODE_KEY = "$treeNodeId";
  const markNodeData = function(node, data) {
    if (!data || data[NODE_KEY]) return;
    Object.defineProperty(data, NODE_KEY, {
      value: node.id,
      enumerable: false,
      configurable: false,
      writable: false
    });
  };
  const getNodeKey = (key, data) => data == null ? void 0 : data[key || NODE_KEY];
  const handleCurrentChange = (store, emit2, setCurrent) => {
    const preCurrentNode = store.value.currentNode;
    setCurrent();
    const currentNode = store.value.currentNode;
    if (preCurrentNode === currentNode) return;
    emit2("current-change", currentNode ? currentNode.data : null, currentNode);
  };
  var __defProp$2 = Object.defineProperty;
  var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  var __publicField$2 = (obj, key, value) => __defNormalProp$2(obj, typeof key !== "symbol" ? key + "" : key, value);
  const getChildState = (node) => {
    let all = true;
    let none = true;
    let allWithoutDisable = true;
    let isEffectivelyChecked = true;
    for (let i = 0, j = node.length; i < j; i++) {
      const n = node[i];
      if (n.checked !== true || n.indeterminate) {
        all = false;
        if (!n.disabled) {
          allWithoutDisable = false;
        }
      }
      if (n.checked !== false || n.indeterminate) {
        none = false;
      }
      if (!n.isEffectivelyChecked) {
        isEffectivelyChecked = false;
      }
    }
    return {
      all,
      none,
      allWithoutDisable,
      half: !all && !none,
      isEffectivelyChecked
    };
  };
  const reInitChecked = function(node) {
    if (node.childNodes.length === 0 || node.loading) {
      node.isEffectivelyChecked = node.disabled || node.checked;
      return;
    }
    const { all, none, half, isEffectivelyChecked } = getChildState(
      node.childNodes
    );
    node.isEffectivelyChecked = isEffectivelyChecked;
    if (all) {
      node.checked = true;
      node.indeterminate = false;
    } else if (half) {
      node.checked = false;
      node.indeterminate = true;
    } else if (none) {
      node.checked = false;
      node.indeterminate = false;
    }
    const parent2 = node.parent;
    if (!parent2 || parent2.level === 0) return;
    if (!node.store.checkStrictly) {
      reInitChecked(parent2);
    }
  };
  const getPropertyFromData = function(node, prop) {
    const props2 = node.store.props;
    const data = node.data || {};
    const config = props2[prop];
    if (isFunction$1(config)) {
      return config(data, node);
    } else if (isString(config)) {
      return data[config];
    } else if (isUndefined(config)) {
      const dataProp = data[prop];
      return isUndefined(dataProp) ? "" : dataProp;
    }
  };
  const setCanFocus = function(childNodes, focus) {
    childNodes.forEach((item) => {
      item.canFocus = focus;
      setCanFocus(item.childNodes, focus);
    });
  };
  let nodeIdSeed = 0;
  let Node$1 = class Node2 {
    constructor(options) {
      __publicField$2(this, "id");
      __publicField$2(this, "text");
      __publicField$2(this, "checked");
      __publicField$2(this, "indeterminate");
      __publicField$2(this, "data");
      __publicField$2(this, "expanded");
      __publicField$2(this, "parent");
      __publicField$2(this, "visible");
      __publicField$2(this, "isCurrent");
      __publicField$2(this, "store");
      __publicField$2(this, "isLeafByUser");
      __publicField$2(this, "isLeaf");
      __publicField$2(this, "canFocus");
      __publicField$2(this, "level");
      __publicField$2(this, "loaded");
      __publicField$2(this, "childNodes");
      __publicField$2(this, "loading");
      __publicField$2(this, "isEffectivelyChecked", false);
      this.id = nodeIdSeed++;
      this.text = null;
      this.checked = false;
      this.indeterminate = false;
      this.data = null;
      this.expanded = false;
      this.parent = null;
      this.visible = true;
      this.isCurrent = false;
      this.canFocus = false;
      for (const name in options) {
        if (hasOwn(options, name)) {
          this[name] = options[name];
        }
      }
      this.level = 0;
      this.loaded = false;
      this.childNodes = [];
      this.loading = false;
      if (this.parent) {
        this.level = this.parent.level + 1;
      }
    }
    initialize() {
      var _a;
      const store = this.store;
      if (!store) {
        throw new Error("[Node]store is required!");
      }
      store.registerNode(this);
      const props2 = store.props;
      if (props2 && typeof props2.isLeaf !== "undefined") {
        const isLeaf2 = getPropertyFromData(this, "isLeaf");
        if (isBoolean(isLeaf2)) {
          this.isLeafByUser = isLeaf2;
        }
      }
      if (store.lazy !== true && this.data) {
        this.setData(this.data);
        if (store.defaultExpandAll) {
          this.expanded = true;
          this.canFocus = true;
        }
      } else if (this.level > 0 && store.lazy && store.defaultExpandAll && !this.isLeafByUser) {
        this.expand();
      }
      if (!isArray$1(this.data)) {
        markNodeData(this, this.data);
      }
      if (!this.data) return;
      const defaultExpandedKeys = store.defaultExpandedKeys;
      const key = store.key;
      if (key && !isNil(this.key) && defaultExpandedKeys && defaultExpandedKeys.includes(this.key)) {
        this.expand(null, store.autoExpandParent);
      }
      if (key && store.currentNodeKey !== void 0 && this.key === store.currentNodeKey) {
        store.currentNode && (store.currentNode.isCurrent = false);
        store.currentNode = this;
        store.currentNode.isCurrent = true;
      }
      if (store.lazy) {
        store._initDefaultCheckedNode(this);
      }
      this.updateLeafState();
      if (this.level === 1 || ((_a = this.parent) == null ? void 0 : _a.expanded) === true) this.canFocus = true;
    }
    setData(data) {
      if (!isArray$1(data)) {
        markNodeData(this, data);
      }
      this.data = data;
      this.childNodes = [];
      let children;
      if (this.level === 0 && isArray$1(this.data)) {
        children = this.data;
      } else {
        children = getPropertyFromData(this, "children") || [];
      }
      for (let i = 0, j = children.length; i < j; i++) {
        this.insertChild({ data: children[i] });
      }
    }
    get label() {
      return getPropertyFromData(this, "label");
    }
    get key() {
      const nodeKey = this.store.key;
      if (this.data) return this.data[nodeKey];
      return null;
    }
    get disabled() {
      return getPropertyFromData(this, "disabled");
    }
    get nextSibling() {
      const parent2 = this.parent;
      if (parent2) {
        const index = parent2.childNodes.indexOf(this);
        if (index > -1) {
          return parent2.childNodes[index + 1];
        }
      }
      return null;
    }
    get previousSibling() {
      const parent2 = this.parent;
      if (parent2) {
        const index = parent2.childNodes.indexOf(this);
        if (index > -1) {
          return index > 0 ? parent2.childNodes[index - 1] : null;
        }
      }
      return null;
    }
    contains(target, deep = true) {
      return (this.childNodes || []).some(
        (child) => child === target || deep && child.contains(target)
      );
    }
    remove() {
      const parent2 = this.parent;
      if (parent2) {
        parent2.removeChild(this);
      }
    }
    insertChild(child, index, batch2) {
      if (!child) throw new Error("InsertChild error: child is required.");
      if (!(child instanceof Node2)) {
        if (!batch2) {
          const children = this.getChildren(true);
          if (!(children == null ? void 0 : children.includes(child.data))) {
            if (isUndefined(index) || index < 0) {
              children == null ? void 0 : children.push(child.data);
            } else {
              children == null ? void 0 : children.splice(index, 0, child.data);
            }
          }
        }
        Object.assign(child, {
          parent: this,
          store: this.store
        });
        child = reactive(new Node2(child));
        if (child instanceof Node2) {
          child.initialize();
        }
      }
      child.level = this.level + 1;
      if (isUndefined(index) || index < 0) {
        this.childNodes.push(child);
      } else {
        this.childNodes.splice(index, 0, child);
      }
      this.updateLeafState();
    }
    insertBefore(child, ref2) {
      let index;
      if (ref2) {
        index = this.childNodes.indexOf(ref2);
      }
      this.insertChild(child, index);
    }
    insertAfter(child, ref2) {
      let index;
      if (ref2) {
        index = this.childNodes.indexOf(ref2);
        if (index !== -1) index += 1;
      }
      this.insertChild(child, index);
    }
    removeChild(child) {
      const children = this.getChildren() || [];
      const dataIndex = children.indexOf(child.data);
      if (dataIndex > -1) {
        children.splice(dataIndex, 1);
      }
      const index = this.childNodes.indexOf(child);
      if (index > -1) {
        this.store && this.store.deregisterNode(child);
        child.parent = null;
        this.childNodes.splice(index, 1);
      }
      this.updateLeafState();
    }
    removeChildByData(data) {
      const targetNode = this.childNodes.find((child) => child.data === data);
      if (targetNode) {
        this.removeChild(targetNode);
      }
    }
    expand(callback, expandParent) {
      const done = () => {
        if (expandParent) {
          let parent2 = this.parent;
          while (parent2 && parent2.level > 0) {
            parent2.expanded = true;
            parent2 = parent2.parent;
          }
        }
        this.expanded = true;
        if (callback) callback();
        setCanFocus(this.childNodes, true);
      };
      if (this.shouldLoadData()) {
        this.loadData((data) => {
          if (isArray$1(data)) {
            if (this.checked) {
              this.setChecked(true, true);
            } else if (!this.store.checkStrictly) {
              reInitChecked(this);
            }
            done();
          }
        });
      } else {
        done();
      }
    }
    doCreateChildren(array, defaultProps2 = {}) {
      array.forEach((item) => {
        this.insertChild(
          Object.assign({ data: item }, defaultProps2),
          void 0,
          true
        );
      });
    }
    collapse() {
      this.expanded = false;
      setCanFocus(this.childNodes, false);
    }
    shouldLoadData() {
      return Boolean(this.store.lazy === true && this.store.load && !this.loaded);
    }
    updateLeafState() {
      if (this.store.lazy === true && this.loaded !== true && typeof this.isLeafByUser !== "undefined") {
        this.isLeaf = this.isLeafByUser;
        this.isEffectivelyChecked = this.isLeaf && this.disabled;
        return;
      }
      const childNodes = this.childNodes;
      if (!this.store.lazy || this.store.lazy === true && this.loaded === true) {
        this.isLeaf = !childNodes || childNodes.length === 0;
        this.isEffectivelyChecked = this.isLeaf && this.disabled;
        return;
      }
      this.isLeaf = false;
    }
    setChecked(value, deep, recursion, passValue) {
      this.indeterminate = value === "half";
      this.checked = value === true;
      this.isEffectivelyChecked = !this.childNodes.length && (this.disabled || this.checked);
      if (this.store.checkStrictly) return;
      if (!(this.shouldLoadData() && !this.store.checkDescendants)) {
        const handleDescendants = () => {
          if (deep) {
            const childNodes = this.childNodes;
            for (let i = 0, j = childNodes.length; i < j; i++) {
              const child = childNodes[i];
              passValue = passValue || value !== false;
              const isCheck = child.disabled && child.isLeaf ? child.checked : passValue;
              child.setChecked(isCheck, deep, true, passValue);
            }
            const { half, all, isEffectivelyChecked } = getChildState(childNodes);
            if (!all) {
              this.checked = all;
              this.indeterminate = half;
            }
            this.isEffectivelyChecked = !this.childNodes.length ? this.disabled || this.checked : isEffectivelyChecked;
          }
        };
        if (this.shouldLoadData()) {
          this.loadData(
            () => {
              handleDescendants();
              reInitChecked(this);
            },
            {
              checked: value !== false
            }
          );
          return;
        } else {
          handleDescendants();
        }
      }
      const parent2 = this.parent;
      if (!parent2 || parent2.level === 0) return;
      if (!recursion) {
        reInitChecked(parent2);
      }
    }
    getChildren(forceInit = false) {
      if (this.level === 0) return this.data;
      const data = this.data;
      if (!data) return null;
      const props2 = this.store.props;
      let children = "children";
      if (props2) {
        children = props2.children || "children";
      }
      if (isUndefined(data[children])) {
        data[children] = null;
      }
      if (forceInit && !data[children]) {
        data[children] = [];
      }
      return data[children];
    }
    updateChildren() {
      const newData = this.getChildren() || [];
      const oldData = this.childNodes.map((node) => node.data);
      const newDataMap = {};
      const newNodes = [];
      newData.forEach((item, index) => {
        const key = item[NODE_KEY];
        const isNodeExists = !!key && oldData.some((data) => (data == null ? void 0 : data[NODE_KEY]) === key);
        if (isNodeExists) {
          newDataMap[key] = { index, data: item };
        } else {
          newNodes.push({ index, data: item });
        }
      });
      if (!this.store.lazy) {
        oldData.forEach((item) => {
          if (!newDataMap[item == null ? void 0 : item[NODE_KEY]]) this.removeChildByData(item);
        });
      }
      newNodes.forEach(({ index, data }) => {
        this.insertChild({ data }, index);
      });
      this.updateLeafState();
    }
    loadData(callback, defaultProps2 = {}) {
      if (this.store.lazy === true && this.store.load && !this.loaded && (!this.loading || Object.keys(defaultProps2).length)) {
        this.loading = true;
        const resolve2 = (children) => {
          this.childNodes = [];
          this.doCreateChildren(children, defaultProps2);
          this.loaded = true;
          this.loading = false;
          this.updateLeafState();
          if (callback) {
            callback.call(this, children);
          }
        };
        const reject = () => {
          this.loading = false;
        };
        this.store.load(this, resolve2, reject);
      } else {
        if (callback) {
          callback.call(this);
        }
      }
    }
    eachNode(callback) {
      const arr = [this];
      while (arr.length) {
        const node = arr.shift();
        arr.unshift(...node.childNodes);
        callback(node);
      }
    }
    reInitChecked() {
      if (this.store.checkStrictly) return;
      reInitChecked(this);
    }
  };
  var __defProp$1 = Object.defineProperty;
  var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  var __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== "symbol" ? key + "" : key, value);
  class TreeStore {
    constructor(options) {
      __publicField$1(this, "currentNode");
      __publicField$1(this, "currentNodeKey");
      __publicField$1(this, "nodesMap");
      __publicField$1(this, "root");
      __publicField$1(this, "data");
      __publicField$1(this, "lazy", false);
      __publicField$1(this, "load");
      __publicField$1(this, "filterNodeMethod");
      __publicField$1(this, "key");
      __publicField$1(this, "defaultCheckedKeys");
      __publicField$1(this, "checkStrictly", false);
      __publicField$1(this, "defaultExpandedKeys");
      __publicField$1(this, "autoExpandParent", false);
      __publicField$1(this, "defaultExpandAll", false);
      __publicField$1(this, "checkDescendants", false);
      __publicField$1(this, "props");
      this.currentNode = null;
      this.currentNodeKey = null;
      for (const option in options) {
        if (hasOwn(options, option)) {
          this[option] = options[option];
        }
      }
      this.nodesMap = {};
    }
    initialize() {
      this.root = new Node$1({
        data: this.data,
        store: this
      });
      this.root.initialize();
      if (this.lazy && this.load) {
        const loadFn = this.load;
        loadFn(
          this.root,
          (data) => {
            this.root.doCreateChildren(data);
            this._initDefaultCheckedNodes();
          },
          NOOP
        );
      } else {
        this._initDefaultCheckedNodes();
      }
    }
    filter(value) {
      const filterNodeMethod = this.filterNodeMethod;
      const lazy = this.lazy;
      const traverse2 = async function(node) {
        const childNodes = node.root ? node.root.childNodes : node.childNodes;
        for (const [index, child] of childNodes.entries()) {
          child.visible = !!(filterNodeMethod == null ? void 0 : filterNodeMethod.call(
            child,
            value,
            child.data,
            child
          ));
          if (index % 80 === 0 && index > 0) {
            await nextTick();
          }
          await traverse2(child);
        }
        if (!node.visible && childNodes.length) {
          let allHidden = true;
          allHidden = !childNodes.some((child) => child.visible);
          if (node.root) {
            node.root.visible = allHidden === false;
          } else {
            node.visible = allHidden === false;
          }
        }
        if (!value) return;
        if (node.visible && !node.isLeaf) {
          if (!lazy || node.loaded) {
            node.expand();
          }
        }
      };
      traverse2(this);
    }
    setData(newVal) {
      const instanceChanged = newVal !== this.root.data;
      if (instanceChanged) {
        this.nodesMap = {};
        this.root.setData(newVal);
        this._initDefaultCheckedNodes();
        this.setCurrentNodeKey(this.currentNodeKey);
      } else {
        this.root.updateChildren();
      }
    }
    getNode(data) {
      if (data instanceof Node$1) return data;
      const key = isObject$2(data) ? getNodeKey(this.key, data) : data;
      return this.nodesMap[key] || null;
    }
    insertBefore(data, refData) {
      var _a;
      const refNode = this.getNode(refData);
      (_a = refNode.parent) == null ? void 0 : _a.insertBefore({ data }, refNode);
    }
    insertAfter(data, refData) {
      var _a;
      const refNode = this.getNode(refData);
      (_a = refNode.parent) == null ? void 0 : _a.insertAfter({ data }, refNode);
    }
    remove(data) {
      const node = this.getNode(data);
      if (node && node.parent) {
        if (node === this.currentNode) {
          this.currentNode = null;
        }
        node.parent.removeChild(node);
      }
    }
    append(data, parentData) {
      const parentNode = !isPropAbsent(parentData) ? this.getNode(parentData) : this.root;
      if (parentNode) {
        parentNode.insertChild({ data });
      }
    }
    _initDefaultCheckedNodes() {
      const defaultCheckedKeys = this.defaultCheckedKeys || [];
      const nodesMap = this.nodesMap;
      defaultCheckedKeys.forEach((checkedKey) => {
        const node = nodesMap[checkedKey];
        if (node) {
          node.setChecked(true, !this.checkStrictly);
        }
      });
    }
    _initDefaultCheckedNode(node) {
      const defaultCheckedKeys = this.defaultCheckedKeys || [];
      if (!isNil(node.key) && defaultCheckedKeys.includes(node.key)) {
        node.setChecked(true, !this.checkStrictly);
      }
    }
    setDefaultCheckedKey(newVal) {
      if (newVal !== this.defaultCheckedKeys) {
        this.defaultCheckedKeys = newVal;
        this._initDefaultCheckedNodes();
      }
    }
    registerNode(node) {
      const key = this.key;
      if (!node || !node.data) return;
      if (!key) {
        this.nodesMap[node.id] = node;
      } else {
        const nodeKey = node.key;
        if (!isNil(nodeKey)) this.nodesMap[nodeKey] = node;
      }
    }
    deregisterNode(node) {
      const key = this.key;
      if (!key || !node || !node.data) return;
      node.childNodes.forEach((child) => {
        this.deregisterNode(child);
      });
      delete this.nodesMap[node.key];
    }
    getCheckedNodes(leafOnly = false, includeHalfChecked = false) {
      const checkedNodes = [];
      const traverse2 = function(node) {
        const childNodes = node.root ? node.root.childNodes : node.childNodes;
        childNodes.forEach((child) => {
          if ((child.checked || includeHalfChecked && child.indeterminate) && (!leafOnly || leafOnly && child.isLeaf)) {
            checkedNodes.push(child.data);
          }
          traverse2(child);
        });
      };
      traverse2(this);
      return checkedNodes;
    }
    getCheckedKeys(leafOnly = false) {
      return this.getCheckedNodes(leafOnly).map((data) => (data || {})[this.key]);
    }
    getHalfCheckedNodes() {
      const nodes = [];
      const traverse2 = function(node) {
        const childNodes = node.root ? node.root.childNodes : node.childNodes;
        childNodes.forEach((child) => {
          if (child.indeterminate) {
            nodes.push(child.data);
          }
          traverse2(child);
        });
      };
      traverse2(this);
      return nodes;
    }
    getHalfCheckedKeys() {
      return this.getHalfCheckedNodes().map((data) => (data || {})[this.key]);
    }
    _getAllNodes() {
      const allNodes = [];
      const nodesMap = this.nodesMap;
      for (const nodeKey in nodesMap) {
        if (hasOwn(nodesMap, nodeKey)) {
          allNodes.push(nodesMap[nodeKey]);
        }
      }
      return allNodes;
    }
    updateChildren(key, data) {
      const node = this.nodesMap[key];
      if (!node) return;
      const childNodes = node.childNodes;
      for (let i = childNodes.length - 1; i >= 0; i--) {
        const child = childNodes[i];
        this.remove(child.data);
      }
      for (let i = 0, j = data.length; i < j; i++) {
        const child = data[i];
        this.append(child, node.data);
      }
    }
    _setCheckedKeys(key, leafOnly = false, checkedKeys) {
      const allNodes = this._getAllNodes().sort((a2, b2) => a2.level - b2.level);
      const cache2 = /* @__PURE__ */ Object.create(null);
      const keys2 = Object.keys(checkedKeys);
      allNodes.forEach((node) => node.setChecked(false, false));
      const cacheCheckedChild = (node) => {
        node.childNodes.forEach((child) => {
          var _a;
          cache2[child.data[key]] = true;
          if ((_a = child.childNodes) == null ? void 0 : _a.length) {
            cacheCheckedChild(child);
          }
        });
      };
      for (let i = 0, j = allNodes.length; i < j; i++) {
        const node = allNodes[i];
        const nodeKey = node.data[key].toString();
        const checked = keys2.includes(nodeKey);
        if (!checked) {
          if (node.checked && !cache2[nodeKey]) {
            node.setChecked(false, false);
          }
          continue;
        }
        if (node.childNodes.length) {
          cacheCheckedChild(node);
        }
        if (node.isLeaf || this.checkStrictly) {
          node.setChecked(true, false);
          continue;
        }
        node.setChecked(true, true);
        if (leafOnly) {
          node.setChecked(false, false);
          const traverse2 = function(node2) {
            const childNodes = node2.childNodes;
            childNodes.forEach((child) => {
              if (!child.isLeaf) {
                child.setChecked(false, false);
              }
              traverse2(child);
            });
          };
          traverse2(node);
        }
      }
    }
    setCheckedNodes(array, leafOnly = false) {
      const key = this.key;
      const checkedKeys = {};
      array.forEach((item) => {
        checkedKeys[(item || {})[key]] = true;
      });
      this._setCheckedKeys(key, leafOnly, checkedKeys);
    }
    setCheckedKeys(keys2, leafOnly = false) {
      this.defaultCheckedKeys = keys2;
      const key = this.key;
      const checkedKeys = {};
      keys2.forEach((key2) => {
        checkedKeys[key2] = true;
      });
      this._setCheckedKeys(key, leafOnly, checkedKeys);
    }
    setDefaultExpandedKeys(keys2) {
      keys2 = keys2 || [];
      this.defaultExpandedKeys = keys2;
      keys2.forEach((key) => {
        const node = this.getNode(key);
        if (node) node.expand(null, this.autoExpandParent);
      });
    }
    setChecked(data, checked, deep) {
      const node = this.getNode(data);
      if (node) {
        node.setChecked(!!checked, deep);
      }
    }
    getCurrentNode() {
      return this.currentNode;
    }
    setCurrentNode(currentNode) {
      const prevCurrentNode = this.currentNode;
      if (prevCurrentNode) {
        prevCurrentNode.isCurrent = false;
      }
      this.currentNode = currentNode;
      this.currentNode.isCurrent = true;
    }
    setUserCurrentNode(node, shouldAutoExpandParent = true) {
      var _a;
      const key = node[this.key];
      const currNode = this.nodesMap[key];
      this.setCurrentNode(currNode);
      if (shouldAutoExpandParent && this.currentNode && this.currentNode.level > 1) {
        (_a = this.currentNode.parent) == null ? void 0 : _a.expand(null, true);
      }
    }
    setCurrentNodeKey(key, shouldAutoExpandParent = true) {
      var _a;
      this.currentNodeKey = key;
      if (isPropAbsent(key)) {
        this.currentNode && (this.currentNode.isCurrent = false);
        this.currentNode = null;
        return;
      }
      const node = this.getNode(key);
      if (node) {
        this.setCurrentNode(node);
        if (shouldAutoExpandParent && this.currentNode && this.currentNode.level > 1) {
          (_a = this.currentNode.parent) == null ? void 0 : _a.expand(null, true);
        }
      }
    }
  }
  const ROOT_TREE_INJECTION_KEY$1 = "RootTree";
  const NODE_INSTANCE_INJECTION_KEY = "NodeInstance";
  const TREE_NODE_MAP_INJECTION_KEY = "TreeNodeMap";
  var _sfc_main$1g = /* @__PURE__ */ defineComponent({
    name: "ElTreeNodeContent",
    props: {
      node: {
        type: Object,
        required: true
      },
      renderContent: Function
    },
    setup(props2) {
      const ns = useNamespace("tree");
      const nodeInstance = inject(
        NODE_INSTANCE_INJECTION_KEY
      );
      const tree = inject(ROOT_TREE_INJECTION_KEY$1);
      return () => {
        const node = props2.node;
        const { data, store } = node;
        return props2.renderContent ? props2.renderContent(h$1, { _self: nodeInstance, node, data, store }) : renderSlot(tree.ctx.slots, "default", { node, data }, () => [
          h$1(
            ElText,
            { tag: "span", truncated: true, class: ns.be("node", "label") },
            () => [node.label]
          )
        ]);
      };
    }
  });
  function useNodeExpandEventBroadcast(props2) {
    const parentNodeMap = inject(
      TREE_NODE_MAP_INJECTION_KEY,
      null
    );
    let currentNodeMap = {
      treeNodeExpand: (node) => {
        var _a;
        if (props2.node !== node) {
          (_a = props2.node) == null ? void 0 : _a.collapse();
        }
      },
      children: /* @__PURE__ */ new Set()
    };
    if (parentNodeMap) {
      parentNodeMap.children.add(currentNodeMap);
    }
    onBeforeUnmount(() => {
      if (parentNodeMap) {
        parentNodeMap.children.delete(currentNodeMap);
      }
      currentNodeMap = null;
    });
    provide(TREE_NODE_MAP_INJECTION_KEY, currentNodeMap);
    return {
      broadcastExpanded: (node) => {
        if (!props2.accordion) return;
        for (const childNode of currentNodeMap.children) {
          childNode.treeNodeExpand(node);
        }
      }
    };
  }
  const dragEventsKey = /* @__PURE__ */ Symbol("dragEvents");
  function useDragNodeHandler({
    props: props2,
    ctx,
    el$,
    dropIndicator$,
    store
  }) {
    const ns = useNamespace("tree");
    const dragState = ref({
      showDropIndicator: false,
      draggingNode: null,
      dropNode: null,
      allowDrop: true,
      dropType: null
    });
    const treeNodeDragStart = ({ event, treeNode }) => {
      if (!event.dataTransfer) return;
      if (isFunction$1(props2.allowDrag) && !props2.allowDrag(treeNode.node)) {
        event.preventDefault();
        return false;
      }
      event.dataTransfer.effectAllowed = "move";
      try {
        event.dataTransfer.setData("text/plain", "");
      } catch (e) {
      }
      dragState.value.draggingNode = treeNode;
      ctx.emit("node-drag-start", treeNode.node, event);
    };
    const treeNodeDragOver = ({ event, treeNode }) => {
      if (!event.dataTransfer) return;
      const dropNode = treeNode;
      const oldDropNode = dragState.value.dropNode;
      if (oldDropNode && oldDropNode.node.id !== dropNode.node.id) {
        removeClass(oldDropNode.$el, ns.is("drop-inner"));
      }
      const draggingNode = dragState.value.draggingNode;
      if (!draggingNode || !dropNode) return;
      let dropPrev = true;
      let dropInner = true;
      let dropNext = true;
      let userAllowDropInner = true;
      if (isFunction$1(props2.allowDrop)) {
        dropPrev = props2.allowDrop(draggingNode.node, dropNode.node, "prev");
        userAllowDropInner = dropInner = props2.allowDrop(
          draggingNode.node,
          dropNode.node,
          "inner"
        );
        dropNext = props2.allowDrop(draggingNode.node, dropNode.node, "next");
      }
      event.dataTransfer.dropEffect = dropInner || dropPrev || dropNext ? "move" : "none";
      if ((dropPrev || dropInner || dropNext) && (oldDropNode == null ? void 0 : oldDropNode.node.id) !== dropNode.node.id) {
        if (oldDropNode) {
          ctx.emit("node-drag-leave", draggingNode.node, oldDropNode.node, event);
        }
        ctx.emit("node-drag-enter", draggingNode.node, dropNode.node, event);
      }
      if (dropPrev || dropInner || dropNext) {
        dragState.value.dropNode = dropNode;
      } else {
        dragState.value.dropNode = null;
      }
      if (dropNode.node.nextSibling === draggingNode.node) {
        dropNext = false;
      }
      if (dropNode.node.previousSibling === draggingNode.node) {
        dropPrev = false;
      }
      if (dropNode.node.contains(draggingNode.node, false)) {
        dropInner = false;
      }
      if (draggingNode.node === dropNode.node || draggingNode.node.contains(dropNode.node)) {
        dropPrev = false;
        dropInner = false;
        dropNext = false;
      }
      const dropEl = dropNode.$el;
      const targetPosition = dropEl.querySelector(`.${ns.be("node", "content")}`).getBoundingClientRect();
      const treePosition = el$.value.getBoundingClientRect();
      const treeScrollTop = el$.value.scrollTop;
      let dropType;
      const prevPercent = dropPrev ? dropInner ? 0.25 : dropNext ? 0.45 : 1 : Number.NEGATIVE_INFINITY;
      const nextPercent = dropNext ? dropInner ? 0.75 : dropPrev ? 0.55 : 0 : Number.POSITIVE_INFINITY;
      let indicatorTop = -9999;
      const distance = event.clientY - targetPosition.top;
      if (distance < targetPosition.height * prevPercent) {
        dropType = "before";
      } else if (distance > targetPosition.height * nextPercent) {
        dropType = "after";
      } else if (dropInner) {
        dropType = "inner";
      } else {
        dropType = "none";
      }
      const iconPosition = dropEl.querySelector(`.${ns.be("node", "expand-icon")}`).getBoundingClientRect();
      const dropIndicator = dropIndicator$.value;
      if (dropType === "before") {
        indicatorTop = iconPosition.top - treePosition.top + treeScrollTop;
      } else if (dropType === "after") {
        indicatorTop = iconPosition.bottom - treePosition.top + treeScrollTop;
      }
      dropIndicator.style.top = `${indicatorTop}px`;
      dropIndicator.style.left = `${iconPosition.right - treePosition.left}px`;
      if (dropType === "inner") {
        addClass(dropEl, ns.is("drop-inner"));
      } else {
        removeClass(dropEl, ns.is("drop-inner"));
      }
      dragState.value.showDropIndicator = dropType === "before" || dropType === "after";
      dragState.value.allowDrop = dragState.value.showDropIndicator || userAllowDropInner;
      dragState.value.dropType = dropType;
      ctx.emit("node-drag-over", draggingNode.node, dropNode.node, event);
    };
    const treeNodeDragEnd = (event) => {
      var _a, _b;
      const { draggingNode, dropType, dropNode } = dragState.value;
      event.preventDefault();
      if (event.dataTransfer) {
        event.dataTransfer.dropEffect = "move";
      }
      if ((draggingNode == null ? void 0 : draggingNode.node.data) && dropNode) {
        const draggingNodeCopy = { data: draggingNode.node.data };
        if (dropType !== "none") {
          draggingNode.node.remove();
        }
        if (dropType === "before") {
          (_a = dropNode.node.parent) == null ? void 0 : _a.insertBefore(draggingNodeCopy, dropNode.node);
        } else if (dropType === "after") {
          (_b = dropNode.node.parent) == null ? void 0 : _b.insertAfter(draggingNodeCopy, dropNode.node);
        } else if (dropType === "inner") {
          dropNode.node.insertChild(draggingNodeCopy);
        }
        if (dropType !== "none") {
          store.value.registerNode(draggingNodeCopy);
          if (store.value.key) {
            draggingNode.node.eachNode((node) => {
              var _a2;
              (_a2 = store.value.nodesMap[node.data[store.value.key]]) == null ? void 0 : _a2.setChecked(
                node.checked,
                !store.value.checkStrictly
              );
            });
          }
        }
        removeClass(dropNode.$el, ns.is("drop-inner"));
        ctx.emit(
          "node-drag-end",
          draggingNode.node,
          dropNode.node,
          dropType,
          event
        );
        if (dropType !== "none") {
          ctx.emit(
            "node-drop",
            draggingNode.node,
            dropNode.node,
            dropType,
            event
          );
        }
      }
      if (draggingNode && !dropNode) {
        ctx.emit("node-drag-end", draggingNode.node, null, dropType, event);
      }
      dragState.value.showDropIndicator = false;
      dragState.value.draggingNode = null;
      dragState.value.dropNode = null;
      dragState.value.allowDrop = true;
    };
    provide(dragEventsKey, {
      treeNodeDragStart,
      treeNodeDragOver,
      treeNodeDragEnd
    });
    return {
      dragState
    };
  }
  var _sfc_main$1f = /* @__PURE__ */ defineComponent({
    name: "ElTreeNode",
    components: {
      ElCollapseTransition,
      ElCheckbox,
      NodeContent: _sfc_main$1g,
      ElIcon,
      Loading: loading_default
    },
    props: {
      node: {
        type: Node$1,
        default: () => ({})
      },
      props: {
        type: Object,
        default: () => ({})
      },
      accordion: Boolean,
      renderContent: Function,
      renderAfterExpand: Boolean,
      showCheckbox: Boolean
    },
    emits: ["node-expand"],
    setup(props2, ctx) {
      const ns = useNamespace("tree");
      const { broadcastExpanded } = useNodeExpandEventBroadcast(props2);
      const tree = inject(ROOT_TREE_INJECTION_KEY$1);
      const expanded = ref(false);
      const childNodeRendered = ref(false);
      const oldChecked = ref();
      const oldIndeterminate = ref();
      const node$ = ref();
      const dragEvents = inject(dragEventsKey);
      const instance = getCurrentInstance();
      provide(NODE_INSTANCE_INJECTION_KEY, instance);
      if (props2.node.expanded) {
        expanded.value = true;
        childNodeRendered.value = true;
      }
      const childrenKey = tree.props.props["children"] || "children";
      watch(
        () => {
          var _a;
          const children = (_a = props2.node.data) == null ? void 0 : _a[childrenKey];
          return children && [...children];
        },
        () => {
          props2.node.updateChildren();
        }
      );
      watch(
        () => props2.node.indeterminate,
        (val) => {
          handleSelectChange(props2.node.checked, val);
        }
      );
      watch(
        () => props2.node.checked,
        (val) => {
          handleSelectChange(val, props2.node.indeterminate);
        }
      );
      watch(
        () => props2.node.childNodes.length,
        () => props2.node.reInitChecked()
      );
      watch(
        () => props2.node.expanded,
        (val) => {
          nextTick(() => expanded.value = val);
          if (val) {
            childNodeRendered.value = true;
          }
        }
      );
      const getNodeKey$1 = (node) => {
        return getNodeKey(tree.props.nodeKey, node.data);
      };
      const getNodeClass = (node) => {
        const nodeClassFunc = props2.props.class;
        if (!nodeClassFunc) {
          return {};
        }
        let className;
        if (isFunction$1(nodeClassFunc)) {
          const { data } = node;
          className = nodeClassFunc(data, node);
        } else {
          className = nodeClassFunc;
        }
        if (isString(className)) {
          return { [className]: true };
        } else {
          return className;
        }
      };
      const handleSelectChange = (checked, indeterminate) => {
        if (oldChecked.value !== checked || oldIndeterminate.value !== indeterminate) {
          tree.ctx.emit("check-change", props2.node.data, checked, indeterminate);
        }
        oldChecked.value = checked;
        oldIndeterminate.value = indeterminate;
      };
      const handleClick = (e) => {
        handleCurrentChange(tree.store, tree.ctx.emit, () => {
          var _a;
          const nodeKeyProp = (_a = tree == null ? void 0 : tree.props) == null ? void 0 : _a.nodeKey;
          if (nodeKeyProp) {
            const curNodeKey = getNodeKey$1(props2.node);
            tree.store.value.setCurrentNodeKey(curNodeKey);
          } else {
            tree.store.value.setCurrentNode(props2.node);
          }
        });
        tree.currentNode.value = props2.node;
        if (tree.props.expandOnClickNode) {
          handleExpandIconClick();
        }
        if ((tree.props.checkOnClickNode || props2.node.isLeaf && tree.props.checkOnClickLeaf && props2.showCheckbox) && !props2.node.disabled) {
          handleCheckChange(!props2.node.checked);
        }
        tree.ctx.emit("node-click", props2.node.data, props2.node, instance, e);
      };
      const handleContextMenu = (event) => {
        var _a;
        if ((_a = tree.instance.vnode.props) == null ? void 0 : _a["onNodeContextmenu"]) {
          event.stopPropagation();
          event.preventDefault();
        }
        tree.ctx.emit(
          "node-contextmenu",
          event,
          props2.node.data,
          props2.node,
          instance
        );
      };
      const handleExpandIconClick = () => {
        if (props2.node.isLeaf) return;
        if (expanded.value) {
          tree.ctx.emit("node-collapse", props2.node.data, props2.node, instance);
          props2.node.collapse();
        } else {
          props2.node.expand(() => {
            ctx.emit("node-expand", props2.node.data, props2.node, instance);
          });
        }
      };
      const handleCheckChange = (value) => {
        const checkStrictly = tree == null ? void 0 : tree.props.checkStrictly;
        const childNodes = props2.node.childNodes;
        if (!checkStrictly && childNodes.length) {
          value = childNodes.some((node) => !node.isEffectivelyChecked);
        }
        props2.node.setChecked(value, !checkStrictly);
        nextTick(() => {
          const store = tree.store.value;
          tree.ctx.emit("check", props2.node.data, {
            checkedNodes: store.getCheckedNodes(),
            checkedKeys: store.getCheckedKeys(),
            halfCheckedNodes: store.getHalfCheckedNodes(),
            halfCheckedKeys: store.getHalfCheckedKeys()
          });
        });
      };
      const handleChildNodeExpand = (nodeData, node, instance2) => {
        broadcastExpanded(node);
        tree.ctx.emit("node-expand", nodeData, node, instance2);
      };
      const handleDragStart = (event) => {
        if (!tree.props.draggable) return;
        dragEvents.treeNodeDragStart({ event, treeNode: props2 });
      };
      const handleDragOver = (event) => {
        event.preventDefault();
        if (!tree.props.draggable) return;
        dragEvents.treeNodeDragOver({
          event,
          treeNode: { $el: node$.value, node: props2.node }
        });
      };
      const handleDrop = (event) => {
        event.preventDefault();
      };
      const handleDragEnd = (event) => {
        if (!tree.props.draggable) return;
        dragEvents.treeNodeDragEnd(event);
      };
      return {
        ns,
        node$,
        tree,
        expanded,
        childNodeRendered,
        oldChecked,
        oldIndeterminate,
        getNodeKey: getNodeKey$1,
        getNodeClass,
        handleSelectChange,
        handleClick,
        handleContextMenu,
        handleExpandIconClick,
        handleCheckChange,
        handleChildNodeExpand,
        handleDragStart,
        handleDragOver,
        handleDrop,
        handleDragEnd,
        CaretRight: caret_right_default
      };
    }
  });
  const _hoisted_1$11 = ["aria-expanded", "aria-disabled", "aria-checked", "draggable", "data-key"];
  const _hoisted_2$X = ["aria-expanded"];
  function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
    const _component_el_icon = resolveComponent("el-icon");
    const _component_el_checkbox = resolveComponent("el-checkbox");
    const _component_loading = resolveComponent("loading");
    const _component_node_content = resolveComponent("node-content");
    const _component_el_tree_node = resolveComponent("el-tree-node");
    const _component_el_collapse_transition = resolveComponent("el-collapse-transition");
    return withDirectives((openBlock(), createElementBlock("div", {
      ref: "node$",
      class: normalizeClass([
        _ctx.ns.b("node"),
        _ctx.ns.is("expanded", _ctx.expanded),
        _ctx.ns.is("current", _ctx.node.isCurrent),
        _ctx.ns.is("hidden", !_ctx.node.visible),
        _ctx.ns.is("focusable", !_ctx.node.disabled),
        _ctx.ns.is("checked", !_ctx.node.disabled && _ctx.node.checked),
        _ctx.getNodeClass(_ctx.node)
      ]),
      role: "treeitem",
      tabindex: "-1",
      "aria-expanded": _ctx.expanded,
      "aria-disabled": _ctx.node.disabled,
      "aria-checked": _ctx.node.checked,
      draggable: _ctx.tree.props.draggable,
      "data-key": _ctx.getNodeKey(_ctx.node),
      onClick: _cache[2] || (_cache[2] = withModifiers((...args) => _ctx.handleClick && _ctx.handleClick(...args), ["stop"])),
      onContextmenu: _cache[3] || (_cache[3] = (...args) => _ctx.handleContextMenu && _ctx.handleContextMenu(...args)),
      onDragstart: _cache[4] || (_cache[4] = withModifiers((...args) => _ctx.handleDragStart && _ctx.handleDragStart(...args), ["stop"])),
      onDragover: _cache[5] || (_cache[5] = withModifiers((...args) => _ctx.handleDragOver && _ctx.handleDragOver(...args), ["stop"])),
      onDragend: _cache[6] || (_cache[6] = withModifiers((...args) => _ctx.handleDragEnd && _ctx.handleDragEnd(...args), ["stop"])),
      onDrop: _cache[7] || (_cache[7] = withModifiers((...args) => _ctx.handleDrop && _ctx.handleDrop(...args), ["stop"]))
    }, [
      createBaseVNode(
        "div",
        {
          class: normalizeClass(_ctx.ns.be("node", "content")),
          style: normalizeStyle({ paddingLeft: (_ctx.node.level - 1) * _ctx.tree.props.indent + "px" })
        },
        [
          _ctx.tree.props.icon || _ctx.CaretRight ? (openBlock(), createBlock(_component_el_icon, {
            key: 0,
            class: normalizeClass([
              _ctx.ns.be("node", "expand-icon"),
              _ctx.ns.is("leaf", _ctx.node.isLeaf),
              {
                expanded: !_ctx.node.isLeaf && _ctx.expanded
              }
            ]),
            onClick: withModifiers(_ctx.handleExpandIconClick, ["stop"])
          }, {
            default: withCtx(() => [
              (openBlock(), createBlock(resolveDynamicComponent(_ctx.tree.props.icon || _ctx.CaretRight)))
            ]),
            _: 1
            /* STABLE */
          }, 8, ["class", "onClick"])) : createCommentVNode("v-if", true),
          _ctx.showCheckbox ? (openBlock(), createBlock(_component_el_checkbox, {
            key: 1,
            "model-value": _ctx.node.checked,
            indeterminate: _ctx.node.indeterminate,
            disabled: !!_ctx.node.disabled,
            onClick: _cache[0] || (_cache[0] = withModifiers(() => {
            }, ["stop"])),
            onChange: _ctx.handleCheckChange
          }, null, 8, ["model-value", "indeterminate", "disabled", "onChange"])) : createCommentVNode("v-if", true),
          _ctx.node.loading ? (openBlock(), createBlock(_component_el_icon, {
            key: 2,
            class: normalizeClass([_ctx.ns.be("node", "loading-icon"), _ctx.ns.is("loading")])
          }, {
            default: withCtx(() => [
              createVNode(_component_loading)
            ]),
            _: 1
            /* STABLE */
          }, 8, ["class"])) : createCommentVNode("v-if", true),
          createVNode(_component_node_content, {
            node: _ctx.node,
            "render-content": _ctx.renderContent
          }, null, 8, ["node", "render-content"])
        ],
        6
        /* CLASS, STYLE */
      ),
      createVNode(_component_el_collapse_transition, null, {
        default: withCtx(() => [
          !_ctx.renderAfterExpand || _ctx.childNodeRendered ? withDirectives((openBlock(), createElementBlock("div", {
            key: 0,
            class: normalizeClass(_ctx.ns.be("node", "children")),
            role: "group",
            "aria-expanded": _ctx.expanded,
            onClick: _cache[1] || (_cache[1] = withModifiers(() => {
            }, ["stop"]))
          }, [
            (openBlock(true), createElementBlock(
              Fragment,
              null,
              renderList(_ctx.node.childNodes, (child) => {
                return openBlock(), createBlock(_component_el_tree_node, {
                  key: _ctx.getNodeKey(child),
                  "render-content": _ctx.renderContent,
                  "render-after-expand": _ctx.renderAfterExpand,
                  "show-checkbox": _ctx.showCheckbox,
                  node: child,
                  accordion: _ctx.accordion,
                  props: _ctx.props,
                  onNodeExpand: _ctx.handleChildNodeExpand
                }, null, 8, ["render-content", "render-after-expand", "show-checkbox", "node", "accordion", "props", "onNodeExpand"]);
              }),
              128
              /* KEYED_FRAGMENT */
            ))
          ], 10, _hoisted_2$X)), [
            [vShow, _ctx.expanded]
          ]) : createCommentVNode("v-if", true)
        ]),
        _: 1
        /* STABLE */
      })
    ], 42, _hoisted_1$11)), [
      [vShow, _ctx.node.visible]
    ]);
  }
  var ElTreeNode = /* @__PURE__ */ _export_sfc$1(_sfc_main$1f, [["render", _sfc_render$3]]);
  function useKeydown({ el$ }, store) {
    const ns = useNamespace("tree");
    onMounted(() => {
      initTabIndex();
    });
    onUpdated(() => {
      var _a;
      (_a = el$.value) == null ? void 0 : _a.querySelectorAll("input[type=checkbox]").forEach((checkbox) => {
        checkbox.setAttribute("tabindex", "-1");
      });
    });
    function canNodeFocus(treeItems, nextIndex) {
      var _a, _b;
      const currentNode = store.value.getNode(treeItems[nextIndex].dataset.key);
      return currentNode.canFocus && currentNode.visible && (((_a = currentNode.parent) == null ? void 0 : _a.expanded) || ((_b = currentNode.parent) == null ? void 0 : _b.level) === 0);
    }
    const handleKeydown = (ev) => {
      const currentItem = ev.target;
      if (!currentItem.className.includes(ns.b("node"))) return;
      const code = getEventCode(ev);
      const treeItems = Array.from(
        el$.value.querySelectorAll(`.${ns.is("focusable")}[role=treeitem]`)
      );
      const currentIndex = treeItems.indexOf(currentItem);
      let nextIndex;
      if ([EVENT_CODE.up, EVENT_CODE.down].includes(code)) {
        ev.preventDefault();
        if (code === EVENT_CODE.up) {
          nextIndex = currentIndex === -1 ? 0 : currentIndex !== 0 ? currentIndex - 1 : treeItems.length - 1;
          const startIndex = nextIndex;
          while (true) {
            if (canNodeFocus(treeItems, nextIndex)) {
              break;
            }
            nextIndex--;
            if (nextIndex === startIndex) {
              nextIndex = -1;
              break;
            }
            if (nextIndex < 0) {
              nextIndex = treeItems.length - 1;
            }
          }
        } else {
          nextIndex = currentIndex === -1 ? 0 : currentIndex < treeItems.length - 1 ? currentIndex + 1 : 0;
          const startIndex = nextIndex;
          while (true) {
            if (canNodeFocus(treeItems, nextIndex)) {
              break;
            }
            nextIndex++;
            if (nextIndex === startIndex) {
              nextIndex = -1;
              break;
            }
            if (nextIndex >= treeItems.length) {
              nextIndex = 0;
            }
          }
        }
        nextIndex !== -1 && treeItems[nextIndex].focus();
      }
      if ([EVENT_CODE.left, EVENT_CODE.right].includes(code)) {
        ev.preventDefault();
        currentItem.click();
      }
      const hasInput = currentItem.querySelector(
        '[type="checkbox"]'
      );
      if ([EVENT_CODE.enter, EVENT_CODE.numpadEnter, EVENT_CODE.space].includes(
        code
      ) && hasInput) {
        ev.preventDefault();
        hasInput.click();
      }
    };
    useEventListener(el$, "keydown", handleKeydown);
    const initTabIndex = () => {
      var _a;
      if (!el$.value) return;
      const treeItems = Array.from(
        el$.value.querySelectorAll(`.${ns.is("focusable")}[role=treeitem]`)
      );
      const checkboxItems = Array.from(
        el$.value.querySelectorAll("input[type=checkbox]")
      );
      checkboxItems.forEach((checkbox) => {
        checkbox.setAttribute("tabindex", "-1");
      });
      const checkedItem = el$.value.querySelectorAll(
        `.${ns.is("checked")}[role=treeitem]`
      );
      if (checkedItem.length) {
        checkedItem[0].setAttribute("tabindex", "0");
        return;
      }
      (_a = treeItems[0]) == null ? void 0 : _a.setAttribute("tabindex", "0");
    };
  }
  const treeProps$1 = buildProps({
    data: {
      type: definePropType(Array),
      default: () => []
    },
    emptyText: {
      type: String
    },
    renderAfterExpand: {
      type: Boolean,
      default: true
    },
    nodeKey: String,
    checkStrictly: Boolean,
    defaultExpandAll: Boolean,
    expandOnClickNode: {
      type: Boolean,
      default: true
    },
    checkOnClickNode: Boolean,
    checkOnClickLeaf: {
      type: Boolean,
      default: true
    },
    checkDescendants: Boolean,
    autoExpandParent: {
      type: Boolean,
      default: true
    },
    defaultCheckedKeys: {
      type: Array
    },
    defaultExpandedKeys: {
      type: Array
    },
    currentNodeKey: {
      type: [String, Number]
    },
    renderContent: {
      type: definePropType(Function)
    },
    showCheckbox: Boolean,
    draggable: Boolean,
    allowDrag: {
      type: definePropType(Function)
    },
    allowDrop: {
      type: definePropType(Function)
    },
    props: {
      type: Object,
      default: () => ({
        children: "children",
        label: "label",
        disabled: "disabled"
      })
    },
    lazy: Boolean,
    highlightCurrent: Boolean,
    load: {
      type: Function
    },
    filterNodeMethod: {
      type: Function
    },
    accordion: Boolean,
    indent: {
      type: Number,
      default: 18
    },
    icon: {
      type: iconPropType
    }
  });
  const treeEmits$1 = {
    "check-change": (data, checked, indeterminate) => data && isBoolean(checked) && isBoolean(indeterminate),
    "current-change": (data, node) => true,
    "node-click": (data, node, nodeInstance, evt) => data && node && evt instanceof Event,
    "node-contextmenu": (evt, data, node, nodeInstance) => evt instanceof Event && data && node,
    "node-collapse": (data, node, nodeInstance) => data && node,
    "node-expand": (data, node, nodeInstance) => data && node,
    check: (data, checkedInfo) => data && checkedInfo,
    "node-drag-start": (node, evt) => node && evt,
    "node-drag-end": (draggingNode, dropNode, dropType, evt) => draggingNode && evt,
    "node-drop": (draggingNode, dropNode, dropType, evt) => draggingNode && dropNode && evt,
    "node-drag-leave": (draggingNode, oldDropNode, evt) => draggingNode && oldDropNode && evt,
    "node-drag-enter": (draggingNode, dropNode, evt) => draggingNode && dropNode && evt,
    "node-drag-over": (draggingNode, dropNode, evt) => draggingNode && dropNode && evt
  };
  var _sfc_main$1e = /* @__PURE__ */ defineComponent({
    name: "ElTree",
    components: { ElTreeNode },
    props: treeProps$1,
    emits: treeEmits$1,
    setup(props2, ctx) {
      const { t } = useLocale();
      const ns = useNamespace("tree");
      const store = ref(
        new TreeStore({
          key: props2.nodeKey,
          data: props2.data,
          lazy: props2.lazy,
          props: props2.props,
          load: props2.load,
          currentNodeKey: props2.currentNodeKey,
          checkStrictly: props2.checkStrictly,
          checkDescendants: props2.checkDescendants,
          defaultCheckedKeys: props2.defaultCheckedKeys,
          defaultExpandedKeys: props2.defaultExpandedKeys,
          autoExpandParent: props2.autoExpandParent,
          defaultExpandAll: props2.defaultExpandAll,
          filterNodeMethod: props2.filterNodeMethod
        })
      );
      store.value.initialize();
      const root2 = ref(store.value.root);
      const currentNode = ref(null);
      const el$ = ref(null);
      const dropIndicator$ = ref(null);
      const { broadcastExpanded } = useNodeExpandEventBroadcast(props2);
      const { dragState } = useDragNodeHandler({
        props: props2,
        ctx,
        el$,
        dropIndicator$,
        store
      });
      useKeydown({ el$ }, store);
      const instance = getCurrentInstance();
      const isSelectTree = computed(() => {
        let parent2 = instance == null ? void 0 : instance.parent;
        while (parent2) {
          if (parent2.type.name === "ElTreeSelect") {
            return true;
          }
          parent2 = parent2.parent;
        }
        return false;
      });
      const isEmpty2 = computed(() => {
        const { childNodes } = root2.value;
        return (!childNodes || childNodes.length === 0 || childNodes.every(({ visible }) => !visible)) && !isSelectTree.value;
      });
      watch(
        () => props2.currentNodeKey,
        (newVal) => {
          store.value.setCurrentNodeKey(newVal != null ? newVal : null);
        }
      );
      watch(
        () => props2.defaultCheckedKeys,
        (newVal, oldVal) => {
          if (isEqual$1(newVal, oldVal)) return;
          store.value.setDefaultCheckedKey(newVal != null ? newVal : []);
        }
      );
      watch(
        () => props2.defaultExpandedKeys,
        (newVal) => {
          store.value.setDefaultExpandedKeys(newVal != null ? newVal : []);
        }
      );
      watch(
        () => props2.data,
        (newVal) => {
          store.value.setData(newVal);
        },
        { deep: true }
      );
      watch(
        () => props2.checkStrictly,
        (newVal) => {
          store.value.checkStrictly = newVal;
        }
      );
      const filter = (value) => {
        if (!props2.filterNodeMethod)
          throw new Error("[Tree] filterNodeMethod is required when filter");
        store.value.filter(value);
      };
      const getNodeKey$1 = (node) => {
        return getNodeKey(props2.nodeKey, node.data);
      };
      const requireNodeKey = (methodName) => {
        if (!props2.nodeKey) {
          throw new Error(`[Tree] nodeKey is required in ${methodName}`);
        }
      };
      const getNodePath = (data) => {
        requireNodeKey("getNodePath");
        const node = store.value.getNode(data);
        if (!node) return [];
        const path = [node.data];
        let parent2 = node.parent;
        while (parent2 && parent2 !== root2.value) {
          path.push(parent2.data);
          parent2 = parent2.parent;
        }
        return path.reverse();
      };
      const getCheckedNodes = (leafOnly, includeHalfChecked) => {
        return store.value.getCheckedNodes(leafOnly, includeHalfChecked);
      };
      const getCheckedKeys = (leafOnly) => {
        return store.value.getCheckedKeys(leafOnly);
      };
      const getCurrentNode = () => {
        const currentNode2 = store.value.getCurrentNode();
        return currentNode2 ? currentNode2.data : null;
      };
      const getCurrentKey = () => {
        requireNodeKey("getCurrentKey");
        const currentNode2 = getCurrentNode();
        return currentNode2 ? currentNode2[props2.nodeKey] : null;
      };
      const setCheckedNodes = (nodes, leafOnly) => {
        requireNodeKey("setCheckedNodes");
        store.value.setCheckedNodes(nodes, leafOnly);
      };
      const setCheckedKeys = (keys2, leafOnly) => {
        requireNodeKey("setCheckedKeys");
        store.value.setCheckedKeys(keys2, leafOnly);
      };
      const setChecked2 = (data, checked, deep) => {
        store.value.setChecked(data, checked, deep);
      };
      const getHalfCheckedNodes = () => {
        return store.value.getHalfCheckedNodes();
      };
      const getHalfCheckedKeys = () => {
        return store.value.getHalfCheckedKeys();
      };
      const setCurrentNode = (node, shouldAutoExpandParent = true) => {
        requireNodeKey("setCurrentNode");
        handleCurrentChange(store, ctx.emit, () => {
          broadcastExpanded(node);
          store.value.setUserCurrentNode(node, shouldAutoExpandParent);
        });
      };
      const setCurrentKey = (key = null, shouldAutoExpandParent = true) => {
        requireNodeKey("setCurrentKey");
        handleCurrentChange(store, ctx.emit, () => {
          broadcastExpanded();
          store.value.setCurrentNodeKey(key, shouldAutoExpandParent);
        });
      };
      const getNode = (data) => {
        return store.value.getNode(data);
      };
      const remove2 = (data) => {
        store.value.remove(data);
      };
      const append = (data, parentNode) => {
        store.value.append(data, parentNode);
      };
      const insertBefore = (data, refNode) => {
        store.value.insertBefore(data, refNode);
      };
      const insertAfter = (data, refNode) => {
        store.value.insertAfter(data, refNode);
      };
      const handleNodeExpand = (nodeData, node, instance2) => {
        broadcastExpanded(node);
        ctx.emit("node-expand", nodeData, node, instance2);
      };
      const updateKeyChildren = (key, data) => {
        requireNodeKey("updateKeyChild");
        store.value.updateChildren(key, data);
      };
      provide(ROOT_TREE_INJECTION_KEY$1, {
        ctx,
        props: props2,
        store,
        root: root2,
        currentNode,
        instance
      });
      provide(formItemContextKey, void 0);
      return {
        ns,
        // ref
        store,
        root: root2,
        currentNode,
        dragState,
        el$,
        dropIndicator$,
        // computed
        isEmpty: isEmpty2,
        // methods
        filter,
        getNodeKey: getNodeKey$1,
        getNodePath,
        getCheckedNodes,
        getCheckedKeys,
        getCurrentNode,
        getCurrentKey,
        setCheckedNodes,
        setCheckedKeys,
        setChecked: setChecked2,
        getHalfCheckedNodes,
        getHalfCheckedKeys,
        setCurrentNode,
        setCurrentKey,
        t,
        getNode,
        remove: remove2,
        append,
        insertBefore,
        insertAfter,
        handleNodeExpand,
        updateKeyChildren
      };
    }
  });
  function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
    const _component_el_tree_node = resolveComponent("el-tree-node");
    return openBlock(), createElementBlock(
      "div",
      {
        ref: "el$",
        class: normalizeClass([
          _ctx.ns.b(),
          _ctx.ns.is("dragging", !!_ctx.dragState.draggingNode),
          _ctx.ns.is("drop-not-allow", !_ctx.dragState.allowDrop),
          _ctx.ns.is("drop-inner", _ctx.dragState.dropType === "inner"),
          { [_ctx.ns.m("highlight-current")]: _ctx.highlightCurrent }
        ]),
        role: "tree"
      },
      [
        (openBlock(true), createElementBlock(
          Fragment,
          null,
          renderList(_ctx.root.childNodes, (child) => {
            return openBlock(), createBlock(_component_el_tree_node, {
              key: _ctx.getNodeKey(child),
              node: child,
              props: _ctx.props,
              accordion: _ctx.accordion,
              "render-after-expand": _ctx.renderAfterExpand,
              "show-checkbox": _ctx.showCheckbox,
              "render-content": _ctx.renderContent,
              onNodeExpand: _ctx.handleNodeExpand
            }, null, 8, ["node", "props", "accordion", "render-after-expand", "show-checkbox", "render-content", "onNodeExpand"]);
          }),
          128
          /* KEYED_FRAGMENT */
        )),
        _ctx.isEmpty ? (openBlock(), createElementBlock(
          "div",
          {
            key: 0,
            class: normalizeClass(_ctx.ns.e("empty-block"))
          },
          [
            renderSlot(_ctx.$slots, "empty", {}, () => {
              var _a;
              return [
                createBaseVNode(
                  "span",
                  {
                    class: normalizeClass(_ctx.ns.e("empty-text"))
                  },
                  toDisplayString((_a = _ctx.emptyText) != null ? _a : _ctx.t("el.tree.emptyText")),
                  3
                  /* TEXT, CLASS */
                )
              ];
            })
          ],
          2
          /* CLASS */
        )) : createCommentVNode("v-if", true),
        withDirectives(createBaseVNode(
          "div",
          {
            ref: "dropIndicator$",
            class: normalizeClass(_ctx.ns.e("drop-indicator"))
          },
          null,
          2
          /* CLASS */
        ), [
          [vShow, _ctx.dragState.showDropIndicator]
        ])
      ],
      2
      /* CLASS */
    );
  }
  var Tree = /* @__PURE__ */ _export_sfc$1(_sfc_main$1e, [["render", _sfc_render$2]]);
  const ElTree = withInstall(Tree);
  const useSelect = (props2, { attrs, emit: emit2 }, {
    select,
    tree,
    key
  }) => {
    const ns = useNamespace("tree-select");
    watch(
      () => props2.data,
      () => {
        if (props2.filterable) {
          nextTick(() => {
            var _a, _b;
            (_b = tree.value) == null ? void 0 : _b.filter((_a = select.value) == null ? void 0 : _a.states.inputValue);
          });
        }
      },
      { flush: "post" }
    );
    const focusLastNode = (listNode) => {
      var _a;
      const lastNode = listNode.at(-1);
      if (lastNode.expanded && lastNode.childNodes.at(-1)) {
        focusLastNode([lastNode.childNodes.at(-1)]);
      } else {
        const el = (_a = tree.value.el$) == null ? void 0 : _a.querySelector(
          `[data-key="${listNode.at(-1).key}"]`
        );
        el == null ? void 0 : el.focus({ preventScroll: true });
        return;
      }
    };
    onMounted(() => {
      useEventListener(
        () => {
          var _a;
          return (_a = select.value) == null ? void 0 : _a.$el;
        },
        "keydown",
        async (evt) => {
          const code = getEventCode(evt);
          const { dropdownMenuVisible } = select.value;
          if ([EVENT_CODE.down, EVENT_CODE.up].includes(code) && dropdownMenuVisible) {
            await nextTick();
            setTimeout(() => {
              var _a, _b, _c;
              if (EVENT_CODE.up === code) {
                const listNode = tree.value.store.root.childNodes;
                focusLastNode(listNode);
                return;
              }
              (_c = (_b = (_a = select.value.optionsArray[select.value.states.hoveringIndex].$el) == null ? void 0 : _a.parentNode) == null ? void 0 : _b.parentNode) == null ? void 0 : _c.focus({ preventScroll: true });
            });
          }
        },
        {
          capture: true
        }
      );
    });
    const result = {
      ...pick(toRefs(props2), Object.keys(ElSelect.props)),
      ...attrs,
      class: computed(() => attrs.class),
      style: computed(() => attrs.style),
      // attrs is not reactive, when v-model binding source changes,
      // this listener is still old, see the bug(or test 'v-model source change'):
      // https://github.com/element-plus/element-plus/issues/14204
      "onUpdate:modelValue": (value) => emit2(UPDATE_MODEL_EVENT, value),
      valueKey: key,
      popperClass: computed(() => {
        const classes = [ns.e("popper")];
        if (props2.popperClass) classes.push(props2.popperClass);
        return classes.join(" ");
      }),
      filterMethod: (keyword = "") => {
        var _a;
        if (props2.filterMethod) {
          props2.filterMethod(keyword);
        } else if (props2.remoteMethod) {
          props2.remoteMethod(keyword);
        } else {
          (_a = tree.value) == null ? void 0 : _a.filter(keyword);
        }
      }
    };
    return result;
  };
  const component = /* @__PURE__ */ defineComponent({
    extends: ElOption,
    setup(props2, ctx) {
      const result = ElOption.setup(props2, ctx);
      delete result.selectOptionClick;
      const vm = getCurrentInstance().proxy;
      nextTick(() => {
        if (!result.select.states.cachedOptions.get(vm.value)) {
          result.select.onOptionCreate(vm);
        }
      });
      watch(
        () => ctx.attrs.visible,
        (val) => {
          nextTick(() => {
            result.states.visible = val;
          });
        },
        {
          immediate: true
        }
      );
      return result;
    },
    methods: {
      selectOptionClick() {
        this.$el.parentElement.click();
      }
    }
  });
  function isValidValue(val) {
    return val || val === 0;
  }
  function isValidArray(val) {
    return isArray$1(val) && val.length;
  }
  function toValidArray(val) {
    return isArray$1(val) ? val : isValidValue(val) ? [val] : [];
  }
  function treeFind(treeData, findCallback, getChildren, resultCallback, parent2) {
    for (let i = 0; i < treeData.length; i++) {
      const data = treeData[i];
      if (findCallback(data, i, treeData, parent2)) {
        return resultCallback ? resultCallback(data, i, treeData, parent2) : data;
      } else {
        const children = getChildren(data);
        if (isValidArray(children)) {
          const find = treeFind(
            children,
            findCallback,
            getChildren,
            resultCallback,
            data
          );
          if (find) return find;
        }
      }
    }
  }
  function treeEach(treeData, callback, getChildren, parent2) {
    for (let i = 0; i < treeData.length; i++) {
      const data = treeData[i];
      callback(data, i, treeData, parent2);
      const children = getChildren(data);
      if (isValidArray(children)) {
        treeEach(children, callback, getChildren, data);
      }
    }
  }
  const useTree$1 = (props2, { attrs, slots, emit: emit2 }, {
    select,
    tree,
    key
  }) => {
    watch(
      [() => props2.modelValue, tree],
      () => {
        if (props2.showCheckbox) {
          nextTick(() => {
            const treeInstance = tree.value;
            if (treeInstance && !isEqual$1(
              treeInstance.getCheckedKeys(),
              toValidArray(props2.modelValue)
            )) {
              treeInstance.setCheckedKeys(toValidArray(props2.modelValue));
            }
          });
        }
      },
      {
        immediate: true,
        deep: true
      }
    );
    const propsMap = computed(() => ({
      value: key.value,
      label: "label",
      children: "children",
      disabled: "disabled",
      isLeaf: "isLeaf",
      ...props2.props
    }));
    const getNodeValByProp = (prop, data) => {
      var _a;
      const propVal = propsMap.value[prop];
      if (isFunction$1(propVal)) {
        return propVal(
          data,
          (_a = tree.value) == null ? void 0 : _a.getNode(getNodeValByProp("value", data))
        );
      } else {
        return data[propVal];
      }
    };
    const defaultExpandedParentKeys = toValidArray(props2.modelValue).map((value) => {
      return treeFind(
        props2.data || [],
        (data) => getNodeValByProp("value", data) === value,
        (data) => getNodeValByProp("children", data),
        (data, index, array, parent2) => parent2 && getNodeValByProp("value", parent2)
      );
    }).filter((item) => isValidValue(item));
    const cacheOptions = computed(() => {
      if (!props2.renderAfterExpand && !props2.lazy) return [];
      const options = [];
      treeEach(
        props2.data.concat(props2.cacheData),
        (node) => {
          const value = getNodeValByProp("value", node);
          options.push({
            value,
            currentLabel: getNodeValByProp("label", node),
            isDisabled: getNodeValByProp("disabled", node)
          });
        },
        (data) => getNodeValByProp("children", data)
      );
      return options;
    });
    const getChildCheckedKeys = () => {
      var _a;
      return (_a = tree.value) == null ? void 0 : _a.getCheckedKeys().filter((checkedKey) => {
        var _a2;
        const node = (_a2 = tree.value) == null ? void 0 : _a2.getNode(checkedKey);
        return !isNil(node) && isEmpty(node.childNodes);
      });
    };
    return {
      ...pick(toRefs(props2), Object.keys(ElTree.props)),
      ...attrs,
      nodeKey: key,
      // only expand on click node when the `check-strictly` is false
      expandOnClickNode: computed(() => {
        return !props2.checkStrictly && props2.expandOnClickNode;
      }),
      // show current selected node only first time,
      // fix the problem of expanding multiple nodes when checking multiple nodes
      defaultExpandedKeys: computed(() => {
        return props2.defaultExpandedKeys ? props2.defaultExpandedKeys.concat(defaultExpandedParentKeys) : defaultExpandedParentKeys;
      }),
      renderContent: (h2, { node, data, store }) => {
        return h2(
          component,
          {
            value: getNodeValByProp("value", data),
            label: getNodeValByProp("label", data),
            disabled: getNodeValByProp("disabled", data),
            visible: node.visible
          },
          props2.renderContent ? () => props2.renderContent(h2, { node, data, store }) : slots.default ? () => slots.default({ node, data, store }) : void 0
        );
      },
      filterNodeMethod: (value, data, node) => {
        if (props2.filterNodeMethod)
          return props2.filterNodeMethod(value, data, node);
        if (!value) return true;
        const regexp = new RegExp(escapeStringRegexp(value), "i");
        return regexp.test(getNodeValByProp("label", data) || "");
      },
      onNodeClick: (data, node, e) => {
        var _a, _b, _c;
        (_a = attrs.onNodeClick) == null ? void 0 : _a.call(attrs, data, node, e);
        if (props2.showCheckbox && props2.checkOnClickNode) return;
        if (!props2.showCheckbox && (props2.checkStrictly || node.isLeaf)) {
          if (!getNodeValByProp("disabled", data)) {
            const option = (_b = select.value) == null ? void 0 : _b.states.options.get(
              getNodeValByProp("value", data)
            );
            (_c = select.value) == null ? void 0 : _c.handleOptionSelect(option);
          }
        } else if (props2.expandOnClickNode) {
          e.proxy.handleExpandIconClick();
        }
      },
      onCheck: (data, params) => {
        var _a;
        if (!props2.showCheckbox) return;
        const dataValue = getNodeValByProp("value", data);
        const dataMap = {};
        treeEach(
          [tree.value.store.root],
          (node) => dataMap[node.key] = node,
          (node) => node.childNodes
        );
        const uncachedCheckedKeys = params.checkedKeys;
        const cachedKeys = props2.multiple ? toValidArray(props2.modelValue).filter(
          (item) => !(item in dataMap) && !uncachedCheckedKeys.includes(item)
        ) : [];
        const checkedKeys = cachedKeys.concat(uncachedCheckedKeys);
        if (props2.checkStrictly) {
          emit2(
            UPDATE_MODEL_EVENT,
            // Checking for changes may come from `check-on-node-click`
            props2.multiple ? checkedKeys : checkedKeys.includes(dataValue) ? dataValue : void 0
          );
        } else {
          if (props2.multiple) {
            const childKeys = getChildCheckedKeys();
            emit2(UPDATE_MODEL_EVENT, cachedKeys.concat(childKeys));
          } else {
            const firstLeaf = treeFind(
              [data],
              (data2) => !isValidArray(getNodeValByProp("children", data2)) && !getNodeValByProp("disabled", data2),
              (data2) => getNodeValByProp("children", data2)
            );
            const firstLeafKey = firstLeaf ? getNodeValByProp("value", firstLeaf) : void 0;
            const hasCheckedChild = isValidValue(props2.modelValue) && !!treeFind(
              [data],
              (data2) => getNodeValByProp("value", data2) === props2.modelValue,
              (data2) => getNodeValByProp("children", data2)
            );
            emit2(
              UPDATE_MODEL_EVENT,
              firstLeafKey === props2.modelValue || hasCheckedChild ? void 0 : firstLeafKey
            );
          }
        }
        nextTick(() => {
          var _a2;
          const checkedKeys2 = toValidArray(props2.modelValue);
          tree.value.setCheckedKeys(checkedKeys2);
          (_a2 = attrs.onCheck) == null ? void 0 : _a2.call(attrs, data, {
            checkedKeys: tree.value.getCheckedKeys(),
            checkedNodes: tree.value.getCheckedNodes(),
            halfCheckedKeys: tree.value.getHalfCheckedKeys(),
            halfCheckedNodes: tree.value.getHalfCheckedNodes()
          });
        });
        (_a = select.value) == null ? void 0 : _a.focus();
      },
      onNodeExpand: (data, node, e) => {
        var _a;
        (_a = attrs.onNodeExpand) == null ? void 0 : _a.call(attrs, data, node, e);
        nextTick(() => {
          if (!props2.checkStrictly && props2.lazy && props2.multiple && node.checked) {
            const dataMap = {};
            const uncachedCheckedKeys = tree.value.getCheckedKeys();
            treeEach(
              [tree.value.store.root],
              (node2) => dataMap[node2.key] = node2,
              (node2) => node2.childNodes
            );
            const cachedKeys = toValidArray(props2.modelValue).filter(
              (item) => !(item in dataMap) && !uncachedCheckedKeys.includes(item)
            );
            const childKeys = getChildCheckedKeys();
            emit2(UPDATE_MODEL_EVENT, cachedKeys.concat(childKeys));
          }
        });
      },
      // else
      cacheOptions
    };
  };
  var CacheOptions = /* @__PURE__ */ defineComponent({
    props: {
      data: {
        type: Array,
        default: () => []
      }
    },
    setup(props2) {
      const select = inject(selectKey);
      watch(
        () => props2.data,
        () => {
          var _a;
          props2.data.forEach((item) => {
            if (!select.states.cachedOptions.has(item.value)) {
              select.states.cachedOptions.set(item.value, item);
            }
          });
          const inputs = ((_a = select.selectRef) == null ? void 0 : _a.querySelectorAll("input")) || [];
          if (isClient && !Array.from(inputs).includes(
            document.activeElement
          )) {
            select.setSelected();
          }
        },
        { flush: "post", immediate: true }
      );
      return () => void 0;
    }
  });
  var _sfc_main$1d = /* @__PURE__ */ defineComponent({
    name: "ElTreeSelect",
    // disable `ElSelect` inherit current attrs
    inheritAttrs: false,
    props: {
      ...selectProps,
      ...treeProps$1,
      /**
       * @description The cached data of the lazy node, the structure is the same as the data, used to get the label of the unloaded data
       */
      cacheData: {
        type: Array,
        default: () => []
      }
    },
    setup(props2, context) {
      const { slots, expose } = context;
      const select = ref();
      const tree = ref();
      const key = computed(() => props2.nodeKey || props2.valueKey || "value");
      const selectProps2 = useSelect(props2, context, { select, tree, key });
      const { cacheOptions, ...treeProps2 } = useTree$1(props2, context, {
        select,
        tree,
        key
      });
      const methods = reactive({});
      expose(methods);
      onMounted(() => {
        Object.assign(methods, {
          //TODO: let only tree and select in 3.0
          ...pick(tree.value, [
            "filter",
            "updateKeyChildren",
            "getCheckedNodes",
            "setCheckedNodes",
            "getCheckedKeys",
            "setCheckedKeys",
            "setChecked",
            "getHalfCheckedNodes",
            "getHalfCheckedKeys",
            "getCurrentKey",
            "getCurrentNode",
            "setCurrentKey",
            "setCurrentNode",
            "getNode",
            "remove",
            "append",
            "insertBefore",
            "insertAfter"
          ]),
          ...pick(select.value, ["focus", "blur", "selectedLabel"]),
          treeRef: tree.value,
          selectRef: select.value
        });
      });
      return () => h$1(
        ElSelect,
        /**
         * 1. The `props` is processed into `Refs`, but `v-bind` and
         * render function props cannot read `Refs`, so use `reactive`
         * unwrap the `Refs` and keep reactive.
         * 2. The keyword `ref` requires `Ref`, but `reactive` broke it,
         * so use function.
         */
        reactive({
          ...selectProps2,
          ref: (ref2) => select.value = ref2
        }),
        {
          ...slots,
          default: () => [
            h$1(CacheOptions, { data: cacheOptions.value }),
            h$1(
              ElTree,
              reactive({
                ...treeProps2,
                ref: (ref2) => tree.value = ref2
              })
            )
          ]
        }
      );
    }
  });
  const ElTreeSelect = withInstall(_sfc_main$1d);
  const ROOT_TREE_INJECTION_KEY = /* @__PURE__ */ Symbol();
  const EMPTY_NODE = {
    key: -1,
    level: -1,
    data: {}
  };
  var TreeOptionsEnum = /* @__PURE__ */ ((TreeOptionsEnum2) => {
    TreeOptionsEnum2["KEY"] = "id";
    TreeOptionsEnum2["LABEL"] = "label";
    TreeOptionsEnum2["CHILDREN"] = "children";
    TreeOptionsEnum2["DISABLED"] = "disabled";
    TreeOptionsEnum2["CLASS"] = "";
    return TreeOptionsEnum2;
  })(TreeOptionsEnum || {});
  var SetOperationEnum = /* @__PURE__ */ ((SetOperationEnum2) => {
    SetOperationEnum2["ADD"] = "add";
    SetOperationEnum2["DELETE"] = "delete";
    return SetOperationEnum2;
  })(SetOperationEnum || {});
  const itemSize = {
    type: Number,
    default: 26
  };
  const treeProps = buildProps({
    data: {
      type: definePropType(Array),
      default: () => mutable([])
    },
    emptyText: {
      type: String
    },
    height: {
      type: Number,
      default: 200
    },
    props: {
      type: definePropType(Object),
      default: () => mutable({
        children: "children",
        label: "label",
        disabled: "disabled",
        value: "id",
        class: ""
        /* CLASS */
      })
    },
    highlightCurrent: Boolean,
    showCheckbox: Boolean,
    defaultCheckedKeys: {
      type: definePropType(Array),
      default: () => mutable([])
    },
    // Whether checked state of a node not affects its father and
    // child nodes when show-checkbox is true
    checkStrictly: Boolean,
    defaultExpandedKeys: {
      type: definePropType(Array),
      default: () => mutable([])
    },
    indent: {
      type: Number,
      default: 16
    },
    itemSize,
    icon: {
      type: iconPropType
    },
    expandOnClickNode: {
      type: Boolean,
      default: true
    },
    checkOnClickNode: Boolean,
    checkOnClickLeaf: {
      type: Boolean,
      default: true
    },
    currentNodeKey: {
      type: definePropType([String, Number])
    },
    // TODO need to optimization
    accordion: Boolean,
    filterMethod: {
      type: definePropType(Function)
    },
    // Performance mode will increase memory usage, but scrolling will be smoother
    perfMode: {
      type: Boolean,
      default: true
    },
    /**
     * @description always show scrollbar
     */
    scrollbarAlwaysOn: Boolean
  });
  const treeNodeProps = buildProps({
    node: {
      type: definePropType(Object),
      default: () => mutable(EMPTY_NODE)
    },
    expanded: Boolean,
    checked: Boolean,
    indeterminate: Boolean,
    showCheckbox: Boolean,
    disabled: Boolean,
    current: Boolean,
    hiddenExpandIcon: Boolean,
    itemSize
  });
  const treeNodeContentProps = buildProps({
    node: {
      type: definePropType(Object),
      required: true
    }
  });
  const NODE_CLICK = "node-click";
  const NODE_DROP = "node-drop";
  const NODE_EXPAND = "node-expand";
  const NODE_COLLAPSE = "node-collapse";
  const CURRENT_CHANGE = "current-change";
  const NODE_CHECK = "check";
  const NODE_CHECK_CHANGE = "check-change";
  const NODE_CONTEXTMENU = "node-contextmenu";
  const treeEmits = {
    [NODE_CLICK]: (data, node, e) => data && node && e,
    [NODE_DROP]: (data, node, e) => data && node && e,
    [NODE_EXPAND]: (data, node) => data && node,
    [NODE_COLLAPSE]: (data, node) => data && node,
    [CURRENT_CHANGE]: (data, node) => data && node,
    [NODE_CHECK]: (data, checkedInfo) => data && checkedInfo,
    [NODE_CHECK_CHANGE]: (data, checked) => data && isBoolean(checked),
    [NODE_CONTEXTMENU]: (evt, data, node) => evt && data && node
  };
  const treeNodeEmits = {
    click: (node, e) => !!(node && e),
    drop: (node, e) => !!(node && e),
    toggle: (node) => !!node,
    check: (node, checked) => node && isBoolean(checked)
  };
  function useCheck(props2, tree) {
    const checkedKeys = ref(/* @__PURE__ */ new Set());
    const indeterminateKeys = ref(/* @__PURE__ */ new Set());
    const { emit: emit2 } = getCurrentInstance();
    watch(
      [() => tree.value, () => props2.defaultCheckedKeys],
      () => {
        return nextTick(() => {
          _setCheckedKeys(props2.defaultCheckedKeys);
        });
      },
      {
        immediate: true
      }
    );
    const updateCheckedKeys = () => {
      if (!tree.value || !props2.showCheckbox || props2.checkStrictly) {
        return;
      }
      const { levelTreeNodeMap, maxLevel } = tree.value;
      const checkedKeySet = checkedKeys.value;
      const indeterminateKeySet = /* @__PURE__ */ new Set();
      for (let level = maxLevel; level >= 1; --level) {
        const nodes = levelTreeNodeMap.get(level);
        if (!nodes) continue;
        nodes.forEach((node) => {
          const children = node.children;
          let isEffectivelyChecked = !node.isLeaf || node.disabled || checkedKeySet.has(node.key);
          if (children) {
            let allChecked = true;
            let hasChecked = false;
            for (const childNode of children) {
              const key = childNode.key;
              if (!childNode.isEffectivelyChecked) {
                isEffectivelyChecked = false;
              }
              if (checkedKeySet.has(key)) {
                hasChecked = true;
              } else if (indeterminateKeySet.has(key)) {
                allChecked = false;
                hasChecked = true;
                break;
              } else {
                allChecked = false;
              }
            }
            if (allChecked) {
              checkedKeySet.add(node.key);
            } else if (hasChecked) {
              indeterminateKeySet.add(node.key);
              checkedKeySet.delete(node.key);
            } else {
              checkedKeySet.delete(node.key);
              indeterminateKeySet.delete(node.key);
            }
          }
          node.isEffectivelyChecked = isEffectivelyChecked;
        });
      }
      indeterminateKeys.value = indeterminateKeySet;
    };
    const isChecked = (node) => checkedKeys.value.has(node.key);
    const isIndeterminate = (node) => indeterminateKeys.value.has(node.key);
    const toggleCheckbox = (node, isChecked2, nodeClick = true, immediateUpdate = true) => {
      const checkedKeySet = checkedKeys.value;
      const children = node.children;
      if (!props2.checkStrictly && nodeClick && (children == null ? void 0 : children.length)) {
        isChecked2 = children.some((node2) => !node2.isEffectivelyChecked);
      }
      const toggle = (node2, checked) => {
        checkedKeySet[checked ? SetOperationEnum.ADD : SetOperationEnum.DELETE](
          node2.key
        );
        const children2 = node2.children;
        if (!props2.checkStrictly && children2) {
          children2.forEach((childNode) => {
            if (!childNode.disabled || childNode.children) {
              toggle(childNode, checked);
            }
          });
        }
      };
      toggle(node, isChecked2);
      if (immediateUpdate) {
        updateCheckedKeys();
      }
      if (nodeClick) {
        afterNodeCheck(node, isChecked2);
      }
    };
    const afterNodeCheck = (node, checked) => {
      const { checkedNodes, checkedKeys: checkedKeys2 } = getChecked();
      const { halfCheckedNodes, halfCheckedKeys } = getHalfChecked();
      emit2(NODE_CHECK, node.data, {
        checkedKeys: checkedKeys2,
        checkedNodes,
        halfCheckedKeys,
        halfCheckedNodes
      });
      emit2(NODE_CHECK_CHANGE, node.data, checked);
    };
    function getCheckedKeys(leafOnly = false) {
      return getChecked(leafOnly).checkedKeys;
    }
    function getCheckedNodes(leafOnly = false) {
      return getChecked(leafOnly).checkedNodes;
    }
    function getHalfCheckedKeys() {
      return getHalfChecked().halfCheckedKeys;
    }
    function getHalfCheckedNodes() {
      return getHalfChecked().halfCheckedNodes;
    }
    function getChecked(leafOnly = false) {
      const checkedNodes = [];
      const keys2 = [];
      if ((tree == null ? void 0 : tree.value) && props2.showCheckbox) {
        const { treeNodeMap } = tree.value;
        checkedKeys.value.forEach((key) => {
          const node = treeNodeMap.get(key);
          if (node && (!leafOnly || leafOnly && node.isLeaf)) {
            keys2.push(key);
            checkedNodes.push(node.data);
          }
        });
      }
      return {
        checkedKeys: keys2,
        checkedNodes
      };
    }
    function getHalfChecked() {
      const halfCheckedNodes = [];
      const halfCheckedKeys = [];
      if ((tree == null ? void 0 : tree.value) && props2.showCheckbox) {
        const { treeNodeMap } = tree.value;
        indeterminateKeys.value.forEach((key) => {
          const node = treeNodeMap.get(key);
          if (node) {
            halfCheckedKeys.push(key);
            halfCheckedNodes.push(node.data);
          }
        });
      }
      return {
        halfCheckedNodes,
        halfCheckedKeys
      };
    }
    function setCheckedKeys(keys2) {
      checkedKeys.value.clear();
      indeterminateKeys.value.clear();
      nextTick(() => {
        _setCheckedKeys(keys2);
      });
    }
    function setChecked2(key, isChecked2) {
      if ((tree == null ? void 0 : tree.value) && props2.showCheckbox) {
        const node = tree.value.treeNodeMap.get(key);
        if (node) {
          toggleCheckbox(node, isChecked2, false);
        }
      }
    }
    function _setCheckedKeys(keys2) {
      if (tree == null ? void 0 : tree.value) {
        const { treeNodeMap } = tree.value;
        if (props2.showCheckbox && treeNodeMap && (keys2 == null ? void 0 : keys2.length) > 0) {
          for (const key of keys2) {
            const node = treeNodeMap.get(key);
            if (node && !isChecked(node)) {
              toggleCheckbox(node, true, false, false);
            }
          }
          updateCheckedKeys();
        }
      }
    }
    return {
      updateCheckedKeys,
      toggleCheckbox,
      isChecked,
      isIndeterminate,
      // expose
      getCheckedKeys,
      getCheckedNodes,
      getHalfCheckedKeys,
      getHalfCheckedNodes,
      setChecked: setChecked2,
      setCheckedKeys
    };
  }
  function useFilter(props2, tree) {
    const hiddenNodeKeySet = ref(/* @__PURE__ */ new Set([]));
    const hiddenExpandIconKeySet = ref(/* @__PURE__ */ new Set([]));
    const filterable = computed(() => {
      return isFunction$1(props2.filterMethod);
    });
    function doFilter(query) {
      var _a;
      if (!filterable.value) {
        return;
      }
      const expandKeySet = /* @__PURE__ */ new Set();
      const hiddenExpandIconKeys = hiddenExpandIconKeySet.value;
      const hiddenKeys = hiddenNodeKeySet.value;
      const family = [];
      const nodes = ((_a = tree.value) == null ? void 0 : _a.treeNodes) || [];
      const filter = props2.filterMethod;
      hiddenKeys.clear();
      function traverse2(nodes2) {
        nodes2.forEach((node) => {
          family.push(node);
          if (filter == null ? void 0 : filter(query, node.data, node)) {
            family.forEach((member) => {
              expandKeySet.add(member.key);
              member.expanded = true;
            });
          } else {
            node.expanded = false;
            if (node.isLeaf) {
              hiddenKeys.add(node.key);
            }
          }
          const children = node.children;
          if (children) {
            traverse2(children);
          }
          if (!node.isLeaf) {
            if (!expandKeySet.has(node.key)) {
              hiddenKeys.add(node.key);
            } else if (children) {
              let allHidden = true;
              for (const childNode of children) {
                if (!hiddenKeys.has(childNode.key)) {
                  allHidden = false;
                  break;
                }
              }
              if (allHidden) {
                hiddenExpandIconKeys.add(node.key);
              } else {
                hiddenExpandIconKeys.delete(node.key);
              }
            }
          }
          family.pop();
        });
      }
      traverse2(nodes);
      return expandKeySet;
    }
    function isForceHiddenExpandIcon(node) {
      return hiddenExpandIconKeySet.value.has(node.key);
    }
    return {
      hiddenExpandIconKeySet,
      hiddenNodeKeySet,
      doFilter,
      isForceHiddenExpandIcon
    };
  }
  function useTree(props2, emit2) {
    const expandedKeySet = ref(/* @__PURE__ */ new Set());
    const currentKey = ref();
    const tree = shallowRef();
    const listRef = ref();
    const {
      isIndeterminate,
      isChecked,
      toggleCheckbox,
      getCheckedKeys,
      getCheckedNodes,
      getHalfCheckedKeys,
      getHalfCheckedNodes,
      setChecked: setChecked2,
      setCheckedKeys
    } = useCheck(props2, tree);
    const { doFilter, hiddenNodeKeySet, isForceHiddenExpandIcon } = useFilter(
      props2,
      tree
    );
    const valueKey = computed(() => {
      var _a;
      return ((_a = props2.props) == null ? void 0 : _a.value) || TreeOptionsEnum.KEY;
    });
    const childrenKey = computed(() => {
      var _a;
      return ((_a = props2.props) == null ? void 0 : _a.children) || TreeOptionsEnum.CHILDREN;
    });
    const disabledKey = computed(() => {
      var _a;
      return ((_a = props2.props) == null ? void 0 : _a.disabled) || TreeOptionsEnum.DISABLED;
    });
    const labelKey = computed(() => {
      var _a;
      return ((_a = props2.props) == null ? void 0 : _a.label) || TreeOptionsEnum.LABEL;
    });
    const flattenTree = computed(() => {
      var _a;
      const expandedKeys = expandedKeySet.value;
      const hiddenKeys = hiddenNodeKeySet.value;
      const flattenNodes = [];
      const nodes = ((_a = tree.value) == null ? void 0 : _a.treeNodes) || [];
      const stack2 = [];
      for (let i = nodes.length - 1; i >= 0; --i) {
        stack2.push(nodes[i]);
      }
      while (stack2.length) {
        const node = stack2.pop();
        if (hiddenKeys.has(node.key)) continue;
        flattenNodes.push(node);
        if (node.children && expandedKeys.has(node.key)) {
          for (let i = node.children.length - 1; i >= 0; --i) {
            stack2.push(node.children[i]);
          }
        }
      }
      return flattenNodes;
    });
    const isNotEmpty = computed(() => {
      return flattenTree.value.length > 0;
    });
    function createTree(data) {
      const treeNodeMap = /* @__PURE__ */ new Map();
      const levelTreeNodeMap = /* @__PURE__ */ new Map();
      let maxLevel = 1;
      function traverse2(nodes, level = 1, parent2 = void 0) {
        var _a;
        const siblings = [];
        for (const rawNode of nodes) {
          const value = getKey(rawNode);
          const node = {
            level,
            key: value,
            data: rawNode
          };
          node.label = getLabel(rawNode);
          node.parent = parent2;
          const children = getChildren(rawNode);
          node.disabled = getDisabled(rawNode);
          node.isLeaf = !children || children.length === 0;
          node.expanded = expandedKeySet.value.has(value);
          if (children && children.length) {
            node.children = traverse2(children, level + 1, node);
          }
          siblings.push(node);
          treeNodeMap.set(value, node);
          if (!levelTreeNodeMap.has(level)) {
            levelTreeNodeMap.set(level, []);
          }
          (_a = levelTreeNodeMap.get(level)) == null ? void 0 : _a.push(node);
        }
        if (level > maxLevel) {
          maxLevel = level;
        }
        return siblings;
      }
      const treeNodes = traverse2(data);
      return {
        treeNodeMap,
        levelTreeNodeMap,
        maxLevel,
        treeNodes
      };
    }
    function filter(query) {
      const keys2 = doFilter(query);
      if (keys2) {
        expandedKeySet.value = keys2;
      }
    }
    function getChildren(node) {
      return node[childrenKey.value];
    }
    function getKey(node) {
      if (!node) {
        return "";
      }
      return node[valueKey.value];
    }
    function getDisabled(node) {
      return node[disabledKey.value];
    }
    function getLabel(node) {
      return node[labelKey.value];
    }
    function toggleExpand(node) {
      const expandedKeys = expandedKeySet.value;
      if (expandedKeys.has(node.key)) {
        collapseNode(node);
      } else {
        expandNode(node);
      }
    }
    function setExpandedKeys(keys2) {
      const expandedKeys = /* @__PURE__ */ new Set();
      const nodeMap = tree.value.treeNodeMap;
      expandedKeySet.value.forEach((key) => {
        const node = nodeMap.get(key);
        expandedKeySet.value.delete(node.key);
        node.expanded = false;
      });
      keys2.forEach((k) => {
        let node = nodeMap.get(k);
        while (node && !expandedKeys.has(node.key)) {
          expandedKeys.add(node.key);
          node.expanded = true;
          node = node.parent;
        }
      });
      expandedKeySet.value = expandedKeys;
    }
    function handleNodeClick(node, e) {
      emit2(NODE_CLICK, node.data, node, e);
      handleCurrentChange2(node);
      if (props2.expandOnClickNode) {
        toggleExpand(node);
      }
      if (props2.showCheckbox && (props2.checkOnClickNode || node.isLeaf && props2.checkOnClickLeaf) && !node.disabled) {
        toggleCheckbox(node, !isChecked(node), true);
      }
    }
    function handleNodeDrop(node, e) {
      emit2(NODE_DROP, node.data, node, e);
    }
    function handleCurrentChange2(node) {
      if (!isCurrent(node)) {
        currentKey.value = node.key;
        emit2(CURRENT_CHANGE, node.data, node);
      }
    }
    function handleNodeCheck(node, checked) {
      toggleCheckbox(node, checked);
    }
    function expandNode(node) {
      const keySet = expandedKeySet.value;
      if (tree.value && props2.accordion) {
        const { treeNodeMap } = tree.value;
        keySet.forEach((key) => {
          const treeNode = treeNodeMap.get(key);
          if (node && node.level === (treeNode == null ? void 0 : treeNode.level)) {
            keySet.delete(key);
            treeNode.expanded = false;
          }
        });
      }
      keySet.add(node.key);
      const _node = getNode(node.key);
      if (_node) {
        _node.expanded = true;
        emit2(NODE_EXPAND, _node.data, _node);
      }
    }
    function collapseNode(node) {
      expandedKeySet.value.delete(node.key);
      const _node = getNode(node.key);
      if (_node) {
        _node.expanded = false;
        emit2(NODE_COLLAPSE, _node.data, _node);
      }
    }
    function isDisabled(node) {
      return !!node.disabled;
    }
    function isCurrent(node) {
      const current = currentKey.value;
      return current !== void 0 && current === node.key;
    }
    function getCurrentNode() {
      var _a, _b;
      if (!currentKey.value) return void 0;
      return (_b = (_a = tree.value) == null ? void 0 : _a.treeNodeMap.get(currentKey.value)) == null ? void 0 : _b.data;
    }
    function getCurrentKey() {
      return currentKey.value;
    }
    function setCurrentKey(key) {
      currentKey.value = key;
    }
    function setData(data) {
      tree.value = createTree(data);
    }
    function getNode(data) {
      var _a;
      const key = isObject$2(data) ? getKey(data) : data;
      return (_a = tree.value) == null ? void 0 : _a.treeNodeMap.get(key);
    }
    function scrollToNode(key, strategy = "auto") {
      const node = getNode(key);
      if (node && listRef.value) {
        listRef.value.scrollToItem(flattenTree.value.indexOf(node), strategy);
      }
    }
    function scrollTo(offset2) {
      var _a;
      (_a = listRef.value) == null ? void 0 : _a.scrollTo(offset2);
    }
    watch(
      () => props2.currentNodeKey,
      (key) => {
        currentKey.value = key;
      },
      {
        immediate: true
      }
    );
    watch(
      () => props2.defaultExpandedKeys,
      (key) => {
        expandedKeySet.value = new Set(key);
      },
      {
        immediate: true
      }
    );
    watch(
      () => props2.data,
      (data) => {
        setData(data);
      },
      {
        immediate: true
      }
    );
    return {
      tree,
      flattenTree,
      isNotEmpty,
      listRef,
      getKey,
      getChildren,
      toggleExpand,
      toggleCheckbox,
      isChecked,
      isIndeterminate,
      isDisabled,
      isCurrent,
      isForceHiddenExpandIcon,
      handleNodeClick,
      handleNodeDrop,
      handleNodeCheck,
      // expose
      getCurrentNode,
      getCurrentKey,
      setCurrentKey,
      getCheckedKeys,
      getCheckedNodes,
      getHalfCheckedKeys,
      getHalfCheckedNodes,
      setChecked: setChecked2,
      setCheckedKeys,
      filter,
      setData,
      getNode,
      expandNode,
      collapseNode,
      setExpandedKeys,
      scrollToNode,
      scrollTo
    };
  }
  var ElNodeContent = /* @__PURE__ */ defineComponent({
    name: "ElTreeNodeContent",
    props: treeNodeContentProps,
    setup(props2) {
      const tree = inject(ROOT_TREE_INJECTION_KEY);
      const ns = useNamespace("tree");
      return () => {
        const node = props2.node;
        const { data } = node;
        return (tree == null ? void 0 : tree.ctx.slots.default) ? tree.ctx.slots.default({ node, data }) : h$1(
          ElText,
          { tag: "span", truncated: true, class: ns.be("node", "label") },
          () => [node == null ? void 0 : node.label]
        );
      };
    }
  });
  const _hoisted_1$10 = ["aria-expanded", "aria-disabled", "aria-checked", "data-key"];
  var _sfc_main$1c = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElTreeNode"
    },
    __name: "tree-node",
    props: treeNodeProps,
    emits: treeNodeEmits,
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const tree = inject(ROOT_TREE_INJECTION_KEY);
      const ns = useNamespace("tree");
      const indent = computed(() => {
        var _a;
        return (_a = tree == null ? void 0 : tree.props.indent) != null ? _a : 16;
      });
      const icon = computed(() => {
        var _a;
        return (_a = tree == null ? void 0 : tree.props.icon) != null ? _a : caret_right_default;
      });
      const getNodeClass = (node) => {
        var _a;
        const nodeClassFunc = (_a = tree == null ? void 0 : tree.props.props) == null ? void 0 : _a.class;
        if (!nodeClassFunc) return {};
        let className;
        if (isFunction$1(nodeClassFunc)) {
          const { data } = node;
          className = nodeClassFunc(data, node);
        } else {
          className = nodeClassFunc;
        }
        return isString(className) ? { [className]: true } : className;
      };
      const handleClick = (e) => {
        emit2("click", props2.node, e);
      };
      const handleDrop = (e) => {
        emit2("drop", props2.node, e);
      };
      const handleExpandIconClick = () => {
        emit2("toggle", props2.node);
      };
      const handleCheckChange = (value) => {
        emit2("check", props2.node, value);
      };
      const handleContextMenu = (event) => {
        var _a, _b, _c, _d;
        if ((_c = (_b = (_a = tree == null ? void 0 : tree.instance) == null ? void 0 : _a.vnode) == null ? void 0 : _b.props) == null ? void 0 : _c["onNodeContextmenu"]) {
          event.stopPropagation();
          event.preventDefault();
        }
        tree == null ? void 0 : tree.ctx.emit(NODE_CONTEXTMENU, event, (_d = props2.node) == null ? void 0 : _d.data, props2.node);
      };
      return (_ctx, _cache) => {
        var _a, _b, _c;
        return openBlock(), createElementBlock("div", {
          ref: "node$",
          class: normalizeClass([
            unref(ns).b("node"),
            unref(ns).is("expanded", __props.expanded),
            unref(ns).is("current", __props.current),
            unref(ns).is("focusable", !__props.disabled),
            unref(ns).is("checked", !__props.disabled && __props.checked),
            getNodeClass(__props.node)
          ]),
          role: "treeitem",
          tabindex: "-1",
          "aria-expanded": __props.expanded,
          "aria-disabled": __props.disabled,
          "aria-checked": __props.checked,
          "data-key": (_a = __props.node) == null ? void 0 : _a.key,
          onClick: withModifiers(handleClick, ["stop"]),
          onContextmenu: handleContextMenu,
          onDragover: _cache[1] || (_cache[1] = withModifiers(() => {
          }, ["prevent"])),
          onDragenter: _cache[2] || (_cache[2] = withModifiers(() => {
          }, ["prevent"])),
          onDrop: withModifiers(handleDrop, ["stop"])
        }, [
          createBaseVNode(
            "div",
            {
              class: normalizeClass(unref(ns).be("node", "content")),
              style: normalizeStyle({
                paddingLeft: `${(__props.node.level - 1) * indent.value}px`,
                height: __props.itemSize + "px"
              })
            },
            [
              icon.value ? (openBlock(), createBlock(unref(ElIcon), {
                key: 0,
                class: normalizeClass([
                  unref(ns).is("leaf", !!((_b = __props.node) == null ? void 0 : _b.isLeaf)),
                  unref(ns).is("hidden", __props.hiddenExpandIcon),
                  {
                    expanded: !((_c = __props.node) == null ? void 0 : _c.isLeaf) && __props.expanded
                  },
                  unref(ns).be("node", "expand-icon")
                ]),
                onClick: withModifiers(handleExpandIconClick, ["stop"])
              }, {
                default: withCtx(() => [
                  (openBlock(), createBlock(resolveDynamicComponent(icon.value)))
                ]),
                _: 1
                /* STABLE */
              }, 8, ["class"])) : createCommentVNode("v-if", true),
              __props.showCheckbox ? (openBlock(), createBlock(unref(ElCheckbox), {
                key: 1,
                "model-value": __props.checked,
                indeterminate: __props.indeterminate,
                disabled: __props.disabled,
                onChange: handleCheckChange,
                onClick: _cache[0] || (_cache[0] = withModifiers(() => {
                }, ["stop"]))
              }, null, 8, ["model-value", "indeterminate", "disabled"])) : createCommentVNode("v-if", true),
              createVNode(unref(ElNodeContent), {
                node: { ...__props.node, expanded: __props.expanded }
              }, null, 8, ["node"])
            ],
            6
            /* CLASS, STYLE */
          )
        ], 42, _hoisted_1$10);
      };
    }
  });
  var _sfc_main$1b = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElTreeV2"
    },
    __name: "tree",
    props: treeProps,
    emits: treeEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const slots = useSlots();
      const treeNodeSize = computed(() => props2.itemSize);
      provide(ROOT_TREE_INJECTION_KEY, {
        ctx: {
          emit: emit2,
          slots
        },
        props: props2,
        instance: getCurrentInstance()
      });
      provide(formItemContextKey, void 0);
      const { t } = useLocale();
      const ns = useNamespace("tree");
      const {
        flattenTree,
        isNotEmpty,
        listRef,
        toggleExpand,
        isIndeterminate,
        isChecked,
        isDisabled,
        isCurrent,
        isForceHiddenExpandIcon,
        handleNodeClick,
        handleNodeDrop,
        handleNodeCheck,
        // expose
        toggleCheckbox,
        getCurrentNode,
        getCurrentKey,
        setCurrentKey,
        getCheckedKeys,
        getCheckedNodes,
        getHalfCheckedKeys,
        getHalfCheckedNodes,
        setChecked: setChecked2,
        setCheckedKeys,
        filter,
        setData,
        getNode,
        expandNode,
        collapseNode,
        setExpandedKeys,
        scrollToNode,
        scrollTo
      } = useTree(props2, emit2);
      __expose({
        toggleCheckbox,
        getCurrentNode,
        getCurrentKey,
        setCurrentKey,
        getCheckedKeys,
        getCheckedNodes,
        getHalfCheckedKeys,
        getHalfCheckedNodes,
        setChecked: setChecked2,
        setCheckedKeys,
        filter,
        setData,
        getNode,
        expandNode,
        collapseNode,
        setExpandedKeys,
        scrollToNode,
        scrollTo
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass([unref(ns).b(), { [unref(ns).m("highlight-current")]: __props.highlightCurrent }]),
            role: "tree"
          },
          [
            unref(isNotEmpty) ? (openBlock(), createBlock(unref(FixedSizeList), {
              key: 0,
              ref_key: "listRef",
              ref: listRef,
              "class-name": unref(ns).b("virtual-list"),
              data: unref(flattenTree),
              total: unref(flattenTree).length,
              height: __props.height,
              "item-size": treeNodeSize.value,
              "perf-mode": __props.perfMode,
              "scrollbar-always-on": __props.scrollbarAlwaysOn
            }, {
              default: withCtx(({ data, index, style }) => [
                (openBlock(), createBlock(_sfc_main$1c, {
                  key: data[index].key,
                  style: normalizeStyle(style),
                  node: data[index],
                  expanded: data[index].expanded,
                  "show-checkbox": __props.showCheckbox,
                  checked: unref(isChecked)(data[index]),
                  indeterminate: unref(isIndeterminate)(data[index]),
                  "item-size": treeNodeSize.value,
                  disabled: unref(isDisabled)(data[index]),
                  current: unref(isCurrent)(data[index]),
                  "hidden-expand-icon": unref(isForceHiddenExpandIcon)(data[index]),
                  onClick: unref(handleNodeClick),
                  onToggle: unref(toggleExpand),
                  onCheck: unref(handleNodeCheck),
                  onDrop: unref(handleNodeDrop)
                }, null, 8, ["style", "node", "expanded", "show-checkbox", "checked", "indeterminate", "item-size", "disabled", "current", "hidden-expand-icon", "onClick", "onToggle", "onCheck", "onDrop"]))
              ]),
              _: 1
              /* STABLE */
            }, 8, ["class-name", "data", "total", "height", "item-size", "perf-mode", "scrollbar-always-on"])) : (openBlock(), createElementBlock(
              "div",
              {
                key: 1,
                class: normalizeClass(unref(ns).e("empty-block"))
              },
              [
                renderSlot(_ctx.$slots, "empty", {}, () => {
                  var _a;
                  return [
                    createBaseVNode(
                      "span",
                      {
                        class: normalizeClass(unref(ns).e("empty-text"))
                      },
                      toDisplayString((_a = __props.emptyText) != null ? _a : unref(t)("el.tree.emptyText")),
                      3
                      /* TEXT, CLASS */
                    )
                  ];
                })
              ],
              2
              /* CLASS */
            ))
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const ElTreeV2 = withInstall(_sfc_main$1b);
  var __defProp = Object.defineProperty;
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
  const SCOPE$2 = "ElUpload";
  class UploadAjaxError extends Error {
    constructor(message2, status, method, url) {
      super(message2);
      __publicField(this, "name", "UploadAjaxError");
      __publicField(this, "status");
      __publicField(this, "method");
      __publicField(this, "url");
      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$2, "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({
    /**
     * @description request URL
     */
    action: {
      type: String,
      default: "#"
    },
    /**
     * @description request headers
     */
    headers: {
      type: definePropType(Object)
    },
    /**
     * @description set upload request method
     */
    method: {
      type: String,
      default: "post"
    },
    /**
     * @description additions options of request
     */
    data: {
      type: definePropType([Object, Function, Promise]),
      default: () => mutable({})
    },
    /**
     * @description whether uploading multiple files is permitted
     */
    multiple: Boolean,
    /**
     * @description key name for uploaded file
     */
    name: {
      type: String,
      default: "file"
    },
    /**
     * @description whether to activate drag and drop mode
     */
    drag: Boolean,
    /**
     * @description whether cookies are sent
     */
    withCredentials: Boolean,
    /**
     * @description whether to show the uploaded file list
     */
    showFileList: {
      type: Boolean,
      default: true
    },
    /**
     * @description accepted [file types](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept), will not work when `thumbnail-mode === true`
     */
    accept: {
      type: String,
      default: ""
    },
    /**
     * @description default uploaded files
     */
    fileList: {
      type: definePropType(Array),
      default: () => mutable([])
    },
    /**
     * @description whether to auto upload file
     */
    autoUpload: {
      type: Boolean,
      default: true
    },
    /**
     * @description type of file list
     */
    listType: {
      type: String,
      values: uploadListTypes,
      default: "text"
    },
    /**
     * @description override default xhr behavior, allowing you to implement your own upload-file's request
     */
    httpRequest: {
      type: definePropType(Function),
      default: ajaxUpload
    },
    /**
     * @description whether to disable upload
     */
    disabled: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description maximum number of uploads allowed
     */
    limit: Number,
    /**
     * @description whether to support uploading directory
     */
    directory: Boolean
  });
  const uploadProps = buildProps({
    ...uploadBaseProps,
    /**
     * @description hook function before uploading with the file to be uploaded as its parameter. If `false` is returned or a `Promise` is returned and then is rejected, uploading will be aborted
     */
    beforeUpload: {
      type: definePropType(Function),
      default: NOOP
    },
    /**
     * @description hook function before removing a file with the file and file list as its parameters. If `false` is returned or a `Promise` is returned and then is rejected, removing will be aborted
     */
    beforeRemove: {
      type: definePropType(Function)
    },
    /**
     * @description hook function when files are removed
     */
    onRemove: {
      type: definePropType(Function),
      default: NOOP
    },
    /**
     * @description hook function when select file or upload file success or upload file fail
     */
    onChange: {
      type: definePropType(Function),
      default: NOOP
    },
    /**
     * @description hook function when clicking the uploaded files
     */
    onPreview: {
      type: definePropType(Function),
      default: NOOP
    },
    /**
     * @description hook function when uploaded successfully
     */
    onSuccess: {
      type: definePropType(Function),
      default: NOOP
    },
    /**
     * @description hook function when some progress occurs
     */
    onProgress: {
      type: definePropType(Function),
      default: NOOP
    },
    /**
     * @description hook function when some errors occurs
     */
    onError: {
      type: definePropType(Function),
      default: NOOP
    },
    /**
     * @description hook function when limit is exceeded
     */
    onExceed: {
      type: definePropType(Function),
      default: NOOP
    },
    /**
     * @description set HTML attribute: crossorigin.
     */
    crossorigin: {
      type: definePropType(String)
    }
  });
  const uploadContextKey = /* @__PURE__ */ Symbol("uploadContextKey");
  const uploadListProps = buildProps({
    files: {
      type: definePropType(Array),
      default: () => mutable([])
    },
    disabled: {
      type: Boolean,
      default: void 0
    },
    handlePreview: {
      type: definePropType(Function),
      default: NOOP
    },
    listType: {
      type: String,
      values: uploadListTypes,
      default: "text"
    },
    /**
     * @description set HTML attribute: crossorigin.
     */
    crossorigin: {
      type: definePropType(String)
    }
  });
  const uploadListEmits = {
    remove: (file) => !!file
  };
  const _hoisted_1$$ = ["tabindex", "aria-disabled", "onKeydown"];
  const _hoisted_2$W = ["src", "crossorigin"];
  const _hoisted_3$O = ["onClick"];
  const _hoisted_4$K = ["title"];
  const _hoisted_5$C = ["onClick"];
  const _hoisted_6$l = ["onClick"];
  var _sfc_main$1a = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElUploadList"
    },
    __name: "upload-list",
    props: uploadListProps,
    emits: uploadListEmits,
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const { t } = useLocale();
      const nsUpload = useNamespace("upload");
      const nsIcon = useNamespace("icon");
      const nsList = useNamespace("list");
      const disabled = useFormDisabled();
      const focusing = ref(false);
      const containerKls = computed(() => [
        nsUpload.b("list"),
        nsUpload.bm("list", props2.listType),
        nsUpload.is("disabled", disabled.value)
      ]);
      const handleRemove = (file) => {
        emit2("remove", file);
      };
      return (_ctx, _cache) => {
        return openBlock(), createBlock(TransitionGroup, {
          tag: "ul",
          class: normalizeClass(containerKls.value),
          name: unref(nsList).b()
        }, {
          default: withCtx(() => [
            (openBlock(true), createElementBlock(
              Fragment,
              null,
              renderList(__props.files, (file, index) => {
                return openBlock(), createElementBlock("li", {
                  key: file.uid || file.name,
                  class: normalizeClass([
                    unref(nsUpload).be("list", "item"),
                    unref(nsUpload).is(file.status),
                    { focusing: focusing.value }
                  ]),
                  tabindex: unref(disabled) ? void 0 : 0,
                  "aria-disabled": unref(disabled),
                  role: "button",
                  onKeydown: withKeys(($event) => !unref(disabled) && handleRemove(file), ["delete"]),
                  onFocus: _cache[0] || (_cache[0] = ($event) => focusing.value = true),
                  onBlur: _cache[1] || (_cache[1] = ($event) => focusing.value = false),
                  onClick: _cache[2] || (_cache[2] = ($event) => focusing.value = false)
                }, [
                  renderSlot(_ctx.$slots, "default", {
                    file,
                    index
                  }, () => [
                    __props.listType === "picture" || file.status !== "uploading" && __props.listType === "picture-card" ? (openBlock(), createElementBlock("img", {
                      key: 0,
                      class: normalizeClass(unref(nsUpload).be("list", "item-thumbnail")),
                      src: file.url,
                      crossorigin: __props.crossorigin,
                      alt: ""
                    }, null, 10, _hoisted_2$W)) : createCommentVNode("v-if", true),
                    file.status === "uploading" || __props.listType !== "picture-card" ? (openBlock(), createElementBlock(
                      "div",
                      {
                        key: 1,
                        class: normalizeClass(unref(nsUpload).be("list", "item-info"))
                      },
                      [
                        createBaseVNode("a", {
                          class: normalizeClass(unref(nsUpload).be("list", "item-name")),
                          onClick: withModifiers(($event) => __props.handlePreview(file), ["prevent"])
                        }, [
                          createVNode(unref(ElIcon), {
                            class: normalizeClass(unref(nsIcon).m("document"))
                          }, {
                            default: withCtx(() => [
                              createVNode(unref(document_default))
                            ]),
                            _: 1
                            /* STABLE */
                          }, 8, ["class"]),
                          createBaseVNode("span", {
                            class: normalizeClass(unref(nsUpload).be("list", "item-file-name")),
                            title: file.name
                          }, toDisplayString(file.name), 11, _hoisted_4$K)
                        ], 10, _hoisted_3$O),
                        file.status === "uploading" ? (openBlock(), createBlock(unref(ElProgress), {
                          key: 0,
                          type: __props.listType === "picture-card" ? "circle" : "line",
                          "stroke-width": __props.listType === "picture-card" ? 6 : 2,
                          percentage: Number(file.percentage),
                          style: normalizeStyle(__props.listType === "picture-card" ? "" : "margin-top: 0.5rem")
                        }, null, 8, ["type", "stroke-width", "percentage", "style"])) : createCommentVNode("v-if", true)
                      ],
                      2
                      /* CLASS */
                    )) : createCommentVNode("v-if", true),
                    createBaseVNode(
                      "label",
                      {
                        class: normalizeClass(unref(nsUpload).be("list", "item-status-label"))
                      },
                      [
                        __props.listType === "text" ? (openBlock(), createBlock(unref(ElIcon), {
                          key: 0,
                          class: normalizeClass([unref(nsIcon).m("upload-success"), unref(nsIcon).m("circle-check")])
                        }, {
                          default: withCtx(() => [
                            createVNode(unref(circle_check_default))
                          ]),
                          _: 1
                          /* STABLE */
                        }, 8, ["class"])) : ["picture-card", "picture"].includes(__props.listType) ? (openBlock(), createBlock(unref(ElIcon), {
                          key: 1,
                          class: normalizeClass([unref(nsIcon).m("upload-success"), unref(nsIcon).m("check")])
                        }, {
                          default: withCtx(() => [
                            createVNode(unref(check_default))
                          ]),
                          _: 1
                          /* STABLE */
                        }, 8, ["class"])) : createCommentVNode("v-if", true)
                      ],
                      2
                      /* CLASS */
                    ),
                    !unref(disabled) ? (openBlock(), createBlock(unref(ElIcon), {
                      key: 2,
                      class: normalizeClass(unref(nsIcon).m("close")),
                      onClick: ($event) => handleRemove(file)
                    }, {
                      default: withCtx(() => [
                        createVNode(unref(close_default))
                      ]),
                      _: 1
                      /* STABLE */
                    }, 8, ["class", "onClick"])) : createCommentVNode("v-if", true),
                    createCommentVNode(" Due to close btn only appears when li gets focused disappears after li gets blurred, thus keyboard navigation can never reach close btn"),
                    createCommentVNode(" This is a bug which needs to be fixed "),
                    createCommentVNode(" TODO: Fix the incorrect navigation interaction "),
                    !unref(disabled) ? (openBlock(), createElementBlock(
                      "i",
                      {
                        key: 3,
                        class: normalizeClass(unref(nsIcon).m("close-tip"))
                      },
                      toDisplayString(unref(t)("el.upload.deleteTip")),
                      3
                      /* TEXT, CLASS */
                    )) : createCommentVNode("v-if", true),
                    __props.listType === "picture-card" ? (openBlock(), createElementBlock(
                      "span",
                      {
                        key: 4,
                        class: normalizeClass(unref(nsUpload).be("list", "item-actions"))
                      },
                      [
                        createBaseVNode("span", {
                          class: normalizeClass(unref(nsUpload).be("list", "item-preview")),
                          onClick: ($event) => __props.handlePreview(file)
                        }, [
                          createVNode(unref(ElIcon), {
                            class: normalizeClass(unref(nsIcon).m("zoom-in"))
                          }, {
                            default: withCtx(() => [
                              createVNode(unref(zoom_in_default))
                            ]),
                            _: 1
                            /* STABLE */
                          }, 8, ["class"])
                        ], 10, _hoisted_5$C),
                        !unref(disabled) ? (openBlock(), createElementBlock("span", {
                          key: 0,
                          class: normalizeClass(unref(nsUpload).be("list", "item-delete")),
                          onClick: ($event) => handleRemove(file)
                        }, [
                          createVNode(unref(ElIcon), {
                            class: normalizeClass(unref(nsIcon).m("delete"))
                          }, {
                            default: withCtx(() => [
                              createVNode(unref(delete_default))
                            ]),
                            _: 1
                            /* STABLE */
                          }, 8, ["class"])
                        ], 10, _hoisted_6$l)) : createCommentVNode("v-if", true)
                      ],
                      2
                      /* CLASS */
                    )) : createCommentVNode("v-if", true)
                  ])
                ], 42, _hoisted_1$$);
              }),
              128
              /* KEYED_FRAGMENT */
            )),
            renderSlot(_ctx.$slots, "append")
          ]),
          _: 3
          /* FORWARDED */
        }, 8, ["class", "name"]);
      };
    }
  });
  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 uploadDraggerProps = buildProps({
    disabled: {
      type: Boolean,
      default: void 0
    },
    directory: Boolean
  });
  const uploadDraggerEmits = {
    file: (file) => isArray$1(file)
  };
  const COMPONENT_NAME$1 = "ElUploadDrag";
  var _sfc_main$19 = /* @__PURE__ */ defineComponent({
    ...{
      name: COMPONENT_NAME$1
    },
    __name: "upload-dragger",
    props: uploadDraggerProps,
    emits: uploadDraggerEmits,
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const uploaderContext = inject(uploadContextKey);
      if (!uploaderContext) {
        throwError(
          COMPONENT_NAME$1,
          "usage: <el-upload><el-upload-dragger /></el-upload>"
        );
      }
      const ns = useNamespace("upload");
      const dragover = ref(false);
      const disabled = useFormDisabled();
      const getFile = (entry) => {
        return new Promise((resolve2, reject) => entry.file(resolve2, reject));
      };
      const getAllFiles = async (entry) => {
        try {
          if (entry.isFile) {
            const file = await getFile(
              entry
            );
            file.isDirectory = false;
            return [file];
          }
          if (entry.isDirectory) {
            const dirReader = entry.createReader();
            const getEntries = () => {
              return new Promise(
                (resolve2, reject) => dirReader.readEntries(resolve2, reject)
              );
            };
            const entries = [];
            let readEntries = await getEntries();
            while (readEntries.length > 0) {
              entries.push(...readEntries);
              readEntries = await getEntries();
            }
            const filePromises = entries.map(
              (entry2) => getAllFiles(entry2).catch(() => [])
            );
            const files = await Promise.all(filePromises);
            return flatten(files);
          }
        } catch (e) {
          return [];
        }
        return [];
      };
      const onDrop = async (e) => {
        if (disabled.value) return;
        dragover.value = false;
        e.stopPropagation();
        const files = Array.from(e.dataTransfer.files);
        const items = e.dataTransfer.items || [];
        if (props2.directory) {
          const entries = Array.from(items).map((item) => {
            var _a;
            return (_a = item == null ? void 0 : item.webkitGetAsEntry) == null ? void 0 : _a.call(item);
          }).filter((entry) => entry);
          const allFiles = await Promise.all(entries.map(getAllFiles));
          emit2("file", flatten(allFiles));
          return;
        }
        files.forEach((file, index) => {
          var _a;
          const item = items[index];
          const entry = (_a = item == null ? void 0 : item.webkitGetAsEntry) == null ? void 0 : _a.call(item);
          if (entry) {
            file.isDirectory = entry.isDirectory;
          }
        });
        emit2("file", files);
      };
      const onDragover = () => {
        if (!disabled.value) dragover.value = true;
      };
      const onDragleave = (e) => {
        if (!e.currentTarget.contains(e.relatedTarget))
          dragover.value = false;
      };
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass([unref(ns).b("dragger"), unref(ns).is("dragover", dragover.value)]),
            onDrop: withModifiers(onDrop, ["prevent"]),
            onDragover: withModifiers(onDragover, ["prevent"]),
            onDragleave: withModifiers(onDragleave, ["prevent"])
          },
          [
            renderSlot(_ctx.$slots, "default")
          ],
          34
          /* CLASS, NEED_HYDRATION */
        );
      };
    }
  });
  const _hoisted_1$_ = ["tabindex", "aria-disabled", "onKeydown"];
  const _hoisted_2$V = ["name", "disabled", "multiple", "accept", "webkitdirectory"];
  var _sfc_main$18 = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElUploadContent",
      inheritAttrs: false
    },
    __name: "upload-content",
    props: uploadContentProps,
    setup(__props, { expose: __expose }) {
      const props2 = __props;
      const ns = useNamespace("upload");
      const disabled = useFormDisabled();
      const requests = shallowRef(
        {}
      );
      const inputRef = shallowRef();
      const uploadFiles = (files) => {
        if (files.length === 0) return;
        const { autoUpload, limit, fileList, multiple, onStart, onExceed } = props2;
        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 (!props2.beforeUpload) {
          return doUpload(rawFile);
        }
        let hookResult;
        let beforeData = {};
        try {
          const originData = props2.data;
          const beforeUploadPromise = props2.beforeUpload(rawFile);
          beforeData = isPlainObject$1(props2.data) ? cloneDeep(props2.data) : props2.data;
          hookResult = await beforeUploadPromise;
          if (isPlainObject$1(props2.data) && isEqual$1(originData, beforeData)) {
            beforeData = cloneDeep(props2.data);
          }
        } catch (e) {
          hookResult = false;
        }
        if (hookResult === false) {
          props2.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
        } = props2;
        try {
          beforeData = await resolveData(beforeData != null ? beforeData : data, rawFile);
        } catch (e) {
          props2.onRemove(rawFile);
          return;
        }
        const { uid: uid2 } = 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[uid2];
          },
          onError: (err) => {
            onError(err, rawFile);
            delete requests.value[uid2];
          }
        };
        const request = httpRequest(options);
        requests.value[uid2] = 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 ? ([uid2]) => String(file.uid) === uid2 : () => true
        );
        _reqs.forEach(([uid2, req]) => {
          if (req instanceof XMLHttpRequest) req.abort();
          delete requests.value[uid2];
        });
      };
      __expose({
        abort,
        upload
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock("div", {
          class: normalizeClass([
            unref(ns).b(),
            unref(ns).m(__props.listType),
            unref(ns).is("drag", __props.drag),
            unref(ns).is("disabled", unref(disabled))
          ]),
          tabindex: unref(disabled) ? void 0 : 0,
          "aria-disabled": unref(disabled),
          role: "button",
          onClick: handleClick,
          onKeydown: withKeys(withModifiers(handleKeydown, ["self"]), ["enter", "space"])
        }, [
          __props.drag ? (openBlock(), createBlock(_sfc_main$19, {
            key: 0,
            disabled: unref(disabled),
            directory: __props.directory,
            onFile: uploadFiles
          }, {
            default: withCtx(() => [
              renderSlot(_ctx.$slots, "default")
            ]),
            _: 3
            /* FORWARDED */
          }, 8, ["disabled", "directory"])) : renderSlot(_ctx.$slots, "default", { key: 1 }),
          createBaseVNode("input", {
            ref_key: "inputRef",
            ref: inputRef,
            class: normalizeClass(unref(ns).e("input")),
            name: __props.name,
            disabled: unref(disabled),
            multiple: __props.multiple,
            accept: __props.accept,
            webkitdirectory: __props.directory || void 0,
            type: "file",
            onChange: handleChange,
            onClick: _cache[0] || (_cache[0] = withModifiers(() => {
            }, ["stop"]))
          }, null, 42, _hoisted_2$V)
        ], 42, _hoisted_1$_);
      };
    }
  });
  const SCOPE$1 = "ElUpload";
  const revokeFileObjectURL = (file) => {
    var _a;
    if ((_a = file.url) == null ? void 0 : _a.startsWith("blob:")) {
      URL.revokeObjectURL(file.url);
    }
  };
  const useHandlers = (props2, uploadRef) => {
    const uploadFiles = useVModel(
      props2,
      "fileList",
      void 0,
      { passive: true }
    );
    const getFile = (rawFile) => uploadFiles.value.find((file) => file.uid === rawFile.uid);
    function abort(file) {
      var _a;
      (_a = uploadRef.value) == null ? void 0 : _a.abort(file);
    }
    function clearFiles(states = ["ready", "uploading", "success", "fail"]) {
      uploadFiles.value = uploadFiles.value.filter(
        (row) => !states.includes(row.status)
      );
    }
    function removeFile(file) {
      uploadFiles.value = uploadFiles.value.filter(
        (uploadFile) => uploadFile.uid !== file.uid
      );
    }
    const emitChange = (file) => {
      nextTick(() => props2.onChange(file, uploadFiles.value));
    };
    const handleError2 = (err, rawFile) => {
      const file = getFile(rawFile);
      if (!file) return;
      console.error(err);
      file.status = "fail";
      removeFile(file);
      props2.onError(err, file, uploadFiles.value);
      emitChange(file);
    };
    const handleProgress = (evt, rawFile) => {
      const file = getFile(rawFile);
      if (!file) return;
      props2.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;
      props2.onSuccess(response, file, uploadFiles.value);
      emitChange(file);
    };
    const handleStart = (file) => {
      if (isNil(file.uid)) file.uid = genFileId();
      const uploadFile = {
        name: file.name,
        percentage: 0,
        status: "ready",
        size: file.size,
        raw: file,
        uid: file.uid
      };
      if (props2.listType === "picture-card" || props2.listType === "picture") {
        try {
          uploadFile.url = URL.createObjectURL(file);
        } catch (err) {
          debugWarn(SCOPE$1, err.message);
          props2.onError(err, uploadFile, uploadFiles.value);
        }
      }
      uploadFiles.value = [...uploadFiles.value, uploadFile];
      emitChange(uploadFile);
    };
    const handleRemove = async (file) => {
      const uploadFile = file instanceof File ? getFile(file) : file;
      if (!uploadFile) throwError(SCOPE$1, "file to be removed not found");
      const doRemove = (file2) => {
        abort(file2);
        removeFile(file2);
        props2.onRemove(file2, uploadFiles.value);
        revokeFileObjectURL(file2);
      };
      if (props2.beforeRemove) {
        const before = await props2.beforeRemove(uploadFile, uploadFiles.value);
        if (before !== false) doRemove(uploadFile);
      } else {
        doRemove(uploadFile);
      }
    };
    function submit() {
      uploadFiles.value.filter(({ status }) => status === "ready").forEach(({ raw }) => {
        var _a;
        return raw && ((_a = uploadRef.value) == null ? void 0 : _a.upload(raw));
      });
    }
    watch(
      () => props2.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) {
              props2.onError(err, file, uploadFiles.value);
            }
          }
          return file;
        });
      }
    );
    watch(
      uploadFiles,
      (files) => {
        for (const file of files) {
          file.uid || (file.uid = genFileId());
          file.status || (file.status = "success");
        }
      },
      { immediate: true, deep: true }
    );
    return {
      /** @description two-way binding ref from props `fileList` */
      uploadFiles,
      abort,
      clearFiles,
      handleError: handleError2,
      handleProgress,
      handleStart,
      handleSuccess,
      handleRemove,
      submit,
      revokeFileObjectURL
    };
  };
  var _sfc_main$17 = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElUpload"
    },
    __name: "upload",
    props: uploadProps,
    setup(__props, { expose: __expose }) {
      const props2 = __props;
      const disabled = useFormDisabled();
      const uploadRef = shallowRef();
      const {
        abort,
        submit,
        clearFiles,
        uploadFiles,
        handleStart,
        handleError: handleError2,
        handleRemove,
        handleSuccess,
        handleProgress,
        revokeFileObjectURL: revokeFileObjectURL2
      } = useHandlers(props2, uploadRef);
      const isPictureCard = computed(() => props2.listType === "picture-card");
      const uploadContentProps2 = computed(() => ({
        ...props2,
        fileList: uploadFiles.value,
        onStart: handleStart,
        onProgress: handleProgress,
        onSuccess: handleSuccess,
        onError: handleError2,
        onRemove: handleRemove
      }));
      onBeforeUnmount(() => {
        uploadFiles.value.forEach(revokeFileObjectURL2);
      });
      provide(uploadContextKey, {
        accept: toRef(props2, "accept")
      });
      __expose({
        /** @description cancel upload request */
        abort,
        /** @description upload the file list manually */
        submit,
        /** @description clear the file list  */
        clearFiles,
        /** @description select the file manually */
        handleStart,
        /** @description remove the file manually */
        handleRemove
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock("div", null, [
          isPictureCard.value && __props.showFileList ? (openBlock(), createBlock(_sfc_main$1a, {
            key: 0,
            disabled: unref(disabled),
            "list-type": __props.listType,
            files: unref(uploadFiles),
            crossorigin: __props.crossorigin,
            "handle-preview": __props.onPreview,
            onRemove: unref(handleRemove)
          }, createSlots({
            append: withCtx(() => [
              createVNode(
                _sfc_main$18,
                mergeProps({
                  ref_key: "uploadRef",
                  ref: uploadRef
                }, uploadContentProps2.value),
                {
                  default: withCtx(() => [
                    _ctx.$slots.trigger ? renderSlot(_ctx.$slots, "trigger", { key: 0 }) : createCommentVNode("v-if", true),
                    !_ctx.$slots.trigger && _ctx.$slots.default ? renderSlot(_ctx.$slots, "default", { key: 1 }) : createCommentVNode("v-if", true)
                  ]),
                  _: 3
                  /* FORWARDED */
                },
                16
                /* FULL_PROPS */
              )
            ]),
            _: 2
            /* DYNAMIC */
          }, [
            _ctx.$slots.file ? {
              name: "default",
              fn: withCtx(({ file, index }) => [
                renderSlot(_ctx.$slots, "file", {
                  file,
                  index
                })
              ]),
              key: "0"
            } : void 0
          ]), 1032, ["disabled", "list-type", "files", "crossorigin", "handle-preview", "onRemove"])) : createCommentVNode("v-if", true),
          !isPictureCard.value || isPictureCard.value && !__props.showFileList ? (openBlock(), createBlock(
            _sfc_main$18,
            mergeProps({
              key: 1,
              ref_key: "uploadRef",
              ref: uploadRef
            }, uploadContentProps2.value),
            {
              default: withCtx(() => [
                _ctx.$slots.trigger ? renderSlot(_ctx.$slots, "trigger", { key: 0 }) : createCommentVNode("v-if", true),
                !_ctx.$slots.trigger && _ctx.$slots.default ? renderSlot(_ctx.$slots, "default", { key: 1 }) : createCommentVNode("v-if", true)
              ]),
              _: 3
              /* FORWARDED */
            },
            16
            /* FULL_PROPS */
          )) : createCommentVNode("v-if", true),
          _ctx.$slots.trigger ? renderSlot(_ctx.$slots, "default", { key: 2 }) : createCommentVNode("v-if", true),
          renderSlot(_ctx.$slots, "tip"),
          !isPictureCard.value && __props.showFileList ? (openBlock(), createBlock(_sfc_main$1a, {
            key: 3,
            disabled: unref(disabled),
            "list-type": __props.listType,
            files: unref(uploadFiles),
            crossorigin: __props.crossorigin,
            "handle-preview": __props.onPreview,
            onRemove: unref(handleRemove)
          }, createSlots({
            _: 2
            /* DYNAMIC */
          }, [
            _ctx.$slots.file ? {
              name: "default",
              fn: withCtx(({ file, index }) => [
                renderSlot(_ctx.$slots, "file", {
                  file,
                  index
                })
              ]),
              key: "0"
            } : void 0
          ]), 1032, ["disabled", "list-type", "files", "crossorigin", "handle-preview", "onRemove"])) : createCommentVNode("v-if", true)
        ]);
      };
    }
  });
  const ElUpload = withInstall(_sfc_main$17);
  const watermarkProps = buildProps({
    /**
     * @description The z-index of the appended watermark element
     */
    zIndex: {
      type: Number,
      default: 9
    },
    /**
     * @description The rotation angle of the watermark
     */
    rotate: {
      type: Number,
      default: -22
    },
    /**
     * @description The width of the watermark
     */
    width: Number,
    /**
     * @description The height of the watermark
     */
    height: Number,
    /**
     * @description Image source, it is recommended to export 2x or 3x image, high priority (support base64 format)
     */
    image: String,
    /**
     * @description Watermark text content
     */
    content: {
      type: definePropType([String, Array]),
      default: "Element Plus"
    },
    /**
     * @description Text style
     */
    font: {
      type: definePropType(Object)
    },
    /**
     * @description The spacing between watermarks
     */
    gap: {
      type: definePropType(Array),
      default: () => [100, 100]
    },
    /**
     * @description The offset of the watermark from the upper left corner of the container. The default is gap/2
     */
    offset: {
      type: definePropType(Array)
    }
  });
  function toLowercaseSeparator(key) {
    return key.replace(/([A-Z])/g, "-$1").toLowerCase();
  }
  function getStyleStr(style) {
    return Object.keys(style).map(
      (key) => `${toLowercaseSeparator(key)}: ${style[key]};`
    ).join(" ");
  }
  function getPixelRatio() {
    return window.devicePixelRatio || 1;
  }
  const reRendering = (mutation, watermarkElement) => {
    let flag = false;
    if (mutation.removedNodes.length && watermarkElement) {
      flag = Array.from(mutation.removedNodes).includes(watermarkElement);
    }
    if (mutation.type === "attributes" && mutation.target === watermarkElement) {
      flag = true;
    }
    return flag;
  };
  const TEXT_ALIGN_RATIO_MAP = {
    left: [0, 0.5],
    start: [0, 0.5],
    center: [0.5, 0],
    right: [1, -0.5],
    end: [1, -0.5]
  };
  function prepareCanvas(width, height, ratio = 1) {
    const canvas = document.createElement("canvas");
    const ctx = canvas.getContext("2d");
    const realWidth = width * ratio;
    const realHeight = height * ratio;
    canvas.setAttribute("width", `${realWidth}px`);
    canvas.setAttribute("height", `${realHeight}px`);
    ctx.save();
    return [ctx, canvas, realWidth, realHeight];
  }
  function useClips() {
    function getClips(content, rotate, ratio, width, height, font, gapX, gapY, space) {
      const [ctx, canvas, contentWidth, contentHeight] = prepareCanvas(
        width,
        height,
        ratio
      );
      let baselineOffset = 0;
      if (content instanceof HTMLImageElement) {
        ctx.drawImage(content, 0, 0, contentWidth, contentHeight);
      } else {
        const {
          color,
          fontSize,
          fontStyle,
          fontWeight,
          fontFamily,
          textAlign,
          textBaseline
        } = font;
        const mergedFontSize = Number(fontSize) * ratio;
        ctx.font = `${fontStyle} normal ${fontWeight} ${mergedFontSize}px/${height}px ${fontFamily}`;
        ctx.fillStyle = color;
        ctx.textAlign = textAlign;
        ctx.textBaseline = textBaseline;
        const contents = isArray$1(content) ? content : [content];
        if (textBaseline !== "top" && contents[0]) {
          const argumentMetrics = ctx.measureText(contents[0]);
          ctx.textBaseline = "top";
          const topMetrics = ctx.measureText(contents[0]);
          baselineOffset = argumentMetrics.actualBoundingBoxAscent - topMetrics.actualBoundingBoxAscent;
        }
        contents == null ? void 0 : contents.forEach((item, index) => {
          const [alignRatio, spaceRatio] = TEXT_ALIGN_RATIO_MAP[textAlign];
          ctx.fillText(
            item != null ? item : "",
            contentWidth * alignRatio + space * spaceRatio,
            index * (mergedFontSize + font.fontGap * ratio)
          );
        });
      }
      const angle = Math.PI / 180 * Number(rotate);
      const maxSize = Math.max(width, height);
      const [rCtx, rCanvas, realMaxSize] = prepareCanvas(maxSize, maxSize, ratio);
      rCtx.translate(realMaxSize / 2, realMaxSize / 2);
      rCtx.rotate(angle);
      if (contentWidth > 0 && contentHeight > 0) {
        rCtx.drawImage(canvas, -contentWidth / 2, -contentHeight / 2);
      }
      function getRotatePos(x2, y) {
        const targetX = x2 * Math.cos(angle) - y * Math.sin(angle);
        const targetY = x2 * Math.sin(angle) + y * Math.cos(angle);
        return [targetX, targetY];
      }
      let left = 0;
      let right = 0;
      let top = 0;
      let bottom = 0;
      const halfWidth = contentWidth / 2;
      const halfHeight = contentHeight / 2;
      const points = [
        [0 - halfWidth, 0 - halfHeight],
        [0 + halfWidth, 0 - halfHeight],
        [0 + halfWidth, 0 + halfHeight],
        [0 - halfWidth, 0 + halfHeight]
      ];
      points.forEach(([x2, y]) => {
        const [targetX, targetY] = getRotatePos(x2, y);
        left = Math.min(left, targetX);
        right = Math.max(right, targetX);
        top = Math.min(top, targetY);
        bottom = Math.max(bottom, targetY);
      });
      const cutLeft = left + realMaxSize / 2;
      const cutTop = top + realMaxSize / 2;
      const cutWidth = right - left;
      const cutHeight = bottom - top;
      const realGapX = gapX * ratio;
      const realGapY = gapY * ratio;
      const filledWidth = (cutWidth + realGapX) * 2;
      const filledHeight = cutHeight + realGapY;
      const [fCtx, fCanvas] = prepareCanvas(filledWidth, filledHeight);
      function drawImg(targetX = 0, targetY = 0) {
        fCtx.drawImage(
          rCanvas,
          cutLeft,
          cutTop,
          cutWidth,
          cutHeight,
          targetX,
          targetY + baselineOffset,
          cutWidth,
          cutHeight
        );
      }
      drawImg();
      drawImg(cutWidth + realGapX, -cutHeight / 2 - realGapY / 2);
      drawImg(cutWidth + realGapX, +cutHeight / 2 + realGapY / 2);
      return [fCanvas.toDataURL(), filledWidth / ratio, filledHeight / ratio];
    }
    return getClips;
  }
  var _sfc_main$16 = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElWatermark"
    },
    __name: "watermark",
    props: watermarkProps,
    setup(__props) {
      const style = {
        position: "relative"
      };
      const props2 = __props;
      const fontGap = computed(() => {
        var _a, _b;
        return (_b = (_a = props2.font) == null ? void 0 : _a.fontGap) != null ? _b : 3;
      });
      const color = computed(() => {
        var _a, _b;
        return (_b = (_a = props2.font) == null ? void 0 : _a.color) != null ? _b : "rgba(0,0,0,.15)";
      });
      const fontSize = computed(() => {
        var _a, _b;
        return (_b = (_a = props2.font) == null ? void 0 : _a.fontSize) != null ? _b : 16;
      });
      const fontWeight = computed(() => {
        var _a, _b;
        return (_b = (_a = props2.font) == null ? void 0 : _a.fontWeight) != null ? _b : "normal";
      });
      const fontStyle = computed(() => {
        var _a, _b;
        return (_b = (_a = props2.font) == null ? void 0 : _a.fontStyle) != null ? _b : "normal";
      });
      const fontFamily = computed(() => {
        var _a, _b;
        return (_b = (_a = props2.font) == null ? void 0 : _a.fontFamily) != null ? _b : "sans-serif";
      });
      const textAlign = computed(() => {
        var _a, _b;
        return (_b = (_a = props2.font) == null ? void 0 : _a.textAlign) != null ? _b : "center";
      });
      const textBaseline = computed(() => {
        var _a, _b;
        return (_b = (_a = props2.font) == null ? void 0 : _a.textBaseline) != null ? _b : "hanging";
      });
      const gapX = computed(() => props2.gap[0]);
      const gapY = computed(() => props2.gap[1]);
      const gapXCenter = computed(() => gapX.value / 2);
      const gapYCenter = computed(() => gapY.value / 2);
      const offsetLeft = computed(() => {
        var _a, _b;
        return (_b = (_a = props2.offset) == null ? void 0 : _a[0]) != null ? _b : gapXCenter.value;
      });
      const offsetTop = computed(() => {
        var _a, _b;
        return (_b = (_a = props2.offset) == null ? void 0 : _a[1]) != null ? _b : gapYCenter.value;
      });
      const getMarkStyle = () => {
        const markStyle = {
          zIndex: props2.zIndex,
          position: "absolute",
          left: 0,
          top: 0,
          width: "100%",
          height: "100%",
          pointerEvents: "none",
          backgroundRepeat: "repeat"
        };
        let positionLeft = offsetLeft.value - gapXCenter.value;
        let positionTop = offsetTop.value - gapYCenter.value;
        if (positionLeft > 0) {
          markStyle.left = `${positionLeft}px`;
          markStyle.width = `calc(100% - ${positionLeft}px)`;
          positionLeft = 0;
        }
        if (positionTop > 0) {
          markStyle.top = `${positionTop}px`;
          markStyle.height = `calc(100% - ${positionTop}px)`;
          positionTop = 0;
        }
        markStyle.backgroundPosition = `${positionLeft}px ${positionTop}px`;
        return markStyle;
      };
      const containerRef = shallowRef(null);
      const watermarkRef = shallowRef();
      const stopObservation = ref(false);
      const destroyWatermark = () => {
        if (watermarkRef.value) {
          watermarkRef.value.remove();
          watermarkRef.value = void 0;
        }
      };
      const appendWatermark = (base64Url, markWidth) => {
        var _a;
        if (containerRef.value && watermarkRef.value) {
          stopObservation.value = true;
          watermarkRef.value.setAttribute(
            "style",
            getStyleStr({
              ...getMarkStyle(),
              backgroundImage: `url('${base64Url}')`,
              backgroundSize: `${Math.floor(markWidth)}px`
            })
          );
          (_a = containerRef.value) == null ? void 0 : _a.append(watermarkRef.value);
          setTimeout(() => {
            stopObservation.value = false;
          });
        }
      };
      const getMarkSize = (ctx) => {
        let defaultWidth = 120;
        let defaultHeight = 64;
        let space = 0;
        const { image, content, width, height, rotate } = props2;
        if (!image && ctx.measureText) {
          ctx.font = `${Number(fontSize.value)}px ${fontFamily.value}`;
          const contents = isArray$1(content) ? content : [content];
          let maxWidth = 0;
          let maxHeight = 0;
          contents.forEach((item) => {
            const {
              width: width2,
              fontBoundingBoxAscent,
              fontBoundingBoxDescent,
              actualBoundingBoxAscent,
              actualBoundingBoxDescent
            } = ctx.measureText(item);
            const height2 = isUndefined(fontBoundingBoxAscent) ? actualBoundingBoxAscent + actualBoundingBoxDescent : fontBoundingBoxAscent + fontBoundingBoxDescent;
            if (width2 > maxWidth) maxWidth = Math.ceil(width2);
            if (height2 > maxHeight) maxHeight = Math.ceil(height2);
          });
          defaultWidth = maxWidth;
          defaultHeight = maxHeight * contents.length + (contents.length - 1) * fontGap.value;
          const angle = Math.PI / 180 * Number(rotate);
          space = Math.ceil(Math.abs(Math.sin(angle) * defaultHeight) / 2);
          defaultWidth += space;
        }
        return [width != null ? width : defaultWidth, height != null ? height : defaultHeight, space];
      };
      const getClips = useClips();
      const renderWatermark = () => {
        const canvas = document.createElement("canvas");
        const ctx = canvas.getContext("2d");
        const image = props2.image;
        const content = props2.content;
        const rotate = props2.rotate;
        if (ctx) {
          if (!watermarkRef.value) {
            watermarkRef.value = document.createElement("div");
          }
          const ratio = getPixelRatio();
          const [markWidth, markHeight, space] = getMarkSize(ctx);
          const drawCanvas = (drawContent) => {
            const [textClips, clipWidth] = getClips(
              drawContent || "",
              rotate,
              ratio,
              markWidth,
              markHeight,
              {
                color: color.value,
                fontSize: fontSize.value,
                fontStyle: fontStyle.value,
                fontWeight: fontWeight.value,
                fontFamily: fontFamily.value,
                fontGap: fontGap.value,
                textAlign: textAlign.value,
                textBaseline: textBaseline.value
              },
              gapX.value,
              gapY.value,
              space
            );
            appendWatermark(textClips, clipWidth);
          };
          if (image) {
            const img = new Image();
            img.onload = () => {
              drawCanvas(img);
            };
            img.onerror = () => {
              drawCanvas(content);
            };
            img.crossOrigin = "anonymous";
            img.referrerPolicy = "no-referrer";
            img.src = image;
          } else {
            drawCanvas(content);
          }
        }
      };
      onMounted(() => {
        renderWatermark();
      });
      watch(
        () => props2,
        () => {
          renderWatermark();
        },
        {
          deep: true,
          flush: "post"
        }
      );
      onBeforeUnmount(() => {
        destroyWatermark();
      });
      const onMutate = (mutations) => {
        if (stopObservation.value) {
          return;
        }
        mutations.forEach((mutation) => {
          if (reRendering(mutation, watermarkRef.value)) {
            destroyWatermark();
            renderWatermark();
          }
        });
      };
      useMutationObserver(containerRef, onMutate, {
        attributes: true,
        subtree: true,
        childList: true
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            ref_key: "containerRef",
            ref: containerRef,
            style: normalizeStyle([style])
          },
          [
            renderSlot(_ctx.$slots, "default")
          ],
          4
          /* STYLE */
        );
      };
    }
  });
  const ElWatermark = withInstall(_sfc_main$16);
  const tourStrategies = ["absolute", "fixed"];
  const tourPlacements = [
    "top-start",
    "top-end",
    "top",
    "bottom-start",
    "bottom-end",
    "bottom",
    "left-start",
    "left-end",
    "left",
    "right-start",
    "right-end",
    "right"
  ];
  const tourContentProps = buildProps({
    /**
     * @description position of the guide card relative to the target element
     */
    placement: {
      type: definePropType(String),
      values: tourPlacements,
      default: "bottom"
    },
    /**
     * @description the reference dom
     */
    reference: {
      type: definePropType(Object),
      default: null
    },
    /**
     * @description position strategy of the content
     */
    strategy: {
      type: definePropType(String),
      values: tourStrategies,
      default: "absolute"
    },
    /**
     * @description offset of the arrow
     */
    offset: {
      type: Number,
      default: 10
    },
    /**
     * @description whether to show the arrow
     */
    showArrow: Boolean,
    /**
     * @description content's zIndex
     */
    zIndex: {
      type: Number,
      default: 2001
    }
  });
  const tourContentEmits = {
    close: () => true
  };
  const tourProps = buildProps({
    /**
     * @description open tour
     */
    modelValue: Boolean,
    /**
     * @description what is the current step
     */
    current: {
      type: Number,
      default: 0
    },
    /**
     * @description whether to show the arrow
     */
    showArrow: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether to show a close button
     */
    showClose: {
      type: Boolean,
      default: true
    },
    /**
     * @description custom close icon
     */
    closeIcon: {
      type: iconPropType
    },
    /**
     * @description position of the guide card relative to the target element
     */
    placement: tourContentProps.placement,
    /**
     * @description custom style for content
     */
    contentStyle: {
      type: definePropType([Object])
    },
    /**
     * @description whether to enable masking, change mask style and fill color by pass custom props
     */
    mask: {
      type: definePropType([Boolean, Object]),
      default: true
    },
    /**
     * @description transparent gap between mask and target
     */
    gap: {
      type: definePropType(Object),
      default: () => ({
        offset: 6,
        radius: 2
      })
    },
    /**
     * @description tour's zIndex
     */
    zIndex: {
      type: Number
    },
    /**
     * @description support pass custom scrollIntoView options
     */
    scrollIntoViewOptions: {
      type: definePropType([Boolean, Object]),
      default: () => ({
        block: "center"
      })
    },
    /**
     * @description type, affects the background color and text color
     */
    type: {
      type: definePropType(String)
    },
    /**
     * @description which element the TourContent appends to
     */
    appendTo: {
      type: teleportProps.to.type,
      default: "body"
    },
    /**
     * @description whether the Tour can be closed by pressing ESC
     */
    closeOnPressEscape: {
      type: Boolean,
      default: true
    },
    /**
     * @description whether the target element can be clickable, when using mask
     */
    targetAreaClickable: {
      type: Boolean,
      default: true
    }
  });
  const tourEmits = {
    [UPDATE_MODEL_EVENT]: (value) => isBoolean(value),
    ["update:current"]: (current) => isNumber(current),
    close: (current) => isNumber(current),
    finish: () => true,
    change: (current) => isNumber(current)
  };
  const maskProps = buildProps({
    /**
     * @description mask's zIndex
     */
    zIndex: {
      type: Number,
      default: 1001
    },
    /**
     * @description whether to show the mask
     */
    visible: Boolean,
    /**
     * @description mask's fill
     */
    fill: {
      type: String,
      default: "rgba(0,0,0,0.5)"
    },
    /***
     * @description mask's transparent space position
     */
    pos: {
      type: definePropType(Object)
    },
    /**
     * @description whether the target element can be clickable, when using mask
     */
    targetAreaClickable: {
      type: Boolean,
      default: true
    }
  });
  const min = Math.min;
  const max = Math.max;
  const round = Math.round;
  const floor = Math.floor;
  const createCoords = (v2) => ({
    x: v2,
    y: v2
  });
  const oppositeSideMap = {
    left: "right",
    right: "left",
    bottom: "top",
    top: "bottom"
  };
  const oppositeAlignmentMap = {
    start: "end",
    end: "start"
  };
  function clamp(start, value, end) {
    return max(start, min(value, end));
  }
  function evaluate(value, param) {
    return typeof value === "function" ? value(param) : value;
  }
  function getSide(placement) {
    return placement.split("-")[0];
  }
  function getAlignment(placement) {
    return placement.split("-")[1];
  }
  function getOppositeAxis(axis) {
    return axis === "x" ? "y" : "x";
  }
  function getAxisLength(axis) {
    return axis === "y" ? "height" : "width";
  }
  const yAxisSides = /* @__PURE__ */ new Set(["top", "bottom"]);
  function getSideAxis(placement) {
    return yAxisSides.has(getSide(placement)) ? "y" : "x";
  }
  function getAlignmentAxis(placement) {
    return getOppositeAxis(getSideAxis(placement));
  }
  function getAlignmentSides(placement, rects, rtl) {
    if (rtl === void 0) {
      rtl = false;
    }
    const alignment = getAlignment(placement);
    const alignmentAxis = getAlignmentAxis(placement);
    const length = getAxisLength(alignmentAxis);
    let mainAlignmentSide = alignmentAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top";
    if (rects.reference[length] > rects.floating[length]) {
      mainAlignmentSide = getOppositePlacement(mainAlignmentSide);
    }
    return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];
  }
  function getExpandedPlacements(placement) {
    const oppositePlacement = getOppositePlacement(placement);
    return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
  }
  function getOppositeAlignmentPlacement(placement) {
    return placement.replace(/start|end/g, (alignment) => oppositeAlignmentMap[alignment]);
  }
  const lrPlacement = ["left", "right"];
  const rlPlacement = ["right", "left"];
  const tbPlacement = ["top", "bottom"];
  const btPlacement = ["bottom", "top"];
  function getSideList(side, isStart, rtl) {
    switch (side) {
      case "top":
      case "bottom":
        if (rtl) return isStart ? rlPlacement : lrPlacement;
        return isStart ? lrPlacement : rlPlacement;
      case "left":
      case "right":
        return isStart ? tbPlacement : btPlacement;
      default:
        return [];
    }
  }
  function getOppositeAxisPlacements(placement, flipAlignment, direction2, rtl) {
    const alignment = getAlignment(placement);
    let list = getSideList(getSide(placement), direction2 === "start", rtl);
    if (alignment) {
      list = list.map((side) => side + "-" + alignment);
      if (flipAlignment) {
        list = list.concat(list.map(getOppositeAlignmentPlacement));
      }
    }
    return list;
  }
  function getOppositePlacement(placement) {
    return placement.replace(/left|right|bottom|top/g, (side) => oppositeSideMap[side]);
  }
  function expandPaddingObject(padding) {
    return {
      top: 0,
      right: 0,
      bottom: 0,
      left: 0,
      ...padding
    };
  }
  function getPaddingObject(padding) {
    return typeof padding !== "number" ? expandPaddingObject(padding) : {
      top: padding,
      right: padding,
      bottom: padding,
      left: padding
    };
  }
  function rectToClientRect(rect) {
    const {
      x: x2,
      y,
      width,
      height
    } = rect;
    return {
      width,
      height,
      top: y,
      left: x2,
      right: x2 + width,
      bottom: y + height,
      x: x2,
      y
    };
  }
  function computeCoordsFromPlacement(_ref, placement, rtl) {
    let {
      reference,
      floating
    } = _ref;
    const sideAxis = getSideAxis(placement);
    const alignmentAxis = getAlignmentAxis(placement);
    const alignLength = getAxisLength(alignmentAxis);
    const side = getSide(placement);
    const isVertical = sideAxis === "y";
    const commonX = reference.x + reference.width / 2 - floating.width / 2;
    const commonY = reference.y + reference.height / 2 - floating.height / 2;
    const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;
    let coords;
    switch (side) {
      case "top":
        coords = {
          x: commonX,
          y: reference.y - floating.height
        };
        break;
      case "bottom":
        coords = {
          x: commonX,
          y: reference.y + reference.height
        };
        break;
      case "right":
        coords = {
          x: reference.x + reference.width,
          y: commonY
        };
        break;
      case "left":
        coords = {
          x: reference.x - floating.width,
          y: commonY
        };
        break;
      default:
        coords = {
          x: reference.x,
          y: reference.y
        };
    }
    switch (getAlignment(placement)) {
      case "start":
        coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);
        break;
      case "end":
        coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);
        break;
    }
    return coords;
  }
  async function detectOverflow$1(state, options) {
    var _await$platform$isEle;
    if (options === void 0) {
      options = {};
    }
    const {
      x: x2,
      y,
      platform: platform2,
      rects,
      elements,
      strategy
    } = state;
    const {
      boundary = "clippingAncestors",
      rootBoundary = "viewport",
      elementContext = "floating",
      altBoundary = false,
      padding = 0
    } = evaluate(options, state);
    const paddingObject = getPaddingObject(padding);
    const altContext = elementContext === "floating" ? "reference" : "floating";
    const element = elements[altBoundary ? altContext : elementContext];
    const clippingClientRect = rectToClientRect(await platform2.getClippingRect({
      element: ((_await$platform$isEle = await (platform2.isElement == null ? void 0 : platform2.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || await (platform2.getDocumentElement == null ? void 0 : platform2.getDocumentElement(elements.floating)),
      boundary,
      rootBoundary,
      strategy
    }));
    const rect = elementContext === "floating" ? {
      x: x2,
      y,
      width: rects.floating.width,
      height: rects.floating.height
    } : rects.reference;
    const offsetParent = await (platform2.getOffsetParent == null ? void 0 : platform2.getOffsetParent(elements.floating));
    const offsetScale = await (platform2.isElement == null ? void 0 : platform2.isElement(offsetParent)) ? await (platform2.getScale == null ? void 0 : platform2.getScale(offsetParent)) || {
      x: 1,
      y: 1
    } : {
      x: 1,
      y: 1
    };
    const elementClientRect = rectToClientRect(platform2.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform2.convertOffsetParentRelativeRectToViewportRelativeRect({
      elements,
      rect,
      offsetParent,
      strategy
    }) : rect);
    return {
      top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
      bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
      left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
      right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
    };
  }
  const computePosition$1 = async (reference, floating, config) => {
    const {
      placement = "bottom",
      strategy = "absolute",
      middleware = [],
      platform: platform2
    } = config;
    const validMiddleware = middleware.filter(Boolean);
    const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(floating));
    let rects = await platform2.getElementRects({
      reference,
      floating,
      strategy
    });
    let {
      x: x2,
      y
    } = computeCoordsFromPlacement(rects, placement, rtl);
    let statefulPlacement = placement;
    let middlewareData = {};
    let resetCount = 0;
    for (let i = 0; i < validMiddleware.length; i++) {
      var _platform$detectOverf;
      const {
        name,
        fn: fn2
      } = validMiddleware[i];
      const {
        x: nextX,
        y: nextY,
        data,
        reset
      } = await fn2({
        x: x2,
        y,
        initialPlacement: placement,
        placement: statefulPlacement,
        strategy,
        middlewareData,
        rects,
        platform: {
          ...platform2,
          detectOverflow: (_platform$detectOverf = platform2.detectOverflow) != null ? _platform$detectOverf : detectOverflow$1
        },
        elements: {
          reference,
          floating
        }
      });
      x2 = nextX != null ? nextX : x2;
      y = nextY != null ? nextY : y;
      middlewareData = {
        ...middlewareData,
        [name]: {
          ...middlewareData[name],
          ...data
        }
      };
      if (reset && resetCount <= 50) {
        resetCount++;
        if (typeof reset === "object") {
          if (reset.placement) {
            statefulPlacement = reset.placement;
          }
          if (reset.rects) {
            rects = reset.rects === true ? await platform2.getElementRects({
              reference,
              floating,
              strategy
            }) : reset.rects;
          }
          ({
            x: x2,
            y
          } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));
        }
        i = -1;
      }
    }
    return {
      x: x2,
      y,
      placement: statefulPlacement,
      strategy,
      middlewareData
    };
  };
  const arrow$1 = (options) => ({
    name: "arrow",
    options,
    async fn(state) {
      const {
        x: x2,
        y,
        placement,
        rects,
        platform: platform2,
        elements,
        middlewareData
      } = state;
      const {
        element,
        padding = 0
      } = evaluate(options, state) || {};
      if (element == null) {
        return {};
      }
      const paddingObject = getPaddingObject(padding);
      const coords = {
        x: x2,
        y
      };
      const axis = getAlignmentAxis(placement);
      const length = getAxisLength(axis);
      const arrowDimensions = await platform2.getDimensions(element);
      const isYAxis = axis === "y";
      const minProp = isYAxis ? "top" : "left";
      const maxProp = isYAxis ? "bottom" : "right";
      const clientProp = isYAxis ? "clientHeight" : "clientWidth";
      const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];
      const startDiff = coords[axis] - rects.reference[axis];
      const arrowOffsetParent = await (platform2.getOffsetParent == null ? void 0 : platform2.getOffsetParent(element));
      let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;
      if (!clientSize || !await (platform2.isElement == null ? void 0 : platform2.isElement(arrowOffsetParent))) {
        clientSize = elements.floating[clientProp] || rects.floating[length];
      }
      const centerToReference = endDiff / 2 - startDiff / 2;
      const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;
      const minPadding = min(paddingObject[minProp], largestPossiblePadding);
      const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);
      const min$12 = minPadding;
      const max2 = clientSize - arrowDimensions[length] - maxPadding;
      const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
      const offset2 = clamp(min$12, center, max2);
      const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset2 && rects.reference[length] / 2 - (center < min$12 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;
      const alignmentOffset = shouldAddOffset ? center < min$12 ? center - min$12 : center - max2 : 0;
      return {
        [axis]: coords[axis] + alignmentOffset,
        data: {
          [axis]: offset2,
          centerOffset: center - offset2 - alignmentOffset,
          ...shouldAddOffset && {
            alignmentOffset
          }
        },
        reset: shouldAddOffset
      };
    }
  });
  const flip$1 = function(options) {
    if (options === void 0) {
      options = {};
    }
    return {
      name: "flip",
      options,
      async fn(state) {
        var _middlewareData$arrow, _middlewareData$flip;
        const {
          placement,
          middlewareData,
          rects,
          initialPlacement,
          platform: platform2,
          elements
        } = state;
        const {
          mainAxis: checkMainAxis = true,
          crossAxis: checkCrossAxis = true,
          fallbackPlacements: specifiedFallbackPlacements,
          fallbackStrategy = "bestFit",
          fallbackAxisSideDirection = "none",
          flipAlignment = true,
          ...detectOverflowOptions
        } = evaluate(options, state);
        if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
          return {};
        }
        const side = getSide(placement);
        const initialSideAxis = getSideAxis(initialPlacement);
        const isBasePlacement = getSide(initialPlacement) === initialPlacement;
        const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(elements.floating));
        const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));
        const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== "none";
        if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {
          fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));
        }
        const placements = [initialPlacement, ...fallbackPlacements];
        const overflow = await platform2.detectOverflow(state, detectOverflowOptions);
        const overflows = [];
        let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];
        if (checkMainAxis) {
          overflows.push(overflow[side]);
        }
        if (checkCrossAxis) {
          const sides = getAlignmentSides(placement, rects, rtl);
          overflows.push(overflow[sides[0]], overflow[sides[1]]);
        }
        overflowsData = [...overflowsData, {
          placement,
          overflows
        }];
        if (!overflows.every((side2) => side2 <= 0)) {
          var _middlewareData$flip2, _overflowsData$filter;
          const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;
          const nextPlacement = placements[nextIndex];
          if (nextPlacement) {
            const ignoreCrossAxisOverflow = checkCrossAxis === "alignment" ? initialSideAxis !== getSideAxis(nextPlacement) : false;
            if (!ignoreCrossAxisOverflow || // We leave the current main axis only if every placement on that axis
            // overflows the main axis.
            overflowsData.every((d2) => getSideAxis(d2.placement) === initialSideAxis ? d2.overflows[0] > 0 : true)) {
              return {
                data: {
                  index: nextIndex,
                  overflows: overflowsData
                },
                reset: {
                  placement: nextPlacement
                }
              };
            }
          }
          let resetPlacement = (_overflowsData$filter = overflowsData.filter((d2) => d2.overflows[0] <= 0).sort((a2, b2) => a2.overflows[1] - b2.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;
          if (!resetPlacement) {
            switch (fallbackStrategy) {
              case "bestFit": {
                var _overflowsData$filter2;
                const placement2 = (_overflowsData$filter2 = overflowsData.filter((d2) => {
                  if (hasFallbackAxisSideDirection) {
                    const currentSideAxis = getSideAxis(d2.placement);
                    return currentSideAxis === initialSideAxis || // Create a bias to the `y` side axis due to horizontal
                    // reading directions favoring greater width.
                    currentSideAxis === "y";
                  }
                  return true;
                }).map((d2) => [d2.placement, d2.overflows.filter((overflow2) => overflow2 > 0).reduce((acc, overflow2) => acc + overflow2, 0)]).sort((a2, b2) => a2[1] - b2[1])[0]) == null ? void 0 : _overflowsData$filter2[0];
                if (placement2) {
                  resetPlacement = placement2;
                }
                break;
              }
              case "initialPlacement":
                resetPlacement = initialPlacement;
                break;
            }
          }
          if (placement !== resetPlacement) {
            return {
              reset: {
                placement: resetPlacement
              }
            };
          }
        }
        return {};
      }
    };
  };
  const originSides = /* @__PURE__ */ new Set(["left", "top"]);
  async function convertValueToCoords(state, options) {
    const {
      placement,
      platform: platform2,
      elements
    } = state;
    const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(elements.floating));
    const side = getSide(placement);
    const alignment = getAlignment(placement);
    const isVertical = getSideAxis(placement) === "y";
    const mainAxisMulti = originSides.has(side) ? -1 : 1;
    const crossAxisMulti = rtl && isVertical ? -1 : 1;
    const rawValue = evaluate(options, state);
    let {
      mainAxis,
      crossAxis,
      alignmentAxis
    } = typeof rawValue === "number" ? {
      mainAxis: rawValue,
      crossAxis: 0,
      alignmentAxis: null
    } : {
      mainAxis: rawValue.mainAxis || 0,
      crossAxis: rawValue.crossAxis || 0,
      alignmentAxis: rawValue.alignmentAxis
    };
    if (alignment && typeof alignmentAxis === "number") {
      crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis;
    }
    return isVertical ? {
      x: crossAxis * crossAxisMulti,
      y: mainAxis * mainAxisMulti
    } : {
      x: mainAxis * mainAxisMulti,
      y: crossAxis * crossAxisMulti
    };
  }
  const offset$1 = function(options) {
    if (options === void 0) {
      options = 0;
    }
    return {
      name: "offset",
      options,
      async fn(state) {
        var _middlewareData$offse, _middlewareData$arrow;
        const {
          x: x2,
          y,
          placement,
          middlewareData
        } = state;
        const diffCoords = await convertValueToCoords(state, options);
        if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
          return {};
        }
        return {
          x: x2 + diffCoords.x,
          y: y + diffCoords.y,
          data: {
            ...diffCoords,
            placement
          }
        };
      }
    };
  };
  const shift$1 = function(options) {
    if (options === void 0) {
      options = {};
    }
    return {
      name: "shift",
      options,
      async fn(state) {
        const {
          x: x2,
          y,
          placement,
          platform: platform2
        } = state;
        const {
          mainAxis: checkMainAxis = true,
          crossAxis: checkCrossAxis = false,
          limiter = {
            fn: (_ref) => {
              let {
                x: x3,
                y: y2
              } = _ref;
              return {
                x: x3,
                y: y2
              };
            }
          },
          ...detectOverflowOptions
        } = evaluate(options, state);
        const coords = {
          x: x2,
          y
        };
        const overflow = await platform2.detectOverflow(state, detectOverflowOptions);
        const crossAxis = getSideAxis(getSide(placement));
        const mainAxis = getOppositeAxis(crossAxis);
        let mainAxisCoord = coords[mainAxis];
        let crossAxisCoord = coords[crossAxis];
        if (checkMainAxis) {
          const minSide = mainAxis === "y" ? "top" : "left";
          const maxSide = mainAxis === "y" ? "bottom" : "right";
          const min2 = mainAxisCoord + overflow[minSide];
          const max2 = mainAxisCoord - overflow[maxSide];
          mainAxisCoord = clamp(min2, mainAxisCoord, max2);
        }
        if (checkCrossAxis) {
          const minSide = crossAxis === "y" ? "top" : "left";
          const maxSide = crossAxis === "y" ? "bottom" : "right";
          const min2 = crossAxisCoord + overflow[minSide];
          const max2 = crossAxisCoord - overflow[maxSide];
          crossAxisCoord = clamp(min2, crossAxisCoord, max2);
        }
        const limitedCoords = limiter.fn({
          ...state,
          [mainAxis]: mainAxisCoord,
          [crossAxis]: crossAxisCoord
        });
        return {
          ...limitedCoords,
          data: {
            x: limitedCoords.x - x2,
            y: limitedCoords.y - y,
            enabled: {
              [mainAxis]: checkMainAxis,
              [crossAxis]: checkCrossAxis
            }
          }
        };
      }
    };
  };
  function hasWindow() {
    return typeof window !== "undefined";
  }
  function getNodeName(node) {
    if (isNode(node)) {
      return (node.nodeName || "").toLowerCase();
    }
    return "#document";
  }
  function getWindow(node) {
    var _node$ownerDocument;
    return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;
  }
  function getDocumentElement(node) {
    var _ref;
    return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;
  }
  function isNode(value) {
    if (!hasWindow()) {
      return false;
    }
    return value instanceof Node || value instanceof getWindow(value).Node;
  }
  function isElement(value) {
    if (!hasWindow()) {
      return false;
    }
    return value instanceof Element || value instanceof getWindow(value).Element;
  }
  function isHTMLElement(value) {
    if (!hasWindow()) {
      return false;
    }
    return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;
  }
  function isShadowRoot(value) {
    if (!hasWindow() || typeof ShadowRoot === "undefined") {
      return false;
    }
    return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
  }
  const invalidOverflowDisplayValues = /* @__PURE__ */ new Set(["inline", "contents"]);
  function isOverflowElement(element) {
    const {
      overflow,
      overflowX,
      overflowY,
      display
    } = getComputedStyle$1(element);
    return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);
  }
  const tableElements = /* @__PURE__ */ new Set(["table", "td", "th"]);
  function isTableElement(element) {
    return tableElements.has(getNodeName(element));
  }
  const topLayerSelectors = [":popover-open", ":modal"];
  function isTopLayer(element) {
    return topLayerSelectors.some((selector) => {
      try {
        return element.matches(selector);
      } catch (_e) {
        return false;
      }
    });
  }
  const transformProperties = ["transform", "translate", "scale", "rotate", "perspective"];
  const willChangeValues = ["transform", "translate", "scale", "rotate", "perspective", "filter"];
  const containValues = ["paint", "layout", "strict", "content"];
  function isContainingBlock(elementOrCss) {
    const webkit = isWebKit();
    const css = isElement(elementOrCss) ? getComputedStyle$1(elementOrCss) : elementOrCss;
    return transformProperties.some((value) => css[value] ? css[value] !== "none" : false) || (css.containerType ? css.containerType !== "normal" : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== "none" : false) || !webkit && (css.filter ? css.filter !== "none" : false) || willChangeValues.some((value) => (css.willChange || "").includes(value)) || containValues.some((value) => (css.contain || "").includes(value));
  }
  function getContainingBlock(element) {
    let currentNode = getParentNode(element);
    while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {
      if (isContainingBlock(currentNode)) {
        return currentNode;
      } else if (isTopLayer(currentNode)) {
        return null;
      }
      currentNode = getParentNode(currentNode);
    }
    return null;
  }
  function isWebKit() {
    if (typeof CSS === "undefined" || !CSS.supports) return false;
    return CSS.supports("-webkit-backdrop-filter", "none");
  }
  const lastTraversableNodeNames = /* @__PURE__ */ new Set(["html", "body", "#document"]);
  function isLastTraversableNode(node) {
    return lastTraversableNodeNames.has(getNodeName(node));
  }
  function getComputedStyle$1(element) {
    return getWindow(element).getComputedStyle(element);
  }
  function getNodeScroll(element) {
    if (isElement(element)) {
      return {
        scrollLeft: element.scrollLeft,
        scrollTop: element.scrollTop
      };
    }
    return {
      scrollLeft: element.scrollX,
      scrollTop: element.scrollY
    };
  }
  function getParentNode(node) {
    if (getNodeName(node) === "html") {
      return node;
    }
    const result = (
      // Step into the shadow DOM of the parent of a slotted node.
      node.assignedSlot || // DOM Element detected.
      node.parentNode || // ShadowRoot detected.
      isShadowRoot(node) && node.host || // Fallback.
      getDocumentElement(node)
    );
    return isShadowRoot(result) ? result.host : result;
  }
  function getNearestOverflowAncestor(node) {
    const parentNode = getParentNode(node);
    if (isLastTraversableNode(parentNode)) {
      return node.ownerDocument ? node.ownerDocument.body : node.body;
    }
    if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {
      return parentNode;
    }
    return getNearestOverflowAncestor(parentNode);
  }
  function getOverflowAncestors(node, list, traverseIframes) {
    var _node$ownerDocument2;
    if (list === void 0) {
      list = [];
    }
    if (traverseIframes === void 0) {
      traverseIframes = true;
    }
    const scrollableAncestor = getNearestOverflowAncestor(node);
    const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);
    const win = getWindow(scrollableAncestor);
    if (isBody) {
      const frameElement = getFrameElement(win);
      return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);
    }
    return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
  }
  function getFrameElement(win) {
    return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;
  }
  function getCssDimensions(element) {
    const css = getComputedStyle$1(element);
    let width = parseFloat(css.width) || 0;
    let height = parseFloat(css.height) || 0;
    const hasOffset = isHTMLElement(element);
    const offsetWidth = hasOffset ? element.offsetWidth : width;
    const offsetHeight = hasOffset ? element.offsetHeight : height;
    const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;
    if (shouldFallback) {
      width = offsetWidth;
      height = offsetHeight;
    }
    return {
      width,
      height,
      $: shouldFallback
    };
  }
  function unwrapElement(element) {
    return !isElement(element) ? element.contextElement : element;
  }
  function getScale(element) {
    const domElement = unwrapElement(element);
    if (!isHTMLElement(domElement)) {
      return createCoords(1);
    }
    const rect = domElement.getBoundingClientRect();
    const {
      width,
      height,
      $
    } = getCssDimensions(domElement);
    let x2 = ($ ? round(rect.width) : rect.width) / width;
    let y = ($ ? round(rect.height) : rect.height) / height;
    if (!x2 || !Number.isFinite(x2)) {
      x2 = 1;
    }
    if (!y || !Number.isFinite(y)) {
      y = 1;
    }
    return {
      x: x2,
      y
    };
  }
  const noOffsets = /* @__PURE__ */ createCoords(0);
  function getVisualOffsets(element) {
    const win = getWindow(element);
    if (!isWebKit() || !win.visualViewport) {
      return noOffsets;
    }
    return {
      x: win.visualViewport.offsetLeft,
      y: win.visualViewport.offsetTop
    };
  }
  function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {
    if (isFixed === void 0) {
      isFixed = false;
    }
    if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {
      return false;
    }
    return isFixed;
  }
  function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {
    if (includeScale === void 0) {
      includeScale = false;
    }
    if (isFixedStrategy === void 0) {
      isFixedStrategy = false;
    }
    const clientRect = element.getBoundingClientRect();
    const domElement = unwrapElement(element);
    let scale = createCoords(1);
    if (includeScale) {
      if (offsetParent) {
        if (isElement(offsetParent)) {
          scale = getScale(offsetParent);
        }
      } else {
        scale = getScale(element);
      }
    }
    const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);
    let x2 = (clientRect.left + visualOffsets.x) / scale.x;
    let y = (clientRect.top + visualOffsets.y) / scale.y;
    let width = clientRect.width / scale.x;
    let height = clientRect.height / scale.y;
    if (domElement) {
      const win = getWindow(domElement);
      const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;
      let currentWin = win;
      let currentIFrame = getFrameElement(currentWin);
      while (currentIFrame && offsetParent && offsetWin !== currentWin) {
        const iframeScale = getScale(currentIFrame);
        const iframeRect = currentIFrame.getBoundingClientRect();
        const css = getComputedStyle$1(currentIFrame);
        const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;
        const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;
        x2 *= iframeScale.x;
        y *= iframeScale.y;
        width *= iframeScale.x;
        height *= iframeScale.y;
        x2 += left;
        y += top;
        currentWin = getWindow(currentIFrame);
        currentIFrame = getFrameElement(currentWin);
      }
    }
    return rectToClientRect({
      width,
      height,
      x: x2,
      y
    });
  }
  function getWindowScrollBarX(element, rect) {
    const leftScroll = getNodeScroll(element).scrollLeft;
    if (!rect) {
      return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;
    }
    return rect.left + leftScroll;
  }
  function getHTMLOffset(documentElement, scroll) {
    const htmlRect = documentElement.getBoundingClientRect();
    const x2 = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);
    const y = htmlRect.top + scroll.scrollTop;
    return {
      x: x2,
      y
    };
  }
  function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
    let {
      elements,
      rect,
      offsetParent,
      strategy
    } = _ref;
    const isFixed = strategy === "fixed";
    const documentElement = getDocumentElement(offsetParent);
    const topLayer = elements ? isTopLayer(elements.floating) : false;
    if (offsetParent === documentElement || topLayer && isFixed) {
      return rect;
    }
    let scroll = {
      scrollLeft: 0,
      scrollTop: 0
    };
    let scale = createCoords(1);
    const offsets = createCoords(0);
    const isOffsetParentAnElement = isHTMLElement(offsetParent);
    if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
      if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) {
        scroll = getNodeScroll(offsetParent);
      }
      if (isHTMLElement(offsetParent)) {
        const offsetRect = getBoundingClientRect(offsetParent);
        scale = getScale(offsetParent);
        offsets.x = offsetRect.x + offsetParent.clientLeft;
        offsets.y = offsetRect.y + offsetParent.clientTop;
      }
    }
    const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
    return {
      width: rect.width * scale.x,
      height: rect.height * scale.y,
      x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,
      y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y
    };
  }
  function getClientRects(element) {
    return Array.from(element.getClientRects());
  }
  function getDocumentRect(element) {
    const html = getDocumentElement(element);
    const scroll = getNodeScroll(element);
    const body = element.ownerDocument.body;
    const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);
    const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);
    let x2 = -scroll.scrollLeft + getWindowScrollBarX(element);
    const y = -scroll.scrollTop;
    if (getComputedStyle$1(body).direction === "rtl") {
      x2 += max(html.clientWidth, body.clientWidth) - width;
    }
    return {
      width,
      height,
      x: x2,
      y
    };
  }
  const SCROLLBAR_MAX = 25;
  function getViewportRect(element, strategy) {
    const win = getWindow(element);
    const html = getDocumentElement(element);
    const visualViewport = win.visualViewport;
    let width = html.clientWidth;
    let height = html.clientHeight;
    let x2 = 0;
    let y = 0;
    if (visualViewport) {
      width = visualViewport.width;
      height = visualViewport.height;
      const visualViewportBased = isWebKit();
      if (!visualViewportBased || visualViewportBased && strategy === "fixed") {
        x2 = visualViewport.offsetLeft;
        y = visualViewport.offsetTop;
      }
    }
    const windowScrollbarX = getWindowScrollBarX(html);
    if (windowScrollbarX <= 0) {
      const doc2 = html.ownerDocument;
      const body = doc2.body;
      const bodyStyles = getComputedStyle(body);
      const bodyMarginInline = doc2.compatMode === "CSS1Compat" ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;
      const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);
      if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {
        width -= clippingStableScrollbarWidth;
      }
    } else if (windowScrollbarX <= SCROLLBAR_MAX) {
      width += windowScrollbarX;
    }
    return {
      width,
      height,
      x: x2,
      y
    };
  }
  const absoluteOrFixed = /* @__PURE__ */ new Set(["absolute", "fixed"]);
  function getInnerBoundingClientRect(element, strategy) {
    const clientRect = getBoundingClientRect(element, true, strategy === "fixed");
    const top = clientRect.top + element.clientTop;
    const left = clientRect.left + element.clientLeft;
    const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);
    const width = element.clientWidth * scale.x;
    const height = element.clientHeight * scale.y;
    const x2 = left * scale.x;
    const y = top * scale.y;
    return {
      width,
      height,
      x: x2,
      y
    };
  }
  function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {
    let rect;
    if (clippingAncestor === "viewport") {
      rect = getViewportRect(element, strategy);
    } else if (clippingAncestor === "document") {
      rect = getDocumentRect(getDocumentElement(element));
    } else if (isElement(clippingAncestor)) {
      rect = getInnerBoundingClientRect(clippingAncestor, strategy);
    } else {
      const visualOffsets = getVisualOffsets(element);
      rect = {
        x: clippingAncestor.x - visualOffsets.x,
        y: clippingAncestor.y - visualOffsets.y,
        width: clippingAncestor.width,
        height: clippingAncestor.height
      };
    }
    return rectToClientRect(rect);
  }
  function hasFixedPositionAncestor(element, stopNode) {
    const parentNode = getParentNode(element);
    if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {
      return false;
    }
    return getComputedStyle$1(parentNode).position === "fixed" || hasFixedPositionAncestor(parentNode, stopNode);
  }
  function getClippingElementAncestors(element, cache2) {
    const cachedResult = cache2.get(element);
    if (cachedResult) {
      return cachedResult;
    }
    let result = getOverflowAncestors(element, [], false).filter((el) => isElement(el) && getNodeName(el) !== "body");
    let currentContainingBlockComputedStyle = null;
    const elementIsFixed = getComputedStyle$1(element).position === "fixed";
    let currentNode = elementIsFixed ? getParentNode(element) : element;
    while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {
      const computedStyle = getComputedStyle$1(currentNode);
      const currentNodeIsContaining = isContainingBlock(currentNode);
      if (!currentNodeIsContaining && computedStyle.position === "fixed") {
        currentContainingBlockComputedStyle = null;
      }
      const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === "static" && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
      if (shouldDropCurrentNode) {
        result = result.filter((ancestor) => ancestor !== currentNode);
      } else {
        currentContainingBlockComputedStyle = computedStyle;
      }
      currentNode = getParentNode(currentNode);
    }
    cache2.set(element, result);
    return result;
  }
  function getClippingRect(_ref) {
    let {
      element,
      boundary,
      rootBoundary,
      strategy
    } = _ref;
    const elementClippingAncestors = boundary === "clippingAncestors" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);
    const clippingAncestors = [...elementClippingAncestors, rootBoundary];
    const firstClippingAncestor = clippingAncestors[0];
    const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {
      const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);
      accRect.top = max(rect.top, accRect.top);
      accRect.right = min(rect.right, accRect.right);
      accRect.bottom = min(rect.bottom, accRect.bottom);
      accRect.left = max(rect.left, accRect.left);
      return accRect;
    }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));
    return {
      width: clippingRect.right - clippingRect.left,
      height: clippingRect.bottom - clippingRect.top,
      x: clippingRect.left,
      y: clippingRect.top
    };
  }
  function getDimensions(element) {
    const {
      width,
      height
    } = getCssDimensions(element);
    return {
      width,
      height
    };
  }
  function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
    const isOffsetParentAnElement = isHTMLElement(offsetParent);
    const documentElement = getDocumentElement(offsetParent);
    const isFixed = strategy === "fixed";
    const rect = getBoundingClientRect(element, true, isFixed, offsetParent);
    let scroll = {
      scrollLeft: 0,
      scrollTop: 0
    };
    const offsets = createCoords(0);
    function setLeftRTLScrollbarOffset() {
      offsets.x = getWindowScrollBarX(documentElement);
    }
    if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
      if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) {
        scroll = getNodeScroll(offsetParent);
      }
      if (isOffsetParentAnElement) {
        const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);
        offsets.x = offsetRect.x + offsetParent.clientLeft;
        offsets.y = offsetRect.y + offsetParent.clientTop;
      } else if (documentElement) {
        setLeftRTLScrollbarOffset();
      }
    }
    if (isFixed && !isOffsetParentAnElement && documentElement) {
      setLeftRTLScrollbarOffset();
    }
    const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
    const x2 = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;
    const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;
    return {
      x: x2,
      y,
      width: rect.width,
      height: rect.height
    };
  }
  function isStaticPositioned(element) {
    return getComputedStyle$1(element).position === "static";
  }
  function getTrueOffsetParent(element, polyfill) {
    if (!isHTMLElement(element) || getComputedStyle$1(element).position === "fixed") {
      return null;
    }
    if (polyfill) {
      return polyfill(element);
    }
    let rawOffsetParent = element.offsetParent;
    if (getDocumentElement(element) === rawOffsetParent) {
      rawOffsetParent = rawOffsetParent.ownerDocument.body;
    }
    return rawOffsetParent;
  }
  function getOffsetParent(element, polyfill) {
    const win = getWindow(element);
    if (isTopLayer(element)) {
      return win;
    }
    if (!isHTMLElement(element)) {
      let svgOffsetParent = getParentNode(element);
      while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {
        if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {
          return svgOffsetParent;
        }
        svgOffsetParent = getParentNode(svgOffsetParent);
      }
      return win;
    }
    let offsetParent = getTrueOffsetParent(element, polyfill);
    while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {
      offsetParent = getTrueOffsetParent(offsetParent, polyfill);
    }
    if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {
      return win;
    }
    return offsetParent || getContainingBlock(element) || win;
  }
  const getElementRects = async function(data) {
    const getOffsetParentFn = this.getOffsetParent || getOffsetParent;
    const getDimensionsFn = this.getDimensions;
    const floatingDimensions = await getDimensionsFn(data.floating);
    return {
      reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),
      floating: {
        x: 0,
        y: 0,
        width: floatingDimensions.width,
        height: floatingDimensions.height
      }
    };
  };
  function isRTL(element) {
    return getComputedStyle$1(element).direction === "rtl";
  }
  const platform = {
    convertOffsetParentRelativeRectToViewportRelativeRect,
    getDocumentElement,
    getClippingRect,
    getOffsetParent,
    getElementRects,
    getClientRects,
    getDimensions,
    getScale,
    isElement,
    isRTL
  };
  function rectsAreEqual(a2, b2) {
    return a2.x === b2.x && a2.y === b2.y && a2.width === b2.width && a2.height === b2.height;
  }
  function observeMove(element, onMove) {
    let io = null;
    let timeoutId;
    const root2 = getDocumentElement(element);
    function cleanup() {
      var _io;
      clearTimeout(timeoutId);
      (_io = io) == null || _io.disconnect();
      io = null;
    }
    function refresh(skip, threshold) {
      if (skip === void 0) {
        skip = false;
      }
      if (threshold === void 0) {
        threshold = 1;
      }
      cleanup();
      const elementRectForRootMargin = element.getBoundingClientRect();
      const {
        left,
        top,
        width,
        height
      } = elementRectForRootMargin;
      if (!skip) {
        onMove();
      }
      if (!width || !height) {
        return;
      }
      const insetTop = floor(top);
      const insetRight = floor(root2.clientWidth - (left + width));
      const insetBottom = floor(root2.clientHeight - (top + height));
      const insetLeft = floor(left);
      const rootMargin = -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px";
      const options = {
        rootMargin,
        threshold: max(0, min(1, threshold)) || 1
      };
      let isFirstUpdate = true;
      function handleObserve(entries) {
        const ratio = entries[0].intersectionRatio;
        if (ratio !== threshold) {
          if (!isFirstUpdate) {
            return refresh();
          }
          if (!ratio) {
            timeoutId = setTimeout(() => {
              refresh(false, 1e-7);
            }, 1e3);
          } else {
            refresh(false, ratio);
          }
        }
        if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {
          refresh();
        }
        isFirstUpdate = false;
      }
      try {
        io = new IntersectionObserver(handleObserve, {
          ...options,
          // Handle <iframe>s
          root: root2.ownerDocument
        });
      } catch (_e) {
        io = new IntersectionObserver(handleObserve, options);
      }
      io.observe(element);
    }
    refresh(true);
    return cleanup;
  }
  function autoUpdate(reference, floating, update, options) {
    if (options === void 0) {
      options = {};
    }
    const {
      ancestorScroll = true,
      ancestorResize = true,
      elementResize = typeof ResizeObserver === "function",
      layoutShift = typeof IntersectionObserver === "function",
      animationFrame = false
    } = options;
    const referenceEl = unwrapElement(reference);
    const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...getOverflowAncestors(floating)] : [];
    ancestors.forEach((ancestor) => {
      ancestorScroll && ancestor.addEventListener("scroll", update, {
        passive: true
      });
      ancestorResize && ancestor.addEventListener("resize", update);
    });
    const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;
    let reobserveFrame = -1;
    let resizeObserver = null;
    if (elementResize) {
      resizeObserver = new ResizeObserver((_ref) => {
        let [firstEntry] = _ref;
        if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {
          resizeObserver.unobserve(floating);
          cancelAnimationFrame(reobserveFrame);
          reobserveFrame = requestAnimationFrame(() => {
            var _resizeObserver;
            (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);
          });
        }
        update();
      });
      if (referenceEl && !animationFrame) {
        resizeObserver.observe(referenceEl);
      }
      resizeObserver.observe(floating);
    }
    let frameId;
    let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;
    if (animationFrame) {
      frameLoop();
    }
    function frameLoop() {
      const nextRefRect = getBoundingClientRect(reference);
      if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {
        update();
      }
      prevRefRect = nextRefRect;
      frameId = requestAnimationFrame(frameLoop);
    }
    update();
    return () => {
      var _resizeObserver2;
      ancestors.forEach((ancestor) => {
        ancestorScroll && ancestor.removeEventListener("scroll", update);
        ancestorResize && ancestor.removeEventListener("resize", update);
      });
      cleanupIo == null || cleanupIo();
      (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();
      resizeObserver = null;
      if (animationFrame) {
        cancelAnimationFrame(frameId);
      }
    };
  }
  const detectOverflow = detectOverflow$1;
  const offset = offset$1;
  const shift = shift$1;
  const flip = flip$1;
  const arrow = arrow$1;
  const computePosition = (reference, floating, options) => {
    const cache2 = /* @__PURE__ */ new Map();
    const mergedOptions = {
      platform,
      ...options
    };
    const platformWithCache = {
      ...mergedOptions.platform,
      _c: cache2
    };
    return computePosition$1(reference, floating, {
      ...mergedOptions,
      platform: platformWithCache
    });
  };
  const useTarget = (target, open, gap, mergedMask, scrollIntoViewOptions) => {
    const posInfo = ref(null);
    const getTargetEl = () => {
      let targetEl;
      if (isString(target.value)) {
        targetEl = document.querySelector(target.value);
      } else if (isFunction$1(target.value)) {
        targetEl = target.value();
      } else {
        targetEl = target.value;
      }
      return targetEl;
    };
    const updatePosInfo = () => {
      const targetEl = getTargetEl();
      if (!targetEl || !open.value) {
        posInfo.value = null;
        return;
      }
      if (!isInViewPort(targetEl)) {
        targetEl.scrollIntoView(scrollIntoViewOptions.value);
      }
      const { left, top, width, height } = targetEl.getBoundingClientRect();
      posInfo.value = {
        left,
        top,
        width,
        height,
        radius: 0
      };
    };
    onMounted(() => {
      watch(
        [open, target],
        () => {
          updatePosInfo();
        },
        {
          immediate: true
        }
      );
      window.addEventListener("resize", updatePosInfo);
    });
    onBeforeUnmount(() => {
      window.removeEventListener("resize", updatePosInfo);
    });
    const getGapOffset = (index) => {
      var _a;
      return (_a = isArray$1(gap.value.offset) ? gap.value.offset[index] : gap.value.offset) != null ? _a : 6;
    };
    const mergedPosInfo = computed(() => {
      var _a;
      if (!posInfo.value) return posInfo.value;
      const gapOffsetX = getGapOffset(0);
      const gapOffsetY = getGapOffset(1);
      const gapRadius = ((_a = gap.value) == null ? void 0 : _a.radius) || 2;
      return {
        left: posInfo.value.left - gapOffsetX,
        top: posInfo.value.top - gapOffsetY,
        width: posInfo.value.width + gapOffsetX * 2,
        height: posInfo.value.height + gapOffsetY * 2,
        radius: gapRadius
      };
    });
    const triggerTarget = computed(() => {
      const targetEl = getTargetEl();
      if (!mergedMask.value || !targetEl || !window.DOMRect) {
        return targetEl || void 0;
      }
      return {
        getBoundingClientRect() {
          var _a, _b, _c, _d;
          return window.DOMRect.fromRect({
            width: ((_a = mergedPosInfo.value) == null ? void 0 : _a.width) || 0,
            height: ((_b = mergedPosInfo.value) == null ? void 0 : _b.height) || 0,
            x: ((_c = mergedPosInfo.value) == null ? void 0 : _c.left) || 0,
            y: ((_d = mergedPosInfo.value) == null ? void 0 : _d.top) || 0
          });
        }
      };
    });
    return {
      mergedPosInfo,
      triggerTarget
    };
  };
  const tourKey = /* @__PURE__ */ Symbol("ElTour");
  function isInViewPort(element) {
    const viewWidth = window.innerWidth || document.documentElement.clientWidth;
    const viewHeight = window.innerHeight || document.documentElement.clientHeight;
    const { top, right, bottom, left } = element.getBoundingClientRect();
    return top >= 0 && left >= 0 && right <= viewWidth && bottom <= viewHeight;
  }
  const useFloating = (referenceRef, contentRef, arrowRef, placement, strategy, offset$12, zIndex2, showArrow) => {
    const x2 = ref();
    const y = ref();
    const middlewareData = ref({});
    const states = {
      x: x2,
      y,
      placement,
      strategy,
      middlewareData
    };
    const middleware = computed(() => {
      const _middleware = [
        offset(unref(offset$12)),
        flip(),
        shift(),
        overflowMiddleware()
      ];
      if (unref(showArrow) && unref(arrowRef)) {
        _middleware.push(
          arrow({
            element: unref(arrowRef)
          })
        );
      }
      return _middleware;
    });
    const update = async () => {
      if (!isClient) return;
      const referenceEl = unref(referenceRef);
      const contentEl = unref(contentRef);
      if (!referenceEl || !contentEl) return;
      const data = await computePosition(referenceEl, contentEl, {
        placement: unref(placement),
        strategy: unref(strategy),
        middleware: unref(middleware)
      });
      keysOf(states).forEach((key) => {
        states[key].value = data[key];
      });
    };
    const contentStyle = computed(() => {
      if (!unref(referenceRef)) {
        return {
          position: "fixed",
          top: "50%",
          left: "50%",
          transform: "translate3d(-50%, -50%, 0)",
          maxWidth: "100vw",
          zIndex: unref(zIndex2)
        };
      }
      const { overflow } = unref(middlewareData);
      return {
        position: unref(strategy),
        zIndex: unref(zIndex2),
        top: unref(y) != null ? `${unref(y)}px` : "",
        left: unref(x2) != null ? `${unref(x2)}px` : "",
        maxWidth: (overflow == null ? void 0 : overflow.maxWidth) ? `${overflow == null ? void 0 : overflow.maxWidth}px` : ""
      };
    });
    const arrowStyle = computed(() => {
      if (!unref(showArrow)) return {};
      const { arrow: arrow2 } = unref(middlewareData);
      return {
        left: (arrow2 == null ? void 0 : arrow2.x) != null ? `${arrow2 == null ? void 0 : arrow2.x}px` : "",
        top: (arrow2 == null ? void 0 : arrow2.y) != null ? `${arrow2 == null ? void 0 : arrow2.y}px` : ""
      };
    });
    let cleanup;
    onMounted(() => {
      const referenceEl = unref(referenceRef);
      const contentEl = unref(contentRef);
      if (referenceEl && contentEl) {
        cleanup = autoUpdate(referenceEl, contentEl, update);
      }
      watchEffect(() => {
        update();
      });
    });
    onBeforeUnmount(() => {
      cleanup && cleanup();
    });
    return {
      update,
      contentStyle,
      arrowStyle
    };
  };
  const overflowMiddleware = () => {
    return {
      name: "overflow",
      async fn(state) {
        const overflow = await detectOverflow(state);
        let overWidth = 0;
        if (overflow.left > 0) overWidth = overflow.left;
        if (overflow.right > 0) overWidth = overflow.right;
        const floatingWidth = state.rects.floating.width;
        return {
          data: {
            maxWidth: floatingWidth - overWidth
          }
        };
      }
    };
  };
  const _hoisted_1$Z = { style: {
    width: "100%",
    height: "100%"
  } };
  const _hoisted_2$U = ["d"];
  var _sfc_main$15 = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElTourMask",
      inheritAttrs: false
    },
    __name: "mask",
    props: maskProps,
    setup(__props) {
      const props2 = __props;
      const { ns } = inject(tourKey);
      const radius = computed(() => {
        var _a, _b;
        return (_b = (_a = props2.pos) == null ? void 0 : _a.radius) != null ? _b : 2;
      });
      const roundInfo = computed(() => {
        const v2 = radius.value;
        const baseInfo = `a${v2},${v2} 0 0 1`;
        return {
          topRight: `${baseInfo} ${v2},${v2}`,
          bottomRight: `${baseInfo} ${-v2},${v2}`,
          bottomLeft: `${baseInfo} ${-v2},${-v2}`,
          topLeft: `${baseInfo} ${v2},${-v2}`
        };
      });
      const { width: windowWidth, height: windowHeight } = useWindowSize();
      const path = computed(() => {
        const width = windowWidth.value;
        const height = windowHeight.value;
        const info = roundInfo.value;
        const _path = `M${width},0 L0,0 L0,${height} L${width},${height} L${width},0 Z`;
        const _radius = radius.value;
        return props2.pos ? `${_path} M${props2.pos.left + _radius},${props2.pos.top} h${props2.pos.width - _radius * 2} ${info.topRight} v${props2.pos.height - _radius * 2} ${info.bottomRight} h${-props2.pos.width + _radius * 2} ${info.bottomLeft} v${-props2.pos.height + _radius * 2} ${info.topLeft} z` : _path;
      });
      const maskStyle = computed(() => ({
        position: "fixed",
        left: 0,
        right: 0,
        top: 0,
        bottom: 0,
        zIndex: props2.zIndex,
        pointerEvents: props2.pos && props2.targetAreaClickable ? "none" : "auto"
      }));
      const pathStyle = computed(() => ({
        fill: props2.fill,
        pointerEvents: "auto",
        cursor: "auto"
      }));
      useLockscreen(toRef(props2, "visible"), {
        ns
      });
      return (_ctx, _cache) => {
        return __props.visible ? (openBlock(), createElementBlock(
          "div",
          mergeProps({
            key: 0,
            class: unref(ns).e("mask"),
            style: maskStyle.value
          }, _ctx.$attrs),
          [
            (openBlock(), createElementBlock("svg", _hoisted_1$Z, [
              createBaseVNode("path", {
                class: normalizeClass(unref(ns).e("hollow")),
                style: normalizeStyle(pathStyle.value),
                d: path.value
              }, null, 14, _hoisted_2$U)
            ]))
          ],
          16
          /* FULL_PROPS */
        )) : createCommentVNode("v-if", true);
      };
    }
  });
  const _hoisted_1$Y = ["data-side"];
  var _sfc_main$14 = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElTourContent"
    },
    __name: "content",
    props: tourContentProps,
    emits: tourContentEmits,
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const placement = ref(props2.placement);
      const strategy = ref(props2.strategy);
      const contentRef = ref(null);
      const arrowRef = ref(null);
      watch(
        () => props2.placement,
        () => {
          placement.value = props2.placement;
        }
      );
      const { contentStyle, arrowStyle } = useFloating(
        toRef(props2, "reference"),
        contentRef,
        arrowRef,
        placement,
        strategy,
        toRef(props2, "offset"),
        toRef(props2, "zIndex"),
        toRef(props2, "showArrow")
      );
      const side = computed(() => {
        return placement.value.split("-")[0];
      });
      const { ns } = inject(tourKey);
      const onCloseRequested = () => {
        emit2("close");
      };
      const onFocusoutPrevented = (event) => {
        if (event.detail.focusReason === "pointer") {
          event.preventDefault();
        }
      };
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock("div", {
          ref_key: "contentRef",
          ref: contentRef,
          style: normalizeStyle(unref(contentStyle)),
          class: normalizeClass(unref(ns).e("content")),
          "data-side": side.value,
          tabindex: "-1"
        }, [
          createVNode(unref(ElFocusTrap), {
            loop: "",
            trapped: "",
            "focus-start-el": "container",
            "focus-trap-el": contentRef.value || void 0,
            onReleaseRequested: onCloseRequested,
            onFocusoutPrevented
          }, {
            default: withCtx(() => [
              renderSlot(_ctx.$slots, "default")
            ]),
            _: 3
            /* FORWARDED */
          }, 8, ["focus-trap-el"]),
          __props.showArrow ? (openBlock(), createElementBlock(
            "span",
            {
              key: 0,
              ref_key: "arrowRef",
              ref: arrowRef,
              style: normalizeStyle(unref(arrowStyle)),
              class: normalizeClass(unref(ns).e("arrow"))
            },
            null,
            6
            /* CLASS, STYLE */
          )) : createCommentVNode("v-if", true)
        ], 14, _hoisted_1$Y);
      };
    }
  });
  var ElTourSteps = /* @__PURE__ */ defineComponent({
    name: "ElTourSteps",
    props: {
      current: {
        type: Number,
        default: 0
      }
    },
    emits: ["update-total"],
    setup(props2, { slots, emit: emit2 }) {
      let cacheTotal = 0;
      return () => {
        var _a, _b;
        const children = (_a = slots.default) == null ? void 0 : _a.call(slots);
        const result = [];
        let total2 = 0;
        function filterSteps(children2) {
          if (!isArray$1(children2)) return;
          children2.forEach((item) => {
            var _a2;
            const name = (_a2 = (item == null ? void 0 : item.type) || {}) == null ? void 0 : _a2.name;
            if (name === "ElTourStep") {
              result.push(item);
              total2 += 1;
            }
          });
        }
        if (children.length) {
          filterSteps(flattedChildren((_b = children[0]) == null ? void 0 : _b.children));
        }
        if (cacheTotal !== total2) {
          cacheTotal = total2;
          emit2("update-total", total2);
        }
        if (result.length) {
          return result[props2.current];
        }
        return null;
      };
    }
  });
  var _sfc_main$13 = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElTour",
      inheritAttrs: false
    },
    __name: "tour",
    props: tourProps,
    emits: tourEmits,
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const ns = useNamespace("tour");
      const total2 = ref(0);
      const currentStep = ref();
      const current = useVModel(props2, "current", emit2, {
        passive: true
      });
      const currentTarget = computed(() => {
        var _a;
        return (_a = currentStep.value) == null ? void 0 : _a.target;
      });
      const kls = computed(() => [
        ns.b(),
        mergedType.value === "primary" ? ns.m("primary") : ""
      ]);
      const mergedPlacement = computed(
        () => {
          var _a;
          return ((_a = currentStep.value) == null ? void 0 : _a.placement) || props2.placement;
        }
      );
      const mergedContentStyle = computed(
        () => {
          var _a, _b;
          return (_b = (_a = currentStep.value) == null ? void 0 : _a.contentStyle) != null ? _b : props2.contentStyle;
        }
      );
      const mergedMask = computed(() => {
        var _a, _b;
        return (_b = (_a = currentStep.value) == null ? void 0 : _a.mask) != null ? _b : props2.mask;
      });
      const mergedShowMask = computed(() => !!mergedMask.value && props2.modelValue);
      const mergedMaskStyle = computed(
        () => isBoolean(mergedMask.value) ? void 0 : mergedMask.value
      );
      const mergedShowArrow = computed(
        () => {
          var _a, _b;
          return !!currentTarget.value && ((_b = (_a = currentStep.value) == null ? void 0 : _a.showArrow) != null ? _b : props2.showArrow);
        }
      );
      const mergedScrollIntoViewOptions = computed(
        () => {
          var _a, _b;
          return (_b = (_a = currentStep.value) == null ? void 0 : _a.scrollIntoViewOptions) != null ? _b : props2.scrollIntoViewOptions;
        }
      );
      const mergedType = computed(() => {
        var _a, _b;
        return (_b = (_a = currentStep.value) == null ? void 0 : _a.type) != null ? _b : props2.type;
      });
      const { nextZIndex } = useZIndex();
      const nowZIndex = nextZIndex();
      const mergedZIndex = computed(() => {
        var _a;
        return (_a = props2.zIndex) != null ? _a : nowZIndex;
      });
      const { mergedPosInfo: pos, triggerTarget } = useTarget(
        currentTarget,
        toRef(props2, "modelValue"),
        toRef(props2, "gap"),
        mergedMask,
        mergedScrollIntoViewOptions
      );
      watch(
        () => props2.modelValue,
        (val) => {
          if (!val) {
            current.value = 0;
          }
        }
      );
      const onEscClose = () => {
        if (props2.closeOnPressEscape) {
          emit2(UPDATE_MODEL_EVENT, false);
          emit2("close", current.value);
        }
      };
      const onUpdateTotal = (val) => {
        total2.value = val;
      };
      const slots = useSlots();
      provide(tourKey, {
        currentStep,
        current,
        total: total2,
        showClose: toRef(props2, "showClose"),
        closeIcon: toRef(props2, "closeIcon"),
        mergedType,
        ns,
        slots,
        updateModelValue(modelValue) {
          emit2(UPDATE_MODEL_EVENT, modelValue);
        },
        onClose() {
          emit2("close", current.value);
        },
        onFinish() {
          emit2("finish");
        },
        onChange() {
          emit2(CHANGE_EVENT, current.value);
        }
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          Fragment,
          null,
          [
            createVNode(unref(ElTeleport), { to: __props.appendTo }, {
              default: withCtx(() => {
                var _a, _b;
                return [
                  createBaseVNode(
                    "div",
                    mergeProps({ class: kls.value }, _ctx.$attrs),
                    [
                      createVNode(_sfc_main$15, {
                        visible: mergedShowMask.value,
                        fill: (_a = mergedMaskStyle.value) == null ? void 0 : _a.color,
                        style: normalizeStyle((_b = mergedMaskStyle.value) == null ? void 0 : _b.style),
                        pos: unref(pos),
                        "z-index": mergedZIndex.value,
                        "target-area-clickable": __props.targetAreaClickable
                      }, null, 8, ["visible", "fill", "style", "pos", "z-index", "target-area-clickable"]),
                      __props.modelValue ? (openBlock(), createBlock(_sfc_main$14, {
                        key: unref(current),
                        reference: unref(triggerTarget),
                        placement: mergedPlacement.value,
                        "show-arrow": mergedShowArrow.value,
                        "z-index": mergedZIndex.value,
                        style: normalizeStyle(mergedContentStyle.value),
                        onClose: onEscClose
                      }, {
                        default: withCtx(() => [
                          createVNode(unref(ElTourSteps), {
                            current: unref(current),
                            onUpdateTotal
                          }, {
                            default: withCtx(() => [
                              renderSlot(_ctx.$slots, "default")
                            ]),
                            _: 3
                            /* FORWARDED */
                          }, 8, ["current"])
                        ]),
                        _: 3
                        /* FORWARDED */
                      }, 8, ["reference", "placement", "show-arrow", "z-index", "style"])) : createCommentVNode("v-if", true)
                    ],
                    16
                    /* FULL_PROPS */
                  )
                ];
              }),
              _: 3
              /* FORWARDED */
            }, 8, ["to"]),
            createCommentVNode(" just for IDE "),
            createCommentVNode("v-if", true)
          ],
          64
          /* STABLE_FRAGMENT */
        );
      };
    }
  });
  const tourStepProps = buildProps({
    /**
     * @description get the element the guide card points to. empty makes it show in center of screen
     */
    target: {
      type: definePropType([String, Object, Function])
    },
    /**
     * @description the title of the tour content
     */
    title: String,
    /**
     * @description description
     */
    description: String,
    /**
     * @description whether to show a close button
     */
    showClose: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description custom close icon, default is Close
     */
    closeIcon: {
      type: iconPropType
    },
    /**
     * @description whether to show the arrow
     */
    showArrow: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description position of the guide card relative to the target element
     */
    placement: tourContentProps.placement,
    /**
     * @description whether to enable masking, change mask style and fill color by pass custom props
     */
    mask: {
      type: definePropType([Boolean, Object]),
      default: void 0
    },
    /**
     * @description custom style for content
     */
    contentStyle: {
      type: definePropType([Object])
    },
    /**
     * @description properties of the previous button
     */
    prevButtonProps: {
      type: definePropType(Object)
    },
    /**
     * @description properties of the Next button
     */
    nextButtonProps: {
      type: definePropType(Object)
    },
    /**
     * @description support pass custom scrollIntoView options
     */
    scrollIntoViewOptions: {
      type: definePropType([Boolean, Object]),
      default: void 0
    },
    /**
     * @description type, affects the background color and text color
     */
    type: {
      type: definePropType(String)
    }
  });
  const tourStepEmits = {
    close: () => true
  };
  const _hoisted_1$X = ["aria-label"];
  var _sfc_main$12 = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElTourStep"
    },
    __name: "step",
    props: tourStepProps,
    emits: tourStepEmits,
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const { Close } = CloseComponents;
      const { t } = useLocale();
      const {
        currentStep,
        current,
        total: total2,
        showClose,
        closeIcon,
        mergedType,
        ns,
        slots: tourSlots,
        updateModelValue,
        onClose: tourOnClose,
        onFinish: tourOnFinish,
        onChange
      } = inject(tourKey);
      watch(
        props2,
        (val) => {
          currentStep.value = val;
        },
        {
          immediate: true
        }
      );
      const mergedShowClose = computed(() => {
        var _a;
        return (_a = props2.showClose) != null ? _a : showClose.value;
      });
      const mergedCloseIcon = computed(
        () => {
          var _a, _b;
          return (_b = (_a = props2.closeIcon) != null ? _a : closeIcon.value) != null ? _b : Close;
        }
      );
      const filterButtonProps = (btnProps) => {
        if (!btnProps) return;
        return omit(btnProps, ["children", "onClick"]);
      };
      const onPrev = () => {
        var _a, _b;
        current.value -= 1;
        if ((_a = props2.prevButtonProps) == null ? void 0 : _a.onClick) {
          (_b = props2.prevButtonProps) == null ? void 0 : _b.onClick();
        }
        onChange();
      };
      const onNext = () => {
        var _a;
        if (current.value >= total2.value - 1) {
          onFinish();
        } else {
          current.value += 1;
        }
        if ((_a = props2.nextButtonProps) == null ? void 0 : _a.onClick) {
          props2.nextButtonProps.onClick();
        }
        onChange();
      };
      const onFinish = () => {
        onClose();
        tourOnFinish();
      };
      const onClose = () => {
        updateModelValue(false);
        tourOnClose();
        emit2("close");
      };
      const handleKeydown = (e) => {
        const target = e.target;
        if (target == null ? void 0 : target.isContentEditable) return;
        const code = getEventCode(e);
        switch (code) {
          case EVENT_CODE.left:
            e.preventDefault();
            current.value > 0 && onPrev();
            break;
          case EVENT_CODE.right:
            e.preventDefault();
            onNext();
            break;
        }
      };
      onMounted(() => {
        window.addEventListener("keydown", handleKeydown);
      });
      onBeforeUnmount(() => {
        window.removeEventListener("keydown", handleKeydown);
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          Fragment,
          null,
          [
            mergedShowClose.value ? (openBlock(), createElementBlock("button", {
              key: 0,
              "aria-label": unref(t)("el.tour.close"),
              class: normalizeClass(unref(ns).e("closebtn")),
              type: "button",
              onClick: onClose
            }, [
              createVNode(unref(ElIcon), {
                class: normalizeClass(unref(ns).e("close"))
              }, {
                default: withCtx(() => [
                  (openBlock(), createBlock(resolveDynamicComponent(mergedCloseIcon.value)))
                ]),
                _: 1
                /* STABLE */
              }, 8, ["class"])
            ], 10, _hoisted_1$X)) : createCommentVNode("v-if", true),
            createBaseVNode(
              "header",
              {
                class: normalizeClass([unref(ns).e("header"), { "show-close": unref(showClose) }])
              },
              [
                renderSlot(_ctx.$slots, "header", {}, () => [
                  createBaseVNode(
                    "span",
                    {
                      role: "heading",
                      class: normalizeClass(unref(ns).e("title"))
                    },
                    toDisplayString(__props.title),
                    3
                    /* TEXT, CLASS */
                  )
                ])
              ],
              2
              /* CLASS */
            ),
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(ns).e("body"))
              },
              [
                renderSlot(_ctx.$slots, "default", {}, () => [
                  createBaseVNode(
                    "span",
                    null,
                    toDisplayString(__props.description),
                    1
                    /* TEXT */
                  )
                ])
              ],
              2
              /* CLASS */
            ),
            createBaseVNode(
              "footer",
              {
                class: normalizeClass(unref(ns).e("footer"))
              },
              [
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass(unref(ns).b("indicators"))
                  },
                  [
                    unref(tourSlots).indicators ? (openBlock(), createBlock(resolveDynamicComponent(unref(tourSlots).indicators), {
                      key: 0,
                      current: unref(current),
                      total: unref(total2)
                    }, null, 8, ["current", "total"])) : (openBlock(true), createElementBlock(
                      Fragment,
                      { key: 1 },
                      renderList(unref(total2), (item, index) => {
                        return openBlock(), createElementBlock(
                          "span",
                          {
                            key: item,
                            class: normalizeClass([unref(ns).b("indicator"), unref(ns).is("active", index === unref(current))])
                          },
                          null,
                          2
                          /* CLASS */
                        );
                      }),
                      128
                      /* KEYED_FRAGMENT */
                    ))
                  ],
                  2
                  /* CLASS */
                ),
                createBaseVNode(
                  "div",
                  {
                    class: normalizeClass(unref(ns).b("buttons"))
                  },
                  [
                    unref(current) > 0 ? (openBlock(), createBlock(unref(ElButton), mergeProps({
                      key: 0,
                      size: "small",
                      type: unref(mergedType)
                    }, filterButtonProps(__props.prevButtonProps), { onClick: onPrev }), {
                      default: withCtx(() => {
                        var _a, _b;
                        return [
                          createTextVNode(
                            toDisplayString((_b = (_a = __props.prevButtonProps) == null ? void 0 : _a.children) != null ? _b : unref(t)("el.tour.previous")),
                            1
                            /* TEXT */
                          )
                        ];
                      }),
                      _: 1
                      /* STABLE */
                    }, 16, ["type"])) : createCommentVNode("v-if", true),
                    unref(current) <= unref(total2) - 1 ? (openBlock(), createBlock(unref(ElButton), mergeProps({
                      key: 1,
                      size: "small",
                      type: unref(mergedType) === "primary" ? "default" : "primary"
                    }, filterButtonProps(__props.nextButtonProps), { onClick: onNext }), {
                      default: withCtx(() => {
                        var _a, _b;
                        return [
                          createTextVNode(
                            toDisplayString((_b = (_a = __props.nextButtonProps) == null ? void 0 : _a.children) != null ? _b : unref(current) === unref(total2) - 1 ? unref(t)("el.tour.finish") : unref(t)("el.tour.next")),
                            1
                            /* TEXT */
                          )
                        ];
                      }),
                      _: 1
                      /* STABLE */
                    }, 16, ["type"])) : createCommentVNode("v-if", true)
                  ],
                  2
                  /* CLASS */
                )
              ],
              2
              /* CLASS */
            )
          ],
          64
          /* STABLE_FRAGMENT */
        );
      };
    }
  });
  const ElTour = withInstall(_sfc_main$13, {
    TourStep: _sfc_main$12
  });
  const ElTourStep = withNoopInstall(_sfc_main$12);
  const anchorProps = buildProps({
    /**
     * @description scroll container
     */
    container: {
      type: definePropType([
        String,
        Object
      ])
    },
    /**
     * @description Set the offset of the anchor scroll
     */
    offset: {
      type: Number,
      default: 0
    },
    /**
     * @description The offset of the element starting to trigger the anchor
     */
    bound: {
      type: Number,
      default: 15
    },
    /**
     * @description Set the scroll duration of the container when the anchor is clicked, in milliseconds
     */
    duration: {
      type: Number,
      default: 300
    },
    /**
     * @description Whether to show the marker
     */
    marker: {
      type: Boolean,
      default: true
    },
    /**
     * @description Set Anchor type
     */
    type: {
      type: definePropType(String),
      default: "default"
    },
    /**
     * @description Set Anchor direction
     */
    direction: {
      type: definePropType(String),
      default: "vertical"
    },
    /**
     * @description Scroll whether link is selected at the top
     */
    selectScrollTop: Boolean
  });
  const anchorEmits = {
    change: (href) => isString(href),
    click: (e, href) => e instanceof MouseEvent && (isString(href) || isUndefined(href))
  };
  const anchorKey = /* @__PURE__ */ Symbol("anchor");
  function throttleByRaf(cb) {
    let timer = 0;
    const throttle2 = (...args) => {
      if (timer) {
        cAF(timer);
      }
      timer = rAF(() => {
        cb(...args);
        timer = 0;
      });
    };
    throttle2.cancel = () => {
      cAF(timer);
      timer = 0;
    };
    return throttle2;
  }
  const getElement = ((target) => {
    if (!isClient || target === "") return null;
    if (isString(target)) {
      try {
        return document.querySelector(target);
      } catch (e) {
        return null;
      }
    }
    return target;
  });
  var _sfc_main$11 = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElAnchor"
    },
    __name: "anchor",
    props: anchorProps,
    emits: anchorEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const slots = useSlots();
      const currentAnchor = ref("");
      const markerStyle = ref({});
      const anchorRef = ref(null);
      const markerRef = ref(null);
      const containerEl = ref();
      const links = {};
      let isScrolling = false;
      let currentScrollTop = 0;
      const ns = useNamespace("anchor");
      const cls = computed(() => [
        ns.b(),
        props2.type === "underline" ? ns.m("underline") : "",
        ns.m(props2.direction)
      ]);
      const addLink = (state) => {
        links[state.href] = state.el;
      };
      const removeLink = (href) => {
        delete links[href];
      };
      const setCurrentAnchor = (href) => {
        const activeHref = currentAnchor.value;
        if (activeHref !== href) {
          currentAnchor.value = href;
          emit2(CHANGE_EVENT, href);
        }
      };
      let clearAnimate = null;
      let currentTargetHref = "";
      const scrollToAnchor = (href) => {
        if (!containerEl.value) return;
        const target = getElement(href);
        if (!target) return;
        if (clearAnimate) {
          if (currentTargetHref === href) return;
          clearAnimate();
        }
        currentTargetHref = href;
        isScrolling = true;
        const scrollEle = getScrollElement(target, containerEl.value);
        const distance = getOffsetTopDistance(target, scrollEle);
        const max2 = scrollEle.scrollHeight - scrollEle.clientHeight;
        const to = Math.min(distance - props2.offset, max2);
        clearAnimate = animateScrollTo(
          containerEl.value,
          currentScrollTop,
          to,
          props2.duration,
          () => {
            setTimeout(() => {
              isScrolling = false;
              currentTargetHref = "";
            }, 20);
          }
        );
      };
      const scrollTo = (href) => {
        if (href) {
          setCurrentAnchor(href);
          scrollToAnchor(href);
        }
      };
      const handleClick = (e, href) => {
        emit2("click", e, href);
        scrollTo(href);
      };
      const handleScroll2 = throttleByRaf(() => {
        if (containerEl.value) {
          currentScrollTop = getScrollTop(containerEl.value);
        }
        const currentHref = getCurrentHref();
        if (isScrolling || isUndefined(currentHref)) return;
        setCurrentAnchor(currentHref);
      });
      const getCurrentHref = () => {
        if (!containerEl.value) return;
        const scrollTop = getScrollTop(containerEl.value);
        const anchorTopList = [];
        for (const href of Object.keys(links)) {
          const target = getElement(href);
          if (!target) continue;
          const scrollEle = getScrollElement(target, containerEl.value);
          const distance = getOffsetTopDistance(target, scrollEle);
          anchorTopList.push({
            top: distance - props2.offset - props2.bound,
            href
          });
        }
        anchorTopList.sort((prev, next) => prev.top - next.top);
        for (let i = 0; i < anchorTopList.length; i++) {
          const item = anchorTopList[i];
          const next = anchorTopList[i + 1];
          if (i === 0 && scrollTop === 0) {
            return props2.selectScrollTop ? item.href : "";
          }
          if (item.top <= scrollTop && (!next || next.top > scrollTop)) {
            return item.href;
          }
        }
      };
      const getContainer = () => {
        const el = getElement(props2.container);
        if (!el || isWindow(el)) {
          containerEl.value = window;
        } else {
          containerEl.value = el;
        }
      };
      useEventListener(containerEl, "scroll", handleScroll2);
      const updateMarkerStyle = () => {
        nextTick(() => {
          if (!anchorRef.value || !markerRef.value || !currentAnchor.value) {
            markerStyle.value = {};
            return;
          }
          const currentLinkEl = links[currentAnchor.value];
          if (!currentLinkEl) {
            markerStyle.value = {};
            return;
          }
          const anchorRect = anchorRef.value.getBoundingClientRect();
          const markerRect = markerRef.value.getBoundingClientRect();
          const linkRect = currentLinkEl.getBoundingClientRect();
          if (props2.direction === "horizontal") {
            const left = linkRect.left - anchorRect.left;
            markerStyle.value = {
              left: `${left}px`,
              width: `${linkRect.width}px`,
              opacity: 1
            };
          } else {
            const top = linkRect.top - anchorRect.top + (linkRect.height - markerRect.height) / 2;
            markerStyle.value = {
              top: `${top}px`,
              opacity: 1
            };
          }
        });
      };
      watch(currentAnchor, updateMarkerStyle);
      watch(() => {
        var _a;
        return (_a = slots.default) == null ? void 0 : _a.call(slots);
      }, updateMarkerStyle);
      onMounted(() => {
        getContainer();
        const hash = decodeURIComponent(window.location.hash);
        const target = getElement(hash);
        if (target) {
          scrollTo(hash);
        } else {
          handleScroll2();
        }
      });
      watch(
        () => props2.container,
        () => {
          getContainer();
        }
      );
      provide(anchorKey, {
        ns,
        direction: props2.direction,
        currentAnchor,
        addLink,
        removeLink,
        handleClick
      });
      __expose({
        scrollTo
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            ref_key: "anchorRef",
            ref: anchorRef,
            class: normalizeClass(cls.value)
          },
          [
            __props.marker ? (openBlock(), createElementBlock(
              "div",
              {
                key: 0,
                ref_key: "markerRef",
                ref: markerRef,
                class: normalizeClass(unref(ns).e("marker")),
                style: normalizeStyle(markerStyle.value)
              },
              null,
              6
              /* CLASS, STYLE */
            )) : createCommentVNode("v-if", true),
            createBaseVNode(
              "div",
              {
                class: normalizeClass(unref(ns).e("list"))
              },
              [
                renderSlot(_ctx.$slots, "default")
              ],
              2
              /* CLASS */
            )
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const anchorLinkProps = buildProps({
    /**
     * @description the text content of the anchor link
     */
    title: String,
    /**
     * @description The address of the anchor link
     */
    href: String
  });
  const _hoisted_1$W = ["href"];
  var _sfc_main$10 = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElAnchorLink"
    },
    __name: "anchor-link",
    props: anchorLinkProps,
    setup(__props) {
      const props2 = __props;
      const linkRef = ref(null);
      const {
        ns,
        direction: direction2,
        currentAnchor,
        addLink,
        removeLink,
        handleClick: contextHandleClick
      } = inject(anchorKey);
      const cls = computed(() => [
        ns.e("link"),
        ns.is("active", currentAnchor.value === props2.href)
      ]);
      const handleClick = (e) => {
        contextHandleClick(e, props2.href);
      };
      watch(
        () => props2.href,
        (val, oldVal) => {
          nextTick(() => {
            if (oldVal) removeLink(oldVal);
            if (val) {
              addLink({
                href: val,
                el: linkRef.value
              });
            }
          });
        }
      );
      onMounted(() => {
        const { href } = props2;
        if (href) {
          addLink({
            href,
            el: linkRef.value
          });
        }
      });
      onBeforeUnmount(() => {
        const { href } = props2;
        if (href) {
          removeLink(href);
        }
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass(unref(ns).e("item"))
          },
          [
            createBaseVNode("a", {
              ref_key: "linkRef",
              ref: linkRef,
              class: normalizeClass(cls.value),
              href: __props.href,
              onClick: handleClick
            }, [
              renderSlot(_ctx.$slots, "default", {}, () => [
                createTextVNode(
                  toDisplayString(__props.title),
                  1
                  /* TEXT */
                )
              ])
            ], 10, _hoisted_1$W),
            _ctx.$slots["sub-link"] && unref(direction2) === "vertical" ? (openBlock(), createElementBlock(
              "div",
              {
                key: 0,
                class: normalizeClass(unref(ns).e("list"))
              },
              [
                renderSlot(_ctx.$slots, "sub-link")
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true)
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const ElAnchor = withInstall(_sfc_main$11, {
    AnchorLink: _sfc_main$10
  });
  const ElAnchorLink = withNoopInstall(_sfc_main$10);
  const defaultProps = {
    label: "label",
    value: "value",
    disabled: "disabled"
  };
  const segmentedProps = buildProps({
    direction: {
      type: definePropType(String),
      default: "horizontal"
    },
    /**
     * @description options of segmented
     */
    options: {
      type: definePropType(Array),
      default: () => []
    },
    /**
     * @description binding value
     */
    modelValue: {
      type: [String, Number, Boolean],
      default: void 0
    },
    /**
     * @description configuration options, see the following table
     */
    props: {
      type: definePropType(Object),
      default: () => defaultProps
    },
    /**
     * @description fit width of parent content
     */
    block: Boolean,
    /**
     * @description size of component
     */
    size: useSizeProp,
    /**
     * @description whether segmented is disabled
     */
    disabled: {
      type: Boolean,
      default: void 0
    },
    /**
     * @description whether to trigger form validation
     */
    validateEvent: {
      type: Boolean,
      default: true
    },
    /**
     * @description native input id
     */
    id: String,
    /**
     * @description native `name` attribute
     */
    name: String,
    ...useAriaProps(["ariaLabel"])
  });
  const segmentedEmits = {
    [UPDATE_MODEL_EVENT]: (val) => isString(val) || isNumber(val) || isBoolean(val),
    [CHANGE_EVENT]: (val) => isString(val) || isNumber(val) || isBoolean(val)
  };
  const _hoisted_1$V = ["id", "aria-label", "aria-labelledby"];
  const _hoisted_2$T = ["name", "disabled", "checked", "onChange"];
  var _sfc_main$$ = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElSegmented"
    },
    __name: "segmented",
    props: segmentedProps,
    emits: segmentedEmits,
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const ns = useNamespace("segmented");
      const segmentedId = useId();
      const segmentedSize = useFormSize();
      const _disabled = useFormDisabled();
      const { formItem } = useFormItem();
      const { inputId, isLabeledByFormItem } = useFormItemInputId(props2, {
        formItemContext: formItem
      });
      const segmentedRef = ref(null);
      const activeElement = useActiveElement();
      const state = reactive({
        isInit: false,
        width: 0,
        height: 0,
        translateX: 0,
        translateY: 0,
        focusVisible: false
      });
      const handleChange = (evt, item) => {
        const value = getValue2(item);
        emit2(UPDATE_MODEL_EVENT, value);
        emit2(CHANGE_EVENT, value);
        evt.target.checked = value === props2.modelValue;
      };
      const aliasProps = computed(() => ({ ...defaultProps, ...props2.props }));
      const intoAny = (item) => item;
      const getValue2 = (item) => {
        return isObject$2(item) ? item[aliasProps.value.value] : item;
      };
      const getLabel = (item) => {
        return isObject$2(item) ? item[aliasProps.value.label] : item;
      };
      const getDisabled = (item) => {
        return !!(_disabled.value || (isObject$2(item) ? item[aliasProps.value.disabled] : false));
      };
      const getSelected = (item) => {
        return props2.modelValue === getValue2(item);
      };
      const getOption = (value) => {
        return props2.options.find((item) => getValue2(item) === value);
      };
      const getItemCls = (item) => {
        return [
          ns.e("item"),
          ns.is("selected", getSelected(item)),
          ns.is("disabled", getDisabled(item))
        ];
      };
      const updateSelect = () => {
        if (!segmentedRef.value) return;
        const selectedItem = segmentedRef.value.querySelector(
          ".is-selected"
        );
        const selectedItemInput = segmentedRef.value.querySelector(
          ".is-selected input"
        );
        if (!selectedItem || !selectedItemInput) {
          state.width = 0;
          state.height = 0;
          state.translateX = 0;
          state.translateY = 0;
          state.focusVisible = false;
          return;
        }
        state.isInit = true;
        if (props2.direction === "vertical") {
          state.height = selectedItem.offsetHeight;
          state.translateY = selectedItem.offsetTop;
        } else {
          state.width = selectedItem.offsetWidth;
          state.translateX = selectedItem.offsetLeft;
        }
        try {
          state.focusVisible = selectedItemInput.matches(":focus-visible");
        } catch (e) {
        }
      };
      const segmentedCls = computed(() => [
        ns.b(),
        ns.m(segmentedSize.value),
        ns.is("block", props2.block)
      ]);
      const selectedStyle = computed(() => ({
        width: props2.direction === "vertical" ? "100%" : `${state.width}px`,
        height: props2.direction === "vertical" ? `${state.height}px` : "100%",
        transform: props2.direction === "vertical" ? `translateY(${state.translateY}px)` : `translateX(${state.translateX}px)`,
        display: state.isInit ? "block" : "none"
      }));
      const selectedCls = computed(() => [
        ns.e("item-selected"),
        ns.is("disabled", getDisabled(getOption(props2.modelValue))),
        ns.is("focus-visible", state.focusVisible)
      ]);
      const name = computed(() => {
        return props2.name || segmentedId.value;
      });
      useResizeObserver(segmentedRef, updateSelect);
      watch(activeElement, updateSelect);
      watch(
        () => props2.modelValue,
        () => {
          var _a;
          updateSelect();
          if (props2.validateEvent) {
            (_a = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a.call(formItem, "change").catch((err) => debugWarn());
          }
        },
        {
          flush: "post"
        }
      );
      return (_ctx, _cache) => {
        return __props.options.length ? (openBlock(), createElementBlock("div", {
          key: 0,
          id: unref(inputId),
          ref_key: "segmentedRef",
          ref: segmentedRef,
          class: normalizeClass(segmentedCls.value),
          role: "radiogroup",
          "aria-label": !unref(isLabeledByFormItem) ? __props.ariaLabel || "segmented" : void 0,
          "aria-labelledby": unref(isLabeledByFormItem) ? unref(formItem).labelId : void 0
        }, [
          createBaseVNode(
            "div",
            {
              class: normalizeClass([unref(ns).e("group"), unref(ns).m(__props.direction)])
            },
            [
              createBaseVNode(
                "div",
                {
                  style: normalizeStyle(selectedStyle.value),
                  class: normalizeClass(selectedCls.value)
                },
                null,
                6
                /* CLASS, STYLE */
              ),
              (openBlock(true), createElementBlock(
                Fragment,
                null,
                renderList(__props.options, (item, index) => {
                  return openBlock(), createElementBlock(
                    "label",
                    {
                      key: index,
                      class: normalizeClass(getItemCls(item))
                    },
                    [
                      createBaseVNode("input", {
                        class: normalizeClass(unref(ns).e("item-input")),
                        type: "radio",
                        name: name.value,
                        disabled: getDisabled(item),
                        checked: getSelected(item),
                        onChange: ($event) => handleChange($event, item)
                      }, null, 42, _hoisted_2$T),
                      createBaseVNode(
                        "div",
                        {
                          class: normalizeClass(unref(ns).e("item-label"))
                        },
                        [
                          renderSlot(_ctx.$slots, "default", {
                            item: intoAny(item)
                          }, () => [
                            createTextVNode(
                              toDisplayString(getLabel(item)),
                              1
                              /* TEXT */
                            )
                          ])
                        ],
                        2
                        /* CLASS */
                      )
                    ],
                    2
                    /* CLASS */
                  );
                }),
                128
                /* KEYED_FRAGMENT */
              ))
            ],
            2
            /* CLASS */
          )
        ], 10, _hoisted_1$V)) : createCommentVNode("v-if", true);
      };
    }
  });
  const ElSegmented = withInstall(_sfc_main$$);
  const filterOption = (pattern, option) => {
    const lowerCase = pattern.toLowerCase();
    const label = option.label || option.value || "";
    return label.toLowerCase().includes(lowerCase);
  };
  const getMentionCtx = (inputEl, prefix, split) => {
    const { selectionEnd } = inputEl;
    if (selectionEnd === null) return;
    const inputValue = inputEl.value;
    const prefixArray = castArray$1(prefix);
    let splitIndex = -1;
    let mentionCtx;
    for (let i = selectionEnd - 1; i >= 0; --i) {
      const char = inputValue[i];
      if (char === split || char === "\n" || char === "\r") {
        splitIndex = i;
        continue;
      }
      if (prefixArray.includes(char)) {
        const end = splitIndex === -1 ? selectionEnd : splitIndex;
        const pattern = inputValue.slice(i + 1, end);
        mentionCtx = {
          pattern,
          start: i + 1,
          end,
          prefix: char,
          prefixIndex: i,
          splitIndex,
          selectionEnd
        };
        break;
      }
    }
    return mentionCtx;
  };
  const getCursorPosition = (element, options = {
    debug: false,
    useSelectionEnd: false
  }) => {
    const selectionStart = element.selectionStart !== null ? element.selectionStart : 0;
    const selectionEnd = element.selectionEnd !== null ? element.selectionEnd : 0;
    const position = options.useSelectionEnd ? selectionEnd : selectionStart;
    const properties = [
      "direction",
      // RTL support
      "boxSizing",
      "width",
      // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does
      "height",
      "overflowX",
      "overflowY",
      // copy the scrollbar for IE
      "borderTopWidth",
      "borderRightWidth",
      "borderBottomWidth",
      "borderLeftWidth",
      "borderStyle",
      "paddingTop",
      "paddingRight",
      "paddingBottom",
      "paddingLeft",
      // https://developer.mozilla.org/en-US/docs/Web/CSS/font
      "fontStyle",
      "fontVariant",
      "fontWeight",
      "fontStretch",
      "fontSize",
      "fontSizeAdjust",
      "lineHeight",
      "fontFamily",
      "textAlign",
      "textTransform",
      "textIndent",
      "textDecoration",
      // might not make a difference, but better be safe
      "letterSpacing",
      "wordSpacing",
      "tabSize",
      "MozTabSize"
    ];
    if (options.debug) {
      const el = document.querySelector(
        "#input-textarea-caret-position-mirror-div"
      );
      if (el == null ? void 0 : el.parentNode) el.parentNode.removeChild(el);
    }
    const div = document.createElement("div");
    div.id = "input-textarea-caret-position-mirror-div";
    document.body.appendChild(div);
    const style = div.style;
    const computed2 = window.getComputedStyle(element);
    const isInput = element.nodeName === "INPUT";
    style.whiteSpace = isInput ? "nowrap" : "pre-wrap";
    if (!isInput) style.wordWrap = "break-word";
    style.position = "absolute";
    if (!options.debug) style.visibility = "hidden";
    properties.forEach((prop) => {
      if (isInput && prop === "lineHeight") {
        if (computed2.boxSizing === "border-box") {
          const height = Number.parseInt(computed2.height);
          const outerHeight = Number.parseInt(computed2.paddingTop) + Number.parseInt(computed2.paddingBottom) + Number.parseInt(computed2.borderTopWidth) + Number.parseInt(computed2.borderBottomWidth);
          const targetHeight = outerHeight + Number.parseInt(computed2.lineHeight);
          if (height > targetHeight) {
            style.lineHeight = `${height - outerHeight}px`;
          } else if (height === targetHeight) {
            style.lineHeight = computed2.lineHeight;
          } else {
            style.lineHeight = "0";
          }
        } else {
          style.lineHeight = computed2.height;
        }
      } else {
        style[prop] = computed2[prop];
      }
    });
    if (isFirefox()) {
      if (element.scrollHeight > Number.parseInt(computed2.height)) {
        style.overflowY = "scroll";
      }
    } else {
      style.overflow = "hidden";
    }
    div.textContent = element.value.slice(0, Math.max(0, position));
    if (isInput && div.textContent) {
      div.textContent = div.textContent.replace(/\s/g, " ");
    }
    const span = document.createElement("span");
    span.textContent = element.value.slice(Math.max(0, position)) || ".";
    span.style.position = "relative";
    span.style.left = `${-element.scrollLeft}px`;
    span.style.top = `${-element.scrollTop}px`;
    div.appendChild(span);
    const relativePosition = {
      top: span.offsetTop + Number.parseInt(computed2.borderTopWidth),
      left: span.offsetLeft + Number.parseInt(computed2.borderLeftWidth),
      // We don't use line-height since it may be too large for position. Eg. 34px
      // for input
      height: Number.parseInt(computed2.fontSize) * 1.5
    };
    if (options.debug) {
      span.style.backgroundColor = "#aaa";
    } else {
      document.body.removeChild(div);
    }
    if (relativePosition.left >= element.clientWidth) {
      relativePosition.left = element.clientWidth;
    }
    return relativePosition;
  };
  const mentionProps = buildProps({
    ...inputProps,
    /**
     * @description mention options list
     */
    options: {
      type: definePropType(Array),
      default: () => []
    },
    /**
     * @description prefix character to trigger mentions. The string length must be exactly 1.
     */
    prefix: {
      type: definePropType([String, Array]),
      default: "@",
      validator: (val) => {
        if (isString(val)) return val.length === 1;
        return val.every((v2) => isString(v2) && v2.length === 1);
      }
    },
    /**
     * @description character to split mentions. The string length must be exactly 1.
     */
    split: {
      type: String,
      default: " ",
      validator: (val) => val.length === 1
    },
    /**
     * @description customize filter option logic.
     */
    filterOption: {
      type: definePropType([Boolean, Function]),
      default: () => filterOption,
      validator: (val) => {
        if (val === false) return true;
        return isFunction$1(val);
      }
    },
    /**
     * @description set popup placement
     */
    placement: {
      type: definePropType(String),
      default: "bottom"
    },
    /**
     * @description whether the dropdown panel has an arrow
     */
    showArrow: Boolean,
    /**
     * @description offset of the dropdown panel
     */
    offset: {
      type: Number,
      default: 0
    },
    /**
     * @description when backspace is pressed to delete, whether the mention content is deleted as a whole
     */
    whole: Boolean,
    /**
     * @description when backspace is pressed to delete, check if the mention is a whole
     */
    checkIsWhole: {
      type: definePropType(
        Function
      )
    },
    /**
     * @description input value
     */
    modelValue: String,
    /**
     * @description whether the dropdown panel of mentions is in a loading state.
     */
    loading: Boolean,
    /**
     * @description custom class name for dropdown panel
     */
    popperClass: useTooltipContentProps.popperClass,
    /**
     * @description custom style for dropdown panel
     */
    popperStyle: useTooltipContentProps.popperStyle,
    /**
     * @description [popper.js](https://popper.js.org/docs/v2/) parameters
     */
    popperOptions: {
      type: definePropType(Object),
      default: () => ({})
    },
    /**
     * @description configuration options
     */
    props: {
      type: definePropType(Object),
      default: () => mentionDefaultProps
    }
  });
  const mentionEmits = {
    [UPDATE_MODEL_EVENT]: (value) => isString(value),
    "whole-remove": (pattern, prefix) => isString(pattern) && isString(prefix),
    input: (value) => isString(value),
    search: (pattern, prefix) => isString(pattern) && isString(prefix),
    select: (option, prefix) => isObject$2(option) && isString(prefix),
    focus: (evt) => evt instanceof FocusEvent,
    blur: (evt) => evt instanceof FocusEvent
  };
  const mentionDefaultProps = {
    value: "value",
    label: "label",
    disabled: "disabled"
  };
  const mentionDropdownProps = buildProps({
    options: {
      type: definePropType(Array),
      default: () => []
    },
    loading: Boolean,
    disabled: Boolean,
    contentId: String,
    ariaLabel: String
  });
  const mentionDropdownEmits = {
    select: (option) => isString(option.value)
  };
  const _hoisted_1$U = ["id", "aria-disabled", "aria-selected", "onMousemove", "onClick"];
  var _sfc_main$_ = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElMentionDropdown"
    },
    __name: "mention-dropdown",
    props: mentionDropdownProps,
    emits: mentionDropdownEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const ns = useNamespace("mention");
      const { t } = useLocale();
      const hoveringIndex = ref(-1);
      const scrollbarRef = ref();
      const optionRefs = ref();
      const dropdownRef = ref();
      const optionkls = (item, index) => [
        ns.be("dropdown", "item"),
        ns.is("hovering", hoveringIndex.value === index),
        ns.is("disabled", item.disabled || props2.disabled)
      ];
      const handleSelect = (item) => {
        if (item.disabled || props2.disabled) return;
        emit2("select", item);
      };
      const handleMouseEnter = (index) => {
        hoveringIndex.value = index;
      };
      const filteredAllDisabled = computed(
        () => props2.disabled || props2.options.every((item) => item.disabled)
      );
      const hoverOption = computed(() => props2.options[hoveringIndex.value]);
      const selectHoverOption = () => {
        if (!hoverOption.value) return;
        emit2("select", hoverOption.value);
      };
      const navigateOptions = (direction2) => {
        const { options } = props2;
        if (options.length === 0 || filteredAllDisabled.value) return;
        if (direction2 === "next") {
          hoveringIndex.value++;
          if (hoveringIndex.value === options.length) {
            hoveringIndex.value = 0;
          }
        } else if (direction2 === "prev") {
          hoveringIndex.value--;
          if (hoveringIndex.value < 0) {
            hoveringIndex.value = options.length - 1;
          }
        }
        const option = options[hoveringIndex.value];
        if (option.disabled) {
          navigateOptions(direction2);
          return;
        }
        nextTick(() => scrollToOption(option));
      };
      const scrollToOption = (option) => {
        var _a, _b, _c, _d;
        const { options } = props2;
        const index = options.findIndex((item) => item.value === option.value);
        const target = (_a = optionRefs.value) == null ? void 0 : _a[index];
        if (target) {
          const menu = (_c = (_b = dropdownRef.value) == null ? void 0 : _b.querySelector) == null ? void 0 : _c.call(
            _b,
            `.${ns.be("dropdown", "wrap")}`
          );
          if (menu) {
            scrollIntoView(menu, target);
          }
        }
        (_d = scrollbarRef.value) == null ? void 0 : _d.handleScroll();
      };
      const resetHoveringIndex = () => {
        if (filteredAllDisabled.value || props2.options.length === 0) {
          hoveringIndex.value = -1;
        } else {
          hoveringIndex.value = 0;
        }
      };
      watch(() => props2.options, resetHoveringIndex, {
        immediate: true
      });
      __expose({
        hoveringIndex,
        navigateOptions,
        selectHoverOption,
        hoverOption
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            ref_key: "dropdownRef",
            ref: dropdownRef,
            class: normalizeClass(unref(ns).b("dropdown"))
          },
          [
            _ctx.$slots.header ? (openBlock(), createElementBlock(
              "div",
              {
                key: 0,
                class: normalizeClass(unref(ns).be("dropdown", "header"))
              },
              [
                renderSlot(_ctx.$slots, "header")
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true),
            withDirectives(createVNode(unref(ElScrollbar), {
              id: __props.contentId,
              ref_key: "scrollbarRef",
              ref: scrollbarRef,
              tag: "ul",
              "wrap-class": unref(ns).be("dropdown", "wrap"),
              "view-class": unref(ns).be("dropdown", "list"),
              role: "listbox",
              "aria-label": __props.ariaLabel,
              "aria-orientation": "vertical"
            }, {
              default: withCtx(() => [
                (openBlock(true), createElementBlock(
                  Fragment,
                  null,
                  renderList(__props.options, (item, index) => {
                    return openBlock(), createElementBlock("li", {
                      id: `${__props.contentId}-${index}`,
                      ref_for: true,
                      ref_key: "optionRefs",
                      ref: optionRefs,
                      key: index,
                      class: normalizeClass(optionkls(item, index)),
                      role: "option",
                      "aria-disabled": item.disabled || __props.disabled || void 0,
                      "aria-selected": hoveringIndex.value === index,
                      onMousemove: ($event) => handleMouseEnter(index),
                      onClick: withModifiers(($event) => handleSelect(item), ["stop"])
                    }, [
                      renderSlot(_ctx.$slots, "label", {
                        item,
                        index
                      }, () => {
                        var _a;
                        return [
                          createBaseVNode(
                            "span",
                            null,
                            toDisplayString((_a = item.label) != null ? _a : item.value),
                            1
                            /* TEXT */
                          )
                        ];
                      })
                    ], 42, _hoisted_1$U);
                  }),
                  128
                  /* KEYED_FRAGMENT */
                ))
              ]),
              _: 3
              /* FORWARDED */
            }, 8, ["id", "wrap-class", "view-class", "aria-label"]), [
              [vShow, __props.options.length > 0 && !__props.loading]
            ]),
            __props.loading ? (openBlock(), createElementBlock(
              "div",
              {
                key: 1,
                class: normalizeClass(unref(ns).be("dropdown", "loading"))
              },
              [
                renderSlot(_ctx.$slots, "loading", {}, () => [
                  createTextVNode(
                    toDisplayString(unref(t)("el.mention.loading")),
                    1
                    /* TEXT */
                  )
                ])
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true),
            _ctx.$slots.footer ? (openBlock(), createElementBlock(
              "div",
              {
                key: 2,
                class: normalizeClass(unref(ns).be("dropdown", "footer"))
              },
              [
                renderSlot(_ctx.$slots, "footer")
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true)
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  var _sfc_main$Z = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElMention",
      inheritAttrs: false
    },
    __name: "mention",
    props: mentionProps,
    emits: mentionEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const passInputProps = computed(() => pick(props2, Object.keys(inputProps)));
      const ns = useNamespace("mention");
      const disabled = useFormDisabled();
      const contentId = useId();
      const elInputRef = ref();
      const tooltipRef = ref();
      const dropdownRef = ref();
      const visible = ref(false);
      const cursorStyle = ref();
      const mentionCtx = ref();
      const computedPlacement = computed(
        () => props2.showArrow ? props2.placement : `${props2.placement}-start`
      );
      const computedFallbackPlacements = computed(
        () => props2.showArrow ? ["bottom", "top"] : ["bottom-start", "top-start"]
      );
      const aliasProps = computed(() => ({
        ...mentionDefaultProps,
        ...props2.props
      }));
      const mapOption = (option) => {
        const base = {
          label: option[aliasProps.value.label],
          value: option[aliasProps.value.value],
          disabled: option[aliasProps.value.disabled]
        };
        return { ...option, ...base };
      };
      const options = computed(() => props2.options.map(mapOption));
      const filteredOptions = computed(() => {
        const { filterOption: filterOption2 } = props2;
        if (!mentionCtx.value || !filterOption2) return options.value;
        return options.value.filter(
          (option) => filterOption2(mentionCtx.value.pattern, option)
        );
      });
      const dropdownVisible = computed(() => {
        return visible.value && (!!filteredOptions.value.length || props2.loading);
      });
      const hoveringId = computed(() => {
        var _a;
        return `${contentId.value}-${(_a = dropdownRef.value) == null ? void 0 : _a.hoveringIndex}`;
      });
      const handleInputChange = (value) => {
        emit2(UPDATE_MODEL_EVENT, value);
        emit2(INPUT_EVENT, value);
        syncAfterCursorMove();
      };
      const handleInputKeyDown = (event) => {
        var _a, _b, _c, _d;
        if ((_a = elInputRef.value) == null ? void 0 : _a.isComposing) return;
        const code = getEventCode(event);
        switch (code) {
          case EVENT_CODE.left:
          case EVENT_CODE.right:
            syncAfterCursorMove();
            break;
          case EVENT_CODE.up:
          case EVENT_CODE.down:
            if (!visible.value) return;
            event.preventDefault();
            (_b = dropdownRef.value) == null ? void 0 : _b.navigateOptions(
              code === EVENT_CODE.up ? "prev" : "next"
            );
            break;
          case EVENT_CODE.enter:
          case EVENT_CODE.numpadEnter:
            if (!visible.value) {
              props2.type !== "textarea" && syncAfterCursorMove();
              return;
            }
            event.preventDefault();
            if ((_c = dropdownRef.value) == null ? void 0 : _c.hoverOption) {
              (_d = dropdownRef.value) == null ? void 0 : _d.selectHoverOption();
            } else {
              visible.value = false;
            }
            break;
          case EVENT_CODE.esc:
            if (!visible.value) return;
            event.preventDefault();
            visible.value = false;
            break;
          case EVENT_CODE.backspace:
            if (props2.whole && mentionCtx.value) {
              const { splitIndex, selectionEnd, pattern, prefixIndex, prefix } = mentionCtx.value;
              const inputEl = getInputEl();
              if (!inputEl) return;
              const inputValue = inputEl.value;
              const matchOption = options.value.find((item) => item.value === pattern);
              const isWhole = isFunction$1(props2.checkIsWhole) ? props2.checkIsWhole(pattern, prefix) : matchOption;
              if (isWhole && splitIndex !== -1 && splitIndex + 1 === selectionEnd) {
                event.preventDefault();
                const newValue = inputValue.slice(0, prefixIndex) + inputValue.slice(splitIndex + 1);
                emit2(UPDATE_MODEL_EVENT, newValue);
                emit2(INPUT_EVENT, newValue);
                emit2("whole-remove", pattern, prefix);
                const newSelectionEnd = prefixIndex;
                nextTick(() => {
                  inputEl.selectionStart = newSelectionEnd;
                  inputEl.selectionEnd = newSelectionEnd;
                  syncDropdownVisible();
                });
              }
            }
        }
      };
      const { wrapperRef } = useFocusController(elInputRef, {
        disabled,
        afterFocus() {
          syncAfterCursorMove();
        },
        beforeBlur(event) {
          var _a;
          return (_a = tooltipRef.value) == null ? void 0 : _a.isFocusInsideContent(event);
        },
        afterBlur() {
          visible.value = false;
        }
      });
      const handleInputMouseDown = () => {
        syncAfterCursorMove();
      };
      const getOriginalOption = (mentionOption) => {
        return props2.options.find((option) => {
          return mentionOption.value === option[aliasProps.value.value];
        });
      };
      const handleSelect = (item) => {
        if (!mentionCtx.value) return;
        const inputEl = getInputEl();
        if (!inputEl) return;
        const inputValue = inputEl.value;
        const { split } = props2;
        const newEndPart = inputValue.slice(mentionCtx.value.end);
        const alreadySeparated = newEndPart.startsWith(split);
        const newMiddlePart = `${item.value}${alreadySeparated ? "" : split}`;
        const newValue = inputValue.slice(0, mentionCtx.value.start) + newMiddlePart + newEndPart;
        emit2(UPDATE_MODEL_EVENT, newValue);
        emit2(INPUT_EVENT, newValue);
        emit2("select", getOriginalOption(item), mentionCtx.value.prefix);
        const newSelectionEnd = mentionCtx.value.start + newMiddlePart.length + (alreadySeparated ? 1 : 0);
        nextTick(() => {
          inputEl.selectionStart = newSelectionEnd;
          inputEl.selectionEnd = newSelectionEnd;
          inputEl.focus();
          syncDropdownVisible();
        });
      };
      const getInputEl = () => {
        var _a, _b;
        return props2.type === "textarea" ? (_a = elInputRef.value) == null ? void 0 : _a.textarea : (_b = elInputRef.value) == null ? void 0 : _b.input;
      };
      const syncAfterCursorMove = () => {
        setTimeout(() => {
          syncCursor();
          syncDropdownVisible();
          nextTick(() => {
            var _a;
            return (_a = tooltipRef.value) == null ? void 0 : _a.updatePopper();
          });
        }, 0);
      };
      const syncCursor = () => {
        const inputEl = getInputEl();
        if (!inputEl) return;
        const caretPosition = getCursorPosition(inputEl);
        const inputRect = inputEl.getBoundingClientRect();
        const wrapperRect = wrapperRef.value.getBoundingClientRect();
        cursorStyle.value = {
          position: "absolute",
          width: 0,
          height: `${caretPosition.height}px`,
          left: `${caretPosition.left + inputRect.left - wrapperRect.left}px`,
          top: `${caretPosition.top + inputRect.top - wrapperRect.top}px`
        };
      };
      const syncDropdownVisible = () => {
        const inputEl = getInputEl();
        if (document.activeElement !== inputEl) {
          visible.value = false;
          return;
        }
        const { prefix, split } = props2;
        mentionCtx.value = getMentionCtx(inputEl, prefix, split);
        if (mentionCtx.value && mentionCtx.value.splitIndex === -1) {
          visible.value = true;
          emit2("search", mentionCtx.value.pattern, mentionCtx.value.prefix);
          return;
        }
        visible.value = false;
      };
      __expose({
        input: elInputRef,
        tooltip: tooltipRef,
        dropdownVisible
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            ref_key: "wrapperRef",
            ref: wrapperRef,
            class: normalizeClass(unref(ns).b())
          },
          [
            createVNode(unref(ElInput), mergeProps(mergeProps(passInputProps.value, _ctx.$attrs), {
              ref_key: "elInputRef",
              ref: elInputRef,
              "model-value": __props.modelValue,
              disabled: unref(disabled),
              role: dropdownVisible.value ? "combobox" : void 0,
              "aria-activedescendant": dropdownVisible.value ? hoveringId.value || "" : void 0,
              "aria-controls": dropdownVisible.value ? unref(contentId) : void 0,
              "aria-expanded": dropdownVisible.value || void 0,
              "aria-label": __props.ariaLabel,
              "aria-autocomplete": dropdownVisible.value ? "none" : void 0,
              "aria-haspopup": dropdownVisible.value ? "listbox" : void 0,
              onInput: handleInputChange,
              onKeydown: handleInputKeyDown,
              onMousedown: handleInputMouseDown
            }), createSlots({
              _: 2
              /* DYNAMIC */
            }, [
              renderList(_ctx.$slots, (_2, name) => {
                return {
                  name,
                  fn: withCtx((slotProps) => [
                    renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(slotProps)))
                  ])
                };
              })
            ]), 1040, ["model-value", "disabled", "role", "aria-activedescendant", "aria-controls", "aria-expanded", "aria-label", "aria-autocomplete", "aria-haspopup"]),
            createVNode(unref(ElTooltip), {
              ref_key: "tooltipRef",
              ref: tooltipRef,
              visible: dropdownVisible.value,
              "popper-class": [unref(ns).e("popper"), __props.popperClass],
              "popper-style": __props.popperStyle,
              "popper-options": __props.popperOptions,
              placement: computedPlacement.value,
              "fallback-placements": computedFallbackPlacements.value,
              effect: "light",
              pure: "",
              offset: __props.offset,
              "show-arrow": __props.showArrow
            }, {
              default: withCtx(() => [
                createBaseVNode(
                  "div",
                  {
                    style: normalizeStyle(cursorStyle.value)
                  },
                  null,
                  4
                  /* STYLE */
                )
              ]),
              content: withCtx(() => [
                createVNode(_sfc_main$_, {
                  ref_key: "dropdownRef",
                  ref: dropdownRef,
                  options: filteredOptions.value,
                  disabled: unref(disabled),
                  loading: __props.loading,
                  "content-id": unref(contentId),
                  "aria-label": __props.ariaLabel,
                  onSelect: handleSelect,
                  onClick: _cache[0] || (_cache[0] = withModifiers(($event) => {
                    var _a;
                    return (_a = elInputRef.value) == null ? void 0 : _a.focus();
                  }, ["stop"]))
                }, createSlots({
                  _: 2
                  /* DYNAMIC */
                }, [
                  renderList(_ctx.$slots, (_2, name) => {
                    return {
                      name,
                      fn: withCtx((slotProps) => [
                        renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(slotProps)))
                      ])
                    };
                  })
                ]), 1032, ["options", "disabled", "loading", "content-id", "aria-label"])
              ]),
              _: 3
              /* FORWARDED */
            }, 8, ["visible", "popper-class", "popper-style", "popper-options", "placement", "fallback-placements", "offset", "show-arrow"])
          ],
          2
          /* CLASS */
        );
      };
    }
  });
  const ElMention = withInstall(_sfc_main$Z);
  const splitterProps = buildProps({
    layout: {
      type: String,
      default: "horizontal",
      values: ["horizontal", "vertical"]
    },
    lazy: Boolean
  });
  const splitterEmits = {
    resizeStart: (index, sizes) => true,
    resize: (index, sizes) => true,
    resizeEnd: (index, sizes) => true,
    collapse: (index, type, sizes) => true
  };
  const splitterRootContextKey = /* @__PURE__ */ Symbol(
    "splitterRootContextKey"
  );
  function useContainer(layout2) {
    const containerEl = ref();
    const { width, height } = useElementSize(containerEl);
    const containerSize = computed(() => {
      return layout2.value === "horizontal" ? width.value : height.value;
    });
    return { containerEl, containerSize };
  }
  function getPct(str) {
    return Number(str.slice(0, -1)) / 100;
  }
  function getPx(str) {
    return Number(str.slice(0, -2));
  }
  function isPct(itemSize2) {
    return isString(itemSize2) && itemSize2.endsWith("%");
  }
  function isPx(itemSize2) {
    return isString(itemSize2) && itemSize2.endsWith("px");
  }
  function useSize(panels, containerSize) {
    const propSizes = computed(() => panels.value.map((i) => i.size));
    const panelCounts = computed(() => panels.value.length);
    const percentSizes = ref([]);
    watch([propSizes, panelCounts, containerSize], () => {
      var _a;
      let ptgList = [];
      let emptyCount = 0;
      for (let i = 0; i < panelCounts.value; i += 1) {
        const itemSize2 = (_a = panels.value[i]) == null ? void 0 : _a.size;
        if (isPct(itemSize2)) {
          ptgList[i] = getPct(itemSize2);
        } else if (isPx(itemSize2)) {
          ptgList[i] = getPx(itemSize2) / containerSize.value;
        } else if (itemSize2 || itemSize2 === 0) {
          const num = Number(itemSize2);
          if (!Number.isNaN(num)) {
            ptgList[i] = num / containerSize.value;
          }
        } else {
          emptyCount += 1;
          ptgList[i] = void 0;
        }
      }
      const totalPtg = ptgList.reduce((acc, ptg) => acc + (ptg || 0), 0);
      if (totalPtg > 1 || !emptyCount) {
        const scale = 1 / totalPtg;
        ptgList = ptgList.map((ptg) => ptg === void 0 ? 0 : ptg * scale);
      } else {
        const avgRest = (1 - totalPtg) / emptyCount;
        ptgList = ptgList.map((ptg) => ptg === void 0 ? avgRest : ptg);
      }
      percentSizes.value = ptgList;
    });
    const ptg2px = (ptg) => ptg * containerSize.value;
    const pxSizes = computed(() => percentSizes.value.map(ptg2px));
    return { percentSizes, pxSizes };
  }
  function useResize(panels, containerSize, pxSizes, lazy) {
    const ptg2px = (ptg) => ptg * containerSize.value || 0;
    function getLimitSize(str, defaultLimit) {
      if (isPct(str)) {
        return ptg2px(getPct(str));
      } else if (isPx(str)) {
        return getPx(str);
      }
      return str != null ? str : defaultLimit;
    }
    const lazyOffset = ref(0);
    const movingIndex = ref(null);
    let cachePxSizes = [];
    let updatePanelSizes = NOOP;
    const limitSizes = computed(
      () => panels.value.map((item) => [item.min, item.max])
    );
    watch(lazy, () => {
      if (lazyOffset.value) {
        const mouseup = new MouseEvent("mouseup", { bubbles: true });
        window.dispatchEvent(mouseup);
      }
    });
    const onMoveStart = (index) => {
      lazyOffset.value = 0;
      movingIndex.value = { index, confirmed: false };
      cachePxSizes = pxSizes.value;
    };
    const onMoving = (index, offset2) => {
      var _a, _b;
      let confirmedIndex = null;
      if ((!movingIndex.value || !movingIndex.value.confirmed) && offset2 !== 0) {
        if (offset2 > 0) {
          confirmedIndex = index;
          movingIndex.value = { index, confirmed: true };
        } else {
          for (let i = index; i >= 0; i -= 1) {
            if (cachePxSizes[i] > 0) {
              confirmedIndex = i;
              movingIndex.value = { index: i, confirmed: true };
              break;
            }
          }
        }
      }
      const mergedIndex = (_b = confirmedIndex != null ? confirmedIndex : (_a = movingIndex.value) == null ? void 0 : _a.index) != null ? _b : index;
      const numSizes = [...cachePxSizes];
      const nextIndex = mergedIndex + 1;
      const startMinSize = getLimitSize(limitSizes.value[mergedIndex][0], 0);
      const endMinSize = getLimitSize(limitSizes.value[nextIndex][0], 0);
      const startMaxSize = getLimitSize(
        limitSizes.value[mergedIndex][1],
        containerSize.value || 0
      );
      const endMaxSize = getLimitSize(
        limitSizes.value[nextIndex][1],
        containerSize.value || 0
      );
      let mergedOffset = offset2;
      if (numSizes[mergedIndex] + mergedOffset < startMinSize) {
        mergedOffset = startMinSize - numSizes[mergedIndex];
      }
      if (numSizes[nextIndex] - mergedOffset < endMinSize) {
        mergedOffset = numSizes[nextIndex] - endMinSize;
      }
      if (numSizes[mergedIndex] + mergedOffset > startMaxSize) {
        mergedOffset = startMaxSize - numSizes[mergedIndex];
      }
      if (numSizes[nextIndex] - mergedOffset > endMaxSize) {
        mergedOffset = numSizes[nextIndex] - endMaxSize;
      }
      numSizes[mergedIndex] += mergedOffset;
      numSizes[nextIndex] -= mergedOffset;
      lazyOffset.value = mergedOffset;
      updatePanelSizes = () => {
        panels.value.forEach((panel, index2) => {
          panel.size = numSizes[index2];
        });
        updatePanelSizes = NOOP;
      };
      if (!lazy.value) {
        updatePanelSizes();
      }
    };
    const onMoveEnd = () => {
      if (lazy.value) {
        updatePanelSizes();
      }
      lazyOffset.value = 0;
      movingIndex.value = null;
      cachePxSizes = [];
    };
    const cacheCollapsedSize = [];
    const onCollapse = (index, type) => {
      if (!cacheCollapsedSize.length) {
        cacheCollapsedSize.push(...pxSizes.value);
      }
      const currentSizes = pxSizes.value;
      const currentIndex = type === "start" ? index : index + 1;
      const targetIndex = type === "start" ? index + 1 : index;
      const currentSize = currentSizes[currentIndex];
      const targetSize = currentSizes[targetIndex];
      if (currentSize !== 0 && targetSize !== 0) {
        currentSizes[currentIndex] = 0;
        currentSizes[targetIndex] += currentSize;
        cacheCollapsedSize[index] = currentSize;
      } else {
        const totalSize = currentSize + targetSize;
        const targetCacheCollapsedSize = cacheCollapsedSize[index];
        const currentCacheCollapsedSize = totalSize - targetCacheCollapsedSize;
        currentSizes[targetIndex] = targetCacheCollapsedSize;
        currentSizes[currentIndex] = currentCacheCollapsedSize;
      }
      panels.value.forEach((panel, index2) => {
        panel.size = currentSizes[index2];
      });
    };
    return {
      lazyOffset,
      onMoveStart,
      onMoving,
      onMoveEnd,
      movingIndex,
      onCollapse
    };
  }
  var _sfc_main$Y = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElSplitter"
    },
    __name: "splitter",
    props: splitterProps,
    emits: splitterEmits,
    setup(__props, { emit: __emit }) {
      const ns = useNamespace("splitter");
      const emits = __emit;
      const props2 = __props;
      const layout2 = toRef(props2, "layout");
      const lazy = toRef(props2, "lazy");
      const { containerEl, containerSize } = useContainer(layout2);
      const {
        removeChild: unregisterPanel,
        children: panels,
        addChild: registerPanel,
        ChildrenSorter: PanelsSorter
      } = useOrderedChildren(getCurrentInstance(), "ElSplitterPanel");
      watch(panels, () => {
        movingIndex.value = null;
        panels.value.forEach((instance, index) => {
          instance.setIndex(index);
        });
      });
      const { percentSizes, pxSizes } = useSize(panels, containerSize);
      const {
        lazyOffset,
        movingIndex,
        onMoveStart,
        onMoving,
        onMoveEnd,
        onCollapse
      } = useResize(panels, containerSize, pxSizes, lazy);
      const splitterStyles = computed(() => {
        return {
          [ns.cssVarBlockName("bar-offset")]: lazy.value ? `${lazyOffset.value}px` : void 0
        };
      });
      const onResizeStart = (index) => {
        onMoveStart(index);
        emits("resizeStart", index, pxSizes.value);
      };
      const onResize = (index, offset2) => {
        onMoving(index, offset2);
        if (!lazy.value) {
          emits("resize", index, pxSizes.value);
        }
      };
      const onResizeEnd = async (index) => {
        onMoveEnd();
        await nextTick();
        emits("resizeEnd", index, pxSizes.value);
      };
      const onCollapsible = (index, type) => {
        onCollapse(index, type);
        emits("collapse", index, type, pxSizes.value);
      };
      provide(
        splitterRootContextKey,
        reactive({
          panels,
          percentSizes,
          pxSizes,
          layout: layout2,
          lazy,
          movingIndex,
          containerSize,
          onMoveStart: onResizeStart,
          onMoving: onResize,
          onMoveEnd: onResizeEnd,
          onCollapse: onCollapsible,
          registerPanel,
          unregisterPanel
        })
      );
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            ref_key: "containerEl",
            ref: containerEl,
            class: normalizeClass([unref(ns).b(), unref(ns).e(layout2.value)]),
            style: normalizeStyle(splitterStyles.value)
          },
          [
            renderSlot(_ctx.$slots, "default"),
            createVNode(unref(PanelsSorter)),
            createCommentVNode(" Prevent iframe touch events from breaking "),
            unref(movingIndex) ? (openBlock(), createElementBlock(
              "div",
              {
                key: 0,
                class: normalizeClass([unref(ns).e("mask"), unref(ns).e(`mask-${layout2.value}`)])
              },
              null,
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true)
          ],
          6
          /* CLASS, STYLE */
        );
      };
    }
  });
  const splitterPanelProps = buildProps({
    min: {
      type: [String, Number]
    },
    max: {
      type: [String, Number]
    },
    size: {
      type: [String, Number]
    },
    resizable: {
      type: Boolean,
      default: true
    },
    collapsible: Boolean
  });
  const splitterPanelEmits = {
    "update:size": (value) => typeof value === "number" || typeof value === "string"
  };
  function getCollapsible(collapsible) {
    if (collapsible && isObject$2(collapsible)) {
      return collapsible;
    }
    return {
      start: !!collapsible,
      end: !!collapsible
    };
  }
  function isCollapsible(panel, size, nextPanel, nextSize) {
    if ((panel == null ? void 0 : panel.collapsible.end) && size > 0) {
      return true;
    }
    if ((nextPanel == null ? void 0 : nextPanel.collapsible.start) && nextSize === 0 && size > 0) {
      return true;
    }
    return false;
  }
  var _sfc_main$X = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElSplitterBar"
    },
    __name: "split-bar",
    props: {
      index: {
        type: Number,
        required: true
      },
      layout: {
        type: String,
        values: ["horizontal", "vertical"],
        default: "horizontal"
      },
      resizable: {
        type: Boolean,
        default: true
      },
      lazy: Boolean,
      startCollapsible: Boolean,
      endCollapsible: Boolean
    },
    emits: ["moveStart", "moving", "moveEnd", "collapse"],
    setup(__props, { emit: __emit }) {
      const ns = useNamespace("splitter-bar");
      const props2 = __props;
      const emit2 = __emit;
      const isHorizontal2 = computed(() => props2.layout === "horizontal");
      const barWrapStyles = computed(() => {
        if (isHorizontal2.value) {
          return { width: 0 };
        }
        return { height: 0 };
      });
      const draggerStyles = computed(() => {
        return {
          width: isHorizontal2.value ? "16px" : "100%",
          height: isHorizontal2.value ? "100%" : "16px",
          cursor: !props2.resizable ? "auto" : isHorizontal2.value ? "ew-resize" : "ns-resize",
          touchAction: "none"
        };
      });
      const draggerPseudoClass = computed(() => {
        const prefix = ns.e("dragger");
        return {
          [`${prefix}-horizontal`]: isHorizontal2.value,
          [`${prefix}-vertical`]: !isHorizontal2.value,
          [`${prefix}-active`]: !!startPos.value
        };
      });
      const startPos = ref(null);
      const onMousedown = (e) => {
        if (!props2.resizable) return;
        startPos.value = [e.pageX, e.pageY];
        emit2("moveStart", props2.index);
        window.addEventListener("mouseup", onMouseUp);
        window.addEventListener("mousemove", onMouseMove);
      };
      const onTouchStart = (e) => {
        if (props2.resizable && e.touches.length === 1) {
          e.preventDefault();
          const touch = e.touches[0];
          startPos.value = [touch.pageX, touch.pageY];
          emit2("moveStart", props2.index);
          window.addEventListener("touchend", onTouchEnd);
          window.addEventListener("touchmove", onTouchMove);
        }
      };
      const onMouseMove = (e) => {
        const { pageX, pageY } = e;
        const offsetX = pageX - startPos.value[0];
        const offsetY = pageY - startPos.value[1];
        const offset2 = isHorizontal2.value ? offsetX : offsetY;
        emit2("moving", props2.index, offset2);
      };
      const onTouchMove = (e) => {
        if (e.touches.length === 1) {
          e.preventDefault();
          const touch = e.touches[0];
          const offsetX = touch.pageX - startPos.value[0];
          const offsetY = touch.pageY - startPos.value[1];
          const offset2 = isHorizontal2.value ? offsetX : offsetY;
          emit2("moving", props2.index, offset2);
        }
      };
      const onMouseUp = () => {
        startPos.value = null;
        window.removeEventListener("mouseup", onMouseUp);
        window.removeEventListener("mousemove", onMouseMove);
        emit2("moveEnd", props2.index);
      };
      const onTouchEnd = () => {
        startPos.value = null;
        window.removeEventListener("touchend", onTouchEnd);
        window.removeEventListener("touchmove", onTouchMove);
        emit2("moveEnd", props2.index);
      };
      const StartIcon = computed(() => isHorizontal2.value ? arrow_left_default : arrow_up_default);
      const EndIcon = computed(() => isHorizontal2.value ? arrow_right_default : arrow_down_default);
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          "div",
          {
            class: normalizeClass([unref(ns).b()]),
            style: normalizeStyle(barWrapStyles.value)
          },
          [
            __props.startCollapsible ? (openBlock(), createElementBlock(
              "div",
              {
                key: 0,
                class: normalizeClass([unref(ns).e("collapse-icon"), unref(ns).e(`${__props.layout}-collapse-icon-start`)]),
                onClick: _cache[0] || (_cache[0] = ($event) => emit2("collapse", __props.index, "start"))
              },
              [
                renderSlot(_ctx.$slots, "start-collapsible", {}, () => [
                  (openBlock(), createBlock(resolveDynamicComponent(StartIcon.value), { style: { "width": "12px", "height": "12px" } }))
                ])
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true),
            createBaseVNode(
              "div",
              {
                class: normalizeClass([
                  unref(ns).e("dragger"),
                  draggerPseudoClass.value,
                  unref(ns).is("disabled", !__props.resizable),
                  unref(ns).is("lazy", __props.resizable && __props.lazy)
                ]),
                style: normalizeStyle(draggerStyles.value),
                onMousedown,
                onTouchstart: onTouchStart
              },
              null,
              38
              /* CLASS, STYLE, NEED_HYDRATION */
            ),
            __props.endCollapsible ? (openBlock(), createElementBlock(
              "div",
              {
                key: 1,
                class: normalizeClass([unref(ns).e("collapse-icon"), unref(ns).e(`${__props.layout}-collapse-icon-end`)]),
                onClick: _cache[1] || (_cache[1] = ($event) => emit2("collapse", __props.index, "end"))
              },
              [
                renderSlot(_ctx.$slots, "end-collapsible", {}, () => [
                  (openBlock(), createBlock(resolveDynamicComponent(EndIcon.value), { style: { "width": "12px", "height": "12px" } }))
                ])
              ],
              2
              /* CLASS */
            )) : createCommentVNode("v-if", true)
          ],
          6
          /* CLASS, STYLE */
        );
      };
    }
  });
  const COMPONENT_NAME = "ElSplitterPanel";
  var _sfc_main$W = /* @__PURE__ */ defineComponent({
    ...{
      name: COMPONENT_NAME
    },
    __name: "split-panel",
    props: splitterPanelProps,
    emits: splitterPanelEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const ns = useNamespace("splitter-panel");
      const props2 = __props;
      const emits = __emit;
      const splitterContext = inject(splitterRootContextKey);
      if (!splitterContext)
        throwError(
          COMPONENT_NAME,
          "usage: <el-splitter><el-splitter-panel /></el-splitter/>"
        );
      const { panels, layout: layout2, lazy, containerSize, pxSizes } = toRefs(splitterContext);
      const {
        registerPanel,
        unregisterPanel,
        onCollapse,
        onMoveEnd,
        onMoveStart,
        onMoving
      } = splitterContext;
      const panelEl = ref();
      const instance = getCurrentInstance();
      const uid2 = instance.uid;
      const index = ref(0);
      const panel = computed(() => panels.value[index.value]);
      const setIndex = (val) => {
        index.value = val;
      };
      const panelSize = computed(() => {
        var _a;
        if (!panel.value) return 0;
        return (_a = pxSizes.value[index.value]) != null ? _a : 0;
      });
      const nextSize = computed(() => {
        var _a;
        if (!panel.value) return 0;
        return (_a = pxSizes.value[index.value + 1]) != null ? _a : 0;
      });
      const nextPanel = computed(() => {
        if (panel.value) {
          return panels.value[index.value + 1];
        }
        return null;
      });
      const isResizable = computed(() => {
        var _a;
        if (!nextPanel.value) return false;
        return props2.resizable && ((_a = nextPanel.value) == null ? void 0 : _a.resizable) && // If it is 0, it means it is collapsed => check if the minimum value is set
        (panelSize.value !== 0 || !props2.min) && (nextSize.value !== 0 || !nextPanel.value.min);
      });
      const isShowBar = computed(() => {
        if (!panel.value) return false;
        return index.value !== panels.value.length - 1;
      });
      const startCollapsible = computed(
        () => isCollapsible(panel.value, panelSize.value, nextPanel.value, nextSize.value)
      );
      const endCollapsible = computed(
        () => isCollapsible(nextPanel.value, nextSize.value, panel.value, panelSize.value)
      );
      function sizeToPx(str) {
        if (isPct(str)) {
          return getPct(str) * containerSize.value || 0;
        } else if (isPx(str)) {
          return getPx(str);
        }
        return str != null ? str : 0;
      }
      let isSizeUpdating = false;
      watch(
        () => props2.size,
        () => {
          if (!isSizeUpdating && panel.value) {
            if (!containerSize.value) {
              panel.value.size = props2.size;
              return;
            }
            const size = sizeToPx(props2.size);
            const maxSize = sizeToPx(props2.max);
            const minSize = sizeToPx(props2.min);
            const finalSize = Math.min(Math.max(size, minSize || 0), maxSize || size);
            if (finalSize !== size) {
              emits("update:size", finalSize);
            }
            panel.value.size = finalSize;
          }
        }
      );
      watch(
        () => {
          var _a;
          return (_a = panel.value) == null ? void 0 : _a.size;
        },
        (val) => {
          if (val !== props2.size) {
            isSizeUpdating = true;
            emits("update:size", val);
            nextTick(() => isSizeUpdating = false);
          }
        }
      );
      watch(
        () => props2.resizable,
        (val) => {
          if (panel.value) {
            panel.value.resizable = val;
          }
        }
      );
      const _panel = reactive({
        uid: uid2,
        getVnode: () => instance.vnode,
        setIndex,
        ...props2,
        collapsible: computed(() => getCollapsible(props2.collapsible))
      });
      registerPanel(_panel);
      onBeforeUnmount(() => unregisterPanel(_panel));
      __expose({
        /** @description splitter-panel html element */
        splitterPanelRef: panelEl
      });
      return (_ctx, _cache) => {
        return openBlock(), createElementBlock(
          Fragment,
          null,
          [
            createBaseVNode(
              "div",
              mergeProps({
                ref_key: "panelEl",
                ref: panelEl,
                class: [unref(ns).b()],
                style: { flexBasis: `${panelSize.value}px` }
              }, _ctx.$attrs),
              [
                renderSlot(_ctx.$slots, "default")
              ],
              16
              /* FULL_PROPS */
            ),
            isShowBar.value ? (openBlock(), createBlock(_sfc_main$X, {
              key: 0,
              index: index.value,
              layout: unref(layout2),
              lazy: unref(lazy),
              resizable: isResizable.value,
              "start-collapsible": startCollapsible.value,
              "end-collapsible": endCollapsible.value,
              onMoveStart: unref(onMoveStart),
              onMoving: unref(onMoving),
              onMoveEnd: unref(onMoveEnd),
              onCollapse: unref(onCollapse)
            }, {
              "start-collapsible": withCtx(() => [
                renderSlot(_ctx.$slots, "start-collapsible")
              ]),
              "end-collapsible": withCtx(() => [
                renderSlot(_ctx.$slots, "end-collapsible")
              ]),
              _: 3
              /* FORWARDED */
            }, 8, ["index", "layout", "lazy", "resizable", "start-collapsible", "end-collapsible", "onMoveStart", "onMoving", "onMoveEnd", "onCollapse"])) : createCommentVNode("v-if", true)
          ],
          64
          /* STABLE_FRAGMENT */
        );
      };
    }
  });
  const ElSplitter = withInstall(_sfc_main$Y, {
    SplitPanel: _sfc_main$W
  });
  const ElSplitterPanel = withNoopInstall(_sfc_main$W);
  var Components = [
    ElAffix,
    ElAlert,
    ElAutocomplete,
    ElAutoResizer,
    ElAvatar,
    ElAvatarGroup,
    ElBacktop,
    ElBadge,
    ElBreadcrumb,
    ElBreadcrumbItem,
    ElButton,
    ElButtonGroup$1,
    ElCalendar,
    ElCard,
    ElCarousel,
    ElCarouselItem,
    ElCascader,
    ElCascaderPanel,
    ElCheckTag,
    ElCheckbox,
    ElCheckboxButton,
    ElCheckboxGroup,
    ElCol,
    ElCollapse,
    ElCollapseItem,
    ElCollapseTransition,
    ElColorPickerPanel,
    ElColorPicker,
    ElConfigProvider,
    ElContainer,
    ElAside,
    ElFooter,
    ElHeader,
    ElMain,
    ElDatePicker,
    ElDatePickerPanel,
    ElDescriptions,
    ElDescriptionsItem,
    ElDialog,
    ElDivider,
    ElDrawer,
    ElDropdown,
    ElDropdownItem,
    ElDropdownMenu,
    ElEmpty,
    ElForm,
    ElFormItem,
    ElIcon,
    ElImage,
    ElImageViewer,
    ElInput,
    ElInputNumber,
    ElInputTag,
    ElLink,
    ElMenu,
    ElMenuItem,
    ElMenuItemGroup,
    ElSubMenu,
    ElPageHeader,
    ElPagination,
    ElPopconfirm,
    ElPopover,
    ElPopper,
    ElProgress,
    ElRadio,
    ElRadioButton,
    ElRadioGroup,
    ElRate,
    ElResult,
    ElRow,
    ElScrollbar,
    ElSelect,
    ElOption,
    ElOptionGroup,
    ElSelectV2,
    ElSkeleton,
    ElSkeletonItem,
    ElSlider,
    ElSpace,
    ElStatistic,
    ElCountdown,
    ElSteps,
    ElStep,
    ElSwitch,
    ElTable,
    ElTableColumn,
    ElTableV2,
    ElTabs,
    ElTabPane,
    ElTag,
    ElText,
    ElTimePicker,
    ElTimeSelect,
    ElTimeline,
    ElTimelineItem,
    ElTooltip,
    ElTransfer,
    ElTree,
    ElTreeSelect,
    ElTreeV2,
    ElUpload,
    ElWatermark,
    ElTour,
    ElTourStep,
    ElAnchor,
    ElAnchorLink,
    ElSegmented,
    ElMention,
    ElSplitter,
    ElSplitterPanel
  ];
  const SCOPE = "ElInfiniteScroll";
  const CHECK_INTERVAL = 50;
  const DEFAULT_DELAY = 200;
  const DEFAULT_DISTANCE = 0;
  const attributes = {
    delay: {
      type: Number,
      default: DEFAULT_DELAY
    },
    distance: {
      type: Number,
      default: DEFAULT_DISTANCE
    },
    disabled: {
      type: Boolean,
      default: false
    },
    immediate: {
      type: Boolean,
      default: true
    }
  };
  const getScrollOptions = (el, instance) => {
    return Object.entries(attributes).reduce((acm, [name, option]) => {
      var _a, _b;
      const { type, default: defaultValue } = option;
      const attrVal = el.getAttribute(`infinite-scroll-${name}`);
      let value = (_b = (_a = instance[attrVal]) != null ? _a : attrVal) != null ? _b : defaultValue;
      value = value === "false" ? false : value;
      value = type(value);
      acm[name] = Number.isNaN(value) ? defaultValue : value;
      return acm;
    }, {});
  };
  const destroyObserver = (el) => {
    const { observer } = el[SCOPE];
    if (observer) {
      observer.disconnect();
      delete el[SCOPE].observer;
    }
  };
  const handleScroll = (el, cb) => {
    const { container, containerEl, instance, observer, lastScrollTop } = el[SCOPE];
    const { disabled, distance } = getScrollOptions(el, instance);
    const { clientHeight, scrollHeight, scrollTop } = containerEl;
    const delta = scrollTop - lastScrollTop;
    el[SCOPE].lastScrollTop = scrollTop;
    if (observer || disabled || delta < 0) return;
    let shouldTrigger = false;
    if (container === el) {
      shouldTrigger = scrollHeight - (clientHeight + scrollTop) <= distance;
    } else {
      const { clientTop, scrollHeight: height } = el;
      const offsetTop = getOffsetTopDistance(el, containerEl);
      shouldTrigger = scrollTop + clientHeight >= offsetTop + clientTop + height - distance;
    }
    if (shouldTrigger) {
      cb.call(instance);
    }
  };
  function checkFull(el, cb) {
    const { containerEl, instance } = el[SCOPE];
    const { disabled } = getScrollOptions(el, instance);
    if (disabled || containerEl.clientHeight === 0) return;
    if (containerEl.scrollHeight <= containerEl.clientHeight) {
      cb.call(instance);
    } else {
      destroyObserver(el);
    }
  }
  const InfiniteScroll = {
    async mounted(el, binding) {
      const { instance, value: cb } = binding;
      useDeprecated(
        {
          scope: SCOPE,
          from: "the directive v-infinite-scroll",
          replacement: "the el-scrollbar infinite scroll",
          version: "3.0.0",
          ref: "https://element-plus.org/en-US/component/scrollbar#infinite-scroll"
        },
        true
      );
      if (!isFunction$1(cb)) {
        throwError(SCOPE, "'v-infinite-scroll' binding value must be a function");
      }
      await nextTick();
      const { delay, immediate } = getScrollOptions(el, instance);
      const container = getScrollContainer(el, true);
      const containerEl = container === window ? document.documentElement : container;
      const onScroll = throttle(handleScroll.bind(null, el, cb), delay);
      if (!container) return;
      el[SCOPE] = {
        instance,
        container,
        containerEl,
        delay,
        cb,
        onScroll,
        lastScrollTop: containerEl.scrollTop
      };
      if (immediate) {
        const observer = new MutationObserver(
          throttle(checkFull.bind(null, el, cb), CHECK_INTERVAL)
        );
        el[SCOPE].observer = observer;
        observer.observe(el, { childList: true, subtree: true });
        checkFull(el, cb);
      }
      container.addEventListener("scroll", onScroll);
    },
    unmounted(el) {
      if (!el[SCOPE]) return;
      const { container, onScroll } = el[SCOPE];
      container == null ? void 0 : container.removeEventListener("scroll", onScroll);
      destroyObserver(el);
    },
    async updated(el) {
      if (!el[SCOPE]) {
        await nextTick();
      } else {
        const { containerEl, cb, observer } = el[SCOPE];
        if (containerEl.clientHeight && observer) {
          checkFull(el, cb);
        }
      }
    }
  };
  const _InfiniteScroll = InfiniteScroll;
  _InfiniteScroll.install = (app2) => {
    app2.directive("InfiniteScroll", _InfiniteScroll);
  };
  const ElInfiniteScroll = _InfiniteScroll;
  function createLoadingComponent(options, appContext) {
    let afterLeaveTimer;
    const afterLeaveFlag = ref(false);
    const data = 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 _a, _b;
      (_b = (_a = vm.$el) == null ? void 0 : _a.parentNode) == null ? void 0 : _b.removeChild(vm.$el);
    }
    function close2() {
      var _a;
      if (options.beforeClose && !options.beforeClose()) return;
      afterLeaveFlag.value = true;
      clearTimeout(afterLeaveTimer);
      afterLeaveTimer = setTimeout(handleAfterLeave, 400);
      data.visible = false;
      (_a = options.closed) == null ? void 0 : _a.call(options);
    }
    function handleAfterLeave() {
      if (!afterLeaveFlag.value) return;
      const target = data.parent;
      afterLeaveFlag.value = false;
      target.vLoadingAddClassList = void 0;
      destroySelf();
    }
    const elLoadingComponent = /* @__PURE__ */ 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 = h$1(
            "svg",
            {
              class: "circular",
              viewBox: data.svgViewBox ? data.svgViewBox : "0 0 50 50",
              ...svg ? { innerHTML: svg } : {}
            },
            [
              h$1("circle", {
                class: "path",
                cx: "25",
                cy: "25",
                r: "20",
                fill: "none"
              })
            ]
          );
          const spinnerText = data.text ? h$1("p", { class: ns.b("text") }, [data.text]) : void 0;
          return h$1(
            Transition,
            {
              name: ns.b("fade"),
              onAfterLeave: handleAfterLeave
            },
            {
              default: withCtx(() => [
                withDirectives(
                  createVNode(
                    "div",
                    {
                      style: {
                        backgroundColor: data.background || ""
                      },
                      class: [
                        ns.b("mask"),
                        data.customClass,
                        ns.is("fullscreen", data.fullscreen)
                      ]
                    },
                    [
                      h$1(
                        "div",
                        {
                          class: ns.b("spinner")
                        },
                        [spinner, spinnerText]
                      )
                    ]
                  ),
                  [[vShow, data.visible]]
                )
              ])
            }
          );
        };
      }
    });
    const loadingInstance = createApp(elLoadingComponent);
    Object.assign(loadingInstance._context, appContext != null ? appContext : {});
    const vm = loadingInstance.mount(document.createElement("div"));
    return {
      ...toRefs(data),
      setText,
      removeElLoadingChild,
      close: close2,
      handleAfterLeave,
      vm,
      get $el() {
        return vm.$el;
      }
    };
  }
  let fullscreenInstance = void 0;
  const Loading = function(options = {}, context) {
    if (!isClient) return void 0;
    const resolved = resolveOptions(options);
    if (resolved.fullscreen && fullscreenInstance) {
      return fullscreenInstance;
    }
    const instance = createLoadingComponent(
      {
        ...resolved,
        closed: () => {
          var _a;
          (_a = resolved.closed) == null ? void 0 : _a.call(resolved);
          if (resolved.fullscreen) fullscreenInstance = void 0;
        }
      },
      context != null ? context : Loading._context
    );
    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);
    nextTick(() => instance.visible.value = resolved.visible);
    if (resolved.fullscreen) {
      fullscreenInstance = instance;
    }
    return instance;
  };
  const resolveOptions = (options) => {
    var _a, _b, _c, _d;
    let target;
    if (isString(options.target)) {
      target = (_a = document.querySelector(options.target)) != null ? _a : 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, parent2, 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 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(parent2, "position");
    }
    for (const [key, value] of Object.entries(maskStyle)) {
      instance.$el.style[key] = value;
    }
  };
  const addClassList = (options, parent2, instance) => {
    const ns = instance.vm.ns || instance.vm._.exposed.ns;
    if (!["absolute", "fixed", "sticky"].includes(instance.originalPosition.value)) {
      addClass(parent2, ns.bm("parent", "relative"));
    } else {
      removeClass(parent2, ns.bm("parent", "relative"));
    }
    if (options.fullscreen && options.lock) {
      addClass(parent2, ns.bm("parent", "hidden"));
    } else {
      removeClass(parent2, ns.bm("parent", "hidden"));
    }
  };
  Loading._context = null;
  const INSTANCE_KEY = /* @__PURE__ */ Symbol("ElLoading");
  const getAttributeName = (name) => {
    return `element-loading-${hyphenate(name)}`;
  };
  const createInstance = (el, binding) => {
    var _a, _b, _c, _d;
    const vm = binding.instance;
    const getBindingProp = (key) => isObject$2(binding.value) ? binding.value[key] : void 0;
    const resolveExpression = (key) => {
      const data = isString(key) && (vm == null ? void 0 : vm[key]) || key;
      return ref(data);
    };
    const getProp2 = (name) => resolveExpression(
      getBindingProp(name) || el.getAttribute(getAttributeName(name))
    );
    const fullscreen = (_a = getBindingProp("fullscreen")) != null ? _a : binding.modifiers.fullscreen;
    const options = {
      text: getProp2("text"),
      svg: getProp2("svg"),
      svgViewBox: getProp2("svgViewBox"),
      spinner: getProp2("spinner"),
      background: getProp2("background"),
      customClass: getProp2("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
    };
    const instance = Loading(options);
    instance._context = vLoading._context;
    el[INSTANCE_KEY] = {
      options,
      instance
    };
  };
  const updateOptions = (originalOptions, newOptions) => {
    for (const key of Object.keys(originalOptions)) {
      if (isRef(originalOptions[key]))
        originalOptions[key].value = newOptions[key];
    }
  };
  const vLoading = {
    mounted(el, binding) {
      if (binding.value) {
        createInstance(el, binding);
      }
    },
    updated(el, binding) {
      const instance = el[INSTANCE_KEY];
      if (!binding.value) {
        instance == null ? void 0 : instance.instance.close();
        el[INSTANCE_KEY] = null;
        return;
      }
      if (!instance) createInstance(el, binding);
      else {
        updateOptions(
          instance.options,
          isObject$2(binding.value) ? binding.value : {
            text: el.getAttribute(getAttributeName("text")),
            svg: el.getAttribute(getAttributeName("svg")),
            svgViewBox: el.getAttribute(getAttributeName("svgViewBox")),
            spinner: el.getAttribute(getAttributeName("spinner")),
            background: el.getAttribute(getAttributeName("background")),
            customClass: el.getAttribute(getAttributeName("customClass"))
          }
        );
      }
    },
    unmounted(el) {
      var _a;
      (_a = el[INSTANCE_KEY]) == null ? void 0 : _a.instance.close();
      el[INSTANCE_KEY] = null;
    }
  };
  vLoading._context = null;
  const ElLoading = {
    install(app2) {
      Loading._context = app2._context;
      vLoading._context = app2._context;
      app2.directive("loading", vLoading);
      app2.config.globalProperties.$loading = Loading;
    },
    directive: vLoading,
    service: Loading
  };
  const messageTypes = [
    "primary",
    "success",
    "info",
    "warning",
    "error"
  ];
  const messagePlacement = [
    "top",
    "top-left",
    "top-right",
    "bottom",
    "bottom-left",
    "bottom-right"
  ];
  const MESSAGE_DEFAULT_PLACEMENT = "top";
  const messageDefaults = mutable({
    customClass: "",
    dangerouslyUseHTMLString: false,
    duration: 3e3,
    icon: void 0,
    id: "",
    message: "",
    onClose: void 0,
    showClose: false,
    type: "info",
    plain: false,
    offset: 16,
    placement: void 0,
    zIndex: 0,
    grouping: false,
    repeatNum: 1,
    appendTo: isClient ? document.body : void 0
  });
  const messageProps = buildProps({
    /**
     * @description custom class name for Message
     */
    customClass: {
      type: String,
      default: messageDefaults.customClass
    },
    /**
     * @description whether `message` is treated as HTML string
     */
    dangerouslyUseHTMLString: {
      type: Boolean,
      default: messageDefaults.dangerouslyUseHTMLString
    },
    /**
     * @description display duration, millisecond. If set to 0, it will not turn off automatically
     */
    duration: {
      type: Number,
      default: messageDefaults.duration
    },
    /**
     * @description custom icon component, overrides `type`
     */
    icon: {
      type: iconPropType,
      default: messageDefaults.icon
    },
    /**
     * @description message dom id
     */
    id: {
      type: String,
      default: messageDefaults.id
    },
    /**
     * @description message text
     */
    message: {
      type: definePropType([
        String,
        Object,
        Function
      ]),
      default: messageDefaults.message
    },
    /**
     * @description callback function when closed with the message instance as the parameter
     */
    onClose: {
      type: definePropType(Function),
      default: messageDefaults.onClose
    },
    /**
     * @description whether to show a close button
     */
    showClose: {
      type: Boolean,
      default: messageDefaults.showClose
    },
    /**
     * @description message type
     */
    type: {
      type: String,
      values: messageTypes,
      default: messageDefaults.type
    },
    /**
     * @description whether message is plain
     */
    plain: {
      type: Boolean,
      default: messageDefaults.plain
    },
    /**
     * @description set the distance to the top of viewport
     */
    offset: {
      type: Number,
      default: messageDefaults.offset
    },
    /**
     * @description message placement position
     */
    placement: {
      type: String,
      values: messagePlacement,
      default: messageDefaults.placement
    },
    /**
     * @description message element zIndex value
     */
    zIndex: {
      type: Number,
      default: messageDefaults.zIndex
    },
    /**
     * @description merge messages with the same content, type of VNode message is not supported
     */
    grouping: {
      type: Boolean,
      default: messageDefaults.grouping
    },
    /**
     * @description The number of repetitions, similar to badge, is used as the initial number when used with `grouping`
     */
    repeatNum: {
      type: Number,
      default: messageDefaults.repeatNum
    }
  });
  const messageEmits = {
    destroy: () => true
  };
  const placementInstances = shallowReactive(
    {}
  );
  const getOrCreatePlacementInstances = (placement) => {
    if (!placementInstances[placement]) {
      placementInstances[placement] = shallowReactive([]);
    }
    return placementInstances[placement];
  };
  const getInstance = (id, placement) => {
    const instances = placementInstances[placement] || [];
    const idx = instances.findIndex((instance) => instance.id === id);
    const current = instances[idx];
    let prev;
    if (idx > 0) {
      prev = instances[idx - 1];
    }
    return { current, prev };
  };
  const getLastOffset = (id, placement) => {
    const { prev } = getInstance(id, placement);
    if (!prev) return 0;
    return prev.vm.exposed.bottom.value;
  };
  const getOffsetOrSpace = (id, offset2, placement) => {
    const instances = placementInstances[placement] || [];
    const idx = instances.findIndex((instance) => instance.id === id);
    return idx > 0 ? 16 : offset2;
  };
  const _hoisted_1$T = ["id"];
  const _hoisted_2$S = ["innerHTML"];
  var _sfc_main$V = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElMessage"
    },
    __name: "message",
    props: messageProps,
    emits: messageEmits,
    setup(__props, { expose: __expose, emit: __emit }) {
      const { Close } = TypeComponents;
      const props2 = __props;
      const emit2 = __emit;
      const isStartTransition = ref(false);
      const { ns, zIndex: zIndex2 } = useGlobalComponentSettings("message");
      const { currentZIndex, nextZIndex } = zIndex2;
      const messageRef = ref();
      const visible = ref(false);
      const height = ref(0);
      let stopTimer = void 0;
      const badgeType = computed(
        () => props2.type ? props2.type === "error" ? "danger" : props2.type : "info"
      );
      const typeClass = computed(() => {
        const type = props2.type;
        return { [ns.bm("icon", type)]: type && TypeComponentsMap[type] };
      });
      const iconComponent = computed(
        () => props2.icon || TypeComponentsMap[props2.type] || ""
      );
      const placement = computed(() => props2.placement || MESSAGE_DEFAULT_PLACEMENT);
      const lastOffset = computed(() => getLastOffset(props2.id, placement.value));
      const offset2 = computed(() => {
        return getOffsetOrSpace(props2.id, props2.offset, placement.value) + lastOffset.value;
      });
      const bottom = computed(() => height.value + offset2.value);
      const horizontalClass = computed(() => {
        if (placement.value.includes("left")) return ns.is("left");
        if (placement.value.includes("right")) return ns.is("right");
        return ns.is("center");
      });
      const verticalProperty = computed(
        () => placement.value.startsWith("top") ? "top" : "bottom"
      );
      const customStyle = computed(() => ({
        [verticalProperty.value]: `${offset2.value}px`,
        zIndex: currentZIndex.value
      }));
      function startTimer() {
        if (props2.duration === 0) return;
        ({ stop: stopTimer } = useTimeoutFn(() => {
          close2();
        }, props2.duration));
      }
      function clearTimer() {
        stopTimer == null ? void 0 : stopTimer();
      }
      function close2() {
        visible.value = false;
        nextTick(() => {
          var _a;
          if (!isStartTransition.value) {
            (_a = props2.onClose) == null ? void 0 : _a.call(props2);
            emit2("destroy");
          }
        });
      }
      function keydown(event) {
        const code = getEventCode(event);
        if (code === EVENT_CODE.esc) {
          close2();
        }
      }
      onMounted(() => {
        startTimer();
        nextZIndex();
        visible.value = true;
      });
      watch(
        () => props2.repeatNum,
        () => {
          clearTimer();
          startTimer();
        }
      );
      useEventListener(document, "keydown", keydown);
      useResizeObserver(messageRef, () => {
        height.value = messageRef.value.getBoundingClientRect().height;
      });
      __expose({
        visible,
        bottom,
        close: close2
      });
      return (_ctx, _cache) => {
        return openBlock(), createBlock(Transition, {
          name: unref(ns).b("fade"),
          onBeforeEnter: _cache[0] || (_cache[0] = ($event) => isStartTransition.value = true),
          onBeforeLeave: __props.onClose,
          onAfterLeave: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("destroy")),
          persisted: ""
        }, {
          default: withCtx(() => [
            withDirectives(createBaseVNode("div", {
              id: __props.id,
              ref_key: "messageRef",
              ref: messageRef,
              class: normalizeClass([
                unref(ns).b(),
                { [unref(ns).m(__props.type)]: __props.type },
                unref(ns).is("closable", __props.showClose),
                unref(ns).is("plain", __props.plain),
                unref(ns).is("bottom", verticalProperty.value === "bottom"),
                horizontalClass.value,
                __props.customClass
              ]),
              style: normalizeStyle(customStyle.value),
              role: "alert",
              onMouseenter: clearTimer,
              onMouseleave: startTimer
            }, [
              __props.repeatNum > 1 ? (openBlock(), createBlock(unref(ElBadge), {
                key: 0,
                value: __props.repeatNum,
                type: badgeType.value,
                class: normalizeClass(unref(ns).e("badge"))
              }, null, 8, ["value", "type", "class"])) : createCommentVNode("v-if", true),
              iconComponent.value ? (openBlock(), createBlock(unref(ElIcon), {
                key: 1,
                class: normalizeClass([unref(ns).e("icon"), typeClass.value])
              }, {
                default: withCtx(() => [
                  (openBlock(), createBlock(resolveDynamicComponent(iconComponent.value)))
                ]),
                _: 1
                /* STABLE */
              }, 8, ["class"])) : createCommentVNode("v-if", true),
              renderSlot(_ctx.$slots, "default", {}, () => [
                !__props.dangerouslyUseHTMLString ? (openBlock(), createElementBlock(
                  "p",
                  {
                    key: 0,
                    class: normalizeClass(unref(ns).e("content"))
                  },
                  toDisplayString(__props.message),
                  3
                  /* TEXT, CLASS */
                )) : (openBlock(), createElementBlock(
                  Fragment,
                  { key: 1 },
                  [
                    createCommentVNode(" Caution here, message could've been compromised, never use user's input as message "),
                    createBaseVNode("p", {
                      class: normalizeClass(unref(ns).e("content")),
                      innerHTML: __props.message
                    }, null, 10, _hoisted_2$S)
                  ],
                  2112
                  /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
                ))
              ]),
              __props.showClose ? (openBlock(), createBlock(unref(ElIcon), {
                key: 2,
                class: normalizeClass(unref(ns).e("closeBtn")),
                onClick: withModifiers(close2, ["stop"])
              }, {
                default: withCtx(() => [
                  createVNode(unref(Close))
                ]),
                _: 1
                /* STABLE */
              }, 8, ["class"])) : createCommentVNode("v-if", true)
            ], 46, _hoisted_1$T), [
              [vShow, visible.value]
            ])
          ]),
          _: 3
          /* FORWARDED */
        }, 8, ["name", "onBeforeLeave"]);
      };
    }
  });
  let seed$1 = 1;
  const normalizeAppendTo = (normalized) => {
    const appendTo = normalized.appendTo;
    if (!appendTo) {
      normalized.appendTo = document.body;
    } else if (isString(normalized.appendTo)) {
      let appendTo2 = document.querySelector(normalized.appendTo);
      if (!isElement$1(appendTo2)) {
        appendTo2 = document.body;
      }
      normalized.appendTo = appendTo2;
    }
  };
  const normalizePlacement = (normalized) => {
    if (!normalized.placement && isString(messageConfig.placement) && messageConfig.placement) {
      normalized.placement = messageConfig.placement;
    }
    if (!normalized.placement) {
      normalized.placement = MESSAGE_DEFAULT_PLACEMENT;
    }
    if (!messagePlacement.includes(normalized.placement)) {
      normalized.placement = MESSAGE_DEFAULT_PLACEMENT;
    }
  };
  const normalizeOptions = (params) => {
    const options = !params || isString(params) || isVNode(params) || isFunction$1(params) ? { message: params } : params;
    const normalized = {
      ...messageDefaults,
      ...options
    };
    normalizeAppendTo(normalized);
    normalizePlacement(normalized);
    if (isBoolean(messageConfig.grouping) && !normalized.grouping) {
      normalized.grouping = messageConfig.grouping;
    }
    if (isNumber(messageConfig.duration) && normalized.duration === 3e3) {
      normalized.duration = messageConfig.duration;
    }
    if (isNumber(messageConfig.offset) && normalized.offset === 16) {
      normalized.offset = messageConfig.offset;
    }
    if (isBoolean(messageConfig.showClose) && !normalized.showClose) {
      normalized.showClose = messageConfig.showClose;
    }
    if (isBoolean(messageConfig.plain) && !normalized.plain) {
      normalized.plain = messageConfig.plain;
    }
    return normalized;
  };
  const closeMessage = (instance) => {
    const placement = instance.props.placement || MESSAGE_DEFAULT_PLACEMENT;
    const instances = placementInstances[placement];
    const idx = instances.indexOf(instance);
    if (idx === -1) return;
    instances.splice(idx, 1);
    const { handler } = instance;
    handler.close();
  };
  const createMessage = ({ appendTo, ...options }, context) => {
    const id = `message_${seed$1++}`;
    const userOnClose = options.onClose;
    const container = document.createElement("div");
    const props2 = {
      ...options,
      // now the zIndex will be used inside the message.vue component instead of here.
      // zIndex: nextIndex() + options.zIndex
      id,
      onClose: () => {
        userOnClose == null ? void 0 : userOnClose();
        closeMessage(instance);
      },
      // clean message element preventing mem leak
      onDestroy: () => {
        render(null, container);
      }
    };
    const vnode = createVNode(
      _sfc_main$V,
      props2,
      isFunction$1(props2.message) || isVNode(props2.message) ? {
        default: isFunction$1(props2.message) ? props2.message : () => props2.message
      } : null
    );
    vnode.appContext = context || message._context;
    render(vnode, container);
    appendTo.appendChild(container.firstElementChild);
    const vm = vnode.component;
    const handler = {
      // instead of calling the onClose function directly, setting this value so that we can have the full lifecycle
      // for out component, so that all closing steps will not be skipped.
      close: () => {
        vm.exposed.close();
      }
    };
    const instance = {
      id,
      vnode,
      vm,
      handler,
      props: vnode.component.props
    };
    return instance;
  };
  const message = (options = {}, context) => {
    if (!isClient) return { close: () => void 0 };
    const normalized = normalizeOptions(options);
    const instances = getOrCreatePlacementInstances(
      normalized.placement || MESSAGE_DEFAULT_PLACEMENT
    );
    if (normalized.grouping && instances.length) {
      const instance2 = instances.find(
        ({ vnode: vm }) => {
          var _a;
          return ((_a = vm.props) == null ? void 0 : _a.message) === normalized.message;
        }
      );
      if (instance2) {
        instance2.props.repeatNum += 1;
        instance2.props.type = normalized.type;
        return instance2.handler;
      }
    }
    if (isNumber(messageConfig.max) && instances.length >= messageConfig.max) {
      return { close: () => void 0 };
    }
    const instance = createMessage(normalized, context);
    instances.push(instance);
    return instance.handler;
  };
  messageTypes.forEach((type) => {
    message[type] = (options = {}, appContext) => {
      const normalized = normalizeOptions(options);
      return message({ ...normalized, type }, appContext);
    };
  });
  function closeAll$1(type) {
    for (const placement in placementInstances) {
      if (hasOwn(placementInstances, placement)) {
        const instances = [...placementInstances[placement]];
        for (const instance of instances) {
          if (!type || type === instance.props.type) {
            instance.handler.close();
          }
        }
      }
    }
  }
  function closeAllByPlacement(placement) {
    if (!placementInstances[placement]) return;
    const instances = [...placementInstances[placement]];
    instances.forEach((instance) => instance.handler.close());
  }
  message.closeAll = closeAll$1;
  message.closeAllByPlacement = closeAllByPlacement;
  message._context = null;
  const ElMessage = withInstallFunction(message, "$message");
  const FOCUSABLE_CHILDREN = "_trap-focus-children";
  const FOCUS_STACK = [];
  const FOCUS_HANDLER = (e) => {
    if (FOCUS_STACK.length === 0) return;
    const code = getEventCode(e);
    const focusableElement = FOCUS_STACK[FOCUS_STACK.length - 1][FOCUSABLE_CHILDREN];
    if (focusableElement.length > 0 && code === EVENT_CODE.tab) {
      if (focusableElement.length === 1) {
        e.preventDefault();
        if (document.activeElement !== focusableElement[0]) {
          focusableElement[0].focus();
        }
        return;
      }
      const goingBackward = e.shiftKey;
      const isFirst = e.target === focusableElement[0];
      const isLast = e.target === focusableElement[focusableElement.length - 1];
      if (isFirst && goingBackward) {
        e.preventDefault();
        focusableElement[focusableElement.length - 1].focus();
      }
      if (isLast && !goingBackward) {
        e.preventDefault();
        focusableElement[0].focus();
      }
    }
  };
  const TrapFocus = {
    beforeMount(el) {
      el[FOCUSABLE_CHILDREN] = obtainAllFocusableElements$1(el);
      FOCUS_STACK.push(el);
      if (FOCUS_STACK.length <= 1) {
        document.addEventListener("keydown", FOCUS_HANDLER);
      }
    },
    updated(el) {
      nextTick(() => {
        el[FOCUSABLE_CHILDREN] = obtainAllFocusableElements$1(el);
      });
    },
    unmounted() {
      FOCUS_STACK.shift();
      if (FOCUS_STACK.length === 0) {
        document.removeEventListener("keydown", FOCUS_HANDLER);
      }
    }
  };
  var _sfc_main$U = /* @__PURE__ */ 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: Boolean,
      container: {
        type: String,
        // default append to body
        default: "body"
      },
      boxType: {
        type: String,
        default: ""
      }
    },
    emits: ["vanish", "action"],
    setup(props2, { emit: emit2 }) {
      const {
        locale,
        zIndex: zIndex2,
        ns,
        size: btnSize
      } = useGlobalComponentSettings(
        "message-box",
        computed(() => props2.buttonSize)
      );
      const { t } = locale;
      const { nextZIndex } = zIndex2;
      const visible = ref(false);
      const state = reactive({
        // autofocus element when open message-box
        autofocus: true,
        beforeClose: null,
        callback: null,
        cancelButtonText: "",
        cancelButtonClass: "",
        confirmButtonText: "",
        confirmButtonClass: "",
        cancelButtonType: "",
        confirmButtonType: "primary",
        customClass: "",
        customStyle: {},
        dangerouslyUseHTMLString: false,
        distinguishCancelAndClose: false,
        icon: "",
        closeIcon: "",
        inputPattern: null,
        inputPlaceholder: "",
        inputType: "text",
        inputValue: "",
        inputValidator: void 0,
        inputErrorMessage: "",
        message: "",
        modalFade: true,
        modalClass: "",
        showCancelButton: false,
        showConfirmButton: true,
        type: "",
        title: void 0,
        showInput: false,
        action: "",
        confirmButtonLoading: false,
        cancelButtonLoading: false,
        confirmButtonLoadingIcon: markRaw(loading_default),
        cancelButtonLoadingIcon: markRaw(loading_default),
        confirmButtonDisabled: false,
        editorErrorMessage: "",
        // refer to: https://github.com/ElemeFE/element/commit/2999279ae34ef10c373ca795c87b020ed6753eed
        // seemed ok for now without this state.
        // isOnComposition: false, // temporary remove
        validateError: false,
        zIndex: nextZIndex()
      });
      const typeClass = computed(() => {
        const type = state.type;
        return { [ns.bm("icon", type)]: type && TypeComponentsMap[type] };
      });
      const contentId = useId();
      const inputId = useId();
      const iconComponent = computed(() => {
        const type = state.type;
        return state.icon || type && TypeComponentsMap[type] || "";
      });
      const hasMessage = computed(() => !!state.message);
      const rootRef = ref();
      const headerRef = ref();
      const focusStartRef = ref();
      const inputRef = ref();
      const confirmRef = ref();
      const confirmButtonClasses = computed(() => state.confirmButtonClass);
      watch(
        () => state.inputValue,
        async (val) => {
          await nextTick();
          if (props2.boxType === "prompt" && val) {
            validate();
          }
        },
        { immediate: true }
      );
      watch(
        () => visible.value,
        (val) => {
          var _a, _b;
          if (val) {
            if (props2.boxType !== "prompt") {
              if (state.autofocus) {
                focusStartRef.value = (_b = (_a = confirmRef.value) == null ? void 0 : _a.$el) != null ? _b : rootRef.value;
              } else {
                focusStartRef.value = rootRef.value;
              }
            }
            state.zIndex = nextZIndex();
          }
          if (props2.boxType !== "prompt") return;
          if (val) {
            nextTick().then(() => {
              var _a2;
              if (inputRef.value && inputRef.value.$el) {
                if (state.autofocus) {
                  focusStartRef.value = (_a2 = getInputElement()) != null ? _a2 : rootRef.value;
                } else {
                  focusStartRef.value = rootRef.value;
                }
              }
            });
          } else {
            state.editorErrorMessage = "";
            state.validateError = false;
          }
        }
      );
      const draggable2 = computed(() => props2.draggable);
      const overflow = computed(() => props2.overflow);
      const { isDragging: isDragging2 } = useDraggable(rootRef, headerRef, draggable2, overflow);
      onMounted(async () => {
        await nextTick();
        if (props2.closeOnHashChange) {
          window.addEventListener("hashchange", doClose);
        }
      });
      onBeforeUnmount(() => {
        if (props2.closeOnHashChange) {
          window.removeEventListener("hashchange", doClose);
        }
      });
      function doClose() {
        if (!visible.value) return;
        visible.value = false;
        nextTick(() => {
          if (state.action) emit2("action", state.action);
        });
      }
      const handleWrapperClick = () => {
        if (props2.closeOnClickModal) {
          handleAction(state.distinguishCancelAndClose ? "close" : "cancel");
        }
      };
      const overlayEvent = useSameTarget(handleWrapperClick);
      const handleInputEnter = (e) => {
        var _a;
        if (state.inputType !== "textarea" && !((_a = inputRef.value) == null ? void 0 : _a.isComposing)) {
          e.preventDefault();
          return handleAction("confirm");
        }
      };
      const handleAction = (action) => {
        var _a;
        if (props2.boxType === "prompt" && action === "confirm" && !validate()) {
          return;
        }
        state.action = action;
        if (state.beforeClose) {
          (_a = state.beforeClose) == null ? void 0 : _a.call(state, action, state, doClose);
        } else {
          doClose();
        }
      };
      const validate = () => {
        if (props2.boxType === "prompt") {
          const inputPattern = state.inputPattern;
          if (inputPattern && !inputPattern.test(state.inputValue || "")) {
            state.editorErrorMessage = state.inputErrorMessage || t("el.messagebox.error");
            state.validateError = true;
            return false;
          }
          const inputValidator = state.inputValidator;
          if (isFunction$1(inputValidator)) {
            const validateResult = inputValidator(state.inputValue);
            if (validateResult === false) {
              state.editorErrorMessage = state.inputErrorMessage || t("el.messagebox.error");
              state.validateError = true;
              return false;
            }
            if (isString(validateResult)) {
              state.editorErrorMessage = validateResult;
              state.validateError = true;
              return false;
            }
          }
        }
        state.editorErrorMessage = "";
        state.validateError = false;
        return true;
      };
      const getInputElement = () => {
        var _a, _b;
        const inputRefs = (_a = inputRef.value) == null ? void 0 : _a.$refs;
        return (_b = inputRefs == null ? void 0 : inputRefs.input) != null ? _b : inputRefs == null ? void 0 : inputRefs.textarea;
      };
      const handleClose = () => {
        handleAction("close");
      };
      const onCloseRequested = () => {
        if (props2.closeOnPressEscape) {
          handleClose();
        }
      };
      if (props2.lockScroll) {
        useLockscreen(visible, { ns });
      }
      return {
        ...toRefs(state),
        ns,
        overlayEvent,
        visible,
        hasMessage,
        typeClass,
        contentId,
        inputId,
        btnSize,
        iconComponent,
        confirmButtonClasses,
        rootRef,
        focusStartRef,
        headerRef,
        inputRef,
        isDragging: isDragging2,
        confirmRef,
        doClose,
        // for outside usage
        handleClose,
        // for out side usage
        onCloseRequested,
        handleWrapperClick,
        handleInputEnter,
        handleAction,
        t
      };
    }
  });
  const _hoisted_1$S = ["aria-label", "aria-describedby"];
  const _hoisted_2$R = ["aria-label"];
  const _hoisted_3$N = ["id"];
  function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
    const _component_el_icon = resolveComponent("el-icon");
    const _component_el_input = resolveComponent("el-input");
    const _component_el_button = resolveComponent("el-button");
    const _component_el_focus_trap = resolveComponent("el-focus-trap");
    const _component_el_overlay = resolveComponent("el-overlay");
    return openBlock(), createBlock(Transition, {
      name: "fade-in-linear",
      onAfterLeave: _cache[11] || (_cache[11] = ($event) => _ctx.$emit("vanish")),
      persisted: ""
    }, {
      default: withCtx(() => [
        withDirectives(createVNode(_component_el_overlay, {
          "z-index": _ctx.zIndex,
          "overlay-class": [_ctx.ns.is("message-box"), _ctx.modalClass],
          mask: _ctx.modal
        }, {
          default: withCtx(() => [
            createBaseVNode("div", {
              role: "dialog",
              "aria-label": _ctx.title,
              "aria-modal": "true",
              "aria-describedby": !_ctx.showInput ? _ctx.contentId : void 0,
              class: normalizeClass(`${_ctx.ns.namespace.value}-overlay-message-box`),
              onClick: _cache[8] || (_cache[8] = (...args) => _ctx.overlayEvent.onClick && _ctx.overlayEvent.onClick(...args)),
              onMousedown: _cache[9] || (_cache[9] = (...args) => _ctx.overlayEvent.onMousedown && _ctx.overlayEvent.onMousedown(...args)),
              onMouseup: _cache[10] || (_cache[10] = (...args) => _ctx.overlayEvent.onMouseup && _ctx.overlayEvent.onMouseup(...args))
            }, [
              createVNode(_component_el_focus_trap, {
                loop: "",
                trapped: _ctx.visible,
                "focus-trap-el": _ctx.rootRef,
                "focus-start-el": _ctx.focusStartRef,
                onReleaseRequested: _ctx.onCloseRequested
              }, {
                default: withCtx(() => [
                  createBaseVNode(
                    "div",
                    {
                      ref: "rootRef",
                      class: normalizeClass([
                        _ctx.ns.b(),
                        _ctx.customClass,
                        _ctx.ns.is("draggable", _ctx.draggable),
                        _ctx.ns.is("dragging", _ctx.isDragging),
                        { [_ctx.ns.m("center")]: _ctx.center }
                      ]),
                      style: normalizeStyle(_ctx.customStyle),
                      tabindex: "-1",
                      onClick: _cache[7] || (_cache[7] = withModifiers(() => {
                      }, ["stop"]))
                    },
                    [
                      _ctx.title !== null && _ctx.title !== void 0 ? (openBlock(), createElementBlock(
                        "div",
                        {
                          key: 0,
                          ref: "headerRef",
                          class: normalizeClass([_ctx.ns.e("header"), { "show-close": _ctx.showClose }])
                        },
                        [
                          createBaseVNode(
                            "div",
                            {
                              class: normalizeClass(_ctx.ns.e("title"))
                            },
                            [
                              _ctx.iconComponent && _ctx.center ? (openBlock(), createBlock(_component_el_icon, {
                                key: 0,
                                class: normalizeClass([_ctx.ns.e("status"), _ctx.typeClass])
                              }, {
                                default: withCtx(() => [
                                  (openBlock(), createBlock(resolveDynamicComponent(_ctx.iconComponent)))
                                ]),
                                _: 1
                                /* STABLE */
                              }, 8, ["class"])) : createCommentVNode("v-if", true),
                              createBaseVNode(
                                "span",
                                null,
                                toDisplayString(_ctx.title),
                                1
                                /* TEXT */
                              )
                            ],
                            2
                            /* CLASS */
                          ),
                          _ctx.showClose ? (openBlock(), createElementBlock("button", {
                            key: 0,
                            type: "button",
                            class: normalizeClass(_ctx.ns.e("headerbtn")),
                            "aria-label": _ctx.t("el.messagebox.close"),
                            onClick: _cache[0] || (_cache[0] = ($event) => _ctx.handleAction(_ctx.distinguishCancelAndClose ? "close" : "cancel")),
                            onKeydown: _cache[1] || (_cache[1] = withKeys(withModifiers(($event) => _ctx.handleAction(_ctx.distinguishCancelAndClose ? "close" : "cancel"), ["prevent"]), ["enter"]))
                          }, [
                            createVNode(_component_el_icon, {
                              class: normalizeClass(_ctx.ns.e("close"))
                            }, {
                              default: withCtx(() => [
                                (openBlock(), createBlock(resolveDynamicComponent(_ctx.closeIcon || "close")))
                              ]),
                              _: 1
                              /* STABLE */
                            }, 8, ["class"])
                          ], 42, _hoisted_2$R)) : createCommentVNode("v-if", true)
                        ],
                        2
                        /* CLASS */
                      )) : createCommentVNode("v-if", true),
                      createBaseVNode("div", {
                        id: _ctx.contentId,
                        class: normalizeClass(_ctx.ns.e("content"))
                      }, [
                        createBaseVNode(
                          "div",
                          {
                            class: normalizeClass(_ctx.ns.e("container"))
                          },
                          [
                            _ctx.iconComponent && !_ctx.center && _ctx.hasMessage ? (openBlock(), createBlock(_component_el_icon, {
                              key: 0,
                              class: normalizeClass([_ctx.ns.e("status"), _ctx.typeClass])
                            }, {
                              default: withCtx(() => [
                                (openBlock(), createBlock(resolveDynamicComponent(_ctx.iconComponent)))
                              ]),
                              _: 1
                              /* STABLE */
                            }, 8, ["class"])) : createCommentVNode("v-if", true),
                            _ctx.hasMessage ? (openBlock(), createElementBlock(
                              "div",
                              {
                                key: 1,
                                class: normalizeClass(_ctx.ns.e("message"))
                              },
                              [
                                renderSlot(_ctx.$slots, "default", {}, () => [
                                  !_ctx.dangerouslyUseHTMLString ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.showInput ? "label" : "p"), {
                                    key: 0,
                                    for: _ctx.showInput ? _ctx.inputId : void 0,
                                    textContent: toDisplayString(_ctx.message)
                                  }, null, 8, ["for", "textContent"])) : (openBlock(), createBlock(resolveDynamicComponent(_ctx.showInput ? "label" : "p"), {
                                    key: 1,
                                    for: _ctx.showInput ? _ctx.inputId : void 0,
                                    innerHTML: _ctx.message
                                  }, null, 8, ["for", "innerHTML"]))
                                ])
                              ],
                              2
                              /* CLASS */
                            )) : createCommentVNode("v-if", true)
                          ],
                          2
                          /* CLASS */
                        ),
                        withDirectives(createBaseVNode(
                          "div",
                          {
                            class: normalizeClass(_ctx.ns.e("input"))
                          },
                          [
                            createVNode(_component_el_input, {
                              id: _ctx.inputId,
                              ref: "inputRef",
                              modelValue: _ctx.inputValue,
                              "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => _ctx.inputValue = $event),
                              type: _ctx.inputType,
                              placeholder: _ctx.inputPlaceholder,
                              "aria-invalid": _ctx.validateError,
                              class: normalizeClass({ invalid: _ctx.validateError }),
                              onKeydown: withKeys(_ctx.handleInputEnter, ["enter"])
                            }, null, 8, ["id", "modelValue", "type", "placeholder", "aria-invalid", "class", "onKeydown"]),
                            createBaseVNode(
                              "div",
                              {
                                class: normalizeClass(_ctx.ns.e("errormsg")),
                                style: normalizeStyle({
                                  visibility: !!_ctx.editorErrorMessage ? "visible" : "hidden"
                                })
                              },
                              toDisplayString(_ctx.editorErrorMessage),
                              7
                              /* TEXT, CLASS, STYLE */
                            )
                          ],
                          2
                          /* CLASS */
                        ), [
                          [vShow, _ctx.showInput]
                        ])
                      ], 10, _hoisted_3$N),
                      createBaseVNode(
                        "div",
                        {
                          class: normalizeClass(_ctx.ns.e("btns"))
                        },
                        [
                          _ctx.showCancelButton ? (openBlock(), createBlock(_component_el_button, {
                            key: 0,
                            type: _ctx.cancelButtonType === "text" ? "" : _ctx.cancelButtonType,
                            text: _ctx.cancelButtonType === "text",
                            loading: _ctx.cancelButtonLoading,
                            "loading-icon": _ctx.cancelButtonLoadingIcon,
                            class: normalizeClass([_ctx.cancelButtonClass]),
                            round: _ctx.roundButton,
                            size: _ctx.btnSize,
                            onClick: _cache[3] || (_cache[3] = ($event) => _ctx.handleAction("cancel")),
                            onKeydown: _cache[4] || (_cache[4] = withKeys(withModifiers(($event) => _ctx.handleAction("cancel"), ["prevent"]), ["enter"]))
                          }, {
                            default: withCtx(() => [
                              createTextVNode(
                                toDisplayString(_ctx.cancelButtonText || _ctx.t("el.messagebox.cancel")),
                                1
                                /* TEXT */
                              )
                            ]),
                            _: 1
                            /* STABLE */
                          }, 8, ["type", "text", "loading", "loading-icon", "class", "round", "size"])) : createCommentVNode("v-if", true),
                          withDirectives(createVNode(_component_el_button, {
                            ref: "confirmRef",
                            type: _ctx.confirmButtonType === "text" ? "" : _ctx.confirmButtonType,
                            text: _ctx.confirmButtonType === "text",
                            loading: _ctx.confirmButtonLoading,
                            "loading-icon": _ctx.confirmButtonLoadingIcon,
                            class: normalizeClass([_ctx.confirmButtonClasses]),
                            round: _ctx.roundButton,
                            disabled: _ctx.confirmButtonDisabled,
                            size: _ctx.btnSize,
                            onClick: _cache[5] || (_cache[5] = ($event) => _ctx.handleAction("confirm")),
                            onKeydown: _cache[6] || (_cache[6] = withKeys(withModifiers(($event) => _ctx.handleAction("confirm"), ["prevent"]), ["enter"]))
                          }, {
                            default: withCtx(() => [
                              createTextVNode(
                                toDisplayString(_ctx.confirmButtonText || _ctx.t("el.messagebox.confirm")),
                                1
                                /* TEXT */
                              )
                            ]),
                            _: 1
                            /* STABLE */
                          }, 8, ["type", "text", "loading", "loading-icon", "class", "round", "disabled", "size"]), [
                            [vShow, _ctx.showConfirmButton]
                          ])
                        ],
                        2
                        /* CLASS */
                      )
                    ],
                    6
                    /* CLASS, STYLE */
                  )
                ]),
                _: 3
                /* FORWARDED */
              }, 8, ["trapped", "focus-trap-el", "focus-start-el", "onReleaseRequested"])
            ], 42, _hoisted_1$S)
          ]),
          _: 3
          /* FORWARDED */
        }, 8, ["z-index", "overlay-class", "mask"]), [
          [vShow, _ctx.visible]
        ])
      ]),
      _: 3
      /* FORWARDED */
    });
  }
  var MessageBoxConstructor = /* @__PURE__ */ _export_sfc$1(_sfc_main$U, [["render", _sfc_render$1]]);
  const messageInstance = /* @__PURE__ */ new Map();
  const getAppendToElement = (props2) => {
    let appendTo = document.body;
    if (props2.appendTo) {
      if (isString(props2.appendTo)) {
        appendTo = document.querySelector(props2.appendTo);
      }
      if (isElement$1(props2.appendTo)) {
        appendTo = props2.appendTo;
      }
      if (!isElement$1(appendTo)) {
        appendTo = document.body;
      }
    }
    return appendTo;
  };
  const initInstance = (props2, container, appContext = null) => {
    const vnode = createVNode(
      MessageBoxConstructor,
      props2,
      isFunction$1(props2.message) || isVNode(props2.message) ? {
        default: isFunction$1(props2.message) ? props2.message : () => props2.message
      } : null
    );
    vnode.appContext = appContext;
    render(vnode, container);
    getAppendToElement(props2).appendChild(container.firstElementChild);
    return vnode.component;
  };
  const genContainer = () => {
    return document.createElement("div");
  };
  const showMessage = (options, appContext) => {
    const container = genContainer();
    options.onVanish = () => {
      render(null, container);
      messageInstance.delete(vm);
    };
    options.onAction = (action) => {
      const currentMsg = messageInstance.get(vm);
      let resolve2;
      if (options.showInput) {
        resolve2 = { value: vm.inputValue, action };
      } else {
        resolve2 = action;
      }
      if (options.callback) {
        options.callback(resolve2, instance.proxy);
      } else {
        if (action === "cancel" || action === "close") {
          if (options.distinguishCancelAndClose && action !== "cancel") {
            currentMsg.reject("close");
          } else {
            currentMsg.reject("cancel");
          }
        } else {
          currentMsg.resolve(resolve2);
        }
      }
    };
    const instance = initInstance(options, container, appContext);
    const vm = instance.proxy;
    for (const prop in options) {
      if (hasOwn(options, prop) && !hasOwn(vm.$props, prop)) {
        if (prop === "closeIcon" && isObject$2(options[prop])) {
          vm[prop] = markRaw(options[prop]);
        } else {
          vm[prop] = options[prop];
        }
      }
    }
    vm.visible = true;
    return vm;
  };
  function MessageBox(options, appContext = null) {
    if (!isClient) return Promise.reject();
    let callback;
    if (isString(options) || isVNode(options)) {
      options = {
        message: options
      };
    } else {
      callback = options.callback;
    }
    return new Promise((resolve2, reject) => {
      const vm = showMessage(
        options,
        appContext != null ? appContext : MessageBox._context
      );
      messageInstance.set(vm, {
        options,
        callback,
        resolve: resolve2,
        reject
      });
    });
  }
  const MESSAGE_BOX_VARIANTS = ["alert", "confirm", "prompt"];
  const MESSAGE_BOX_DEFAULT_OPTS = {
    alert: { closeOnPressEscape: false, closeOnClickModal: false },
    confirm: { showCancelButton: true },
    prompt: { showCancelButton: true, showInput: true }
  };
  MESSAGE_BOX_VARIANTS.forEach((boxType) => {
    MessageBox[boxType] = messageBoxFactory(
      boxType
    );
  });
  function messageBoxFactory(boxType) {
    return (message2, title, options, appContext) => {
      let titleOrOpts = "";
      if (isObject$2(title)) {
        options = title;
        titleOrOpts = "";
      } else if (isUndefined(title)) {
        titleOrOpts = "";
      } else {
        titleOrOpts = title;
      }
      return MessageBox(
        Object.assign(
          {
            title: titleOrOpts,
            message: message2,
            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 = [
    "primary",
    "success",
    "info",
    "warning",
    "error"
  ];
  const notificationProps = buildProps({
    /**
     * @description custom class name for Notification
     */
    customClass: {
      type: String,
      default: ""
    },
    /**
     * @description whether `message` is treated as HTML string
     */
    dangerouslyUseHTMLString: Boolean,
    /**
     * @description duration before close. It will not automatically close if set 0
     */
    duration: {
      type: Number,
      default: 4500
    },
    /**
     * @description custom icon component. It will be overridden by `type`
     */
    icon: {
      type: iconPropType
    },
    /**
     * @description notification dom id
     */
    id: {
      type: String,
      default: ""
    },
    /**
     * @description description text
     */
    message: {
      type: definePropType([
        String,
        Object,
        Function
      ]),
      default: ""
    },
    /**
     * @description offset from the top edge of the screen. Every Notification instance of the same moment should have the same offset
     */
    offset: {
      type: Number,
      default: 0
    },
    /**
     * @description callback function when notification clicked
     */
    onClick: {
      type: definePropType(Function),
      default: () => void 0
    },
    /**
     * @description callback function when closed
     */
    onClose: {
      type: definePropType(Function),
      required: true
    },
    /**
     * @description custom position
     */
    position: {
      type: String,
      values: ["top-right", "top-left", "bottom-right", "bottom-left"],
      default: "top-right"
    },
    /**
     * @description whether to show a close button
     */
    showClose: {
      type: Boolean,
      default: true
    },
    /**
     * @description title
     */
    title: {
      type: String,
      default: ""
    },
    /**
     * @description notification type
     */
    type: {
      type: String,
      values: [...notificationTypes, ""],
      default: ""
    },
    /**
     * @description initial zIndex
     */
    zIndex: Number,
    /**
     * @description custom close icon, default is Close
     */
    closeIcon: {
      type: iconPropType,
      default: close_default
    }
  });
  const notificationEmits = {
    destroy: () => true
  };
  const _hoisted_1$R = ["id"];
  const _hoisted_2$Q = ["textContent"];
  const _hoisted_3$M = { key: 0 };
  const _hoisted_4$J = ["innerHTML"];
  var _sfc_main$T = /* @__PURE__ */ defineComponent({
    ...{
      name: "ElNotification"
    },
    __name: "notification",
    props: notificationProps,
    emits: notificationEmits,
    setup(__props, { expose: __expose }) {
      const props2 = __props;
      const { ns, zIndex: zIndex2 } = useGlobalComponentSettings("notification");
      const { nextZIndex, currentZIndex } = zIndex2;
      const visible = ref(false);
      let timer = void 0;
      const typeClass = computed(() => {
        const type = props2.type;
        return type && TypeComponentsMap[props2.type] ? ns.m(type) : "";
      });
      const iconComponent = computed(() => {
        if (!props2.type) return props2.icon;
        return TypeComponentsMap[props2.type] || props2.icon;
      });
      const horizontalClass = computed(
        () => props2.position.endsWith("right") ? "right" : "left"
      );
      const verticalProperty = computed(
        () => props2.position.startsWith("top") ? "top" : "bottom"
      );
      const positionStyle = computed(() => {
        var _a;
        return {
          [verticalProperty.value]: `${props2.offset}px`,
          zIndex: (_a = props2.zIndex) != null ? _a : currentZIndex.value
        };
      });
      function startTimer() {
        if (props2.duration > 0) {
          ({ stop: timer } = useTimeoutFn(() => {
            if (visible.value) close2();
          }, props2.duration));
        }
      }
      function clearTimer() {
        timer == null ? void 0 : timer();
      }
      function close2() {
        visible.value = false;
      }
      function onKeydown(event) {
        const code = getEventCode(event);
        switch (code) {
          case EVENT_CODE.delete:
          case EVENT_CODE.backspace:
            clearTimer();
            break;
          case EVENT_CODE.esc:
            if (visible.value) {
              close2();
            }
            break;
          default:
            startTimer();
            break;
        }
      }
      onMounted(() => {
        startTimer();
        nextZIndex();
        visible.value = true;
      });
      useEventListener(document, "keydown", onKeydown);
      __expose({
        visible,
        /** @description close notification */
        close: close2
      });
      return (_ctx, _cache) => {
        return openBlock(), createBlock(Transition, {
          name: unref(ns).b("fade"),
          onBeforeLeave: __props.onClose,
          onAfterLeave: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("destroy")),
          persisted: ""
        }, {
          default: withCtx(() => [
            withDirectives(createBaseVNode("div", {
              id: __props.id,
              class: normalizeClass([unref(ns).b(), __props.customClass, horizontalClass.value]),
              style: normalizeStyle(positionStyle.value),
              role: "alert",
              onMouseenter: clearTimer,
              onMouseleave: startTimer,
              onClick: _cache[0] || (_cache[0] = //@ts-ignore
              (...args) => __props.onClick && __props.onClick(...args))
            }, [
              iconComponent.value ? (openBlock(), createBlock(unref(ElIcon), {
                key: 0,
                class: normalizeClass([unref(ns).e("icon"), typeClass.value])
              }, {
                default: withCtx(() => [
                  (openBlock(), createBlock(resolveDynamicComponent(iconComponent.value)))
                ]),
                _: 1
                /* STABLE */
              }, 8, ["class"])) : createCommentVNode("v-if", true),
              createBaseVNode(
                "div",
                {
                  class: normalizeClass(unref(ns).e("group"))
                },
                [
                  createBaseVNode("h2", {
                    class: normalizeClass(unref(ns).e("title")),
                    textContent: toDisplayString(__props.title)
                  }, null, 10, _hoisted_2$Q),
                  withDirectives(createBaseVNode(
                    "div",
                    {
                      class: normalizeClass(unref(ns).e("content")),
                      style: normalizeStyle(!!__props.title ? void 0 : { margin: 0 })
                    },
                    [
                      renderSlot(_ctx.$slots, "default", {}, () => [
                        !__props.dangerouslyUseHTMLString ? (openBlock(), createElementBlock(
                          "p",
                          _hoisted_3$M,
                          toDisplayString(__props.message),
                          1
                          /* TEXT */
                        )) : (openBlock(), createElementBlock(
                          Fragment,
                          { key: 1 },
                          [
                            createCommentVNode(" Caution here, message could've been compromised, never use user's input as message "),
                            createBaseVNode("p", { innerHTML: __props.message }, null, 8, _hoisted_4$J)
                          ],
                          2112
                          /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
                        ))
                      ])
                    ],
                    6
                    /* CLASS, STYLE */
                  ), [
                    [vShow, __props.message]
                  ]),
                  __props.showClose ? (openBlock(), createBlock(unref(ElIcon), {
                    key: 0,
                    class: normalizeClass(unref(ns).e("closeBtn")),
                    onClick: withModifiers(close2, ["stop"])
                  }, {
                    default: withCtx(() => [
                      (openBlock(), createBlock(resolveDynamicComponent(__props.closeIcon)))
                    ]),
                    _: 1
                    /* STABLE */
                  }, 8, ["class"])) : createCommentVNode("v-if", true)
                ],
                2
                /* CLASS */
              )
            ], 46, _hoisted_1$R), [
              [vShow, visible.value]
            ])
          ]),
          _: 3
          /* FORWARDED */
        }, 8, ["name", "onBeforeLeave"]);
      };
    }
  });
  const notifications$1 = {
    "top-left": [],
    "top-right": [],
    "bottom-left": [],
    "bottom-right": []
  };
  const GAP_SIZE = 16;
  let seed = 1;
  const notify = function(options = {}, context) {
    if (!isClient) return { close: () => void 0 };
    if (isString(options) || isVNode(options)) {
      options = { message: options };
    }
    const position = options.position || "top-right";
    let verticalOffset = options.offset || 0;
    notifications$1[position].forEach(({ vm: vm2 }) => {
      var _a;
      verticalOffset += (((_a = vm2.el) == null ? void 0 : _a.offsetHeight) || 0) + GAP_SIZE;
    });
    verticalOffset += GAP_SIZE;
    const id = `notification_${seed++}`;
    const userOnClose = options.onClose;
    const props2 = {
      ...options,
      offset: verticalOffset,
      id,
      onClose: () => {
        close(id, position, userOnClose);
      }
    };
    let appendTo = document.body;
    if (isElement$1(options.appendTo)) {
      appendTo = options.appendTo;
    } else if (isString(options.appendTo)) {
      appendTo = document.querySelector(options.appendTo);
    }
    if (!isElement$1(appendTo)) {
      appendTo = document.body;
    }
    const container = document.createElement("div");
    const vm = createVNode(
      _sfc_main$T,
      props2,
      isFunction$1(props2.message) ? props2.message : isVNode(props2.message) ? () => props2.message : null
    );
    vm.appContext = isUndefined(context) ? notify._context : context;
    vm.props.onDestroy = () => {
      render(null, container);
    };
    render(vm, container);
    notifications$1[position].push({ vm });
    appendTo.appendChild(container.firstElementChild);
    return {
      // instead of calling the onClose function directly, setting this value so that we can have the full lifecycle
      // for out component, so that all closing steps will not be skipped.
      close: () => {
        vm.component.exposed.visible.value = false;
      }
    };
  };
  notificationTypes.forEach((type) => {
    notify[type] = (options = {}, appContext) => {
      if (isString(options) || isVNode(options)) {
        options = {
          message: options
        };
      }
      return notify({ ...options, type }, appContext);
    };
  });
  function close(id, position, userOnClose) {
    const orientedNotifications = notifications$1[position];
    const idx = orientedNotifications.findIndex(
      ({ vm: vm2 }) => {
        var _a;
        return ((_a = vm2.component) == null ? void 0 : _a.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: component2 } = orientedNotifications[i].vm;
      const pos = Number.parseInt(el.style[verticalPos], 10) - removedHeight - GAP_SIZE;
      component2.props.offset = pos;
    }
  }
  function closeAll() {
    for (const orientedNotifications of Object.values(notifications$1)) {
      orientedNotifications.forEach(({ vm }) => {
        vm.component.exposed.visible.value = false;
      });
    }
  }
  function updateOffsets(position = "top-right") {
    var _a, _b, _c, _d;
    let verticalOffset = ((_c = (_b = (_a = notifications$1[position][0]) == null ? void 0 : _a.vm.component) == null ? void 0 : _b.props) == null ? void 0 : _c.offset) || 0;
    for (const { vm } of notifications$1[position]) {
      vm.component.props.offset = verticalOffset;
      verticalOffset += (((_d = vm.el) == null ? void 0 : _d.offsetHeight) || 0) + GAP_SIZE;
    }
  }
  notify.closeAll = closeAll;
  notify.updateOffsets = updateOffsets;
  notify._context = null;
  const ElNotification = withInstallFunction(notify, "$notify");
  var Plugins = [
    ElInfiniteScroll,
    ElLoading,
    ElMessage,
    ElMessageBox,
    ElNotification,
    ElPopoverDirective
  ];
  var installer = makeInstaller([...Components, ...Plugins]);
  installer.install;
  installer.version;
  const notifications = ref([]);
  const TYPE_TITLE_KEY = {
    success: "notificationSuccess",
    error: "notificationError",
    warning: "notificationWarning",
    info: "notificationInfo"
  };
  function useNotifications() {
    const { t } = useI18n();
    const showNotification = (type, message2, options = {}) => {
      const normalizedType = typeof type === "string" && type.length > 0 ? type : "info";
      const normalizedMessage = message2 ?? "";
      const titleKey = TYPE_TITLE_KEY[normalizedType];
      const defaultTitle = titleKey ? t(titleKey) : normalizedType.charAt(0).toUpperCase() + normalizedType.slice(1);
      const notificationOptions = {
        title: defaultTitle,
        message: normalizedMessage,
        type: normalizedType,
        duration: 5e3,
        position: "top-right",
        ...options
      };
      const instance = ElNotification(notificationOptions);
      const id = Date.now();
      notifications.value.push({
        id,
        type: notificationOptions.type,
        title: notificationOptions.title,
        message: notificationOptions.message,
        duration: notificationOptions.duration,
        position: notificationOptions.position
      });
      return instance;
    };
    const dismissNotification = (id) => {
      notifications.value = notifications.value.filter((n) => n.id !== id);
    };
    return {
      notifications,
      showNotification,
      dismissNotification
    };
  }
  const _export_sfc = (sfc, props2) => {
    const target = sfc.__vccOpts || sfc;
    for (const [key, val] of props2) {
      target[key] = val;
    }
    return target;
  };
  const _hoisted_1$Q = { class: "fixed top-6 right-6 z-50" };
  const _hoisted_2$P = { class: "max-w-5xl mx-auto h-full flex flex-col justify-center" };
  const _hoisted_3$L = {
    class: "step-content p-8 bg-white rounded-lg shadow-sm border border-gray-100 mb-8",
    style: { "min-height": "400px" }
  };
  const _hoisted_4$I = { key: 0 };
  const _hoisted_5$B = { key: 1 };
  const _hoisted_6$k = { key: 2 };
  const _hoisted_7$i = { class: "p-4 text-center" };
  const _hoisted_8$i = { class: "font-bold text-xl mb-2" };
  const _hoisted_9$h = { class: "text-gray-500" };
  const _hoisted_10$e = {
    key: 0,
    class: "absolute top-3 right-3 text-blue-500"
  };
  const _hoisted_11$e = { key: 3 };
  const _hoisted_12$b = { class: "p-6 flex items-start" };
  const _hoisted_13$a = { class: "font-bold text-xl mb-2" };
  const _hoisted_14$8 = { class: "text-gray-500" };
  const _hoisted_15$8 = {
    key: 0,
    class: "absolute top-3 right-3 text-blue-500"
  };
  const _hoisted_16$8 = { class: "flex justify-between items-center px-4 mt-auto" };
  const _sfc_main$S = {
    __name: "OnboardingWizard",
    emits: ["complete"],
    setup(__props, { emit: __emit }) {
      const emit2 = __emit;
      const visible = ref(true);
      const currentStep = ref(0);
      const loading = ref(false);
      const processing = ref(false);
      const config = inject("config");
      const { showNotification } = useNotifications();
      const steps = [
        { title: "Connect" },
        { title: "Chatbot" },
        { title: "Form" },
        { title: "Automation" }
      ];
      const providerModelData = ref({});
      const form = reactive({
        provider: "openai",
        apiKey: "",
        selectedChatModels: [],
        selectedEmbeddingModels: [],
        selectedImageModels: [],
        chatbotName: "My AI Assistant",
        systemPrompt: "You are a helpful AI assistant for our website visitors.",
        selectedFormTemplate: "",
        selectedAutomationTemplate: ""
      });
      const providerSystemId = computed(() => {
        const map2 = { openai: "openai", anthropic: "anthropic", gemini: "google" };
        return map2[form.provider] || form.provider;
      });
      const chatModelGroups = computed(() => {
        const data = providerModelData.value[providerSystemId.value];
        if (!data) return [];
        const merged = mergeSupportedChatModels(providerSystemId.value, data.chat_models || {}, []);
        return getProviderChatModelGroups(providerSystemId.value, merged);
      });
      const embeddingModelOptions = computed(() => {
        const data = providerModelData.value[providerSystemId.value];
        if (!data) return [];
        return Object.entries(data.embedding_models || {}).map(([id, m2]) => ({ id, name: m2.name || id }));
      });
      const imageModelOptions = computed(() => {
        const data = providerModelData.value[providerSystemId.value];
        if (!data) return [];
        return Object.entries(data.image_models || {}).map(([id, m2]) => ({ id, name: m2.name || id }));
      });
      watch(() => form.provider, () => {
        form.selectedChatModels = [];
        form.selectedEmbeddingModels = [];
        form.selectedImageModels = [];
      });
      const formTemplates = ref([]);
      const automationTemplates = [
        { id: "auto_reply", name: "Comment Auto-Reply", description: "Automatically reply to new comments on your posts using AI." },
        { id: "summarize", name: "Post Summarizer", description: "Generate executive summaries for new posts automatically." }
      ];
      onMounted(async () => {
        try {
          const providerResponse = await jQuery.post(config.value.ajaxUrl, {
            action: "kitsune_ai_platform_get_ai_providers",
            nonce: config.value.ajaxNonce
          });
          if (providerResponse.success && providerResponse.data) {
            providerModelData.value = providerResponse.data;
          }
        } catch (e) {
          console.error("Failed to load provider models", e);
        }
        try {
          const response = await jQuery.post(config.value.ajaxUrl, {
            action: "kitsune_ai_platform_get_form_templates",
            nonce: config.value.ajaxNonce
          });
          if (response.success) {
            formTemplates.value = response.data.templates;
            if (formTemplates.value.length > 0) {
              form.selectedFormTemplate = formTemplates.value[0].id;
            }
          }
        } catch (e) {
          console.error("Failed to load templates", e);
        }
        form.selectedAutomationTemplate = automationTemplates[0].id;
      });
      const prevStep = () => {
        if (currentStep.value > 0) currentStep.value--;
      };
      const skipStep = async () => {
        if (currentStep.value === 3) {
          await completeOnboarding();
        } else {
          currentStep.value++;
        }
      };
      const closeWizard = async () => {
        try {
          await jQuery.post(config.value.ajaxUrl, {
            action: "kitsune_ai_platform_complete_onboarding",
            nonce: config.value.ajaxNonce
          });
        } catch (e) {
        }
        emit2("complete");
        visible.value = false;
      };
      const nextStep = async () => {
        processing.value = true;
        try {
          if (currentStep.value === 0) {
            await saveProvider();
          } else if (currentStep.value === 1) {
            await createChatbot();
          } else if (currentStep.value === 2) {
            await createForm();
          } else if (currentStep.value === 3) {
            await createWorkflow();
            await completeOnboarding();
            return;
          }
          if (currentStep.value < 3) {
            currentStep.value++;
          }
        } catch (e) {
          showNotification("error", e.message || "An error occurred");
        } finally {
          processing.value = false;
        }
      };
      const saveProvider = async () => {
        if (!form.apiKey) throw new Error("API Key is required");
        const providerIdMap = { openai: "openai", anthropic: "anthropic", gemini: "google" };
        const providerId = providerIdMap[form.provider];
        const response = await jQuery.post(config.value.ajaxUrl, {
          action: "kitsune_ai_platform_update_provider",
          nonce: config.value.ajaxNonce,
          provider: providerId,
          data: {
            api_key: form.apiKey,
            enabled: true,
            selected_chat_models: form.selectedChatModels,
            selected_embedding_models: form.selectedEmbeddingModels,
            selected_image_models: form.selectedImageModels
          }
        });
        if (!response.success) throw new Error(response.data.message);
      };
      const createChatbot = async () => {
        const response = await jQuery.post(config.value.ajaxUrl, {
          action: "kitsune_ai_platform_create_chatbot",
          nonce: config.value.ajaxNonce,
          name: form.chatbotName,
          system_prompt: form.systemPrompt,
          model: DEFAULT_OPENAI_MODEL
          // default
        });
        if (!response.success) throw new Error(response.data.message);
      };
      const createForm = async () => {
        const template = formTemplates.value.find((t) => t.id === form.selectedFormTemplate);
        if (!template) return;
        const response = await jQuery.post(config.value.ajaxUrl, {
          action: "kitsune_ai_platform_create_form",
          nonce: config.value.ajaxNonce,
          name: template.name,
          fields: template.fields,
          settings: template.settings
        });
        if (!response.success) throw new Error(response.data.message);
      };
      const createWorkflow = async () => {
        const template = automationTemplates.find((t) => t.id === form.selectedAutomationTemplate);
        const workflowData = {
          name: template.name,
          trigger_type: "post_publish",
          // Simplified for demo
          config: {},
          description: template.description
        };
        const response = await jQuery.post(config.value.ajaxUrl, {
          action: "kitsune_ai_platform_save_workflow",
          nonce: config.value.ajaxNonce,
          workflow_data: JSON.stringify(workflowData)
        });
        if (!response.success) throw new Error(response.data.message);
      };
      const completeOnboarding = async () => {
        const response = await jQuery.post(config.value.ajaxUrl, {
          action: "kitsune_ai_platform_complete_onboarding",
          nonce: config.value.ajaxNonce
        });
        if (response.success) {
          emit2("complete");
          visible.value = false;
          showNotification("success", "Your AI Platform is ready to use!", { title: "Setup Complete" });
          setTimeout(() => {
            window.location.reload();
          }, 1500);
        }
      };
      return (_ctx, _cache) => {
        const _component_el_button = resolveComponent("el-button");
        const _component_el_step = resolveComponent("el-step");
        const _component_el_steps = resolveComponent("el-steps");
        const _component_el_option = resolveComponent("el-option");
        const _component_el_select = resolveComponent("el-select");
        const _component_el_form_item = resolveComponent("el-form-item");
        const _component_el_input = resolveComponent("el-input");
        const _component_el_option_group = resolveComponent("el-option-group");
        const _component_el_form = resolveComponent("el-form");
        const _component_el_card = resolveComponent("el-card");
        const _component_el_col = resolveComponent("el-col");
        const _component_el_row = resolveComponent("el-row");
        const _component_el_dialog = resolveComponent("el-dialog");
        const _directive_loading = resolveDirective("loading");
        return openBlock(), createBlock(_component_el_dialog, {
          modelValue: visible.value,
          "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => visible.value = $event),
          title: steps[currentStep.value].title,
          fullscreen: "",
          "close-on-click-modal": false,
          "close-on-press-escape": false,
          "show-close": false,
          class: "onboarding-wizard-fullscreen",
          "align-center": ""
        }, {
          default: withCtx(() => [
            createBaseVNode("div", _hoisted_1$Q, [
              createVNode(_component_el_button, {
                circle: "",
                plain: "",
                size: "large",
                onClick: closeWizard
              }, {
                default: withCtx(() => [..._cache[8] || (_cache[8] = [
                  createBaseVNode("i", { class: "fas fa-times" }, null, -1)
                ])]),
                _: 1
              })
            ]),
            createBaseVNode("div", _hoisted_2$P, [
              createVNode(_component_el_steps, {
                active: currentStep.value,
                "finish-status": "success",
                simple: "",
                style: { "margin-bottom": "40px", "background": "transparent" }
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_step, { title: "Connect" }),
                  createVNode(_component_el_step, { title: "Chatbot" }),
                  createVNode(_component_el_step, { title: "Form" }),
                  createVNode(_component_el_step, { title: "Automation" })
                ]),
                _: 1
              }, 8, ["active"]),
              withDirectives((openBlock(), createElementBlock("div", _hoisted_3$L, [
                currentStep.value === 0 ? (openBlock(), createElementBlock("div", _hoisted_4$I, [
                  _cache[10] || (_cache[10] = createBaseVNode("div", { class: "text-center mb-8" }, [
                    createBaseVNode("h3", { class: "text-2xl font-bold mb-2" }, "Welcome to AI Platform"),
                    createBaseVNode("p", { class: "text-gray-500 text-lg" }, "Let's get you set up by connecting your AI provider.")
                  ], -1)),
                  createVNode(_component_el_form, {
                    "label-position": "top",
                    class: "max-w-lg mx-auto"
                  }, {
                    default: withCtx(() => [
                      createVNode(_component_el_form_item, { label: "Select AI Provider" }, {
                        default: withCtx(() => [
                          createVNode(_component_el_select, {
                            modelValue: form.provider,
                            "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => form.provider = $event),
                            placeholder: "Select Provider",
                            class: "w-full",
                            size: "large"
                          }, {
                            default: withCtx(() => [
                              createVNode(_component_el_option, {
                                label: "OpenAI (GPT-4, GPT-3.5)",
                                value: "openai"
                              }),
                              createVNode(_component_el_option, {
                                label: "Anthropic (Claude)",
                                value: "anthropic"
                              }),
                              createVNode(_component_el_option, {
                                label: "Google Gemini",
                                value: "gemini"
                              })
                            ]),
                            _: 1
                          }, 8, ["modelValue"])
                        ]),
                        _: 1
                      }),
                      createVNode(_component_el_form_item, { label: "API Key" }, {
                        default: withCtx(() => [
                          createVNode(_component_el_input, {
                            modelValue: form.apiKey,
                            "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => form.apiKey = $event),
                            type: "password",
                            "show-password": "",
                            placeholder: "Enter your API Key",
                            size: "large"
                          }, null, 8, ["modelValue"]),
                          _cache[9] || (_cache[9] = createBaseVNode("p", { class: "text-xs text-gray-400 mt-1" }, " Your API key is stored securely and encrypted. ", -1))
                        ]),
                        _: 1
                      }),
                      chatModelGroups.value.length ? (openBlock(), createBlock(_component_el_form_item, {
                        key: 0,
                        label: "Chat Models"
                      }, {
                        default: withCtx(() => [
                          createVNode(_component_el_select, {
                            modelValue: form.selectedChatModels,
                            "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => form.selectedChatModels = $event),
                            multiple: "",
                            "collapse-tags": "",
                            "collapse-tags-tooltip": "",
                            class: "w-full",
                            size: "large",
                            placeholder: "Select chat models"
                          }, {
                            default: withCtx(() => [
                              (openBlock(true), createElementBlock(Fragment, null, renderList(chatModelGroups.value, (group) => {
                                return openBlock(), createBlock(_component_el_option_group, {
                                  key: group.key,
                                  label: group.label
                                }, {
                                  default: withCtx(() => [
                                    (openBlock(true), createElementBlock(Fragment, null, renderList(group.models, (model) => {
                                      return openBlock(), createBlock(_component_el_option, {
                                        key: model.id,
                                        label: model.name,
                                        value: model.id
                                      }, null, 8, ["label", "value"]);
                                    }), 128))
                                  ]),
                                  _: 2
                                }, 1032, ["label"]);
                              }), 128))
                            ]),
                            _: 1
                          }, 8, ["modelValue"])
                        ]),
                        _: 1
                      })) : createCommentVNode("", true),
                      embeddingModelOptions.value.length ? (openBlock(), createBlock(_component_el_form_item, {
                        key: 1,
                        label: "Embedding Models"
                      }, {
                        default: withCtx(() => [
                          createVNode(_component_el_select, {
                            modelValue: form.selectedEmbeddingModels,
                            "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => form.selectedEmbeddingModels = $event),
                            multiple: "",
                            "collapse-tags": "",
                            "collapse-tags-tooltip": "",
                            class: "w-full",
                            size: "large",
                            placeholder: "Select embedding models"
                          }, {
                            default: withCtx(() => [
                              (openBlock(true), createElementBlock(Fragment, null, renderList(embeddingModelOptions.value, (model) => {
                                return openBlock(), createBlock(_component_el_option, {
                                  key: model.id,
                                  label: model.name,
                                  value: model.id
                                }, null, 8, ["label", "value"]);
                              }), 128))
                            ]),
                            _: 1
                          }, 8, ["modelValue"])
                        ]),
                        _: 1
                      })) : createCommentVNode("", true),
                      imageModelOptions.value.length ? (openBlock(), createBlock(_component_el_form_item, {
                        key: 2,
                        label: "Image Generation Models"
                      }, {
                        default: withCtx(() => [
                          createVNode(_component_el_select, {
                            modelValue: form.selectedImageModels,
                            "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => form.selectedImageModels = $event),
                            multiple: "",
                            "collapse-tags": "",
                            "collapse-tags-tooltip": "",
                            class: "w-full",
                            size: "large",
                            placeholder: "Select image generation models"
                          }, {
                            default: withCtx(() => [
                              (openBlock(true), createElementBlock(Fragment, null, renderList(imageModelOptions.value, (model) => {
                                return openBlock(), createBlock(_component_el_option, {
                                  key: model.id,
                                  label: model.name,
                                  value: model.id
                                }, null, 8, ["label", "value"]);
                              }), 128))
                            ]),
                            _: 1
                          }, 8, ["modelValue"])
                        ]),
                        _: 1
                      })) : createCommentVNode("", true)
                    ]),
                    _: 1
                  })
                ])) : createCommentVNode("", true),
                currentStep.value === 1 ? (openBlock(), createElementBlock("div", _hoisted_5$B, [
                  _cache[12] || (_cache[12] = createBaseVNode("div", { class: "text-center mb-8" }, [
                    createBaseVNode("h3", { class: "text-2xl font-bold mb-2" }, "Create Your AI Assistant"),
                    createBaseVNode("p", { class: "text-gray-500 text-lg" }, "Configure your first chatbot.")
                  ], -1)),
                  createVNode(_component_el_form, {
                    "label-position": "top",
                    class: "max-w-lg mx-auto"
                  }, {
                    default: withCtx(() => [
                      createVNode(_component_el_form_item, { label: "Chatbot Name" }, {
                        default: withCtx(() => [
                          createVNode(_component_el_input, {
                            modelValue: form.chatbotName,
                            "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => form.chatbotName = $event),
                            placeholder: "e.g. Support Assistant",
                            size: "large"
                          }, null, 8, ["modelValue"])
                        ]),
                        _: 1
                      }),
                      createVNode(_component_el_form_item, { label: "System Prompt (Instructions)" }, {
                        default: withCtx(() => [
                          createVNode(_component_el_input, {
                            modelValue: form.systemPrompt,
                            "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => form.systemPrompt = $event),
                            type: "textarea",
                            rows: 6,
                            placeholder: "You are a helpful assistant for our website..."
                          }, null, 8, ["modelValue"]),
                          _cache[11] || (_cache[11] = createBaseVNode("p", { class: "text-xs text-gray-400 mt-1" }, " Define the personality and role of your chatbot. ", -1))
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  })
                ])) : createCommentVNode("", true),
                currentStep.value === 2 ? (openBlock(), createElementBlock("div", _hoisted_6$k, [
                  _cache[15] || (_cache[15] = createBaseVNode("div", { class: "text-center mb-8" }, [
                    createBaseVNode("h3", { class: "text-2xl font-bold mb-2" }, "Choose a Form Template"),
                    createBaseVNode("p", { class: "text-gray-500 text-lg" }, "Select a pre-built AI form to start with.")
                  ], -1)),
                  createVNode(_component_el_row, { gutter: 32 }, {
                    default: withCtx(() => [
                      (openBlock(true), createElementBlock(Fragment, null, renderList(formTemplates.value, (template) => {
                        return openBlock(), createBlock(_component_el_col, {
                          key: template.id,
                          span: 24,
                          md: 8
                        }, {
                          default: withCtx(() => [
                            createVNode(_component_el_card, {
                              class: normalizeClass(["cursor-pointer hover:shadow-xl transition-all relative overflow-visible h-full", { "border-blue-500 ring-2 ring-blue-500 transform scale-105": form.selectedFormTemplate === template.id }]),
                              onClick: ($event) => form.selectedFormTemplate = template.id
                            }, {
                              default: withCtx(() => [
                                createBaseVNode("div", _hoisted_7$i, [
                                  _cache[13] || (_cache[13] = createBaseVNode("i", { class: "fas fa-file-alt text-4xl text-blue-500 mb-4" }, null, -1)),
                                  createBaseVNode("h4", _hoisted_8$i, toDisplayString(template.name), 1),
                                  createBaseVNode("p", _hoisted_9$h, toDisplayString(template.description), 1)
                                ]),
                                form.selectedFormTemplate === template.id ? (openBlock(), createElementBlock("div", _hoisted_10$e, [..._cache[14] || (_cache[14] = [
                                  createBaseVNode("i", { class: "fas fa-check-circle text-2xl" }, null, -1)
                                ])])) : createCommentVNode("", true)
                              ]),
                              _: 2
                            }, 1032, ["class", "onClick"])
                          ]),
                          _: 2
                        }, 1024);
                      }), 128))
                    ]),
                    _: 1
                  })
                ])) : createCommentVNode("", true),
                currentStep.value === 3 ? (openBlock(), createElementBlock("div", _hoisted_11$e, [
                  _cache[18] || (_cache[18] = createBaseVNode("div", { class: "text-center mb-8" }, [
                    createBaseVNode("h3", { class: "text-2xl font-bold mb-2" }, "Select an Automation"),
                    createBaseVNode("p", { class: "text-gray-500 text-lg" }, "Automate tasks with these workflows.")
                  ], -1)),
                  createVNode(_component_el_row, {
                    gutter: 32,
                    class: "max-w-5xl mx-auto"
                  }, {
                    default: withCtx(() => [
                      (openBlock(), createElementBlock(Fragment, null, renderList(automationTemplates, (template) => {
                        return createVNode(_component_el_col, {
                          key: template.id,
                          span: 24,
                          md: 12
                        }, {
                          default: withCtx(() => [
                            createVNode(_component_el_card, {
                              class: normalizeClass(["cursor-pointer hover:shadow-xl transition-all relative", { "border-blue-500 ring-2 ring-blue-500 transform scale-105": form.selectedAutomationTemplate === template.id }]),
                              onClick: ($event) => form.selectedAutomationTemplate = template.id
                            }, {
                              default: withCtx(() => [
                                createBaseVNode("div", _hoisted_12$b, [
                                  _cache[16] || (_cache[16] = createBaseVNode("div", { class: "mr-6 mt-1" }, [
                                    createBaseVNode("i", { class: "fas fa-robot text-4xl text-purple-500" })
                                  ], -1)),
                                  createBaseVNode("div", null, [
                                    createBaseVNode("h4", _hoisted_13$a, toDisplayString(template.name), 1),
                                    createBaseVNode("p", _hoisted_14$8, toDisplayString(template.description), 1)
                                  ])
                                ]),
                                form.selectedAutomationTemplate === template.id ? (openBlock(), createElementBlock("div", _hoisted_15$8, [..._cache[17] || (_cache[17] = [
                                  createBaseVNode("i", { class: "fas fa-check-circle text-2xl" }, null, -1)
                                ])])) : createCommentVNode("", true)
                              ]),
                              _: 2
                            }, 1032, ["class", "onClick"])
                          ]),
                          _: 2
                        }, 1024);
                      }), 64))
                    ]),
                    _: 1
                  })
                ])) : createCommentVNode("", true)
              ])), [
                [_directive_loading, loading.value]
              ]),
              createBaseVNode("div", _hoisted_16$8, [
                createBaseVNode("div", null, [
                  currentStep.value > 0 ? (openBlock(), createBlock(_component_el_button, {
                    key: 0,
                    onClick: prevStep,
                    disabled: processing.value,
                    size: "large"
                  }, {
                    default: withCtx(() => [..._cache[19] || (_cache[19] = [
                      createTextVNode("Back", -1)
                    ])]),
                    _: 1
                  }, 8, ["disabled"])) : createCommentVNode("", true)
                ]),
                createBaseVNode("div", null, [
                  createVNode(_component_el_button, {
                    onClick: closeWizard,
                    disabled: processing.value,
                    size: "large"
                  }, {
                    default: withCtx(() => [..._cache[20] || (_cache[20] = [
                      createTextVNode("Close", -1)
                    ])]),
                    _: 1
                  }, 8, ["disabled"]),
                  currentStep.value === 2 || currentStep.value === 3 ? (openBlock(), createBlock(_component_el_button, {
                    key: 0,
                    onClick: skipStep,
                    disabled: processing.value,
                    size: "large"
                  }, {
                    default: withCtx(() => [..._cache[21] || (_cache[21] = [
                      createTextVNode("Skip", -1)
                    ])]),
                    _: 1
                  }, 8, ["disabled"])) : createCommentVNode("", true),
                  createVNode(_component_el_button, {
                    type: "primary",
                    onClick: nextStep,
                    loading: processing.value,
                    size: "large"
                  }, {
                    default: withCtx(() => [
                      createTextVNode(toDisplayString(currentStep.value === 3 ? "Finish Setup" : "Next Step"), 1)
                    ]),
                    _: 1
                  }, 8, ["loading"])
                ])
              ])
            ])
          ]),
          _: 1
        }, 8, ["modelValue", "title"]);
      };
    }
  };
  const OnboardingWizard = /* @__PURE__ */ _export_sfc(_sfc_main$S, [["__scopeId", "data-v-ebaeb9fc"]]);
  const _hoisted_1$P = { class: "px-6 py-4" };
  const _hoisted_2$O = { class: "mb-2" };
  const _hoisted_3$K = { class: "text-2xl font-bold text-gray-900" };
  const _hoisted_4$H = { class: "text-gray-600 mt-1" };
  const _hoisted_5$A = { class: "flex items-center justify-between" };
  const _hoisted_6$j = { class: "text-2xl font-bold mb-2 text-gray-900" };
  const _hoisted_7$h = { class: "mb-4 text-gray-600" };
  const _hoisted_8$h = { class: "flex space-x-3" };
  const _hoisted_9$g = { class: "flex items-center justify-between" };
  const _hoisted_10$d = { class: "text-sm text-gray-600" };
  const _hoisted_11$d = { class: "text-3xl font-bold text-gray-800 mt-2" };
  const _hoisted_12$a = { class: "text-sm text-gray-600" };
  const _hoisted_13$9 = { class: "text-3xl font-bold text-gray-800 mt-2" };
  const _hoisted_14$7 = { class: "text-xs text-purple-600 mt-2 font-medium" };
  const _hoisted_15$7 = { class: "flex items-center justify-between" };
  const _hoisted_16$7 = { class: "text-sm text-gray-600" };
  const _hoisted_17$7 = { class: "text-3xl font-bold text-gray-800 mt-2" };
  const _hoisted_18$6 = { class: "text-xs text-gray-500 mt-2" };
  const _hoisted_19$6 = { class: "flex items-center justify-between" };
  const _hoisted_20$6 = { class: "text-sm text-gray-600" };
  const _hoisted_21$6 = { class: "text-3xl font-bold text-gray-800 mt-2" };
  const _hoisted_22$6 = { class: "flex items-center justify-between" };
  const _hoisted_23$4 = { class: "text-lg font-semibold text-gray-800" };
  const _hoisted_24$4 = { class: "h-64 flex items-center justify-center text-gray-400" };
  const _sfc_main$R = {
    __name: "Dashboard",
    setup(__props) {
      const config = inject("config");
      const stats = inject("stats");
      const isNewUser = inject("isNewUser");
      inject("startOnboarding");
      const t = inject("t", (k) => k);
      const { navigateTo } = useNavigation();
      const { getAnalytics } = useAnalyticsAPI();
      const dismissWelcomeWidget = async () => {
        isNewUser.value = false;
        if (config.value && config.value.settings) {
          config.value.settings.welcome_dismissed = true;
        }
        try {
          await jQuery.post(config.value.ajaxUrl, {
            action: "kitsune_ai_platform_save_settings",
            nonce: config.value.ajaxNonce,
            settings: config.value.settings
          });
        } catch (error) {
          console.error("Failed to save welcome widget state:", error);
        }
      };
      const chartPeriod = ref("30days");
      const chartCanvas = ref(null);
      let usageChart = null;
      const chartLoading = ref(false);
      const tokenLimit = computed(() => {
        const limit = config?.value?.settings?.token_limit ?? config?.value?.settings?.budget_limit ?? 0;
        return Number(limit) || 0;
      });
      const tokenQuotaPercent = computed(() => {
        if (!tokenLimit.value) return 0;
        const used = Number(stats?.value?.tokens ?? 0) || 0;
        return Math.min(100, Math.round(used / tokenLimit.value * 100));
      });
      const loadChartData = async () => {
        if (!chartCanvas.value) return;
        chartLoading.value = true;
        try {
          const response = await getAnalytics({ period: chartPeriod.value });
          const chartData = response?.data?.chart_data || { labels: [], data: [] };
          initializeChart(chartData.labels, chartData.data);
        } catch (error) {
          console.error("Failed to load chart data:", error);
          initializeChart([], []);
        } finally {
          chartLoading.value = false;
        }
      };
      const initializeChart = (labels, data) => {
        if (typeof Chart === "undefined") {
          console.warn("Chart.js not loaded");
          return;
        }
        if (!chartCanvas.value) return;
        const ctx = chartCanvas.value.getContext("2d");
        if (usageChart) {
          usageChart.destroy();
        }
        usageChart = new Chart(ctx, {
          type: "line",
          data: {
            labels,
            datasets: [{
              label: "AI Requests",
              data,
              borderColor: "rgb(59, 130, 246)",
              backgroundColor: "rgba(59, 130, 246, 0.1)",
              tension: 0.4,
              fill: true
            }]
          },
          options: {
            responsive: true,
            maintainAspectRatio: false,
            plugins: {
              legend: {
                display: false
              }
            },
            scales: {
              y: {
                beginAtZero: true
              }
            }
          }
        });
      };
      watch(chartPeriod, () => {
        nextTick(() => {
          loadChartData();
        });
      });
      onMounted(() => {
        loadChartData();
      });
      return (_ctx, _cache) => {
        const _component_ChatDotRound = resolveComponent("ChatDotRound");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_button = resolveComponent("el-button");
        const _component_Close = resolveComponent("Close");
        const _component_el_card = resolveComponent("el-card");
        const _component_TrendCharts = resolveComponent("TrendCharts");
        const _component_el_col = resolveComponent("el-col");
        const _component_Document = resolveComponent("Document");
        const _component_el_row = resolveComponent("el-row");
        const _component_el_radio_button = resolveComponent("el-radio-button");
        const _component_el_radio_group = resolveComponent("el-radio-group");
        return openBlock(), createElementBlock("div", _hoisted_1$P, [
          createBaseVNode("div", _hoisted_2$O, [
            createBaseVNode("h1", _hoisted_3$K, toDisplayString(unref(t)("navDashboard")), 1),
            createBaseVNode("p", _hoisted_4$H, toDisplayString(unref(t)("dashboardSubtitle")), 1)
          ]),
          unref(isNewUser) ? (openBlock(), createBlock(_component_el_card, {
            key: 0,
            shadow: "never",
            class: "mb-6"
          }, {
            default: withCtx(() => [
              createBaseVNode("div", _hoisted_5$A, [
                createBaseVNode("div", null, [
                  createBaseVNode("h3", _hoisted_6$j, toDisplayString(unref(t)("welcomeToAIPlatform")), 1),
                  createBaseVNode("p", _hoisted_7$h, toDisplayString(unref(t)("welcomeSubtitle")), 1),
                  createBaseVNode("div", _hoisted_8$h, [
                    createVNode(_component_el_button, {
                      type: "primary",
                      onClick: _cache[0] || (_cache[0] = ($event) => unref(navigateTo)("chatbots", "create"))
                    }, {
                      default: withCtx(() => [
                        createVNode(_component_el_icon, { class: "mr-2" }, {
                          default: withCtx(() => [
                            createVNode(_component_ChatDotRound)
                          ]),
                          _: 1
                        }),
                        createTextVNode(toDisplayString(unref(t)("createChatbot")), 1)
                      ]),
                      _: 1
                    })
                  ])
                ]),
                createVNode(_component_el_button, {
                  link: "",
                  type: "info",
                  size: "small",
                  onClick: dismissWelcomeWidget
                }, {
                  default: withCtx(() => [
                    createVNode(_component_el_icon, null, {
                      default: withCtx(() => [
                        createVNode(_component_Close)
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                })
              ])
            ]),
            _: 1
          })) : createCommentVNode("", true),
          createVNode(_component_el_row, {
            gutter: 20,
            class: "mb-8"
          }, {
            default: withCtx(() => [
              createVNode(_component_el_col, {
                xs: 24,
                sm: 12,
                lg: 6
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_card, { shadow: "hover" }, {
                    default: withCtx(() => [
                      createBaseVNode("div", _hoisted_9$g, [
                        createBaseVNode("div", null, [
                          createBaseVNode("p", _hoisted_10$d, toDisplayString(unref(t)("aiRequestsMonth")), 1),
                          createBaseVNode("p", _hoisted_11$d, toDisplayString(unref(stats).requests || 0), 1)
                        ]),
                        createVNode(_component_el_icon, { class: "text-blue-600 text-3xl" }, {
                          default: withCtx(() => [
                            createVNode(_component_TrendCharts)
                          ]),
                          _: 1
                        })
                      ])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }),
              createVNode(_component_el_col, {
                xs: 24,
                sm: 12,
                lg: 6
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_card, { shadow: "hover" }, {
                    default: withCtx(() => [
                      createBaseVNode("div", null, [
                        createBaseVNode("p", _hoisted_12$a, toDisplayString(unref(t)("tokensConsumed")), 1),
                        createBaseVNode("p", _hoisted_13$9, toDisplayString((unref(stats).tokens || 0).toLocaleString()), 1),
                        createBaseVNode("p", _hoisted_14$7, toDisplayString(tokenQuotaPercent.value) + toDisplayString(unref(t)("ofMonthlyQuota")), 1)
                      ])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }),
              createVNode(_component_el_col, {
                xs: 24,
                sm: 12,
                lg: 6
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_card, { shadow: "hover" }, {
                    default: withCtx(() => [
                      createBaseVNode("div", _hoisted_15$7, [
                        createBaseVNode("div", null, [
                          createBaseVNode("p", _hoisted_16$7, toDisplayString(unref(t)("activeChatbots")), 1),
                          createBaseVNode("p", _hoisted_17$7, toDisplayString(unref(stats).chatbots || 0), 1),
                          createBaseVNode("p", _hoisted_18$6, toDisplayString(unref(stats).chatbot_conversations || 0) + " " + toDisplayString(unref(t)("conversations")), 1)
                        ]),
                        createVNode(_component_el_icon, { class: "text-purple-600 text-3xl" }, {
                          default: withCtx(() => [
                            createVNode(_component_ChatDotRound)
                          ]),
                          _: 1
                        })
                      ])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }),
              createVNode(_component_el_col, {
                xs: 24,
                sm: 12,
                lg: 6
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_card, { shadow: "hover" }, {
                    default: withCtx(() => [
                      createBaseVNode("div", _hoisted_19$6, [
                        createBaseVNode("div", null, [
                          createBaseVNode("p", _hoisted_20$6, toDisplayString(unref(t)("contentGenerated")), 1),
                          createBaseVNode("p", _hoisted_21$6, toDisplayString(unref(stats).content || 0), 1)
                        ]),
                        createVNode(_component_el_icon, { class: "text-orange-600 text-3xl" }, {
                          default: withCtx(() => [
                            createVNode(_component_Document)
                          ]),
                          _: 1
                        })
                      ])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              })
            ]),
            _: 1
          }),
          createVNode(_component_el_row, {
            gutter: 24,
            class: "mb-8"
          }, {
            default: withCtx(() => [
              createVNode(_component_el_col, {
                span: 24,
                lg: 24
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_card, { shadow: "never" }, {
                    header: withCtx(() => [
                      createBaseVNode("div", _hoisted_22$6, [
                        createBaseVNode("h3", _hoisted_23$4, toDisplayString(unref(t)("usageOverTime")), 1),
                        createVNode(_component_el_radio_group, {
                          modelValue: chartPeriod.value,
                          "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => chartPeriod.value = $event),
                          size: "small"
                        }, {
                          default: withCtx(() => [
                            createVNode(_component_el_radio_button, { label: "7days" }, {
                              default: withCtx(() => [
                                createTextVNode(toDisplayString(unref(t)("days7")), 1)
                              ]),
                              _: 1
                            }),
                            createVNode(_component_el_radio_button, { label: "30days" }, {
                              default: withCtx(() => [
                                createTextVNode(toDisplayString(unref(t)("days30")), 1)
                              ]),
                              _: 1
                            }),
                            createVNode(_component_el_radio_button, { label: "90days" }, {
                              default: withCtx(() => [
                                createTextVNode(toDisplayString(unref(t)("days90")), 1)
                              ]),
                              _: 1
                            })
                          ]),
                          _: 1
                        }, 8, ["modelValue"])
                      ])
                    ]),
                    default: withCtx(() => [
                      createBaseVNode("div", _hoisted_24$4, [
                        createBaseVNode("canvas", {
                          ref_key: "chartCanvas",
                          ref: chartCanvas
                        }, null, 512)
                      ])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              })
            ]),
            _: 1
          })
        ]);
      };
    }
  };
  function useChatbotsAPI() {
    const getChatbots = async (params = {}) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_get_chatbots", params, "GET");
        return { success: true, data: response.chatbots, total: response.total };
      } catch (error) {
        console.error("Error fetching chatbots:", error);
        return { success: false, message: error.message };
      }
    };
    const getChatbot = async (id) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_get_chatbot", { id }, "GET");
        return { success: true, data: response };
      } catch (error) {
        console.error("Error fetching chatbot:", error);
        return { success: false, message: error.message };
      }
    };
    const createChatbot = async (data) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_create_chatbot", { data });
        return { success: true, data: response.chatbot, message: response.message };
      } catch (error) {
        console.error("Error creating chatbot:", error);
        return { success: false, message: error.message };
      }
    };
    const updateChatbot = async (id, data) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_update_chatbot", { id, data });
        return { success: true, data: response.chatbot, message: response.message };
      } catch (error) {
        console.error("Error updating chatbot:", error);
        return { success: false, message: error.message };
      }
    };
    const deleteChatbot = async (id) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_delete_chatbot", { id });
        return { success: true, message: response.message };
      } catch (error) {
        console.error("Error deleting chatbot:", error);
        return { success: false, message: error.message };
      }
    };
    const duplicateChatbot = async (id) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_duplicate_chatbot", { id });
        return { success: true, data: response.chatbot, message: response.message };
      } catch (error) {
        console.error("Error duplicating chatbot:", error);
        return { success: false, message: error.message };
      }
    };
    const getChatbotStats = async (id) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_get_chatbot_stats", { id }, "GET");
        return { success: true, data: response };
      } catch (error) {
        console.error("Error fetching chatbot stats:", error);
        return { success: false, message: error.message };
      }
    };
    const getChatbotTemplates = async () => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_get_chatbot_templates", {}, "GET");
        return { success: true, data: response };
      } catch (error) {
        console.error("Error fetching templates:", error);
        return { success: false, message: error.message };
      }
    };
    const createChatbotTemplate = async (data) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_create_chatbot_template", { data });
        return { success: true, data: response };
      } catch (error) {
        console.error("Error creating template:", error);
        return { success: false, message: error.message };
      }
    };
    const deleteChatbotTemplate = async (id) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_delete_chatbot_template", { id });
        return { success: true, message: response.message };
      } catch (error) {
        console.error("Error deleting template:", error);
        return { success: false, message: error.message };
      }
    };
    const getConversationLogs = async (params = {}) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_get_conversation_logs", params, "GET");
        return { success: true, data: response.logs, total: response.total };
      } catch (error) {
        console.error("Error fetching conversation logs:", error);
        return { success: false, message: error.message };
      }
    };
    const previewChatbotMessage = async (data) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_chatbot_preview_message", { data });
        return { success: true, data: response };
      } catch (error) {
        console.error("Error previewing chatbot message:", error);
        return { success: false, message: error.message };
      }
    };
    const getChatbotAvatarIcons = async () => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_get_chatbot_avatar_icons", {}, "GET");
        return { success: true, data: response.icons || [] };
      } catch (error) {
        console.error("Error fetching chatbot avatar icons:", error);
        return { success: false, message: error.message };
      }
    };
    const uploadChatbotAvatar = async (file) => {
      try {
        const formData = new FormData();
        formData.append("action", "kitsune_ai_platform_upload_chatbot_avatar");
        formData.append("nonce", window.kitsuneAiPlatformConfig.ajaxNonce);
        formData.append("avatar", file);
        const response = await fetch(window.kitsuneAiPlatformConfig.ajaxUrl, {
          method: "POST",
          body: formData
        });
        const result = await response.json();
        if (!result.success) {
          throw new Error(result.data?.message || "Failed to upload avatar");
        }
        return { success: true, data: result.data };
      } catch (error) {
        console.error("Error uploading chatbot avatar:", error);
        return { success: false, message: error.message };
      }
    };
    return {
      getChatbots,
      getChatbot,
      createChatbot,
      updateChatbot,
      deleteChatbot,
      duplicateChatbot,
      getChatbotStats,
      getChatbotTemplates,
      createChatbotTemplate,
      deleteChatbotTemplate,
      getConversationLogs,
      previewChatbotMessage,
      getChatbotAvatarIcons,
      uploadChatbotAvatar
    };
  }
  const _hoisted_1$O = { class: "pt-2" };
  const _hoisted_2$N = { class: "mb-4" };
  const _hoisted_3$J = { class: "flex items-start justify-between gap-3" };
  const _hoisted_4$G = { class: "min-w-0" };
  const _hoisted_5$z = { class: "font-semibold text-lg text-gray-900 truncate" };
  const _hoisted_6$i = { class: "flex items-center mt-1" };
  const _hoisted_7$g = ["src"];
  const _hoisted_8$g = { class: "text-sm text-gray-500 mb-4 line-clamp-2 h-10" };
  const _hoisted_9$f = { class: "space-y-2 mb-6" };
  const _hoisted_10$c = { class: "flex justify-between text-sm" };
  const _hoisted_11$c = { class: "font-medium" };
  const _hoisted_12$9 = {
    key: 0,
    class: "flex justify-between text-sm"
  };
  const _hoisted_13$8 = { class: "flex items-center" };
  const _hoisted_14$6 = { class: "font-medium text-yellow-600 mr-1" };
  const _hoisted_15$6 = { class: "flex justify-between text-sm" };
  const _hoisted_16$6 = { class: "flex justify-between text-sm" };
  const _hoisted_17$6 = { class: "font-medium" };
  const _sfc_main$Q = {
    __name: "ChatbotCardList",
    props: {
      chatbots: {
        type: Array,
        default: () => []
      }
    },
    emits: ["edit", "command"],
    setup(__props, { emit: __emit }) {
      const emit2 = __emit;
      const pluginUrl = window.kitsuneAiPlatformConfig?.pluginUrl || "";
      const avatarIconMap = {
        chat: `${pluginUrl}public/assets/icon/chat.svg`,
        service: `${pluginUrl}public/assets/icon/service.svg`,
        ai: `${pluginUrl}public/assets/icon/ai.svg`
      };
      const emitCommand = (command, chatbot) => {
        emit2("command", command, chatbot);
      };
      const parseChatbotConfig = (chatbot) => {
        let config = chatbot?.config;
        if (typeof config === "string") {
          try {
            config = JSON.parse(config);
          } catch (e) {
            config = {};
          }
        }
        return config && typeof config === "object" && !Array.isArray(config) ? config : {};
      };
      const normalizeLegacyAvatarValue = (value) => {
        const legacyMap = {
          ChatDotRound: "chat",
          CustomChat: "chat",
          Service: "service",
          CustomService: "service",
          Cpu: "ai",
          CustomAI: "ai"
        };
        if (!value || typeof value !== "string") {
          return "chat";
        }
        if (value.startsWith("http")) {
          return value;
        }
        return legacyMap[value] || value;
      };
      const resolveAvatarUrl = (chatbot) => {
        const primaryAvatar = chatbot?.avatar;
        const configAvatar = parseChatbotConfig(chatbot)?.avatar;
        const avatarValue = normalizeLegacyAvatarValue(primaryAvatar || configAvatar || "chat");
        if (avatarValue.startsWith("http")) {
          return avatarValue;
        }
        return avatarIconMap[avatarValue] || avatarIconMap.chat;
      };
      const getModelName = (chatbot) => {
        if (chatbot.model) return chatbot.model;
        const config = parseChatbotConfig(chatbot);
        return config?.aiConfig?.model || "GPT-4";
      };
      return (_ctx, _cache) => {
        const _component_el_tag = resolveComponent("el-tag");
        const _component_el_avatar = resolveComponent("el-avatar");
        const _component_StarFilled = resolveComponent("StarFilled");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_CircleClose = resolveComponent("CircleClose");
        const _component_CircleCheck = resolveComponent("CircleCheck");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_col = resolveComponent("el-col");
        const _component_CopyDocument = resolveComponent("CopyDocument");
        const _component_Edit = resolveComponent("Edit");
        const _component_Delete = resolveComponent("Delete");
        const _component_el_row = resolveComponent("el-row");
        const _component_el_card = resolveComponent("el-card");
        return openBlock(), createBlock(_component_el_row, { gutter: 24 }, {
          default: withCtx(() => [
            (openBlock(true), createElementBlock(Fragment, null, renderList(__props.chatbots, (chatbot) => {
              return openBlock(), createBlock(_component_el_col, {
                key: chatbot.id,
                span: 24,
                md: 12,
                lg: 8
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_card, {
                    shadow: "hover",
                    class: "relative transition-all"
                  }, {
                    default: withCtx(() => [
                      createBaseVNode("div", _hoisted_1$O, [
                        createBaseVNode("div", _hoisted_2$N, [
                          createBaseVNode("div", _hoisted_3$J, [
                            createBaseVNode("div", _hoisted_4$G, [
                              createBaseVNode("h3", _hoisted_5$z, toDisplayString(chatbot.name), 1),
                              createBaseVNode("div", _hoisted_6$i, [
                                createVNode(_component_el_tag, {
                                  size: "small",
                                  type: chatbot.status === "active" ? "success" : "info",
                                  effect: "dark",
                                  class: "capitalize border-none"
                                }, {
                                  default: withCtx(() => [
                                    createTextVNode(toDisplayString(chatbot.status), 1)
                                  ]),
                                  _: 2
                                }, 1032, ["type"])
                              ])
                            ]),
                            createVNode(_component_el_avatar, {
                              size: 50,
                              class: "text-2xl shrink-0",
                              style: { background: "linear-gradient(to bottom right, #eff6ff, #f3e8ff)" }
                            }, {
                              default: withCtx(() => [
                                createBaseVNode("img", {
                                  src: resolveAvatarUrl(chatbot),
                                  alt: "Avatar",
                                  class: "w-full h-full object-cover"
                                }, null, 8, _hoisted_7$g)
                              ]),
                              _: 2
                            }, 1024)
                          ])
                        ]),
                        createBaseVNode("p", _hoisted_8$g, toDisplayString(chatbot.description), 1),
                        createBaseVNode("div", _hoisted_9$f, [
                          createBaseVNode("div", _hoisted_10$c, [
                            _cache[0] || (_cache[0] = createBaseVNode("span", { class: "text-gray-500" }, "Messages", -1)),
                            createBaseVNode("span", _hoisted_11$c, toDisplayString((chatbot.message_count ?? 0).toLocaleString()), 1)
                          ]),
                          chatbot.config?.features?.userFeedback ? (openBlock(), createElementBlock("div", _hoisted_12$9, [
                            _cache[1] || (_cache[1] = createBaseVNode("span", { class: "text-gray-500" }, "Satisfaction", -1)),
                            createBaseVNode("div", _hoisted_13$8, [
                              createBaseVNode("span", _hoisted_14$6, toDisplayString(chatbot.satisfaction ?? "-"), 1),
                              createVNode(_component_el_icon, { class: "text-yellow-400 text-xs" }, {
                                default: withCtx(() => [
                                  createVNode(_component_StarFilled)
                                ]),
                                _: 1
                              })
                            ])
                          ])) : createCommentVNode("", true),
                          createBaseVNode("div", _hoisted_15$6, [
                            _cache[2] || (_cache[2] = createBaseVNode("span", { class: "text-gray-500" }, "Model", -1)),
                            createVNode(_component_el_tag, {
                              type: "info",
                              size: "small"
                            }, {
                              default: withCtx(() => [
                                createTextVNode(toDisplayString(getModelName(chatbot)), 1)
                              ]),
                              _: 2
                            }, 1024)
                          ]),
                          createBaseVNode("div", _hoisted_16$6, [
                            _cache[3] || (_cache[3] = createBaseVNode("span", { class: "text-gray-500" }, "Last Active", -1)),
                            createBaseVNode("span", _hoisted_17$6, toDisplayString(chatbot.last_message_at || chatbot.last_active || "Never"), 1)
                          ])
                        ]),
                        createVNode(_component_el_row, { gutter: 8 }, {
                          default: withCtx(() => [
                            createVNode(_component_el_col, { span: 12 }, {
                              default: withCtx(() => [
                                createVNode(_component_el_button, {
                                  plain: "",
                                  class: "w-full",
                                  onClick: withModifiers(($event) => emitCommand(chatbot.status === "active" ? "deactivate" : "activate", chatbot), ["stop"])
                                }, {
                                  default: withCtx(() => [
                                    createVNode(_component_el_icon, { class: "mr-1" }, {
                                      default: withCtx(() => [
                                        chatbot.status === "active" ? (openBlock(), createBlock(_component_CircleClose, { key: 0 })) : (openBlock(), createBlock(_component_CircleCheck, { key: 1 }))
                                      ]),
                                      _: 2
                                    }, 1024),
                                    createTextVNode(" " + toDisplayString(chatbot.status === "active" ? "Deactivate" : "Activate"), 1)
                                  ]),
                                  _: 2
                                }, 1032, ["onClick"])
                              ]),
                              _: 2
                            }, 1024),
                            createVNode(_component_el_col, { span: 12 }, {
                              default: withCtx(() => [
                                createVNode(_component_el_button, {
                                  plain: "",
                                  class: "w-full",
                                  onClick: withModifiers(($event) => emitCommand("duplicate", chatbot), ["stop"])
                                }, {
                                  default: withCtx(() => [
                                    createVNode(_component_el_icon, { class: "mr-1" }, {
                                      default: withCtx(() => [
                                        createVNode(_component_CopyDocument)
                                      ]),
                                      _: 1
                                    }),
                                    _cache[4] || (_cache[4] = createTextVNode(" Duplicate ", -1))
                                  ]),
                                  _: 1
                                }, 8, ["onClick"])
                              ]),
                              _: 2
                            }, 1024),
                            createVNode(_component_el_col, {
                              span: 12,
                              class: "mt-2"
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_button, {
                                  type: "primary",
                                  plain: "",
                                  class: "w-full",
                                  onClick: withModifiers(($event) => _ctx.$emit("edit", chatbot.id), ["stop"])
                                }, {
                                  default: withCtx(() => [
                                    createVNode(_component_el_icon, { class: "mr-1" }, {
                                      default: withCtx(() => [
                                        createVNode(_component_Edit)
                                      ]),
                                      _: 1
                                    }),
                                    _cache[5] || (_cache[5] = createTextVNode(" Edit ", -1))
                                  ]),
                                  _: 1
                                }, 8, ["onClick"])
                              ]),
                              _: 2
                            }, 1024),
                            createVNode(_component_el_col, {
                              span: 12,
                              class: "mt-2"
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_button, {
                                  plain: "",
                                  type: "danger",
                                  class: "w-full",
                                  onClick: withModifiers(($event) => emitCommand("delete", chatbot), ["stop"])
                                }, {
                                  default: withCtx(() => [
                                    createVNode(_component_el_icon, { class: "mr-1" }, {
                                      default: withCtx(() => [
                                        createVNode(_component_Delete)
                                      ]),
                                      _: 1
                                    }),
                                    _cache[6] || (_cache[6] = createTextVNode(" Delete ", -1))
                                  ]),
                                  _: 1
                                }, 8, ["onClick"])
                              ]),
                              _: 2
                            }, 1024)
                          ]),
                          _: 2
                        }, 1024)
                      ])
                    ]),
                    _: 2
                  }, 1024)
                ]),
                _: 2
              }, 1024);
            }), 128))
          ]),
          _: 1
        });
      };
    }
  };
  const _hoisted_1$N = { class: "space-y-4" };
  const _hoisted_2$M = {
    key: 0,
    class: "flex flex-col gap-3 sm:flex-row sm:items-center"
  };
  const _hoisted_3$I = {
    key: 1,
    class: "grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-3"
  };
  const _hoisted_4$F = { class: "space-y-3" };
  const _sfc_main$P = {
    __name: "TabShimmerLoader",
    props: {
      rows: {
        type: Number,
        default: 6
      },
      cards: {
        type: Number,
        default: 0
      },
      showToolbar: {
        type: Boolean,
        default: true
      },
      showAction: {
        type: Boolean,
        default: true
      }
    },
    setup(__props) {
      return (_ctx, _cache) => {
        const _component_el_skeleton_item = resolveComponent("el-skeleton-item");
        const _component_el_skeleton = resolveComponent("el-skeleton");
        const _component_el_card = resolveComponent("el-card");
        return openBlock(), createElementBlock("div", _hoisted_1$N, [
          __props.showToolbar ? (openBlock(), createElementBlock("div", _hoisted_2$M, [
            createVNode(_component_el_skeleton_item, {
              variant: "text",
              class: "h-10 w-full rounded-md sm:max-w-xs"
            }),
            __props.showAction ? (openBlock(), createBlock(_component_el_skeleton_item, {
              key: 0,
              variant: "text",
              class: "h-10 w-36 rounded-md sm:ml-auto"
            })) : createCommentVNode("", true)
          ])) : createCommentVNode("", true),
          __props.cards > 0 ? (openBlock(), createElementBlock("div", _hoisted_3$I, [
            (openBlock(true), createElementBlock(Fragment, null, renderList(__props.cards, (cardIndex) => {
              return openBlock(), createBlock(_component_el_card, {
                key: cardIndex,
                shadow: "never"
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_skeleton, { animated: "" }, {
                    template: withCtx(() => [
                      createBaseVNode("div", _hoisted_4$F, [
                        createVNode(_component_el_skeleton_item, {
                          variant: "image",
                          style: { "width": "100%", "height": "128px" }
                        }),
                        createVNode(_component_el_skeleton_item, {
                          variant: "h3",
                          style: { "width": "70%" }
                        }),
                        createVNode(_component_el_skeleton_item, {
                          variant: "text",
                          style: { "width": "100%" }
                        }),
                        createVNode(_component_el_skeleton_item, {
                          variant: "text",
                          style: { "width": "90%" }
                        }),
                        createVNode(_component_el_skeleton_item, {
                          variant: "text",
                          style: { "width": "40%" }
                        })
                      ])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              });
            }), 128))
          ])) : (openBlock(), createBlock(_component_el_card, {
            key: 2,
            shadow: "never"
          }, {
            default: withCtx(() => [
              createVNode(_component_el_skeleton, {
                rows: __props.rows,
                animated: ""
              }, null, 8, ["rows"])
            ]),
            _: 1
          }))
        ]);
      };
    }
  };
  const _hoisted_1$M = { class: "space-y-6" };
  const _hoisted_2$L = { class: "flex justify-between items-center" };
  const _hoisted_3$H = { class: "text-gray-500" };
  const _hoisted_4$E = {
    key: 3,
    class: "flex items-center justify-between"
  };
  const _hoisted_5$y = { class: "text-sm text-gray-500" };
  const _sfc_main$O = {
    __name: "AllChatbots",
    emits: ["create", "edit"],
    setup(__props, { emit: __emit }) {
      const emit2 = __emit;
      const t = inject("t", (k) => k);
      const api = useChatbotsAPI();
      const { showNotification } = useNotifications();
      const chatbots = ref([]);
      const loading = ref(true);
      const searchQuery = ref("");
      const filteredChatbots = computed(() => {
        if (!searchQuery.value) return chatbots.value;
        const query = searchQuery.value.toLowerCase();
        return chatbots.value.filter(
          (c2) => c2.name.toLowerCase().includes(query) || (c2.description || "").toLowerCase().includes(query)
        );
      });
      const loadChatbots = async () => {
        loading.value = true;
        try {
          const response = await api.getChatbots();
          if (response.success) {
            chatbots.value = response.data;
          }
        } catch (error) {
          showNotification("error", "Failed to load chatbots");
        } finally {
          loading.value = false;
        }
      };
      const handleCommand = (command, chatbot) => {
        switch (command) {
          case "edit":
            editChatbot(chatbot.id);
            break;
          case "duplicate":
            duplicateChatbot(chatbot.id);
            break;
          case "activate":
            toggleChatbotStatus(chatbot.id, "active");
            break;
          case "deactivate":
            toggleChatbotStatus(chatbot.id, "inactive");
            break;
          case "delete":
            deleteChatbot(chatbot.id);
            break;
        }
      };
      const editChatbot = (id) => {
        emit2("edit", id);
      };
      const duplicateChatbot = async (id) => {
        try {
          const response = await api.duplicateChatbot(id);
          if (response.success) {
            showNotification("success", "Chatbot duplicated successfully");
            await loadChatbots();
          } else {
            showNotification("error", response.message || "Failed to duplicate chatbot");
          }
        } catch (error) {
          showNotification("error", "An error occurred");
        }
      };
      const toggleChatbotStatus = async (id, status) => {
        try {
          await api.updateChatbot(id, { status });
          showNotification("success", `Chatbot ${status === "active" ? "activated" : "deactivated"}`);
          await loadChatbots();
        } catch (error) {
          showNotification("error", "Failed to update chatbot status");
        }
      };
      const deleteChatbot = async (id) => {
        try {
          await ElMessageBox.confirm("Are you sure you want to delete this chatbot?", "Warning", {
            confirmButtonText: "Delete",
            cancelButtonText: "Cancel",
            type: "warning",
            confirmButtonClass: "el-button--danger"
          });
          const response = await api.deleteChatbot(id);
          if (response.success) {
            showNotification("success", "Chatbot deleted successfully");
            await loadChatbots();
          }
        } catch (e) {
        }
      };
      onActivated(() => {
        loadChatbots();
      });
      return (_ctx, _cache) => {
        const _component_Search = resolveComponent("Search");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_input = resolveComponent("el-input");
        const _component_Plus = resolveComponent("Plus");
        const _component_el_button = resolveComponent("el-button");
        const _component_Cpu = resolveComponent("Cpu");
        const _component_el_empty = resolveComponent("el-empty");
        const _component_el_pagination = resolveComponent("el-pagination");
        return openBlock(), createElementBlock("div", _hoisted_1$M, [
          createBaseVNode("div", _hoisted_2$L, [
            createVNode(_component_el_input, {
              modelValue: searchQuery.value,
              "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchQuery.value = $event),
              placeholder: unref(t)("searchChatbots"),
              class: "w-64",
              clearable: ""
            }, {
              prefix: withCtx(() => [
                createVNode(_component_el_icon, null, {
                  default: withCtx(() => [
                    createVNode(_component_Search)
                  ]),
                  _: 1
                })
              ]),
              _: 1
            }, 8, ["modelValue", "placeholder"]),
            createVNode(_component_el_button, {
              type: "primary",
              onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("create"))
            }, {
              default: withCtx(() => [
                createVNode(_component_el_icon, { class: "mr-2" }, {
                  default: withCtx(() => [
                    createVNode(_component_Plus)
                  ]),
                  _: 1
                }),
                createTextVNode(" " + toDisplayString(unref(t)("createChatbot")), 1)
              ]),
              _: 1
            })
          ]),
          loading.value ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            "show-action": false,
            cards: 3
          })) : chatbots.value.length === 0 ? (openBlock(), createBlock(_component_el_empty, {
            key: 1,
            description: unref(t)("noChatbots")
          }, {
            image: withCtx(() => [
              createVNode(_component_el_icon, {
                size: 60,
                class: "text-gray-300"
              }, {
                default: withCtx(() => [
                  createVNode(_component_Cpu)
                ]),
                _: 1
              })
            ]),
            description: withCtx(() => [
              createBaseVNode("p", _hoisted_3$H, toDisplayString(unref(t)("createFirstChatbot")), 1)
            ]),
            default: withCtx(() => [
              createVNode(_component_el_button, {
                type: "primary",
                onClick: _cache[2] || (_cache[2] = ($event) => _ctx.$emit("create"))
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_icon, { class: "mr-2" }, {
                    default: withCtx(() => [
                      createVNode(_component_Plus)
                    ]),
                    _: 1
                  }),
                  createTextVNode(" " + toDisplayString(unref(t)("createFirstChatbotBtn")), 1)
                ]),
                _: 1
              })
            ]),
            _: 1
          }, 8, ["description"])) : (openBlock(), createBlock(_sfc_main$Q, {
            key: 2,
            chatbots: filteredChatbots.value,
            onCommand: handleCommand,
            onEdit: editChatbot
          }, null, 8, ["chatbots"])),
          chatbots.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_4$E, [
            createBaseVNode("span", _hoisted_5$y, " Showing " + toDisplayString(chatbots.value.length) + " chatbot(s) ", 1),
            createVNode(_component_el_pagination, {
              background: "",
              layout: "prev, pager, next",
              total: chatbots.value.length,
              "page-size": 10
            }, null, 8, ["total"])
          ])) : createCommentVNode("", true)
        ]);
      };
    }
  };
  function useFormsAPI() {
    const getForms = async (page = 1, perPage = 20, search = "") => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_get_forms", { page, per_page: perPage, search }, "GET");
        return {
          success: true,
          data: response.forms,
          total: parseInt(response.total),
          totalPages: Math.ceil(parseInt(response.total) / perPage)
        };
      } catch (error) {
        console.error("Error fetching forms:", error);
        return { success: false, message: error.message };
      }
    };
    const getForm = async (id) => {
      try {
        const response = await getForms(1, 100);
        const form = response.data.find((f2) => f2.id == id);
        if (form) return { success: true, data: form };
        return { success: false, message: "Form not found" };
      } catch (error) {
        console.error("Error fetching form:", error);
        return { success: false, message: error.message };
      }
    };
    const createForm = async (data) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_create_form", { data });
        return { success: true, data: { id: response.form_id, ...data, ...response.data }, message: response.message ?? "" };
      } catch (error) {
        console.error("Error creating form:", error);
        return { success: false, message: error.message };
      }
    };
    const updateForm = async (id, data) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_update_form", { id, data });
        return { success: true, data: response, message: response.message ?? "" };
      } catch (error) {
        console.error("Error updating form:", error);
        return { success: false, message: error.message };
      }
    };
    const deleteForm = async (id) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_delete_form", { id });
        return { success: true, message: response.message };
      } catch (error) {
        console.error("Error deleting form:", error);
        return { success: false, message: error.message };
      }
    };
    const getFormSubmissions = async (formId = null, page = 1, perPage = 20) => {
      try {
        const params = { page, per_page: perPage };
        if (formId) params.form_id = formId;
        const response = await ajaxFetch("kitsune_ai_platform_get_form_submissions", params, "GET");
        return {
          success: true,
          data: response.submissions || [],
          total: parseInt(response.total) || 0,
          totalPages: Math.ceil((parseInt(response.total) || 0) / perPage)
        };
      } catch (error) {
        console.error("Error fetching submissions:", error);
        return { success: false, message: error.message };
      }
    };
    const getFormSettings = async () => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_get_form_settings", {}, "GET");
        return { success: true, data: response.settings || {} };
      } catch (error) {
        console.error("Error fetching form settings:", error);
        return { success: false, message: error.message };
      }
    };
    const saveFormSettings = async (settings) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_save_form_settings", { settings });
        return { success: true, data: response.settings || {} };
      } catch (error) {
        console.error("Error saving form settings:", error);
        return { success: false, message: error.message };
      }
    };
    return {
      getForms,
      getForm,
      createForm,
      updateForm,
      deleteForm,
      getFormSubmissions,
      getFormSettings,
      saveFormSettings
    };
  }
  function useKnowledgeBaseAPI() {
    const getKnowledgeSources = async (search = "", perPage = 50) => {
      try {
        const response = await ajaxFetch(
          "kitsune_ai_platform_kb_get_sources",
          { search, per_page: perPage },
          "GET"
        );
        return { success: true, data: response.data.sources || [] };
      } catch (error) {
        console.error("Error fetching sources:", error);
        return { success: false, message: error.message };
      }
    };
    const getWordPressPostTypes = async () => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_kb_get_wordpress_post_types", {}, "GET");
        return { success: true, data: response.post_types || [] };
      } catch (error) {
        console.error("Error fetching WordPress post types:", error);
        return { success: false, message: error.message };
      }
    };
    const getWordPressPosts = async (postType, search = "", perPage = 50) => {
      try {
        const response = await ajaxFetch(
          "kitsune_ai_platform_kb_get_wordpress_posts",
          { post_type: postType, search, per_page: perPage },
          "GET"
        );
        return { success: true, data: response.posts || [] };
      } catch (error) {
        console.error(`Error fetching posts for post type ${postType}:`, error);
        return { success: false, message: error.message };
      }
    };
    const getVectorDatabases = async () => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_kb_get_vector_databases", {}, "GET");
        return { success: true, data: response };
      } catch (error) {
        console.error("Error fetching vector databases:", error);
        return { success: false, message: error.message };
      }
    };
    const getEmbeddings = async () => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_kb_get_embedding_jobs", {}, "GET");
        return { success: true, data: response };
      } catch (error) {
        console.error("Error fetching embeddings:", error);
        return { success: false, message: error.message };
      }
    };
    const semanticSearch = async (query) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_kb_search", { query });
        return { success: true, ...response };
      } catch (error) {
        console.error("Error searching:", error);
        return { success: false, message: error.message };
      }
    };
    const addSource = async (data) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_kb_add_source", { data });
        return { success: true, ...response };
      } catch (error) {
        console.error("Error adding source:", error);
        return { success: false, message: error.message };
      }
    };
    const deleteSource = async (id) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_kb_delete_source", { id });
        return { success: true, ...response };
      } catch (error) {
        console.error("Error deleting source:", error);
        return { success: false, message: error.message };
      }
    };
    const syncSource = async (id) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_kb_sync_source", { id });
        return { success: true, ...response };
      } catch (error) {
        console.error("Error syncing source:", error);
        return { success: false, message: error.message };
      }
    };
    const getSettings = async () => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_kb_get_settings", {}, "GET");
        return { success: true, data: response };
      } catch (error) {
        console.error("Error fetching KB settings:", error);
        return { success: false, message: error.message };
      }
    };
    const getDefaultModelSettings = async () => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_get_default_settings", {}, "GET");
        return { success: true, data: response };
      } catch (error) {
        console.error("Error fetching default model settings:", error);
        return { success: false, message: error.message };
      }
    };
    const saveSettings = async (data) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_kb_save_settings", { data });
        return { success: true, data: response.settings };
      } catch (error) {
        console.error("Error saving KB settings:", error);
        return { success: false, message: error.message };
      }
    };
    const updateVectorDatabase = async (id, updateAction, config = null) => {
      try {
        const payload = { id, update_action: updateAction };
        if (config) {
          payload.config = config;
        }
        const response = await ajaxFetch("kitsune_ai_platform_kb_update_vector_database", payload);
        return { success: true, data: response };
      } catch (error) {
        console.error("Error updating vector database:", error);
        return { success: false, message: error.message };
      }
    };
    const reembedJob = async (id) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_kb_reembed_job", { id });
        return { success: true, data: response.jobs };
      } catch (error) {
        console.error("Error re-embedding job:", error);
        return { success: false, message: error.message };
      }
    };
    const stopEmbeddingJob = async (id) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_kb_stop_embedding_job", { id });
        return { success: true, data: response.jobs };
      } catch (error) {
        console.error("Error stopping embedding job:", error);
        return { success: false, message: error.message };
      }
    };
    const resetKnowledgeBase = async () => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_kb_reset", {});
        return { success: true, resetTime: response.reset_time, message: response.message };
      } catch (error) {
        console.error("Error resetting knowledge base:", error);
        return { success: false, message: error.message };
      }
    };
    const canChangeEmbeddingModel = async () => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_kb_can_change_embedding_model", {}, "GET");
        return { success: true, canChange: response.can_change, message: response.message };
      } catch (error) {
        console.error("Error checking embedding model change:", error);
        return { success: false, canChange: false, message: error.message };
      }
    };
    return {
      getKnowledgeSources,
      getWordPressPostTypes,
      getWordPressPosts,
      getVectorDatabases,
      getEmbeddings,
      semanticSearch,
      addSource,
      deleteSource,
      syncSource,
      getSettings,
      getDefaultModelSettings,
      saveSettings,
      updateVectorDatabase,
      reembedJob,
      stopEmbeddingJob,
      resetKnowledgeBase,
      canChangeEmbeddingModel
    };
  }
  function useAIModelsAPI() {
    const getAIModels = async () => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_get_ai_providers", {}, "GET");
        return { success: true, data: response };
      } catch (error) {
        console.error("Error fetching AI models:", error);
        return { success: false, message: error.message };
      }
    };
    const getProvider = async (provider) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_get_provider", { provider }, "GET");
        return { success: true, data: response };
      } catch (error) {
        console.error(`Error fetching provider ${provider}:`, error);
        return { success: false, message: error.message };
      }
    };
    const updateProvider = async (provider, data) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_update_provider", {
          provider,
          data
        });
        return { success: true, data: response, message: response.message ?? "" };
      } catch (error) {
        console.error(`Error updating provider ${provider}:`, error);
        return { success: false, message: error.message };
      }
    };
    const testConnection = async (provider, apiKey) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_test_api_connection", {
          provider,
          api_key: apiKey
        });
        return { success: true, ...response };
      } catch (error) {
        console.error(`Error testing connection for ${provider}:`, error);
        return { success: false, message: error.message };
      }
    };
    const getDefaultSettings = async () => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_get_default_settings", {}, "GET");
        return { success: true, data: response };
      } catch (error) {
        console.error("Error fetching default settings:", error);
        return { success: false, message: error.message };
      }
    };
    const saveDefaultSettings = async (settings) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_save_default_settings", {
          data: settings
        });
        return { success: true, data: response };
      } catch (error) {
        console.error("Error saving default settings:", error);
        return { success: false, message: error.message };
      }
    };
    return {
      getAIModels,
      getProvider,
      updateProvider,
      testConnection,
      getDefaultSettings,
      saveDefaultSettings
    };
  }
  const providers = ref([]);
  const isInitialized = ref(false);
  const isLoading = ref(false);
  const providerActionLoading = ref({});
  const defaultSettingsSaving = ref(false);
  const showingProviderSettings = ref(false);
  const showingAddProvider = ref(false);
  const showingCostCalculator = ref(false);
  const selectedProvider = ref(null);
  const defaultModels = ref({
    chatbots: "",
    content: "",
    imageGen: "",
    embeddings: "",
    fallback: ""
  });
  const parseModelValue = (value) => {
    if (!value || typeof value !== "string") {
      return null;
    }
    const parts = value.split(":");
    if (parts.length === 2) {
      return { provider: parts[0], model: parts[1] };
    }
    return { provider: "", model: value };
  };
  function useAIModels() {
    const { showNotification } = useNotifications();
    const api = useAIModelsAPI();
    const setProviderActionLoading = (providerId, action, isBusy) => {
      const key = `${providerId}:${action}`;
      providerActionLoading.value = {
        ...providerActionLoading.value,
        [key]: Boolean(isBusy)
      };
    };
    const isProviderActionLoading = (providerId, action = null) => {
      if (!providerId) {
        return false;
      }
      if (action) {
        return Boolean(providerActionLoading.value[`${providerId}:${action}`]);
      }
      return ["test", "save", "disconnect"].some((type) => Boolean(providerActionLoading.value[`${providerId}:${type}`]));
    };
    const fetchProviders = async () => {
      const response = await api.getAIModels();
      if (response.success) {
        providers.value = Object.values(response.data).map((provider) => {
          const config = provider.config || {};
          const selectedChatModels = config.selected_chat_models || [];
          const chatModels = mergeSupportedChatModels(provider.id, provider.chat_models || {}, selectedChatModels);
          return {
            ...provider,
            chat_models: chatModels,
            selectedChatModels,
            selectedEmbeddingModels: config.selected_embedding_models || [],
            selectedImageModels: config.selected_image_models || [],
            isEditingKey: false,
            showKey: false
          };
        });
      } else {
        showNotification("error", "Failed to load AI providers: " + response.message);
      }
    };
    const fetchDefaultSettings = async () => {
      const response = await api.getDefaultSettings();
      if (response.success && response.data) {
        defaultModels.value = { ...defaultModels.value, ...response.data };
      } else {
        console.error("Failed to load default settings:", response.message);
      }
    };
    const initialize = async () => {
      if (isInitialized.value || isLoading.value) return;
      isLoading.value = true;
      try {
        await Promise.all([fetchProviders(), fetchDefaultSettings()]);
        isInitialized.value = true;
      } finally {
        isLoading.value = false;
      }
    };
    if (!isInitialized.value && !isLoading.value) {
      initialize();
    }
    const ensureDefaultSelections = () => {
      const chatModels = connectedChatModels.value;
      const imageModels = connectedImageModels.value;
      const embeddingModels = connectedEmbeddingModels.value;
      if (chatModels.length > 0) {
        const chatIds = chatModels.map((model) => model.id);
        if (!defaultModels.value.chatbots || !chatIds.includes(defaultModels.value.chatbots)) {
          defaultModels.value.chatbots = chatIds[0];
        }
        if (!defaultModels.value.content || !chatIds.includes(defaultModels.value.content)) {
          defaultModels.value.content = chatIds[0];
        }
        if (!defaultModels.value.fallback || !chatIds.includes(defaultModels.value.fallback)) {
          defaultModels.value.fallback = chatIds[0];
        }
      }
      if (imageModels.length > 0) {
        const imageIds = imageModels.map((model) => model.id);
        if (!defaultModels.value.imageGen || !imageIds.includes(defaultModels.value.imageGen)) {
          defaultModels.value.imageGen = imageIds[0];
        }
      }
      if (embeddingModels.length > 0) {
        const embeddingIds = embeddingModels.map((model) => model.id);
        if (!defaultModels.value.embeddings || !embeddingIds.includes(defaultModels.value.embeddings)) {
          defaultModels.value.embeddings = embeddingIds[0];
        }
      }
    };
    const testConnection = async (provider) => {
      if (isProviderActionLoading(provider.id, "test")) {
        return;
      }
      let apiKey = provider.config.apiKey || "";
      if (!apiKey) {
        showNotification("error", "Please enter an API key first");
        return;
      }
      setProviderActionLoading(provider.id, "test", true);
      try {
        showNotification("info", `Testing connection to ${provider.name}...`);
        const response = await api.testConnection(provider.id, apiKey);
        if (response.success) {
          showNotification("success", "Connection successful! Click Save to persist.");
        } else {
          showNotification("error", response.message);
        }
      } finally {
        setProviderActionLoading(provider.id, "test", false);
      }
    };
    const saveProvider = async (provider) => {
      if (isProviderActionLoading(provider.id, "save")) {
        return;
      }
      const data = {
        api_key: provider.config.apiKey || "",
        selected_chat_models: provider.selectedChatModels || [],
        selected_embedding_models: provider.selectedEmbeddingModels || [],
        selected_image_models: provider.selectedImageModels || [],
        enabled: true
      };
      setProviderActionLoading(provider.id, "save", true);
      try {
        showNotification("info", `Saving ${provider.name} configuration...`);
        const response = await api.updateProvider(provider.id, data);
        if (response.success) {
          showNotification("success", `${provider.name} saved successfully`);
          await fetchProviders();
        } else {
          showNotification("error", "Failed to save: " + response.message);
        }
      } finally {
        setProviderActionLoading(provider.id, "save", false);
      }
    };
    const disconnectProvider = async (provider) => {
      if (isProviderActionLoading(provider.id, "disconnect")) {
        return;
      }
      setProviderActionLoading(provider.id, "disconnect", true);
      try {
        const response = await api.updateProvider(provider.id, { api_key: "" });
        if (response.success) {
          provider.connected = false;
          if (provider.config) provider.config.apiKey = "";
          if (provider.config) provider.config.api_key_masked = "";
          showNotification("info", `Disconnected from ${provider.name}`);
          await fetchProviders();
        } else {
          showNotification("error", "Failed to disconnect: " + response.message);
        }
      } finally {
        setProviderActionLoading(provider.id, "disconnect", false);
      }
    };
    const openProviderSettings = (provider) => {
      selectedProvider.value = JSON.parse(JSON.stringify(provider));
      showingProviderSettings.value = true;
    };
    const closeProviderSettings = () => {
      showingProviderSettings.value = false;
      selectedProvider.value = null;
    };
    const saveProviderSettings = async (updatedProvider) => {
      const data = {
        api_key: updatedProvider.config.apiKey,
        // UI uses apiKey, backend uses api_key
        settings: updatedProvider.config
      };
      const response = await api.updateProvider(updatedProvider.id, data);
      if (response.success) {
        showNotification("success", "Provider settings saved");
        await fetchProviders();
      } else {
        showNotification("error", "Failed to save settings: " + response.message);
      }
      closeProviderSettings();
    };
    const openAddProviderModal = () => {
      showingAddProvider.value = true;
    };
    const closeAddProviderModal = () => {
      showingAddProvider.value = false;
    };
    const addProvider = (newProviderData) => {
      const newProvider = {
        id: "custom-" + Date.now(),
        name: newProviderData.name,
        icon: "fas fa-robot",
        connected: true,
        // Assuming if they add it, they have a key
        showKey: false,
        config: newProviderData.config,
        models: newProviderData.models,
        usage: { requests: 0, cost: 0 },
        costLimit: 100
      };
      providers.value.push(newProvider);
      showNotification("success", "New provider added (Local only)");
      closeAddProviderModal();
    };
    const openCostCalculator = () => {
      showingCostCalculator.value = true;
    };
    const closeCostCalculator = () => {
      showingCostCalculator.value = false;
    };
    const hasConnectedProviders = computed(() => {
      return providers.value.some((provider) => provider.connected);
    });
    const connectedChatModels = computed(() => {
      const models = [];
      for (const provider of providers.value) {
        if (!provider.connected || !provider.chat_models) continue;
        for (const [modelId, modelData] of Object.entries(provider.chat_models)) {
          if (provider.selectedChatModels && provider.selectedChatModels.includes(modelId)) {
            models.push({
              id: `${provider.id}:${modelId}`,
              modelId,
              name: modelData.name,
              provider: provider.name,
              providerId: provider.id
            });
          }
        }
      }
      return models;
    });
    const connectedEmbeddingModels = computed(() => {
      const models = [];
      for (const provider of providers.value) {
        if (!provider.connected || !provider.embedding_models) continue;
        for (const [modelId, modelData] of Object.entries(provider.embedding_models)) {
          if (provider.selectedEmbeddingModels && provider.selectedEmbeddingModels.includes(modelId)) {
            models.push({
              id: `${provider.id}:${modelId}`,
              modelId,
              name: modelData.name,
              provider: provider.name,
              providerId: provider.id
            });
          }
        }
      }
      return models;
    });
    const connectedImageModels = computed(() => {
      const models = [];
      for (const provider of providers.value) {
        if (!provider.connected || !provider.image_models) continue;
        for (const [modelId, modelData] of Object.entries(provider.image_models)) {
          if (provider.selectedImageModels && provider.selectedImageModels.includes(modelId)) {
            models.push({
              id: `${provider.id}:${modelId}`,
              modelId,
              name: modelData.name,
              provider: provider.name,
              providerId: provider.id
            });
          }
        }
      }
      return models;
    });
    watch([connectedChatModels, connectedImageModels, connectedEmbeddingModels], () => {
      ensureDefaultSelections();
    }, { immediate: true });
    const saveDefaultSettings = async () => {
      if (defaultSettingsSaving.value) {
        return;
      }
      defaultSettingsSaving.value = true;
      try {
        const payload = {
          chatbots: parseModelValue(defaultModels.value.chatbots),
          content: parseModelValue(defaultModels.value.content),
          imageGen: parseModelValue(defaultModels.value.imageGen),
          embeddings: parseModelValue(defaultModels.value.embeddings),
          fallback: parseModelValue(defaultModels.value.fallback)
        };
        const response = await api.saveDefaultSettings(payload);
        if (response.success) {
          showNotification("success", "Default settings saved successfully");
        } else {
          showNotification("error", "Failed to save settings: " + response.message);
        }
      } finally {
        defaultSettingsSaving.value = false;
      }
    };
    return {
      providers,
      defaultModels,
      isLoading,
      defaultSettingsSaving,
      // Modal State
      showingProviderSettings,
      showingAddProvider,
      showingCostCalculator,
      selectedProvider,
      // Methods
      fetchProviders,
      // Expose if needed by components
      testConnection,
      saveProvider,
      disconnectProvider,
      isProviderActionLoading,
      openProviderSettings,
      closeProviderSettings,
      saveProviderSettings,
      openAddProviderModal,
      closeAddProviderModal,
      addProvider,
      openCostCalculator,
      closeCostCalculator,
      connectedChatModels,
      connectedEmbeddingModels,
      connectedImageModels,
      hasConnectedProviders,
      saveDefaultSettings
    };
  }
  const _hoisted_1$L = { class: "flex items-center justify-between mb-6" };
  const _hoisted_2$K = { class: "text-2xl font-bold text-gray-900 tracking-tight" };
  const _hoisted_3$G = { class: "text-sm text-gray-500 mt-1" };
  const _hoisted_4$D = {
    key: 0,
    class: "flex items-center gap-2"
  };
  const _hoisted_5$x = { class: "max-h-[calc(100vh-220px)] overflow-y-auto overflow-x-hidden pr-2" };
  const _hoisted_6$h = { class: "space-y-4" };
  const _hoisted_7$f = { class: "text-lg font-medium text-gray-900 pb-2" };
  const _hoisted_8$f = { class: "flex flex-col items-center" };
  const _hoisted_9$e = { class: "w-16 h-16 mb-4 bg-gray-50 rounded-xl flex items-center justify-center text-2xl text-blue-600 overflow-hidden" };
  const _hoisted_10$b = ["src"];
  const _hoisted_11$b = {
    key: 1,
    class: "text-xs font-semibold"
  };
  const _hoisted_12$8 = { class: "flex gap-2" };
  const _hoisted_13$7 = { class: "space-y-4" };
  const _hoisted_14$5 = { class: "text-lg font-medium text-gray-900 pb-2" };
  const _hoisted_15$5 = {
    key: 0,
    class: "mt-2 text-xs text-amber-600"
  };
  const _hoisted_16$5 = { class: "mt-2 text-xs flex gap-2 items-center" };
  const _hoisted_17$5 = { class: "flex items-center justify-between" };
  const _hoisted_18$5 = { class: "text-xs text-gray-400" };
  const _hoisted_19$5 = { class: "text-xs text-gray-500 mt-1" };
  const _hoisted_20$5 = { class: "space-y-4" };
  const _hoisted_21$5 = { class: "text-lg font-medium text-gray-900 pb-2" };
  const _hoisted_22$5 = { class: "flex items-center space-x-4" };
  const _hoisted_23$3 = { class: "text-gray-500 text-sm" };
  const _hoisted_24$3 = { class: "space-y-4" };
  const _hoisted_25$3 = { class: "text-lg font-medium text-gray-900 pb-2" };
  const _hoisted_26$1 = { class: "space-y-4" };
  const _hoisted_27$1 = { class: "text-lg font-medium text-gray-900 pb-2" };
  const _hoisted_28$1 = { class: "space-y-4" };
  const _hoisted_29$1 = { class: "text-lg font-medium text-gray-900 pb-2" };
  const _hoisted_30 = { class: "space-y-4" };
  const _hoisted_31 = { class: "text-lg font-medium text-gray-900 pb-2" };
  const _hoisted_32 = { class: "flex gap-2" };
  const _hoisted_33 = { class: "flex gap-2" };
  const _hoisted_34 = { class: "space-y-4" };
  const _hoisted_35 = { class: "text-lg font-medium text-gray-900 pb-2" };
  const _hoisted_36 = { class: "sticky top-6 self-start" };
  const _hoisted_37 = { class: "chatbot-preview-container" };
  const _hoisted_38 = { class: "chatbot-preview__header" };
  const _hoisted_39 = { class: "chatbot-preview__avatar" };
  const _hoisted_40 = ["src"];
  const _hoisted_41 = { class: "chatbot-preview__info" };
  const _hoisted_42 = { class: "chatbot-preview__name" };
  const _hoisted_43 = { class: "chatbot-preview__messages" };
  const _hoisted_44 = { class: "chatbot-preview__bubble" };
  const _hoisted_45 = {
    key: 0,
    class: "chatbot-preview__message chatbot-preview__message--bot"
  };
  const _hoisted_46 = {
    key: 1,
    class: "chatbot-preview__message chatbot-preview__message--bot chatbot-preview__message--form"
  };
  const _hoisted_47 = { class: "chatbot-preview__bubble chatbot-preview__bubble--form" };
  const _hoisted_48 = { class: "chatbot-preview__form" };
  const _hoisted_49 = { class: "chatbot-preview__form-title" };
  const _hoisted_50 = {
    key: 0,
    class: "chatbot-preview__form-description"
  };
  const _hoisted_51 = {
    key: 0,
    class: "chatbot-preview__form-label"
  };
  const _hoisted_52 = {
    key: 0,
    class: "chatbot-preview__form-required"
  };
  const _hoisted_53 = ["name", "placeholder", "required"];
  const _hoisted_54 = {
    key: 1,
    class: "chatbot-preview__form-label"
  };
  const _hoisted_55 = {
    key: 0,
    class: "chatbot-preview__form-required"
  };
  const _hoisted_56 = ["name", "required"];
  const _hoisted_57 = ["value"];
  const _hoisted_58 = {
    key: 2,
    class: "chatbot-preview__form-group"
  };
  const _hoisted_59 = { class: "chatbot-preview__form-label" };
  const _hoisted_60 = {
    key: 0,
    class: "chatbot-preview__form-required"
  };
  const _hoisted_61 = ["name", "value", "required"];
  const _hoisted_62 = {
    key: 1,
    class: "chatbot-preview__form-empty"
  };
  const _hoisted_63 = {
    key: 3,
    class: "chatbot-preview__form-group"
  };
  const _hoisted_64 = { class: "chatbot-preview__form-label" };
  const _hoisted_65 = {
    key: 0,
    class: "chatbot-preview__form-required"
  };
  const _hoisted_66 = ["name", "value", "required"];
  const _hoisted_67 = {
    key: 1,
    class: "chatbot-preview__form-empty"
  };
  const _hoisted_68 = {
    key: 4,
    class: "chatbot-preview__form-group"
  };
  const _hoisted_69 = { class: "chatbot-preview__form-label" };
  const _hoisted_70 = {
    key: 0,
    class: "chatbot-preview__form-required"
  };
  const _hoisted_71 = {
    key: 5,
    class: "chatbot-preview__form-label"
  };
  const _hoisted_72 = {
    key: 0,
    class: "chatbot-preview__form-required"
  };
  const _hoisted_73 = ["name", "required"];
  const _hoisted_74 = ["value"];
  const _hoisted_75 = {
    key: 7,
    class: "chatbot-preview__form-label"
  };
  const _hoisted_76 = {
    key: 0,
    class: "chatbot-preview__form-required"
  };
  const _hoisted_77 = ["type", "name", "placeholder", "required"];
  const _hoisted_78 = {
    key: 1,
    class: "chatbot-preview__form-empty"
  };
  const _hoisted_79 = {
    key: 0,
    class: "chatbot-preview__suggestions"
  };
  const _hoisted_80 = ["onClick"];
  const _hoisted_81 = { class: "chatbot-preview__bottom" };
  const _hoisted_82 = { class: "chatbot-preview__input-area" };
  const _hoisted_83 = { class: "chatbot-preview__input-wrapper" };
  const _hoisted_84 = ["disabled", "onKeydown"];
  const _hoisted_85 = ["disabled"];
  const _hoisted_86 = { class: "mt-8 pt-6 flex justify-end items-center bg-transparent" };
  const _hoisted_87 = { class: "flex gap-3" };
  const _sfc_main$N = {
    __name: "CreateEditChatbot",
    props: {
      chatbotId: {
        type: [Number, String],
        default: null
      },
      templateData: {
        type: Object,
        default: null
      }
    },
    emits: ["cancel", "complete"],
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const t = inject("t", (k) => k);
      const api = useChatbotsAPI();
      const formsApi = useFormsAPI();
      const { getWordPressPosts, getKnowledgeSources } = useKnowledgeBaseAPI();
      const { showNotification } = useNotifications();
      const { connectedChatModels } = useAIModels();
      const iconList = ref([]);
      const iconUrlMap = ref({});
      const avatarFileInput = ref(null);
      const normalizeLegacyAvatarValue = (value) => {
        const legacyMap = {
          ChatDotRound: "chat",
          CustomChat: "chat",
          Service: "service",
          CustomService: "service",
          Cpu: "ai",
          CustomAI: "ai"
        };
        if (!value || typeof value !== "string") {
          return "chat";
        }
        if (value.startsWith("http")) {
          return value;
        }
        return legacyMap[value] || value;
      };
      const loadAvatarIcons = async () => {
        const response = await api.getChatbotAvatarIcons();
        if (!response.success) {
          showNotification("error", response.message || "Failed to load avatar icons");
          return;
        }
        iconList.value = response.data || [];
        const nextMap = {};
        for (const icon of iconList.value) {
          if (icon?.id && icon?.url) {
            nextMap[icon.id] = icon.url;
          }
        }
        iconUrlMap.value = nextMap;
      };
      const showIconPicker = ref(false);
      const getIconLabel = (iconName) => {
        if (iconName && iconName.startsWith("http")) {
          return "Custom Avatar";
        }
        const icon = iconList.value.find((item) => item.id === normalizeLegacyAvatarValue(iconName));
        return icon ? icon.label : "Chat";
      };
      const selectIcon = (icon) => {
        formData.value.avatar = normalizeLegacyAvatarValue(icon);
        showIconPicker.value = false;
      };
      const uploadCustomAvatar = () => {
        avatarFileInput.value?.click();
      };
      const handleAvatarFileChange = async (event) => {
        const file = event?.target?.files?.[0];
        if (event?.target) {
          event.target.value = "";
        }
        if (!file) {
          return;
        }
        const response = await api.uploadChatbotAvatar(file);
        if (!response.success) {
          showNotification("error", response.message || "Failed to upload avatar");
          return;
        }
        formData.value.avatar = response.data?.url || formData.value.avatar;
        showNotification("success", "Custom avatar uploaded");
      };
      const availableForms = ref([]);
      const formsLoading = ref(false);
      let formsSearchRequestId = 0;
      const availablePages = ref([]);
      const pagesLoading = ref(false);
      let pagesSearchRequestId = 0;
      const availableSources = ref([]);
      const sourcesLoading = ref(false);
      let sourcesSearchRequestId = 0;
      const mergeOptionsById = (existingOptions = [], incomingOptions = []) => {
        const optionsMap = /* @__PURE__ */ new Map();
        for (const item of existingOptions || []) {
          if (item && item.id !== void 0) {
            optionsMap.set(String(item.id), item);
          }
        }
        for (const item of incomingOptions || []) {
          if (item && item.id !== void 0) {
            optionsMap.set(String(item.id), item);
          }
        }
        return Array.from(optionsMap.values());
      };
      const hasFormOption = (formId) => {
        if (!formId) {
          return false;
        }
        const normalizedId = String(formId);
        return availableForms.value.some((form) => String(form?.id) === normalizedId);
      };
      const ensureSelectedFormInOptions = async (formId) => {
        if (!formId || hasFormOption(formId)) {
          return;
        }
        const response = await formsApi.getForm(formId);
        if (!response?.success || !response?.data) {
          return;
        }
        availableForms.value = mergeOptionsById(availableForms.value, [response.data]);
      };
      const fetchAvailableForms = async (query = "") => {
        const requestId = ++formsSearchRequestId;
        formsLoading.value = true;
        try {
          const response = await formsApi.getForms(1, 50, query || "");
          if (requestId !== formsSearchRequestId) {
            return;
          }
          if (response.success) {
            availableForms.value = mergeOptionsById(availableForms.value, response.data || []);
            return;
          }
          showNotification("error", response.message || "Failed to load forms");
        } catch (error) {
          if (requestId === formsSearchRequestId) {
            showNotification("error", error?.message || "Failed to load forms");
          }
        } finally {
          if (requestId === formsSearchRequestId) {
            formsLoading.value = false;
          }
        }
      };
      const searchAvailableForms = (query = "") => {
        fetchAvailableForms(query);
      };
      const onFormSelectVisibleChange = (visible) => {
        if (visible && availableForms.value.length === 0) {
          fetchAvailableForms("");
        }
      };
      const fetchAvailablePages = async (query = "") => {
        const requestId = ++pagesSearchRequestId;
        pagesLoading.value = true;
        try {
          const response = await getWordPressPosts("page", query || "", 50);
          if (requestId !== pagesSearchRequestId) {
            return;
          }
          if (response.success) {
            availablePages.value = mergeOptionsById(availablePages.value, response.data || []);
            return;
          }
          showNotification("error", response.message || "Failed to load pages");
        } catch (error) {
          if (requestId === pagesSearchRequestId) {
            showNotification("error", error?.message || "Failed to load pages");
          }
        } finally {
          if (requestId === pagesSearchRequestId) {
            pagesLoading.value = false;
          }
        }
      };
      const searchAvailablePages = (query = "") => {
        fetchAvailablePages(query);
      };
      const onPageSelectVisibleChange = (visible) => {
        if (visible && availablePages.value.length === 0) {
          fetchAvailablePages("");
        }
      };
      const fetchAvailableSources = async (query = "") => {
        const requestId = ++sourcesSearchRequestId;
        sourcesLoading.value = true;
        try {
          const response = await getKnowledgeSources(query || "", 50);
          if (requestId !== sourcesSearchRequestId) {
            return;
          }
          if (response.success) {
            availableSources.value = mergeOptionsById(availableSources.value, response.data || []);
            return;
          }
          showNotification("error", response.message || "Failed to load knowledge sources");
        } catch (error) {
          if (requestId === sourcesSearchRequestId) {
            showNotification("error", error?.message || "Failed to load knowledge sources");
          }
        } finally {
          if (requestId === sourcesSearchRequestId) {
            sourcesLoading.value = false;
          }
        }
      };
      const searchAvailableSources = (query = "") => {
        fetchAvailableSources(query);
      };
      const onSourcesSelectVisibleChange = (visible) => {
        if (visible && availableSources.value.length === 0) {
          fetchAvailableSources("");
        }
      };
      const groupedSources = computed(() => {
        const groups = {};
        availableSources.value.forEach((source) => {
          const typeLabel = {
            "wp_posts": "WordPress Posts",
            "wp_pages": "WordPress Pages",
            "wp_products": "WooCommerce Products",
            "pdf": "PDF Documents",
            "url": "Web URLs",
            "text": "Text Content",
            "custom": "Custom Sources"
          }[source.type] || "Other";
          if (!groups[typeLabel]) {
            groups[typeLabel] = {
              label: typeLabel,
              sources: []
            };
          }
          groups[typeLabel].sources.push(source);
        });
        return Object.values(groups);
      });
      const saving = ref(false);
      const duplicating = ref(false);
      const statusActionLoading = ref(false);
      const chatbotStatus = ref("active");
      const animationPreviewActive = ref(false);
      const previewInput = ref("");
      const previewSending = ref(false);
      const previewConversation = ref([]);
      const formData = ref({
        name: "",
        description: "",
        avatar: "chat",
        language: "en",
        aiConfig: {
          model: DEFAULT_OPENAI_MODEL,
          systemPrompt: "",
          temperature: 0.7,
          maxTokens: 500,
          modelOptions: {},
          contextMemory: true,
          contextLength: 10,
          useKnowledgeBase: false,
          knowledgeSources: [],
          ragLimit: 6
        },
        appearance: {
          mode: "light",
          primaryColor: "#3B82F6",
          bubbleStyle: "rounded",
          animations: true
        },
        features: {
          linkedForms: [],
          formDisplayTrigger: "immediate"
        },
        behavior: {
          welcomeMessage: "Hi! How can I help you today?",
          suggestedQuestions: ["What are your business hours?", "How can I contact support?"],
          suggestedQuestionsTrigger: "immediate",
          fallbackResponse: "I'm not sure I understand. Could you rephrase that?",
          operatingHours: {
            enabled: false,
            start: "09:00",
            end: "17:00"
          },
          offlineMessage: "We're currently offline. Please leave a message."
        },
        deployment: {
          widgetEnabled: true,
          widgetPosition: "bottom-right",
          targetPages: "all",
          selectedPages: []
        },
        integrations: {
          emailNotifications: false,
          notificationEmail: "",
          webhook: false,
          webhookUrl: "",
          crm: false,
          crmProvider: ""
        }
      });
      watch(connectedChatModels, (models) => {
        if (models.length === 0) return;
        const currentModel = formData.value.aiConfig.model;
        const exists = models.some((model) => model.id === currentModel);
        if (!currentModel || !exists) {
          formData.value.aiConfig.model = models[0].id;
        }
      }, { immediate: true });
      const groupedChatModels = computed(() => {
        const groups = {};
        connectedChatModels.value.forEach((model) => {
          const typeInfo = getChatModelTypeInfo(model.providerId, model.modelId);
          const groupKey = typeInfo ? `${model.providerId}:${typeInfo.key}` : `${model.providerId}:default`;
          if (!groups[groupKey]) {
            groups[groupKey] = {
              key: groupKey,
              label: typeInfo ? `${model.provider} - ${typeInfo.label}` : model.provider,
              models: []
            };
          }
          groups[groupKey].models.push(model);
        });
        return Object.values(groups);
      });
      const selectedChatModel = computed(() => {
        return connectedChatModels.value.find((model) => model.id === formData.value.aiConfig.model) || null;
      });
      const modelOptionDefinitions = computed(() => {
        const selectedModel = selectedChatModel.value;
        if (!selectedModel) {
          return [];
        }
        return getModelOptionDefinitions(selectedModel.providerId, selectedModel.modelId);
      });
      const getDefaultModelOptionValue = (option) => {
        if (Object.prototype.hasOwnProperty.call(option, "default")) {
          return option.default;
        }
        if (option.type === "enum" && Array.isArray(option.values) && option.values.length > 0) {
          return option.values[0];
        }
        if (option.type === "float" || option.type === "int") {
          return typeof option.min === "number" ? option.min : 0;
        }
        return "";
      };
      watch(modelOptionDefinitions, (options) => {
        if (!formData.value.aiConfig || typeof formData.value.aiConfig !== "object") {
          return;
        }
        if (!formData.value.aiConfig.modelOptions || typeof formData.value.aiConfig.modelOptions !== "object") {
          formData.value.aiConfig.modelOptions = {};
        }
        const existingOptions = formData.value.aiConfig.modelOptions || {};
        const nextOptions = {};
        for (const option of options) {
          const value = existingOptions[option.key];
          if (value === void 0 || value === null || value === "") {
            nextOptions[option.key] = getDefaultModelOptionValue(option);
          } else {
            nextOptions[option.key] = value;
          }
        }
        formData.value.aiConfig.modelOptions = nextOptions;
      }, { immediate: true });
      const isEnumModelOption = (option) => option && option.type === "enum" && Array.isArray(option.values);
      const isNumericModelOption = (option) => option && (option.type === "float" || option.type === "int");
      const getModelOptionStep = (option) => option?.type === "float" ? 0.01 : 1;
      const getModelOptionPrecision = (option) => option?.type === "float" ? 3 : 0;
      const resolveNumberLimit = (value, fallback = void 0) => typeof value === "number" ? value : fallback;
      const selectedLinkedForms = computed({
        get() {
          const linkedForms = formData.value?.features?.linkedForms || [];
          return linkedForms.map((item) => item?.id ? String(item.id) : item ? String(item) : null).filter(Boolean);
        },
        set(value) {
          if (!formData.value.features) {
            formData.value.features = {
              linkedForms: [],
              formDisplayTrigger: "immediate"
            };
          }
          formData.value.features.linkedForms = value || [];
        }
      });
      const hasLinkedForm = computed(() => selectedLinkedForms.value.length > 0);
      const linkedFormPreview = computed(() => {
        const selectedFormId = selectedLinkedForms.value[0];
        if (!selectedFormId) {
          return null;
        }
        return availableForms.value.find((form) => String(form?.id) === String(selectedFormId)) || null;
      });
      const linkedFormFields = computed(() => {
        return Array.isArray(linkedFormPreview.value?.config?.fields) ? linkedFormPreview.value.config.fields : [];
      });
      const previewHasSubmitField = computed(() => {
        return linkedFormFields.value.some((field) => {
          const type = String(field?.type || "").toLowerCase();
          return type === "submit";
        });
      });
      const normalizedFormDisplayTrigger = computed(() => {
        return normalizeTriggerValue(formData.value?.features?.formDisplayTrigger);
      });
      const normalizedSuggestedQuestionsTrigger = computed(() => {
        return normalizeTriggerValue(formData.value?.behavior?.suggestedQuestionsTrigger);
      });
      const hasPreviewUserInteraction = computed(() => {
        return previewConversation.value.some((message2) => message2?.role === "user");
      });
      const previewSuggestedQuestions = computed(() => {
        const questions = formData.value?.behavior?.suggestedQuestions;
        if (!Array.isArray(questions)) {
          return [];
        }
        return questions.map((question) => String(question || "").trim()).filter(Boolean);
      });
      const shouldShowSuggestedQuestionsPreview = computed(() => {
        if (previewSuggestedQuestions.value.length === 0) {
          return false;
        }
        if (normalizedSuggestedQuestionsTrigger.value === "first_interaction") {
          return hasPreviewUserInteraction.value;
        }
        return true;
      });
      const shouldShowLinkedFormPreview = computed(() => {
        if (!linkedFormPreview.value) {
          return false;
        }
        if (normalizedFormDisplayTrigger.value === "first_interaction") {
          return hasPreviewUserInteraction.value;
        }
        return true;
      });
      watch(selectedLinkedForms, async (formIds) => {
        if (formIds && formIds.length > 0) {
          await Promise.all(formIds.map((id) => ensureSelectedFormInOptions(id)));
        }
      }, { immediate: true });
      const resetPreviewState = () => {
        previewConversation.value = [];
        previewInput.value = "";
        previewSending.value = false;
      };
      watch(normalizedFormDisplayTrigger, (newValue, oldValue) => {
        if (oldValue === void 0 || newValue === oldValue) {
          return;
        }
        resetPreviewState();
      });
      watch(normalizedSuggestedQuestionsTrigger, (newValue, oldValue) => {
        if (oldValue === void 0 || newValue === oldValue) {
          return;
        }
        resetPreviewState();
      });
      const isDarkMode = computed(() => {
        if (formData.value.appearance.mode === "dark") return true;
        if (formData.value.appearance.mode === "system") {
          return window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches;
        }
        return false;
      });
      const previewMessages = computed(() => {
        const messages2 = [];
        if (formData.value.behavior.welcomeMessage) {
          messages2.push({ role: "assistant", content: formData.value.behavior.welcomeMessage });
        }
        return messages2.concat(previewConversation.value);
      });
      const previewClasses = computed(() => {
        const classes = ["chatbot-preview"];
        classes.push(isDarkMode.value ? "chatbot-preview--dark" : "chatbot-preview--light");
        classes.push(`chatbot-preview--bubble-${formData.value.appearance.bubbleStyle}`);
        if (formData.value.appearance.animations) {
          classes.push("chatbot-preview--animated");
        }
        if (animationPreviewActive.value) {
          classes.push("chatbot-preview--bounce");
        }
        return classes;
      });
      const previewStyles = computed(() => ({
        "--cb-primary-color": formData.value.appearance.primaryColor
      }));
      const getPreviewFieldLabel = (field, index) => {
        return field?.label || `Field ${index + 1}`;
      };
      const getPreviewFieldType = (field) => {
        return field?.type || "text";
      };
      const getPreviewFieldOptions = (field) => {
        return Array.isArray(field?.options) ? field.options : [];
      };
      const buildPreviewFieldKey = (field, index) => {
        const base = field?.name || field?.id || field?.label || `field_${index + 1}`;
        const key = String(base).toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "");
        return key || `field_${index + 1}`;
      };
      const isNativePreviewInputType = (type) => {
        return ["email", "tel", "number", "time", "date"].includes(type);
      };
      const resolveAvatarUrl = (avatarName) => {
        const normalized = normalizeLegacyAvatarValue(avatarName);
        if (normalized && normalized.startsWith("http")) {
          return normalized;
        }
        if (iconUrlMap.value[normalized]) {
          return iconUrlMap.value[normalized];
        }
        return iconUrlMap.value.chat || `${window.kitsuneAiPlatformConfig?.pluginUrl || ""}public/assets/icon/chat.svg`;
      };
      const siteUrl = computed(() => window.kitsuneAiPlatformConfig?.siteUrl || window.location.origin);
      const directAccessUrl = computed(() => {
        const id = props2.chatbotId || "NEW";
        return `${siteUrl.value}/?ai-chatbot=${id}`;
      });
      const shortcode = computed(() => {
        const id = props2.chatbotId || "ID";
        return `[ai-platform-chatbot id="${id}"]`;
      });
      const copyToClipboard = (text) => {
        navigator.clipboard.writeText(text);
        showNotification("success", "Copied to clipboard!");
      };
      const sendPreviewMessage = async () => {
        const content = previewInput.value.trim();
        if (!content || previewSending.value) return;
        const history = previewConversation.value.map((item) => ({
          role: item.role,
          content: item.content
        }));
        previewConversation.value.push({ role: "user", content });
        previewInput.value = "";
        previewSending.value = true;
        try {
          const response = await api.previewChatbotMessage({
            message: content,
            history,
            aiConfig: formData.value.aiConfig
          });
          if (response.success) {
            previewConversation.value.push({
              role: "assistant",
              content: response.data.response || "..."
            });
          } else {
            showNotification("error", response.message || "Failed to get preview response");
          }
        } catch (error) {
          showNotification("error", "Failed to get preview response");
        } finally {
          previewSending.value = false;
        }
      };
      const sendPreviewSuggestedQuestion = (question) => {
        if (!question || previewSending.value) {
          return;
        }
        previewInput.value = question;
        sendPreviewMessage();
      };
      const usePromptTemplate = (type) => {
        const templates = {
          support: "You are a helpful customer support assistant. Your role is to help customers with their inquiries, provide accurate information, and resolve issues in a friendly and professional manner.",
          sales: "You are a knowledgeable sales assistant. Your goal is to help customers find the right products or services for their needs.",
          faq: "You are an FAQ assistant with access to frequently asked questions and answers. Provide clear, concise answers based on the knowledge base."
        };
        formData.value.aiConfig.systemPrompt = templates[type] || "";
      };
      function normalizeTriggerValue(value) {
        return value === "first_interaction" ? "first_interaction" : "immediate";
      }
      const loadChatbot = async () => {
        await Promise.all([fetchAvailableForms(""), fetchAvailablePages(""), fetchAvailableSources(), loadAvatarIcons()]);
        if (props2.chatbotId) {
          const response = await api.getChatbot(props2.chatbotId);
          if (response.success && response.data) {
            Object.assign(formData.value, response.data.config || {});
            formData.value.name = response.data.name;
            formData.value.description = response.data.description;
            formData.value.avatar = normalizeLegacyAvatarValue(response.data.avatar || formData.value.avatar);
            const features = formData.value.features || {};
            let linkedForms = features.linkedForms || [];
            if (!Array.isArray(linkedForms)) linkedForms = [linkedForms];
            linkedForms = linkedForms.map((item) => item?.id ? String(item.id) : item ? String(item) : null).filter(Boolean);
            formData.value.features = {
              ...features,
              linkedForms: linkedForms.length ? [linkedForms[0]] : [],
              formDisplayTrigger: normalizeTriggerValue(features.formDisplayTrigger || "immediate")
            };
            if (!formData.value.behavior || typeof formData.value.behavior !== "object") {
              formData.value.behavior = {};
            }
            formData.value.behavior.suggestedQuestionsTrigger = normalizeTriggerValue(
              formData.value.behavior.suggestedQuestionsTrigger
            );
          }
        }
      };
      const applyTemplate = () => {
        if (props2.templateData) {
          if (props2.templateData.name) formData.value.name = props2.templateData.name + " (Copy)";
          if (props2.templateData.config) {
            Object.keys(props2.templateData.config).forEach((key) => {
              if (formData.value[key]) {
                Object.assign(formData.value[key], props2.templateData.config[key]);
              }
            });
          }
          if (props2.templateData.systemPrompt) {
            formData.value.aiConfig.systemPrompt = props2.templateData.systemPrompt;
          }
        }
      };
      const saveChatbot = async () => {
        if (!formData.value.name) {
          showNotification("error", "Please enter a chatbot name");
          return;
        }
        saving.value = true;
        try {
          const configToSave = JSON.parse(JSON.stringify(formData.value));
          if (configToSave.appearance && Object.prototype.hasOwnProperty.call(configToSave.appearance, "font")) {
            delete configToSave.appearance.font;
          }
          const features = configToSave.features || {};
          let linkedForms = features.linkedForms || [];
          configToSave.features = {
            ...features,
            linkedForms: Array.isArray(linkedForms) ? linkedForms.slice(0, 1) : linkedForms ? [linkedForms] : [],
            formDisplayTrigger: normalizeTriggerValue(features.formDisplayTrigger)
          };
          if (!configToSave.behavior || typeof configToSave.behavior !== "object") {
            configToSave.behavior = {};
          }
          delete configToSave.behavior.operatingHours;
          delete configToSave.behavior.offlineMessage;
          configToSave.behavior.suggestedQuestionsTrigger = normalizeTriggerValue(
            configToSave.behavior.suggestedQuestionsTrigger
          );
          const chatbotData = {
            name: formData.value.name,
            description: formData.value.description,
            avatar: formData.value.avatar,
            config: configToSave,
            status: "active"
          };
          let response;
          if (props2.chatbotId) {
            response = await api.updateChatbot(props2.chatbotId, chatbotData);
          } else {
            response = await api.createChatbot(chatbotData);
          }
          if (response.success) {
            showNotification("success", `Chatbot ${props2.chatbotId ? "updated" : "created"} successfully!`);
            emit2("complete", response.data);
          } else {
            showNotification("error", response.message || "Failed to save chatbot");
          }
        } catch (error) {
          showNotification("error", "Error saving chatbot");
          console.error(error);
        } finally {
          saving.value = false;
        }
      };
      watch(() => props2.chatbotId, (newId) => {
        if (iconList.value.length === 0) {
          loadAvatarIcons();
        }
        if (newId) {
          loadChatbot();
        } else {
          resetForm();
        }
      }, { immediate: true });
      watch(() => props2.templateData, (newVal) => {
        if (newVal) {
          applyTemplate();
        }
      }, { immediate: true });
      const resetForm = () => {
        resetPreviewState();
        formData.value = {
          name: "",
          description: "",
          avatar: "chat",
          language: "en",
          aiConfig: {
            model: DEFAULT_OPENAI_MODEL,
            systemPrompt: "",
            temperature: 0.7,
            maxTokens: 500,
            modelOptions: {},
            contextMemory: true,
            contextLength: 10,
            useKnowledgeBase: false,
            knowledgeSources: [],
            ragLimit: 6
          },
          appearance: {
            mode: "light",
            primaryColor: "#3B82F6",
            bubbleStyle: "rounded",
            animations: true
          },
          features: {
            linkedForms: [],
            formDisplayTrigger: "immediate"
          },
          behavior: {
            welcomeMessage: "Hi! How can I help you today?",
            suggestedQuestions: ["What are your business hours?", "How can I contact support?"],
            suggestedQuestionsTrigger: "immediate",
            fallbackResponse: "I'm not sure I understand. Could you rephrase that?"
          },
          deployment: {
            widgetEnabled: true,
            widgetPosition: "bottom-right",
            targetPages: "all",
            selectedPages: []
          },
          integrations: {
            emailNotifications: false,
            notificationEmail: "",
            webhook: false,
            webhookUrl: "",
            crm: false,
            crmProvider: ""
          }
        };
      };
      return (_ctx, _cache) => {
        const _component_el_button = resolveComponent("el-button");
        const _component_el_input = resolveComponent("el-input");
        const _component_el_form_item = resolveComponent("el-form-item");
        const _component_el_option = resolveComponent("el-option");
        const _component_el_option_group = resolveComponent("el-option-group");
        const _component_el_select = resolveComponent("el-select");
        const _component_Warning = resolveComponent("Warning");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_input_number = resolveComponent("el-input-number");
        const _component_el_col = resolveComponent("el-col");
        const _component_el_row = resolveComponent("el-row");
        const _component_el_tag = resolveComponent("el-tag");
        const _component_el_switch = resolveComponent("el-switch");
        const _component_el_alert = resolveComponent("el-alert");
        const _component_Sunny = resolveComponent("Sunny");
        const _component_el_radio_button = resolveComponent("el-radio-button");
        const _component_Moon = resolveComponent("Moon");
        const _component_Monitor = resolveComponent("Monitor");
        const _component_el_radio_group = resolveComponent("el-radio-group");
        const _component_el_color_picker = resolveComponent("el-color-picker");
        const _component_Delete = resolveComponent("Delete");
        const _component_Plus = resolveComponent("Plus");
        const _component_Link = resolveComponent("Link");
        const _component_CopyDocument = resolveComponent("CopyDocument");
        const _component_DocumentCopy = resolveComponent("DocumentCopy");
        const _component_el_form = resolveComponent("el-form");
        const _component_el_empty = resolveComponent("el-empty");
        const _component_el_image = resolveComponent("el-image");
        const _component_el_text = resolveComponent("el-text");
        const _component_el_space = resolveComponent("el-space");
        const _component_el_card = resolveComponent("el-card");
        const _component_el_scrollbar = resolveComponent("el-scrollbar");
        const _component_el_dialog = resolveComponent("el-dialog");
        return openBlock(), createBlock(_component_el_card, {
          shadow: "never",
          class: "box-card"
        }, {
          header: withCtx(() => [
            createBaseVNode("div", null, [
              createBaseVNode("div", _hoisted_1$L, [
                createBaseVNode("div", null, [
                  createBaseVNode("h2", _hoisted_2$K, toDisplayString(__props.chatbotId ? unref(t)("editChatbotTitle") : unref(t)("createNewChatbot")), 1),
                  createBaseVNode("p", _hoisted_3$G, toDisplayString(unref(t)("chatbotConfigSubtitle")), 1)
                ]),
                __props.chatbotId ? (openBlock(), createElementBlock("div", _hoisted_4$D, [
                  createVNode(_component_el_button, {
                    plain: "",
                    loading: duplicating.value,
                    disabled: saving.value || statusActionLoading.value,
                    onClick: _ctx.duplicateCurrentChatbot
                  }, {
                    default: withCtx(() => [
                      createTextVNode(toDisplayString(unref(t)("duplicate")), 1)
                    ]),
                    _: 1
                  }, 8, ["loading", "disabled", "onClick"]),
                  createVNode(_component_el_button, {
                    plain: "",
                    type: chatbotStatus.value === "active" ? "warning" : "success",
                    loading: statusActionLoading.value,
                    disabled: saving.value || duplicating.value,
                    onClick: _ctx.toggleCurrentChatbotStatus
                  }, {
                    default: withCtx(() => [
                      createTextVNode(toDisplayString(chatbotStatus.value === "active" ? unref(t)("deactivate") : unref(t)("activate")), 1)
                    ]),
                    _: 1
                  }, 8, ["type", "loading", "disabled", "onClick"])
                ])) : createCommentVNode("", true)
              ])
            ])
          ]),
          default: withCtx(() => [
            createVNode(_component_el_row, {
              gutter: 24,
              class: "min-h-[500px]"
            }, {
              default: withCtx(() => [
                createVNode(_component_el_col, {
                  span: 24,
                  lg: 15
                }, {
                  default: withCtx(() => [
                    createBaseVNode("div", _hoisted_5$x, [
                      createVNode(_component_el_form, {
                        "label-position": "left",
                        "label-width": "180px",
                        class: "space-y-10"
                      }, {
                        default: withCtx(() => [
                          createBaseVNode("div", _hoisted_6$h, [
                            createBaseVNode("h3", _hoisted_7$f, toDisplayString(unref(t)("basicInformation")), 1),
                            createVNode(_component_el_form_item, {
                              label: unref(t)("labelChatbotName"),
                              required: ""
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_input, {
                                  modelValue: formData.value.name,
                                  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => formData.value.name = $event),
                                  placeholder: "e.g. Sales Assistant"
                                }, null, 8, ["modelValue"])
                              ]),
                              _: 1
                            }, 8, ["label"]),
                            createVNode(_component_el_form_item, {
                              label: unref(t)("description")
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_input, {
                                  modelValue: formData.value.description,
                                  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => formData.value.description = $event),
                                  type: "textarea",
                                  rows: 2,
                                  placeholder: "What is this chatbot for?"
                                }, null, 8, ["modelValue"])
                              ]),
                              _: 1
                            }, 8, ["label"]),
                            createVNode(_component_el_form_item, {
                              label: unref(t)("labelAvatar")
                            }, {
                              default: withCtx(() => [
                                createBaseVNode("div", _hoisted_8$f, [
                                  createBaseVNode("div", _hoisted_9$e, [
                                    resolveAvatarUrl(formData.value.avatar) ? (openBlock(), createElementBlock("img", {
                                      key: 0,
                                      src: resolveAvatarUrl(formData.value.avatar),
                                      class: "w-full h-full object-cover"
                                    }, null, 8, _hoisted_10$b)) : (openBlock(), createElementBlock("span", _hoisted_11$b, toDisplayString(getIconLabel(formData.value.avatar).charAt(0)), 1))
                                  ]),
                                  createBaseVNode("div", _hoisted_12$8, [
                                    createVNode(_component_el_button, {
                                      size: "small",
                                      onClick: _cache[2] || (_cache[2] = ($event) => showIconPicker.value = true)
                                    }, {
                                      default: withCtx(() => [
                                        createTextVNode(toDisplayString(unref(t)("chooseIcon")), 1)
                                      ]),
                                      _: 1
                                    }),
                                    createVNode(_component_el_button, {
                                      size: "small",
                                      onClick: uploadCustomAvatar
                                    }, {
                                      default: withCtx(() => [
                                        createTextVNode(toDisplayString(unref(t)("uploadCustom")), 1)
                                      ]),
                                      _: 1
                                    }),
                                    createBaseVNode("input", {
                                      ref_key: "avatarFileInput",
                                      ref: avatarFileInput,
                                      type: "file",
                                      accept: "image/*",
                                      class: "hidden",
                                      onChange: handleAvatarFileChange
                                    }, null, 544)
                                  ])
                                ])
                              ]),
                              _: 1
                            }, 8, ["label"])
                          ]),
                          createBaseVNode("div", _hoisted_13$7, [
                            createBaseVNode("h3", _hoisted_14$5, toDisplayString(unref(t)("aiConfiguration")), 1),
                            createVNode(_component_el_form_item, {
                              label: unref(t)("labelAIModel")
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_select, {
                                  modelValue: formData.value.aiConfig.model,
                                  "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => formData.value.aiConfig.model = $event),
                                  class: "w-full",
                                  placeholder: "Select a model"
                                }, {
                                  default: withCtx(() => [
                                    (openBlock(true), createElementBlock(Fragment, null, renderList(groupedChatModels.value, (group) => {
                                      return openBlock(), createBlock(_component_el_option_group, {
                                        key: group.key,
                                        label: group.label
                                      }, {
                                        default: withCtx(() => [
                                          (openBlock(true), createElementBlock(Fragment, null, renderList(group.models, (model) => {
                                            return openBlock(), createBlock(_component_el_option, {
                                              key: model.id,
                                              label: model.name,
                                              value: model.id
                                            }, null, 8, ["label", "value"]);
                                          }), 128))
                                        ]),
                                        _: 2
                                      }, 1032, ["label"]);
                                    }), 128))
                                  ]),
                                  _: 1
                                }, 8, ["modelValue"]),
                                unref(connectedChatModels).length === 0 ? (openBlock(), createElementBlock("div", _hoisted_15$5, [
                                  createVNode(_component_el_icon, { class: "mr-1" }, {
                                    default: withCtx(() => [
                                      createVNode(_component_Warning)
                                    ]),
                                    _: 1
                                  }),
                                  _cache[34] || (_cache[34] = createTextVNode(" No models available. Please connect a provider in AI Models. ", -1))
                                ])) : createCommentVNode("", true)
                              ]),
                              _: 1
                            }, 8, ["label"]),
                            modelOptionDefinitions.value.length > 0 ? (openBlock(), createBlock(_component_el_row, {
                              key: 0,
                              gutter: 40
                            }, {
                              default: withCtx(() => [
                                (openBlock(true), createElementBlock(Fragment, null, renderList(modelOptionDefinitions.value, (option) => {
                                  return openBlock(), createBlock(_component_el_col, {
                                    key: option.key,
                                    span: 12
                                  }, {
                                    default: withCtx(() => [
                                      createVNode(_component_el_form_item, {
                                        label: option.label
                                      }, {
                                        default: withCtx(() => [
                                          isEnumModelOption(option) ? (openBlock(), createBlock(_component_el_select, {
                                            key: 0,
                                            modelValue: formData.value.aiConfig.modelOptions[option.key],
                                            "onUpdate:modelValue": ($event) => formData.value.aiConfig.modelOptions[option.key] = $event,
                                            class: "w-full",
                                            placeholder: `Select ${option.label}`
                                          }, {
                                            default: withCtx(() => [
                                              (openBlock(true), createElementBlock(Fragment, null, renderList(option.values, (value) => {
                                                return openBlock(), createBlock(_component_el_option, {
                                                  key: value,
                                                  label: value,
                                                  value
                                                }, null, 8, ["label", "value"]);
                                              }), 128))
                                            ]),
                                            _: 2
                                          }, 1032, ["modelValue", "onUpdate:modelValue", "placeholder"])) : isNumericModelOption(option) ? (openBlock(), createBlock(_component_el_input_number, {
                                            key: 1,
                                            modelValue: formData.value.aiConfig.modelOptions[option.key],
                                            "onUpdate:modelValue": ($event) => formData.value.aiConfig.modelOptions[option.key] = $event,
                                            min: resolveNumberLimit(option.min, 0),
                                            max: resolveNumberLimit(option.max, 999999),
                                            step: getModelOptionStep(option),
                                            precision: getModelOptionPrecision(option),
                                            class: "w-full"
                                          }, null, 8, ["modelValue", "onUpdate:modelValue", "min", "max", "step", "precision"])) : (openBlock(), createBlock(_component_el_input, {
                                            key: 2,
                                            modelValue: formData.value.aiConfig.modelOptions[option.key],
                                            "onUpdate:modelValue": ($event) => formData.value.aiConfig.modelOptions[option.key] = $event,
                                            placeholder: option.label
                                          }, null, 8, ["modelValue", "onUpdate:modelValue", "placeholder"]))
                                        ]),
                                        _: 2
                                      }, 1032, ["label"])
                                    ]),
                                    _: 2
                                  }, 1024);
                                }), 128))
                              ]),
                              _: 1
                            })) : createCommentVNode("", true),
                            createVNode(_component_el_form_item, {
                              label: unref(t)("labelSystemPrompt")
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_input, {
                                  modelValue: formData.value.aiConfig.systemPrompt,
                                  "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => formData.value.aiConfig.systemPrompt = $event),
                                  type: "textarea",
                                  rows: 6,
                                  placeholder: "You are a helpful customer support assistant..."
                                }, null, 8, ["modelValue"]),
                                createBaseVNode("div", _hoisted_16$5, [
                                  _cache[38] || (_cache[38] = createBaseVNode("span", { class: "text-gray-500" }, "Templates:", -1)),
                                  createVNode(_component_el_tag, {
                                    class: "cursor-pointer",
                                    effect: "plain",
                                    onClick: _cache[5] || (_cache[5] = ($event) => usePromptTemplate("support"))
                                  }, {
                                    default: withCtx(() => [..._cache[35] || (_cache[35] = [
                                      createTextVNode("Support", -1)
                                    ])]),
                                    _: 1
                                  }),
                                  createVNode(_component_el_tag, {
                                    class: "cursor-pointer",
                                    effect: "plain",
                                    onClick: _cache[6] || (_cache[6] = ($event) => usePromptTemplate("sales"))
                                  }, {
                                    default: withCtx(() => [..._cache[36] || (_cache[36] = [
                                      createTextVNode("Sales", -1)
                                    ])]),
                                    _: 1
                                  }),
                                  createVNode(_component_el_tag, {
                                    class: "cursor-pointer",
                                    effect: "plain",
                                    onClick: _cache[7] || (_cache[7] = ($event) => usePromptTemplate("faq"))
                                  }, {
                                    default: withCtx(() => [..._cache[37] || (_cache[37] = [
                                      createTextVNode("FAQ", -1)
                                    ])]),
                                    _: 1
                                  })
                                ])
                              ]),
                              _: 1
                            }, 8, ["label"]),
                            createVNode(_component_el_form_item, {
                              label: unref(t)("labelContextMemory")
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_switch, {
                                  modelValue: formData.value.aiConfig.contextMemory,
                                  "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => formData.value.aiConfig.contextMemory = $event)
                                }, null, 8, ["modelValue"])
                              ]),
                              _: 1
                            }, 8, ["label"]),
                            formData.value.aiConfig.contextMemory ? (openBlock(), createBlock(_component_el_alert, {
                              key: 1,
                              type: "info",
                              "show-icon": "",
                              closable: false,
                              class: "mb-4"
                            }, {
                              default: withCtx(() => [
                                createBaseVNode("p", null, toDisplayString(unref(t)("contextMemoryWarning")), 1)
                              ]),
                              _: 1
                            })) : createCommentVNode("", true),
                            formData.value.aiConfig.contextMemory ? (openBlock(), createBlock(_component_el_form_item, {
                              key: 2,
                              label: unref(t)("labelHistoryLength")
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_input_number, {
                                  modelValue: formData.value.aiConfig.contextLength,
                                  "onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => formData.value.aiConfig.contextLength = $event),
                                  min: 5,
                                  max: 50
                                }, null, 8, ["modelValue"])
                              ]),
                              _: 1
                            }, 8, ["label"])) : createCommentVNode("", true),
                            createVNode(_component_el_form_item, {
                              label: unref(t)("labelUseKB")
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_switch, {
                                  modelValue: formData.value.aiConfig.useKnowledgeBase,
                                  "onUpdate:modelValue": _cache[10] || (_cache[10] = ($event) => formData.value.aiConfig.useKnowledgeBase = $event)
                                }, null, 8, ["modelValue"])
                              ]),
                              _: 1
                            }, 8, ["label"]),
                            formData.value.aiConfig.useKnowledgeBase ? (openBlock(), createBlock(_component_el_form_item, {
                              key: 3,
                              label: unref(t)("labelSelectSources")
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_select, {
                                  modelValue: formData.value.aiConfig.knowledgeSources,
                                  "onUpdate:modelValue": _cache[11] || (_cache[11] = ($event) => formData.value.aiConfig.knowledgeSources = $event),
                                  multiple: "",
                                  filterable: "",
                                  remote: "",
                                  "reserve-keyword": "",
                                  clearable: "",
                                  "collapse-tags": "",
                                  "collapse-tags-tooltip": "",
                                  placeholder: "Select knowledge base sources",
                                  class: "w-full",
                                  loading: sourcesLoading.value,
                                  "remote-method": searchAvailableSources,
                                  onVisibleChange: onSourcesSelectVisibleChange
                                }, {
                                  default: withCtx(() => [
                                    (openBlock(true), createElementBlock(Fragment, null, renderList(groupedSources.value, (group) => {
                                      return openBlock(), createBlock(_component_el_option_group, {
                                        key: group.label,
                                        label: group.label
                                      }, {
                                        default: withCtx(() => [
                                          (openBlock(true), createElementBlock(Fragment, null, renderList(group.sources, (source) => {
                                            return openBlock(), createBlock(_component_el_option, {
                                              key: source.id,
                                              label: source.name,
                                              value: source.id,
                                              disabled: source.status !== "synced"
                                            }, {
                                              default: withCtx(() => [
                                                createBaseVNode("div", _hoisted_17$5, [
                                                  createBaseVNode("span", null, toDisplayString(source.name), 1),
                                                  createBaseVNode("span", _hoisted_18$5, "(" + toDisplayString(source.chunks) + " chunks)", 1)
                                                ])
                                              ]),
                                              _: 2
                                            }, 1032, ["label", "value", "disabled"]);
                                          }), 128))
                                        ]),
                                        _: 2
                                      }, 1032, ["label"]);
                                    }), 128))
                                  ]),
                                  _: 1
                                }, 8, ["modelValue", "loading"]),
                                createBaseVNode("p", _hoisted_19$5, toDisplayString(unref(t)("onlySyncedSources")), 1)
                              ]),
                              _: 1
                            }, 8, ["label"])) : createCommentVNode("", true),
                            formData.value.aiConfig.useKnowledgeBase ? (openBlock(), createBlock(_component_el_form_item, {
                              key: 4,
                              label: unref(t)("labelContextChunksLimit")
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_input_number, {
                                  modelValue: formData.value.aiConfig.ragLimit,
                                  "onUpdate:modelValue": _cache[12] || (_cache[12] = ($event) => formData.value.aiConfig.ragLimit = $event),
                                  min: 1,
                                  max: 20
                                }, null, 8, ["modelValue"]),
                                _cache[39] || (_cache[39] = createBaseVNode("p", { class: "text-xs text-gray-500 mt-1" }, "Number of relevant chunks to retrieve (1-20). Higher values provide more context but use more tokens.", -1))
                              ]),
                              _: 1
                            }, 8, ["label"])) : createCommentVNode("", true)
                          ]),
                          createBaseVNode("div", _hoisted_20$5, [
                            createBaseVNode("h3", _hoisted_21$5, toDisplayString(unref(t)("chatbotAppearance")), 1),
                            createVNode(_component_el_form_item, {
                              label: unref(t)("labelMode")
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_radio_group, {
                                  modelValue: formData.value.appearance.mode,
                                  "onUpdate:modelValue": _cache[13] || (_cache[13] = ($event) => formData.value.appearance.mode = $event)
                                }, {
                                  default: withCtx(() => [
                                    createVNode(_component_el_radio_button, { label: "light" }, {
                                      default: withCtx(() => [
                                        createVNode(_component_el_icon, { class: "mr-1" }, {
                                          default: withCtx(() => [
                                            createVNode(_component_Sunny)
                                          ]),
                                          _: 1
                                        }),
                                        createTextVNode(" " + toDisplayString(unref(t)("modeLight")), 1)
                                      ]),
                                      _: 1
                                    }),
                                    createVNode(_component_el_radio_button, { label: "dark" }, {
                                      default: withCtx(() => [
                                        createVNode(_component_el_icon, { class: "mr-1" }, {
                                          default: withCtx(() => [
                                            createVNode(_component_Moon)
                                          ]),
                                          _: 1
                                        }),
                                        createTextVNode(" " + toDisplayString(unref(t)("modeDark")), 1)
                                      ]),
                                      _: 1
                                    }),
                                    createVNode(_component_el_radio_button, { label: "system" }, {
                                      default: withCtx(() => [
                                        createVNode(_component_el_icon, { class: "mr-1" }, {
                                          default: withCtx(() => [
                                            createVNode(_component_Monitor)
                                          ]),
                                          _: 1
                                        }),
                                        createTextVNode(" " + toDisplayString(unref(t)("modeSystem")), 1)
                                      ]),
                                      _: 1
                                    })
                                  ]),
                                  _: 1
                                }, 8, ["modelValue"])
                              ]),
                              _: 1
                            }, 8, ["label"]),
                            createVNode(_component_el_form_item, {
                              label: unref(t)("labelPrimaryColor")
                            }, {
                              default: withCtx(() => [
                                createBaseVNode("div", _hoisted_22$5, [
                                  createVNode(_component_el_color_picker, {
                                    modelValue: formData.value.appearance.primaryColor,
                                    "onUpdate:modelValue": _cache[14] || (_cache[14] = ($event) => formData.value.appearance.primaryColor = $event)
                                  }, null, 8, ["modelValue"]),
                                  createBaseVNode("span", _hoisted_23$3, toDisplayString(formData.value.appearance.primaryColor), 1)
                                ])
                              ]),
                              _: 1
                            }, 8, ["label"]),
                            createVNode(_component_el_form_item, {
                              label: unref(t)("labelBubbleStyle")
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_radio_group, {
                                  modelValue: formData.value.appearance.bubbleStyle,
                                  "onUpdate:modelValue": _cache[15] || (_cache[15] = ($event) => formData.value.appearance.bubbleStyle = $event)
                                }, {
                                  default: withCtx(() => [
                                    createVNode(_component_el_radio_button, { label: "rounded" }, {
                                      default: withCtx(() => [
                                        createTextVNode(toDisplayString(unref(t)("bubbleRounded")), 1)
                                      ]),
                                      _: 1
                                    }),
                                    createVNode(_component_el_radio_button, { label: "square" }, {
                                      default: withCtx(() => [
                                        createTextVNode(toDisplayString(unref(t)("bubbleSquare")), 1)
                                      ]),
                                      _: 1
                                    }),
                                    createVNode(_component_el_radio_button, { label: "pill" }, {
                                      default: withCtx(() => [
                                        createTextVNode(toDisplayString(unref(t)("bubblePill")), 1)
                                      ]),
                                      _: 1
                                    })
                                  ]),
                                  _: 1
                                }, 8, ["modelValue"])
                              ]),
                              _: 1
                            }, 8, ["label"])
                          ]),
                          createBaseVNode("div", _hoisted_24$3, [
                            createBaseVNode("h3", _hoisted_25$3, toDisplayString(unref(t)("linkForm")), 1),
                            createVNode(_component_el_form_item, {
                              label: unref(t)("labelSelectForm")
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_select, {
                                  modelValue: selectedLinkedForms.value,
                                  "onUpdate:modelValue": _cache[16] || (_cache[16] = ($event) => selectedLinkedForms.value = $event),
                                  multiple: "",
                                  "multiple-limit": 1,
                                  filterable: "",
                                  remote: "",
                                  clearable: "",
                                  placeholder: "Select one form",
                                  class: "w-full",
                                  loading: formsLoading.value,
                                  "collapse-tags": "",
                                  "collapse-tags-tooltip": "",
                                  "remote-method": searchAvailableForms,
                                  onVisibleChange: onFormSelectVisibleChange
                                }, {
                                  default: withCtx(() => [
                                    (openBlock(true), createElementBlock(Fragment, null, renderList(availableForms.value, (form) => {
                                      return openBlock(), createBlock(_component_el_option, {
                                        key: String(form.id),
                                        label: form.name,
                                        value: String(form.id)
                                      }, null, 8, ["label", "value"]);
                                    }), 128))
                                  ]),
                                  _: 1
                                }, 8, ["modelValue", "loading"]),
                                _cache[40] || (_cache[40] = createBaseVNode("p", { class: "text-xs text-gray-500 mt-1" }, "Select one form to link with this chatbot. ", -1))
                              ]),
                              _: 1
                            }, 8, ["label"]),
                            hasLinkedForm.value ? (openBlock(), createBlock(_component_el_form_item, {
                              key: 0,
                              label: unref(t)("labelDisplayTrigger")
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_radio_group, {
                                  modelValue: formData.value.features.formDisplayTrigger,
                                  "onUpdate:modelValue": _cache[17] || (_cache[17] = ($event) => formData.value.features.formDisplayTrigger = $event)
                                }, {
                                  default: withCtx(() => [
                                    createVNode(_component_el_radio_button, { label: "immediate" }, {
                                      default: withCtx(() => [
                                        createTextVNode(toDisplayString(unref(t)("immediately")), 1)
                                      ]),
                                      _: 1
                                    }),
                                    createVNode(_component_el_radio_button, { label: "first_interaction" }, {
                                      default: withCtx(() => [
                                        createTextVNode(toDisplayString(unref(t)("onFirstInteraction")), 1)
                                      ]),
                                      _: 1
                                    })
                                  ]),
                                  _: 1
                                }, 8, ["modelValue"])
                              ]),
                              _: 1
                            }, 8, ["label"])) : createCommentVNode("", true)
                          ]),
                          createBaseVNode("div", _hoisted_26$1, [
                            createBaseVNode("h3", _hoisted_27$1, toDisplayString(unref(t)("behaviorInteraction")), 1),
                            createVNode(_component_el_form_item, {
                              label: unref(t)("labelWelcomeMessage")
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_input, {
                                  modelValue: formData.value.behavior.welcomeMessage,
                                  "onUpdate:modelValue": _cache[18] || (_cache[18] = ($event) => formData.value.behavior.welcomeMessage = $event),
                                  type: "textarea",
                                  rows: 2
                                }, null, 8, ["modelValue"])
                              ]),
                              _: 1
                            }, 8, ["label"]),
                            createVNode(_component_el_form_item, {
                              label: unref(t)("labelSuggestedQuestions")
                            }, {
                              default: withCtx(() => [
                                (openBlock(true), createElementBlock(Fragment, null, renderList(formData.value.behavior.suggestedQuestions, (question, index) => {
                                  return openBlock(), createBlock(_component_el_row, {
                                    key: index,
                                    class: "flex gap-2 mb-2"
                                  }, {
                                    default: withCtx(() => [
                                      createVNode(_component_el_input, {
                                        modelValue: formData.value.behavior.suggestedQuestions[index],
                                        "onUpdate:modelValue": ($event) => formData.value.behavior.suggestedQuestions[index] = $event,
                                        placeholder: "e.g. What is your pricing?"
                                      }, null, 8, ["modelValue", "onUpdate:modelValue"]),
                                      createVNode(_component_el_button, {
                                        type: "danger",
                                        plain: "",
                                        onClick: ($event) => formData.value.behavior.suggestedQuestions.splice(index, 1)
                                      }, {
                                        default: withCtx(() => [
                                          createVNode(_component_el_icon, { class: "mr-1" }, {
                                            default: withCtx(() => [
                                              createVNode(_component_Delete)
                                            ]),
                                            _: 1
                                          })
                                        ]),
                                        _: 1
                                      }, 8, ["onClick"])
                                    ]),
                                    _: 2
                                  }, 1024);
                                }), 128)),
                                createVNode(_component_el_button, {
                                  type: "primary",
                                  link: "",
                                  onClick: _cache[19] || (_cache[19] = ($event) => formData.value.behavior.suggestedQuestions.push(""))
                                }, {
                                  default: withCtx(() => [
                                    createVNode(_component_el_icon, { class: "mr-1" }, {
                                      default: withCtx(() => [
                                        createVNode(_component_Plus)
                                      ]),
                                      _: 1
                                    }),
                                    createTextVNode(" " + toDisplayString(unref(t)("addQuestion")), 1)
                                  ]),
                                  _: 1
                                })
                              ]),
                              _: 1
                            }, 8, ["label"]),
                            createVNode(_component_el_form_item, {
                              label: unref(t)("labelShowQuestions")
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_radio_group, {
                                  modelValue: formData.value.behavior.suggestedQuestionsTrigger,
                                  "onUpdate:modelValue": _cache[20] || (_cache[20] = ($event) => formData.value.behavior.suggestedQuestionsTrigger = $event)
                                }, {
                                  default: withCtx(() => [
                                    createVNode(_component_el_radio_button, { label: "immediate" }, {
                                      default: withCtx(() => [
                                        createTextVNode(toDisplayString(unref(t)("immediately")), 1)
                                      ]),
                                      _: 1
                                    }),
                                    createVNode(_component_el_radio_button, { label: "first_interaction" }, {
                                      default: withCtx(() => [
                                        createTextVNode(toDisplayString(unref(t)("onFirstInteraction")), 1)
                                      ]),
                                      _: 1
                                    })
                                  ]),
                                  _: 1
                                }, 8, ["modelValue"])
                              ]),
                              _: 1
                            }, 8, ["label"])
                          ]),
                          createBaseVNode("div", _hoisted_28$1, [
                            createBaseVNode("h3", _hoisted_29$1, toDisplayString(unref(t)("sectionDeployment")), 1),
                            createVNode(_component_el_form_item, {
                              label: unref(t)("labelFloatingWidget")
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_switch, {
                                  modelValue: formData.value.deployment.widgetEnabled,
                                  "onUpdate:modelValue": _cache[21] || (_cache[21] = ($event) => formData.value.deployment.widgetEnabled = $event)
                                }, null, 8, ["modelValue"])
                              ]),
                              _: 1
                            }, 8, ["label"]),
                            formData.value.deployment.widgetEnabled ? (openBlock(), createBlock(_component_el_form_item, {
                              key: 0,
                              label: unref(t)("labelWidgetPosition")
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_radio_group, {
                                  modelValue: formData.value.deployment.widgetPosition,
                                  "onUpdate:modelValue": _cache[22] || (_cache[22] = ($event) => formData.value.deployment.widgetPosition = $event)
                                }, {
                                  default: withCtx(() => [
                                    createVNode(_component_el_radio_button, { label: "bottom-right" }, {
                                      default: withCtx(() => [
                                        createTextVNode(toDisplayString(unref(t)("bottomRight")), 1)
                                      ]),
                                      _: 1
                                    }),
                                    createVNode(_component_el_radio_button, { label: "bottom-left" }, {
                                      default: withCtx(() => [
                                        createTextVNode(toDisplayString(unref(t)("bottomLeft")), 1)
                                      ]),
                                      _: 1
                                    })
                                  ]),
                                  _: 1
                                }, 8, ["modelValue"])
                              ]),
                              _: 1
                            }, 8, ["label"])) : createCommentVNode("", true)
                          ]),
                          createBaseVNode("div", _hoisted_30, [
                            createBaseVNode("h3", _hoisted_31, toDisplayString(unref(t)("embedAccess")), 1),
                            createVNode(_component_el_form_item, {
                              label: unref(t)("labelDirectUrl")
                            }, {
                              default: withCtx(() => [
                                createBaseVNode("div", _hoisted_32, [
                                  createVNode(_component_el_input, {
                                    "model-value": directAccessUrl.value,
                                    readonly: "",
                                    class: "flex-1"
                                  }, {
                                    prepend: withCtx(() => [
                                      createVNode(_component_el_icon, null, {
                                        default: withCtx(() => [
                                          createVNode(_component_Link)
                                        ]),
                                        _: 1
                                      })
                                    ]),
                                    _: 1
                                  }, 8, ["model-value"]),
                                  createVNode(_component_el_button, {
                                    onClick: _cache[23] || (_cache[23] = ($event) => copyToClipboard(directAccessUrl.value))
                                  }, {
                                    default: withCtx(() => [
                                      createVNode(_component_el_icon, { class: "mr-1" }, {
                                        default: withCtx(() => [
                                          createVNode(_component_CopyDocument)
                                        ]),
                                        _: 1
                                      })
                                    ]),
                                    _: 1
                                  })
                                ])
                              ]),
                              _: 1
                            }, 8, ["label"]),
                            createVNode(_component_el_form_item, {
                              label: unref(t)("shortcodeLabel")
                            }, {
                              default: withCtx(() => [
                                createBaseVNode("div", _hoisted_33, [
                                  createVNode(_component_el_input, {
                                    "model-value": shortcode.value,
                                    readonly: "",
                                    class: "flex-1"
                                  }, {
                                    prepend: withCtx(() => [
                                      createVNode(_component_el_icon, null, {
                                        default: withCtx(() => [
                                          createVNode(_component_DocumentCopy)
                                        ]),
                                        _: 1
                                      })
                                    ]),
                                    _: 1
                                  }, 8, ["model-value"]),
                                  createVNode(_component_el_button, {
                                    onClick: _cache[24] || (_cache[24] = ($event) => copyToClipboard(shortcode.value))
                                  }, {
                                    default: withCtx(() => [
                                      createVNode(_component_el_icon, { class: "mr-1" }, {
                                        default: withCtx(() => [
                                          createVNode(_component_CopyDocument)
                                        ]),
                                        _: 1
                                      })
                                    ]),
                                    _: 1
                                  })
                                ])
                              ]),
                              _: 1
                            }, 8, ["label"])
                          ]),
                          createBaseVNode("div", _hoisted_34, [
                            createBaseVNode("h3", _hoisted_35, toDisplayString(unref(t)("targetPages")), 1),
                            createVNode(_component_el_form_item, {
                              label: unref(t)("labelDisplayOn")
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_radio_group, {
                                  modelValue: formData.value.deployment.targetPages,
                                  "onUpdate:modelValue": _cache[25] || (_cache[25] = ($event) => formData.value.deployment.targetPages = $event)
                                }, {
                                  default: withCtx(() => [
                                    createVNode(_component_el_radio_button, { label: "all" }, {
                                      default: withCtx(() => [
                                        createTextVNode(toDisplayString(unref(t)("displayAllPages")), 1)
                                      ]),
                                      _: 1
                                    }),
                                    createVNode(_component_el_radio_button, { label: "selected" }, {
                                      default: withCtx(() => [
                                        createTextVNode(toDisplayString(unref(t)("displaySelectedPages")), 1)
                                      ]),
                                      _: 1
                                    }),
                                    createVNode(_component_el_radio_button, { label: "exclude" }, {
                                      default: withCtx(() => [
                                        createTextVNode(toDisplayString(unref(t)("displayExcludePages")), 1)
                                      ]),
                                      _: 1
                                    })
                                  ]),
                                  _: 1
                                }, 8, ["modelValue"])
                              ]),
                              _: 1
                            }, 8, ["label"]),
                            formData.value.deployment.targetPages !== "all" ? (openBlock(), createBlock(_component_el_form_item, {
                              key: 0,
                              label: unref(t)("labelSelectPages")
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_select, {
                                  modelValue: formData.value.deployment.selectedPages,
                                  "onUpdate:modelValue": _cache[26] || (_cache[26] = ($event) => formData.value.deployment.selectedPages = $event),
                                  multiple: "",
                                  filterable: "",
                                  remote: "",
                                  "reserve-keyword": "",
                                  clearable: "",
                                  "collapse-tags": "",
                                  "collapse-tags-tooltip": "",
                                  placeholder: "Select pages",
                                  class: "w-full",
                                  loading: pagesLoading.value,
                                  "remote-method": searchAvailablePages,
                                  onVisibleChange: onPageSelectVisibleChange
                                }, {
                                  default: withCtx(() => [
                                    (openBlock(true), createElementBlock(Fragment, null, renderList(availablePages.value, (page) => {
                                      return openBlock(), createBlock(_component_el_option, {
                                        key: page.id,
                                        label: page.title,
                                        value: page.id
                                      }, null, 8, ["label", "value"]);
                                    }), 128))
                                  ]),
                                  _: 1
                                }, 8, ["modelValue", "loading"])
                              ]),
                              _: 1
                            }, 8, ["label"])) : createCommentVNode("", true)
                          ])
                        ]),
                        _: 1
                      })
                    ])
                  ]),
                  _: 1
                }),
                createVNode(_component_el_col, {
                  span: 24,
                  lg: 9
                }, {
                  default: withCtx(() => [
                    createBaseVNode("div", _hoisted_36, [
                      createBaseVNode("div", _hoisted_37, [
                        _cache[49] || (_cache[49] = createBaseVNode("div", { class: "chatbot-preview-label" }, [
                          createBaseVNode("span", { class: "chatbot-preview-label__text" }, "Live Preview"),
                          createBaseVNode("span", { class: "chatbot-preview-label__badge" }, "REAL-TIME")
                        ], -1)),
                        createBaseVNode("div", {
                          class: normalizeClass(previewClasses.value),
                          style: normalizeStyle(previewStyles.value)
                        }, [
                          createBaseVNode("div", _hoisted_38, [
                            createBaseVNode("div", _hoisted_39, [
                              createBaseVNode("img", {
                                src: resolveAvatarUrl(formData.value.avatar),
                                class: "w-full h-full object-cover"
                              }, null, 8, _hoisted_40)
                            ]),
                            createBaseVNode("div", _hoisted_41, [
                              createBaseVNode("div", _hoisted_42, toDisplayString(formData.value.name || "Chatbot"), 1),
                              _cache[41] || (_cache[41] = createBaseVNode("div", { class: "chatbot-preview__status" }, [
                                createBaseVNode("span", { class: "chatbot-preview__status-dot" }),
                                createTextVNode(" Online ")
                              ], -1))
                            ]),
                            _cache[42] || (_cache[42] = createBaseVNode("button", {
                              class: "chatbot-preview__close",
                              type: "button"
                            }, [
                              createBaseVNode("svg", { viewBox: "0 0 24 24" }, [
                                createBaseVNode("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" })
                              ])
                            ], -1))
                          ]),
                          createBaseVNode("div", _hoisted_43, [
                            (openBlock(true), createElementBlock(Fragment, null, renderList(previewMessages.value, (msg, index) => {
                              return openBlock(), createElementBlock("div", {
                                key: index,
                                class: normalizeClass(["chatbot-preview__message", msg.role === "user" ? "chatbot-preview__message--user" : "chatbot-preview__message--bot"])
                              }, [
                                createBaseVNode("div", _hoisted_44, toDisplayString(msg.content), 1)
                              ], 2);
                            }), 128)),
                            previewSending.value ? (openBlock(), createElementBlock("div", _hoisted_45, [..._cache[43] || (_cache[43] = [
                              createBaseVNode("div", { class: "chatbot-preview__bubble" }, "Typing...", -1)
                            ])])) : createCommentVNode("", true),
                            shouldShowLinkedFormPreview.value && linkedFormPreview.value ? (openBlock(), createElementBlock("div", _hoisted_46, [
                              createBaseVNode("div", _hoisted_47, [
                                createBaseVNode("div", _hoisted_48, [
                                  createBaseVNode("div", _hoisted_49, toDisplayString(linkedFormPreview.value.name || "Form"), 1),
                                  linkedFormPreview.value.description ? (openBlock(), createElementBlock("div", _hoisted_50, toDisplayString(linkedFormPreview.value.description), 1)) : createCommentVNode("", true),
                                  createBaseVNode("form", {
                                    class: "chatbot-preview__form-fields",
                                    onSubmit: _cache[29] || (_cache[29] = withModifiers(() => {
                                    }, ["prevent"]))
                                  }, [
                                    linkedFormFields.value.length > 0 ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
                                      (openBlock(true), createElementBlock(Fragment, null, renderList(linkedFormFields.value, (field, index) => {
                                        return openBlock(), createElementBlock(Fragment, {
                                          key: buildPreviewFieldKey(field, index)
                                        }, [
                                          getPreviewFieldType(field) === "textarea" ? (openBlock(), createElementBlock("label", _hoisted_51, [
                                            createTextVNode(toDisplayString(getPreviewFieldLabel(field, index)) + " ", 1),
                                            field.required ? (openBlock(), createElementBlock("span", _hoisted_52, "*")) : createCommentVNode("", true),
                                            createBaseVNode("textarea", {
                                              name: buildPreviewFieldKey(field, index),
                                              placeholder: field.placeholder || "",
                                              required: !!field.required
                                            }, null, 8, _hoisted_53)
                                          ])) : getPreviewFieldType(field) === "select" ? (openBlock(), createElementBlock("label", _hoisted_54, [
                                            createTextVNode(toDisplayString(getPreviewFieldLabel(field, index)) + " ", 1),
                                            field.required ? (openBlock(), createElementBlock("span", _hoisted_55, "*")) : createCommentVNode("", true),
                                            createBaseVNode("select", {
                                              name: buildPreviewFieldKey(field, index),
                                              required: !!field.required
                                            }, [
                                              _cache[44] || (_cache[44] = createBaseVNode("option", { value: "" }, "Select", -1)),
                                              (openBlock(true), createElementBlock(Fragment, null, renderList(getPreviewFieldOptions(field), (option) => {
                                                return openBlock(), createElementBlock("option", {
                                                  key: String(option),
                                                  value: option
                                                }, toDisplayString(option), 9, _hoisted_57);
                                              }), 128))
                                            ], 8, _hoisted_56)
                                          ])) : getPreviewFieldType(field) === "checkbox" ? (openBlock(), createElementBlock("div", _hoisted_58, [
                                            createBaseVNode("div", _hoisted_59, [
                                              createTextVNode(toDisplayString(getPreviewFieldLabel(field, index)) + " ", 1),
                                              field.required ? (openBlock(), createElementBlock("span", _hoisted_60, "*")) : createCommentVNode("", true)
                                            ]),
                                            getPreviewFieldOptions(field).length > 0 ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(getPreviewFieldOptions(field), (option, optionIndex) => {
                                              return openBlock(), createElementBlock("label", {
                                                key: `${buildPreviewFieldKey(field, index)}_${String(option)}_${optionIndex}`,
                                                class: "chatbot-preview__form-option"
                                              }, [
                                                createBaseVNode("input", {
                                                  type: "checkbox",
                                                  name: buildPreviewFieldKey(field, index),
                                                  value: option,
                                                  required: !!field.required && optionIndex === 0
                                                }, null, 8, _hoisted_61),
                                                createBaseVNode("span", null, toDisplayString(option), 1)
                                              ]);
                                            }), 128)) : (openBlock(), createElementBlock("div", _hoisted_62, "No options"))
                                          ])) : getPreviewFieldType(field) === "radio" ? (openBlock(), createElementBlock("div", _hoisted_63, [
                                            createBaseVNode("div", _hoisted_64, [
                                              createTextVNode(toDisplayString(getPreviewFieldLabel(field, index)) + " ", 1),
                                              field.required ? (openBlock(), createElementBlock("span", _hoisted_65, "*")) : createCommentVNode("", true)
                                            ]),
                                            getPreviewFieldOptions(field).length > 0 ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(getPreviewFieldOptions(field), (option, optionIndex) => {
                                              return openBlock(), createElementBlock("label", {
                                                key: `${buildPreviewFieldKey(field, index)}_${String(option)}_${optionIndex}`,
                                                class: "chatbot-preview__form-option"
                                              }, [
                                                createBaseVNode("input", {
                                                  type: "radio",
                                                  name: buildPreviewFieldKey(field, index),
                                                  value: option,
                                                  required: !!field.required && optionIndex === 0
                                                }, null, 8, _hoisted_66),
                                                createBaseVNode("span", null, toDisplayString(option), 1)
                                              ]);
                                            }), 128)) : (openBlock(), createElementBlock("div", _hoisted_67, "No options"))
                                          ])) : getPreviewFieldType(field) === "captcha" ? (openBlock(), createElementBlock("div", _hoisted_68, [
                                            createBaseVNode("div", _hoisted_69, [
                                              createTextVNode(toDisplayString(getPreviewFieldLabel(field, index)) + " ", 1),
                                              field.required ? (openBlock(), createElementBlock("span", _hoisted_70, "*")) : createCommentVNode("", true)
                                            ]),
                                            _cache[45] || (_cache[45] = createBaseVNode("div", { class: "chatbot-preview__form-captcha" }, "Captcha placeholder", -1))
                                          ])) : getPreviewFieldType(field) === "rating" ? (openBlock(), createElementBlock("label", _hoisted_71, [
                                            createTextVNode(toDisplayString(getPreviewFieldLabel(field, index)) + " ", 1),
                                            field.required ? (openBlock(), createElementBlock("span", _hoisted_72, "*")) : createCommentVNode("", true),
                                            createBaseVNode("select", {
                                              name: buildPreviewFieldKey(field, index),
                                              required: !!field.required
                                            }, [
                                              _cache[46] || (_cache[46] = createBaseVNode("option", { value: "" }, "Select", -1)),
                                              (openBlock(true), createElementBlock(Fragment, null, renderList(getPreviewFieldOptions(field).length > 0 ? getPreviewFieldOptions(field) : ["1", "2", "3", "4", "5"], (option) => {
                                                return openBlock(), createElementBlock("option", {
                                                  key: String(option),
                                                  value: option
                                                }, toDisplayString(option), 9, _hoisted_74);
                                              }), 128))
                                            ], 8, _hoisted_73)
                                          ])) : getPreviewFieldType(field) === "submit" ? (openBlock(), createElementBlock("button", {
                                            key: 6,
                                            type: "submit",
                                            class: "chatbot-preview__form-submit",
                                            onClick: _cache[27] || (_cache[27] = withModifiers(() => {
                                            }, ["prevent"]))
                                          }, toDisplayString(getPreviewFieldLabel(field, index) || "Submit"), 1)) : (openBlock(), createElementBlock("label", _hoisted_75, [
                                            createTextVNode(toDisplayString(getPreviewFieldLabel(field, index)) + " ", 1),
                                            field.required ? (openBlock(), createElementBlock("span", _hoisted_76, "*")) : createCommentVNode("", true),
                                            createBaseVNode("input", {
                                              type: isNativePreviewInputType(getPreviewFieldType(field)) ? getPreviewFieldType(field) : "text",
                                              name: buildPreviewFieldKey(field, index),
                                              placeholder: field.placeholder || "",
                                              required: !!field.required
                                            }, null, 8, _hoisted_77)
                                          ]))
                                        ], 64);
                                      }), 128)),
                                      !previewHasSubmitField.value ? (openBlock(), createElementBlock("button", {
                                        key: 0,
                                        type: "submit",
                                        class: "chatbot-preview__form-submit",
                                        onClick: _cache[28] || (_cache[28] = withModifiers(() => {
                                        }, ["prevent"]))
                                      }, "Submit")) : createCommentVNode("", true)
                                    ], 64)) : (openBlock(), createElementBlock("div", _hoisted_78, "No fields configured."))
                                  ], 32)
                                ])
                              ])
                            ])) : createCommentVNode("", true)
                          ]),
                          shouldShowSuggestedQuestionsPreview.value ? (openBlock(), createElementBlock("div", _hoisted_79, [
                            (openBlock(true), createElementBlock(Fragment, null, renderList(previewSuggestedQuestions.value, (question, index) => {
                              return openBlock(), createElementBlock("button", {
                                key: `${question}_${index}`,
                                type: "button",
                                class: "chatbot-preview__suggestion",
                                onClick: ($event) => sendPreviewSuggestedQuestion(question)
                              }, toDisplayString(question), 9, _hoisted_80);
                            }), 128))
                          ])) : createCommentVNode("", true),
                          createBaseVNode("div", _hoisted_81, [
                            createBaseVNode("div", _hoisted_82, [
                              createBaseVNode("div", _hoisted_83, [
                                withDirectives(createBaseVNode("input", {
                                  "onUpdate:modelValue": _cache[30] || (_cache[30] = ($event) => previewInput.value = $event),
                                  type: "text",
                                  class: "chatbot-preview__input",
                                  placeholder: "Write a message...",
                                  disabled: previewSending.value,
                                  onKeydown: withKeys(withModifiers(sendPreviewMessage, ["prevent"]), ["enter"])
                                }, null, 40, _hoisted_84), [
                                  [vModelText, previewInput.value]
                                ]),
                                createBaseVNode("button", {
                                  class: "chatbot-preview__send-btn",
                                  type: "button",
                                  disabled: previewSending.value || !previewInput.value.trim(),
                                  onClick: sendPreviewMessage
                                }, [..._cache[47] || (_cache[47] = [
                                  createBaseVNode("svg", { viewBox: "0 0 24 24" }, [
                                    createBaseVNode("path", { d: "M2.01 21L23 12 2.01 3 2 10l15 2-15 2z" })
                                  ], -1)
                                ])], 8, _hoisted_85)
                              ])
                            ]),
                            _cache[48] || (_cache[48] = createBaseVNode("div", { class: "chatbot-preview__footer" }, [
                              createBaseVNode("svg", { viewBox: "0 0 24 24" }, [
                                createBaseVNode("path", { d: "M7 2v11h3v9l7-12h-4l4-8z" })
                              ]),
                              createBaseVNode("span", null, "Powered by AI")
                            ], -1))
                          ])
                        ], 6)
                      ])
                    ])
                  ]),
                  _: 1
                })
              ]),
              _: 1
            }),
            createVNode(_component_el_dialog, {
              modelValue: showIconPicker.value,
              "onUpdate:modelValue": _cache[32] || (_cache[32] = ($event) => showIconPicker.value = $event),
              title: "Choose an Icon",
              width: "560px",
              "destroy-on-close": ""
            }, {
              footer: withCtx(() => [
                createVNode(_component_el_button, {
                  onClick: _cache[31] || (_cache[31] = ($event) => showIconPicker.value = false)
                }, {
                  default: withCtx(() => [
                    createTextVNode(toDisplayString(unref(t)("close")), 1)
                  ]),
                  _: 1
                })
              ]),
              default: withCtx(() => [
                createVNode(_component_el_space, {
                  direction: "vertical",
                  size: 16,
                  class: "w-full"
                }, {
                  default: withCtx(() => [
                    iconList.value.length === 0 ? (openBlock(), createBlock(_component_el_empty, {
                      key: 0,
                      description: "No icons available"
                    })) : (openBlock(), createBlock(_component_el_scrollbar, {
                      key: 1,
                      "max-height": "320px",
                      class: "w-full"
                    }, {
                      default: withCtx(() => [
                        createVNode(_component_el_row, { gutter: 12 }, {
                          default: withCtx(() => [
                            (openBlock(true), createElementBlock(Fragment, null, renderList(iconList.value, (icon) => {
                              return openBlock(), createBlock(_component_el_col, {
                                key: icon.id,
                                span: 8,
                                class: "mb-3"
                              }, {
                                default: withCtx(() => [
                                  createVNode(_component_el_card, {
                                    shadow: "hover",
                                    class: normalizeClass(["cursor-pointer", { "is-active": normalizeLegacyAvatarValue(formData.value.avatar) === icon.id }]),
                                    onClick: ($event) => selectIcon(icon.id)
                                  }, {
                                    default: withCtx(() => [
                                      createVNode(_component_el_space, {
                                        direction: "vertical",
                                        alignment: "center",
                                        class: "w-full",
                                        size: 8
                                      }, {
                                        default: withCtx(() => [
                                          createVNode(_component_el_image, {
                                            src: icon.url,
                                            alt: icon.label,
                                            fit: "cover",
                                            class: "w-8 h-8 rounded-md"
                                          }, null, 8, ["src", "alt"]),
                                          createVNode(_component_el_text, { size: "small" }, {
                                            default: withCtx(() => [
                                              createTextVNode(toDisplayString(icon.label), 1)
                                            ]),
                                            _: 2
                                          }, 1024)
                                        ]),
                                        _: 2
                                      }, 1024)
                                    ]),
                                    _: 2
                                  }, 1032, ["class", "onClick"])
                                ]),
                                _: 2
                              }, 1024);
                            }), 128))
                          ]),
                          _: 1
                        })
                      ]),
                      _: 1
                    }))
                  ]),
                  _: 1
                })
              ]),
              _: 1
            }, 8, ["modelValue"]),
            createBaseVNode("div", _hoisted_86, [
              createBaseVNode("div", _hoisted_87, [
                createVNode(_component_el_button, {
                  onClick: _cache[33] || (_cache[33] = ($event) => _ctx.$emit("cancel")),
                  disabled: saving.value
                }, {
                  default: withCtx(() => [
                    createTextVNode(toDisplayString(unref(t)("cancel")), 1)
                  ]),
                  _: 1
                }, 8, ["disabled"]),
                createVNode(_component_el_button, {
                  type: "primary",
                  onClick: saveChatbot,
                  loading: saving.value
                }, {
                  default: withCtx(() => [
                    createTextVNode(toDisplayString(__props.chatbotId ? unref(t)("updateChatbot") : unref(t)("launchChatbot")), 1)
                  ]),
                  _: 1
                }, 8, ["loading"])
              ])
            ])
          ]),
          _: 1
        });
      };
    }
  };
  const CreateEditChatbot = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["__scopeId", "data-v-c96b5b0f"]]);
  const _hoisted_1$K = { class: "space-y-6" };
  const _hoisted_2$J = { class: "h-40 bg-gray-50 flex items-center justify-center rounded-t-lg" };
  const _hoisted_3$F = { class: "pt-4" };
  const _hoisted_4$C = { class: "font-bold text-lg mb-2 text-gray-900" };
  const _hoisted_5$w = { class: "text-gray-600 text-sm mb-4 h-10 line-clamp-2" };
  const _sfc_main$M = {
    __name: "ChatbotTemplates",
    emits: ["use-template"],
    setup(__props, { emit: __emit }) {
      const api = useChatbotsAPI();
      const { showNotification } = useNotifications();
      const templates = ref([]);
      const loading = ref(true);
      const getIconComponent = (iconName) => {
        if (!iconName) return document_default;
        const lower = iconName.toLowerCase();
        if (lower.includes("support") || lower.includes("headset")) return service_default;
        if (lower.includes("sale") || lower.includes("cart")) return shopping_cart_default;
        if (lower.includes("chat") || lower.includes("comment")) return chat_dot_round_default;
        return document_default;
      };
      const loadTemplates = async () => {
        loading.value = true;
        try {
          const response = await api.getChatbotTemplates();
          if (response.success) {
            templates.value = response.data;
          }
        } catch (error) {
          showNotification("error", "Failed to load templates");
        } finally {
          loading.value = false;
        }
      };
      const useTemplate = (template) => {
        emit2("use-template", template);
      };
      const emit2 = __emit;
      onMounted(() => {
        loadTemplates();
      });
      return (_ctx, _cache) => {
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_card = resolveComponent("el-card");
        const _component_el_col = resolveComponent("el-col");
        const _component_el_row = resolveComponent("el-row");
        return openBlock(), createElementBlock("div", _hoisted_1$K, [
          loading.value ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            "show-toolbar": false,
            cards: 3
          })) : (openBlock(), createBlock(_component_el_row, {
            key: 1,
            gutter: 24
          }, {
            default: withCtx(() => [
              (openBlock(true), createElementBlock(Fragment, null, renderList(templates.value, (template) => {
                return openBlock(), createBlock(_component_el_col, {
                  key: template.name,
                  span: 24,
                  md: 12,
                  lg: 8
                }, {
                  default: withCtx(() => [
                    createVNode(_component_el_card, {
                      shadow: "hover",
                      class: "cursor-pointer hover:shadow-lg transition-all"
                    }, {
                      default: withCtx(() => [
                        createBaseVNode("div", _hoisted_2$J, [
                          createVNode(_component_el_icon, {
                            size: 40,
                            class: "text-gray-400"
                          }, {
                            default: withCtx(() => [
                              (openBlock(), createBlock(resolveDynamicComponent(getIconComponent(template.icon))))
                            ]),
                            _: 2
                          }, 1024)
                        ]),
                        createBaseVNode("div", _hoisted_3$F, [
                          createBaseVNode("h3", _hoisted_4$C, toDisplayString(template.name), 1),
                          createBaseVNode("p", _hoisted_5$w, toDisplayString(template.description), 1),
                          createVNode(_component_el_button, {
                            type: "primary",
                            plain: "",
                            class: "w-full",
                            onClick: ($event) => useTemplate(template)
                          }, {
                            default: withCtx(() => [..._cache[0] || (_cache[0] = [
                              createTextVNode(" Use Template ", -1)
                            ])]),
                            _: 1
                          }, 8, ["onClick"])
                        ])
                      ]),
                      _: 2
                    }, 1024)
                  ]),
                  _: 2
                }, 1024);
              }), 128)),
              templates.value.length === 0 ? (openBlock(), createBlock(_component_el_col, {
                key: 0,
                span: 24
              }, {
                default: withCtx(() => [..._cache[1] || (_cache[1] = [
                  createBaseVNode("div", { class: "text-center py-10 text-gray-500" }, " No templates available ", -1)
                ])]),
                _: 1
              })) : createCommentVNode("", true)
            ]),
            _: 1
          }))
        ]);
      };
    }
  };
  const _hoisted_1$J = { class: "px-6 py-4" };
  const _hoisted_2$I = { class: "mb-6" };
  const _hoisted_3$E = { class: "text-2xl font-bold text-gray-900" };
  const _hoisted_4$B = { class: "text-gray-600 mt-1" };
  const _hoisted_5$v = { class: "flex items-center" };
  const _sfc_main$L = {
    __name: "Chatbots",
    setup(__props) {
      const t = inject("t", (k) => k);
      const currentTab = ref("all");
      const editingChatbotId = ref(null);
      const templateData = ref(null);
      const tabs = computed(() => [
        { id: "all", name: t("allChatbots"), icon: "fas fa-list" },
        { id: "create", name: t("createEdit"), icon: "fas fa-plus-circle" },
        { id: "templates", name: t("templates"), icon: "fas fa-clone" }
      ]);
      const tabComponents = {
        "all": _sfc_main$O,
        "create": CreateEditChatbot,
        "templates": _sfc_main$M
      };
      const currentTabComponent = computed(() => tabComponents[currentTab.value]);
      const handleCreateComplete = () => {
        currentTab.value = "all";
        editingChatbotId.value = null;
        templateData.value = null;
      };
      const handleCancel = () => {
        currentTab.value = "all";
        editingChatbotId.value = null;
        templateData.value = null;
      };
      const handleEdit = (id) => {
        editingChatbotId.value = id;
        templateData.value = null;
        currentTab.value = "create";
      };
      const handleCreate = () => {
        editingChatbotId.value = null;
        templateData.value = null;
        currentTab.value = "create";
      };
      const handleUseTemplate = (template) => {
        templateData.value = template;
        editingChatbotId.value = null;
        currentTab.value = "create";
      };
      return (_ctx, _cache) => {
        const _component_el_tab_pane = resolveComponent("el-tab-pane");
        const _component_el_tabs = resolveComponent("el-tabs");
        return openBlock(), createElementBlock("div", _hoisted_1$J, [
          createBaseVNode("div", _hoisted_2$I, [
            createBaseVNode("h1", _hoisted_3$E, toDisplayString(unref(t)("navChatbots")), 1),
            createBaseVNode("p", _hoisted_4$B, toDisplayString(unref(t)("chatbotsSubtitle")), 1)
          ]),
          createVNode(_component_el_tabs, {
            modelValue: currentTab.value,
            "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => currentTab.value = $event),
            class: "mb-6"
          }, {
            default: withCtx(() => [
              (openBlock(true), createElementBlock(Fragment, null, renderList(tabs.value, (tab) => {
                return openBlock(), createBlock(_component_el_tab_pane, {
                  key: tab.id,
                  label: tab.name,
                  name: tab.id
                }, {
                  label: withCtx(() => [
                    createBaseVNode("span", _hoisted_5$v, [
                      createBaseVNode("i", {
                        class: normalizeClass([tab.icon, "mr-2"])
                      }, null, 2),
                      createTextVNode(" " + toDisplayString(tab.name), 1)
                    ])
                  ]),
                  _: 2
                }, 1032, ["label", "name"]);
              }), 128))
            ]),
            _: 1
          }, 8, ["modelValue"]),
          createVNode(Transition, {
            name: "fade",
            mode: "out-in"
          }, {
            default: withCtx(() => [
              (openBlock(), createBlock(KeepAlive, null, [
                (openBlock(), createBlock(resolveDynamicComponent(currentTabComponent.value), {
                  "chatbot-id": editingChatbotId.value,
                  "template-data": templateData.value,
                  onCreate: handleCreate,
                  onCancel: handleCancel,
                  onEdit: handleEdit,
                  onComplete: handleCreateComplete,
                  onUseTemplate: handleUseTemplate
                }, null, 40, ["chatbot-id", "template-data"]))
              ], 1024))
            ]),
            _: 1
          })
        ]);
      };
    }
  };
  function useContentAPI() {
    const getContentTypes = async () => {
      return {
        success: true,
        data: [
          { id: "blog_post", name: "Blog Post", icon: "fas fa-pen-nib" }
        ]
      };
    };
    const generateContent = async (params) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_generate_content", {
          params
        });
        return { success: true, data: response };
      } catch (error) {
        console.error("Error generating content:", error);
        return { success: false, message: error.message };
      }
    };
    const saveContent = async (data) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_save_generated_content", {
          data
        });
        return { success: true, data: response };
      } catch (error) {
        console.error("Error saving content:", error);
        return { success: false, message: error.message };
      }
    };
    const generateImage = async (data) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_generate_image", { data });
        return { success: true, data: response };
      } catch (error) {
        console.error("Error generating image:", error);
        return { success: false, message: error.message };
      }
    };
    const saveGeneratedImage = async (data) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_save_generated_image", { data });
        return { success: true, data: response };
      } catch (error) {
        console.error("Error saving image:", error);
        return { success: false, message: error.message };
      }
    };
    const getWPPosts = async (params) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_get_wp_posts", {
          params
        });
        return { success: true, data: response };
      } catch (error) {
        console.error("Error fetching WP posts:", error);
        return { success: false, message: error.message };
      }
    };
    return {
      getContentTypes,
      generateContent,
      saveContent,
      generateImage,
      saveGeneratedImage,
      getWPPosts
    };
  }
  const _hoisted_1$I = { class: "flex flex-col lg:flex-row gap-6 h-[calc(100vh-200px)]" };
  const _hoisted_2$H = { class: "flex justify-between items-center" };
  const _hoisted_3$D = { class: "flex-1 overflow-y-auto p-6" };
  const _hoisted_4$A = {
    key: 0,
    class: "bg-blue-50 p-3 rounded-md mb-4 flex items-start gap-3"
  };
  const _hoisted_5$u = { class: "flex-1" };
  const _hoisted_6$g = { class: "text-sm font-semibold text-blue-900" };
  const _hoisted_7$e = { class: "text-xs text-blue-700" };
  const _hoisted_8$e = { class: "bg-gray-50 p-4 rounded-lg border border-gray-200 mb-6" };
  const _hoisted_9$d = { class: "flex justify-between items-center mb-2" };
  const _hoisted_10$a = { class: "flex items-center w-full gap-4" };
  const _hoisted_11$a = { class: "text-sm text-gray-500 w-24 text-right" };
  const _hoisted_12$7 = { class: "p-4 border-t border-gray-200" };
  const _hoisted_13$6 = { class: "flex-1 p-8 overflow-y-auto prose max-w-none" };
  const _hoisted_14$4 = { key: 0 };
  const _hoisted_15$4 = {
    key: 0,
    class: "mb-4"
  };
  const _hoisted_16$4 = ["innerHTML"];
  const _hoisted_17$4 = { class: "mt-8 pt-6 border-t border-gray-100" };
  const _hoisted_18$4 = {
    key: 0,
    class: "mb-4"
  };
  const _hoisted_19$4 = { key: 1 };
  const _hoisted_20$4 = { class: "p-4 border-t border-gray-200 bg-gray-50 flex flex-col sm:flex-row justify-between items-start sm:items-center gap-3" };
  const _hoisted_21$4 = { class: "text-xs text-gray-500 flex space-x-4" };
  const _hoisted_22$4 = {
    key: 0,
    class: "flex gap-2"
  };
  const _sfc_main$K = {
    __name: "GenerateContent",
    props: {
      initialData: {
        type: Object,
        default: () => ({})
      }
    },
    setup(__props) {
      const { showNotification } = useNotifications();
      const { generateContent, saveContent } = useContentAPI();
      const { getKnowledgeSources, semanticSearch } = useKnowledgeBaseAPI();
      const props2 = __props;
      const activeTemplate = ref(null);
      const sources = ref([]);
      const templates = [
        {
          id: "seo_meta",
          name: "SEO Meta Description",
          icon: "fas fa-search",
          description: "Generate high-CTR meta titles and descriptions.",
          topicLabel: "Target Keyword",
          topicPlaceholder: "e.g. Best Pizza in New York",
          hideLength: true,
          fields: [
            { key: "page_content", label: "Brief Page Content", type: "textarea", placeholder: "Paste a summary of the page..." }
          ]
        },
        {
          id: "product_desc",
          name: "Product Description",
          icon: "fas fa-shopping-cart",
          description: "Write compelling descriptions for WooCommerce products.",
          topicLabel: "Product Name",
          topicPlaceholder: "e.g. Ultra-Light Running Shoes",
          fields: [
            { key: "features", label: "Key Features", type: "textarea", placeholder: "List features (one per line)..." },
            { key: "audience", label: "Target Audience", type: "text", placeholder: "e.g. Marathon runners" }
          ]
        },
        {
          id: "social_post",
          name: "Social Media Post",
          icon: "fas fa-share-nodes",
          description: "Create engaging posts for LinkedIn, Twitter, or FB.",
          topicLabel: "Post Topic",
          topicPlaceholder: "e.g. Launching our new AI tool",
          hideLength: true,
          fields: [
            { key: "platform", label: "Platform", type: "text", placeholder: "e.g. LinkedIn" },
            { key: "cta", label: "Call to Action", type: "text", placeholder: "e.g. Register for the webinar" }
          ]
        }
      ];
      const form = ref({
        topic: props2.initialData.topic || "",
        description: props2.initialData.description || "",
        styleInstruction: props2.initialData.styleInstruction || "Generate professional, polished content.",
        length: props2.initialData.length || 1e3,
        dynamic: {},
        template: "",
        useKB: false,
        kbSources: []
      });
      const loading = ref(false);
      const saving = ref(false);
      const savingTarget = ref("");
      const result = ref(null);
      const fetchSources = async () => {
        const res = await getKnowledgeSources();
        if (res.success) {
          sources.value = res.data;
        }
      };
      const handleTemplateSelect = (tpl) => {
        activeTemplate.value = tpl;
        form.value.template = tpl.id;
        form.value.dynamic = {};
        if (tpl.id === "seo_meta") form.value.styleInstruction = "Concise, action-oriented, optimized for search clicks.";
        if (tpl.id === "social_post") form.value.styleInstruction = "Engaging, with emojis, formatted for social feeds.";
      };
      const resetTemplate = () => {
        activeTemplate.value = null;
        form.value.template = "";
        form.value.dynamic = {};
      };
      const handleGenerate = async () => {
        if (!form.value.topic) {
          showNotification("warning", "Please enter a topic");
          return;
        }
        loading.value = true;
        try {
          let params = { ...form.value };
          if (form.value.useKB) {
            const kbRes = await semanticSearch(form.value.topic);
            if (kbRes.success && kbRes.results?.length > 0) {
              const kbContext = kbRes.results.map((r) => r.content).join("\n\n");
              params.description = `Context from Knowledge Base:
${kbContext}

User Description: ${params.description}`;
            }
          }
          if (activeTemplate.value) {
            let context = `Template: ${activeTemplate.value.name}
`;
            for (const [key, val] of Object.entries(form.value.dynamic)) {
              context += `${key}: ${val}
`;
            }
            params.description = (params.description ? params.description + "\n\n" : "") + context;
          }
          const response = await generateContent(params);
          if (response.success) {
            result.value = response.data;
          } else {
            showNotification("error", response.message || "Generation failed");
          }
        } catch (error) {
          console.error("Generation failed:", error);
          showNotification("error", "An error occurred during generation");
        } finally {
          loading.value = false;
        }
      };
      const handleSave = async (postType) => {
        if (!result.value) return;
        saving.value = true;
        savingTarget.value = postType;
        try {
          const saveData = {
            title: result.value.title,
            content: result.value.generated_content,
            tags: result.value.tags,
            categories: result.value.categories,
            post_type: postType
          };
          const response = await saveContent(saveData);
          if (response.success) {
            showNotification("success", `Content saved as ${postType === "page" ? "Page" : "Post"} draft successfully!`);
          } else {
            showNotification("error", response.message || "Failed to save");
          }
        } catch (error) {
          console.error("Save failed:", error);
          showNotification("error", "An error occurred while saving");
        } finally {
          saving.value = false;
          savingTarget.value = "";
        }
      };
      onMounted(fetchSources);
      return (_ctx, _cache) => {
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_dropdown_item = resolveComponent("el-dropdown-item");
        const _component_el_dropdown_menu = resolveComponent("el-dropdown-menu");
        const _component_el_dropdown = resolveComponent("el-dropdown");
        const _component_el_input = resolveComponent("el-input");
        const _component_el_form_item = resolveComponent("el-form-item");
        const _component_el_switch = resolveComponent("el-switch");
        const _component_el_option = resolveComponent("el-option");
        const _component_el_select = resolveComponent("el-select");
        const _component_el_slider = resolveComponent("el-slider");
        const _component_el_form = resolveComponent("el-form");
        const _component_el_card = resolveComponent("el-card");
        const _component_el_tag = resolveComponent("el-tag");
        const _component_el_empty = resolveComponent("el-empty");
        return openBlock(), createElementBlock("div", _hoisted_1$I, [
          createVNode(_component_el_card, {
            class: "w-full lg:w-1/3 flex flex-col",
            shadow: "never",
            "body-style": { display: "flex", flexDirection: "column", flex: 1, padding: 0 }
          }, {
            header: withCtx(() => [
              createBaseVNode("div", _hoisted_2$H, [
                _cache[9] || (_cache[9] = createBaseVNode("h3", { class: "font-semibold text-gray-900" }, "Content Configuration", -1)),
                createVNode(_component_el_dropdown, {
                  trigger: "click",
                  onCommand: handleTemplateSelect
                }, {
                  dropdown: withCtx(() => [
                    createVNode(_component_el_dropdown_menu, null, {
                      default: withCtx(() => [
                        (openBlock(), createElementBlock(Fragment, null, renderList(templates, (tpl) => {
                          return createVNode(_component_el_dropdown_item, {
                            key: tpl.id,
                            command: tpl
                          }, {
                            default: withCtx(() => [
                              createBaseVNode("i", {
                                class: normalizeClass([tpl.icon, "mr-2"])
                              }, null, 2),
                              createTextVNode(" " + toDisplayString(tpl.name), 1)
                            ]),
                            _: 2
                          }, 1032, ["command"]);
                        }), 64))
                      ]),
                      _: 1
                    })
                  ]),
                  default: withCtx(() => [
                    createVNode(_component_el_button, { size: "small" }, {
                      default: withCtx(() => [
                        _cache[8] || (_cache[8] = createTextVNode(" Templates ", -1)),
                        createVNode(_component_el_icon, { class: "el-icon--right" }, {
                          default: withCtx(() => [
                            createVNode(unref(arrow_down_default))
                          ]),
                          _: 1
                        })
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                })
              ])
            ]),
            default: withCtx(() => [
              createBaseVNode("div", _hoisted_3$D, [
                createVNode(_component_el_form, {
                  "label-position": "top",
                  class: "space-y-6"
                }, {
                  default: withCtx(() => [
                    activeTemplate.value ? (openBlock(), createElementBlock("div", _hoisted_4$A, [
                      createVNode(_component_el_icon, { class: "mt-1 text-blue-500" }, {
                        default: withCtx(() => [
                          createVNode(unref(info_filled_default))
                        ]),
                        _: 1
                      }),
                      createBaseVNode("div", _hoisted_5$u, [
                        createBaseVNode("div", _hoisted_6$g, toDisplayString(activeTemplate.value.name), 1),
                        createBaseVNode("div", _hoisted_7$e, toDisplayString(activeTemplate.value.description), 1)
                      ]),
                      createVNode(_component_el_button, {
                        link: "",
                        type: "primary",
                        size: "small",
                        onClick: resetTemplate
                      }, {
                        default: withCtx(() => [..._cache[10] || (_cache[10] = [
                          createTextVNode("Reset", -1)
                        ])]),
                        _: 1
                      })
                    ])) : createCommentVNode("", true),
                    createVNode(_component_el_form_item, {
                      label: activeTemplate.value ? activeTemplate.value.topicLabel : "Topic / Title"
                    }, {
                      default: withCtx(() => [
                        createVNode(_component_el_input, {
                          modelValue: form.value.topic,
                          "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => form.value.topic = $event),
                          placeholder: activeTemplate.value ? activeTemplate.value.topicPlaceholder : "e.g. Benefits of AI in Marketing"
                        }, null, 8, ["modelValue", "placeholder"])
                      ]),
                      _: 1
                    }, 8, ["label"]),
                    createBaseVNode("div", _hoisted_8$e, [
                      createBaseVNode("div", _hoisted_9$d, [
                        _cache[11] || (_cache[11] = createBaseVNode("span", { class: "text-sm font-semibold text-gray-700" }, "Knowledge Base Context", -1)),
                        createVNode(_component_el_switch, {
                          modelValue: form.value.useKB,
                          "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => form.value.useKB = $event)
                        }, null, 8, ["modelValue"])
                      ]),
                      _cache[12] || (_cache[12] = createBaseVNode("p", { class: "text-xs text-gray-500 mb-3" }, " Enable to ground the generation in your synced Knowledge Base sources. ", -1)),
                      form.value.useKB ? (openBlock(), createBlock(_component_el_select, {
                        key: 0,
                        modelValue: form.value.kbSources,
                        "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => form.value.kbSources = $event),
                        multiple: "",
                        "collapse-tags": "",
                        placeholder: "All Sources (Semantic Search)",
                        class: "w-full",
                        size: "small"
                      }, {
                        default: withCtx(() => [
                          (openBlock(true), createElementBlock(Fragment, null, renderList(sources.value, (source) => {
                            return openBlock(), createBlock(_component_el_option, {
                              key: source.id,
                              label: source.name,
                              value: source.id
                            }, null, 8, ["label", "value"]);
                          }), 128))
                        ]),
                        _: 1
                      }, 8, ["modelValue"])) : createCommentVNode("", true)
                    ]),
                    activeTemplate.value ? (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(activeTemplate.value.fields, (field) => {
                      return openBlock(), createBlock(_component_el_form_item, {
                        key: field.key,
                        label: field.label
                      }, {
                        default: withCtx(() => [
                          field.type === "text" ? (openBlock(), createBlock(_component_el_input, {
                            key: 0,
                            modelValue: form.value.dynamic[field.key],
                            "onUpdate:modelValue": ($event) => form.value.dynamic[field.key] = $event,
                            placeholder: field.placeholder
                          }, null, 8, ["modelValue", "onUpdate:modelValue", "placeholder"])) : field.type === "textarea" ? (openBlock(), createBlock(_component_el_input, {
                            key: 1,
                            modelValue: form.value.dynamic[field.key],
                            "onUpdate:modelValue": ($event) => form.value.dynamic[field.key] = $event,
                            type: "textarea",
                            rows: 3,
                            placeholder: field.placeholder
                          }, null, 8, ["modelValue", "onUpdate:modelValue", "placeholder"])) : createCommentVNode("", true)
                        ]),
                        _: 2
                      }, 1032, ["label"]);
                    }), 128)) : (openBlock(), createBlock(_component_el_form_item, {
                      key: 2,
                      label: "Description"
                    }, {
                      default: withCtx(() => [
                        createVNode(_component_el_input, {
                          modelValue: form.value.description,
                          "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => form.value.description = $event),
                          type: "textarea",
                          rows: 4,
                          placeholder: "Describe what the post should be about, specific points to cover, or target audience."
                        }, null, 8, ["modelValue"])
                      ]),
                      _: 1
                    })),
                    createVNode(_component_el_form_item, { label: "Style Instruction" }, {
                      default: withCtx(() => [
                        createVNode(_component_el_input, {
                          modelValue: form.value.styleInstruction,
                          "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => form.value.styleInstruction = $event),
                          type: "textarea",
                          rows: 3,
                          placeholder: "e.g. Write in a confident, professional style aimed at business decision-makers."
                        }, null, 8, ["modelValue"])
                      ]),
                      _: 1
                    }),
                    !activeTemplate.value?.hideLength ? (openBlock(), createBlock(_component_el_form_item, {
                      key: 3,
                      label: "Length"
                    }, {
                      default: withCtx(() => [
                        createBaseVNode("div", _hoisted_10$a, [
                          createVNode(_component_el_slider, {
                            modelValue: form.value.length,
                            "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => form.value.length = $event),
                            min: 100,
                            max: 3e3,
                            step: 100,
                            class: "flex-1"
                          }, null, 8, ["modelValue"]),
                          createBaseVNode("span", _hoisted_11$a, toDisplayString(form.value.length) + " words", 1)
                        ])
                      ]),
                      _: 1
                    })) : createCommentVNode("", true)
                  ]),
                  _: 1
                })
              ]),
              createBaseVNode("div", _hoisted_12$7, [
                createVNode(_component_el_button, {
                  type: "primary",
                  class: "w-full",
                  loading: loading.value,
                  onClick: handleGenerate
                }, {
                  default: withCtx(() => [
                    !loading.value ? (openBlock(), createBlock(_component_el_icon, {
                      key: 0,
                      class: "mr-1"
                    }, {
                      default: withCtx(() => [
                        createVNode(unref(magic_stick_default))
                      ]),
                      _: 1
                    })) : createCommentVNode("", true),
                    createTextVNode(" " + toDisplayString(loading.value ? "Generating..." : "Generate Content"), 1)
                  ]),
                  _: 1
                }, 8, ["loading"])
              ])
            ]),
            _: 1
          }),
          createVNode(_component_el_card, {
            class: "w-full lg:w-2/3 flex flex-col",
            shadow: "never",
            "body-style": { display: "flex", flexDirection: "column", flex: 1, padding: 0 }
          }, {
            header: withCtx(() => [..._cache[13] || (_cache[13] = [
              createBaseVNode("div", { class: "flex justify-between items-center" }, [
                createBaseVNode("h3", { class: "font-semibold text-gray-900" }, "Generated Result")
              ], -1)
            ])]),
            default: withCtx(() => [
              createBaseVNode("div", _hoisted_13$6, [
                result.value ? (openBlock(), createElementBlock("div", _hoisted_14$4, [
                  result.value.title ? (openBlock(), createElementBlock("h1", _hoisted_15$4, toDisplayString(result.value.title), 1)) : createCommentVNode("", true),
                  createBaseVNode("div", {
                    innerHTML: result.value.generated_content
                  }, null, 8, _hoisted_16$4),
                  createBaseVNode("div", _hoisted_17$4, [
                    result.value.tags && result.value.tags.length ? (openBlock(), createElementBlock("div", _hoisted_18$4, [
                      _cache[14] || (_cache[14] = createBaseVNode("span", { class: "text-sm font-semibold text-gray-500 mr-2" }, "Suggested Tags:", -1)),
                      (openBlock(true), createElementBlock(Fragment, null, renderList(result.value.tags, (tag) => {
                        return openBlock(), createBlock(_component_el_tag, {
                          key: tag,
                          class: "mr-2",
                          size: "small"
                        }, {
                          default: withCtx(() => [
                            createTextVNode(toDisplayString(tag), 1)
                          ]),
                          _: 2
                        }, 1024);
                      }), 128))
                    ])) : createCommentVNode("", true),
                    result.value.categories && result.value.categories.length ? (openBlock(), createElementBlock("div", _hoisted_19$4, [
                      _cache[15] || (_cache[15] = createBaseVNode("span", { class: "text-sm font-semibold text-gray-500 mr-2" }, "Suggested Categories:", -1)),
                      (openBlock(true), createElementBlock(Fragment, null, renderList(result.value.categories, (cat) => {
                        return openBlock(), createBlock(_component_el_tag, {
                          key: cat,
                          class: "mr-2",
                          type: "success",
                          size: "small"
                        }, {
                          default: withCtx(() => [
                            createTextVNode(toDisplayString(cat), 1)
                          ]),
                          _: 2
                        }, 1024);
                      }), 128))
                    ])) : createCommentVNode("", true)
                  ])
                ])) : (openBlock(), createBlock(_component_el_empty, {
                  key: 1,
                  description: "Configure content options and click Generate"
                }, {
                  image: withCtx(() => [..._cache[16] || (_cache[16] = [
                    createBaseVNode("i", { class: "fas fa-pen-alt text-4xl text-gray-300" }, null, -1)
                  ])]),
                  _: 1
                }))
              ]),
              createBaseVNode("div", _hoisted_20$4, [
                createBaseVNode("div", _hoisted_21$4, [
                  createBaseVNode("span", null, toDisplayString(result.value ? result.value.tokens : 0) + " words", 1),
                  createBaseVNode("span", null, "~" + toDisplayString(result.value ? Math.ceil(result.value.tokens / 200) : 0) + " min read", 1)
                ]),
                result.value ? (openBlock(), createElementBlock("div", _hoisted_22$4, [
                  createVNode(_component_el_button, {
                    type: "success",
                    loading: saving.value && savingTarget.value === "post",
                    onClick: _cache[6] || (_cache[6] = ($event) => handleSave("post"))
                  }, {
                    default: withCtx(() => [..._cache[17] || (_cache[17] = [
                      createBaseVNode("i", { class: "fas fa-save mr-2" }, null, -1),
                      createTextVNode(" Save As Post ", -1)
                    ])]),
                    _: 1
                  }, 8, ["loading"]),
                  createVNode(_component_el_button, {
                    type: "primary",
                    loading: saving.value && savingTarget.value === "page",
                    onClick: _cache[7] || (_cache[7] = ($event) => handleSave("page"))
                  }, {
                    default: withCtx(() => [..._cache[18] || (_cache[18] = [
                      createBaseVNode("i", { class: "fas fa-save mr-2" }, null, -1),
                      createTextVNode(" Save As Page ", -1)
                    ])]),
                    _: 1
                  }, 8, ["loading"])
                ])) : createCommentVNode("", true)
              ])
            ]),
            _: 1
          })
        ]);
      };
    }
  };
  const _hoisted_1$H = { class: "bulk-generator" };
  const _hoisted_2$G = { class: "flex justify-between items-center" };
  const _hoisted_3$C = { key: 0 };
  const _hoisted_4$z = { key: 1 };
  const _hoisted_5$t = { class: "csv-upload-zone border-2 border-dashed border-gray-300 rounded-lg p-8 text-center" };
  const _hoisted_6$f = {
    key: 0,
    class: "mt-6"
  };
  const _hoisted_7$d = { class: "text-xs text-gray-500 mt-2" };
  const _hoisted_8$d = { class: "mt-6 flex justify-end" };
  const _hoisted_9$c = { class: "text-center py-4" };
  const _hoisted_10$9 = { class: "mt-4" };
  const _hoisted_11$9 = { class: "text-sm font-medium" };
  const _hoisted_12$6 = { class: "text-xs text-gray-500 mt-1" };
  const _hoisted_13$5 = { class: "mt-4" };
  const _sfc_main$J = {
    __name: "BulkGenerator",
    setup(__props) {
      const { showNotification } = useNotifications();
      inject("t", (k) => k);
      const mode = ref("paste");
      const pasteData = ref("");
      const submitting = ref(false);
      const csvData = ref([]);
      const csvHeaders = ref([]);
      const mapping = ref({
        topic: "",
        keywords: "",
        post_type: ""
      });
      const globalSettings = ref({
        style: "Generate professional, polished content.",
        length: 1e3,
        postType: "post",
        status: "draft"
      });
      const activeBatch = ref(false);
      const progress = ref(0);
      const totalCount = ref(0);
      const completedCount = ref(0);
      const progressStatus = ref("");
      const progressText = ref("Initializing...");
      const csvMappingPreview = [
        { key: "topic", field: "Topic / Title (Required)" },
        { key: "keywords", field: "Keywords (Optional)" },
        { key: "post_type", field: "Post Type (Optional)" }
      ];
      const canGenerate = computed(() => {
        if (mode.value === "paste") return pasteData.value.trim().length > 0;
        if (mode.value === "csv") return csvData.value.length > 0 && mapping.value.topic !== "";
        return false;
      });
      const handleFileChange = (file) => {
        const reader = new FileReader();
        reader.onload = (e) => {
          const text = e.target.result;
          parseCSV(text);
        };
        reader.readAsText(file.raw);
      };
      const parseCSV = (text) => {
        const lines = text.split(/\r?\n/);
        if (lines.length < 2) return;
        const headers = lines[0].split(",").map((h2) => h2.trim().replace(/^["']|["']$/g, ""));
        csvHeaders.value = headers;
        if (headers.includes("topic")) mapping.value.topic = "topic";
        else if (headers.includes("title")) mapping.value.topic = "title";
        if (headers.includes("keywords")) mapping.value.keywords = "keywords";
        if (headers.includes("post_type")) mapping.value.post_type = "post_type";
        const data = [];
        for (let i = 1; i < lines.length; i++) {
          if (!lines[i].trim()) continue;
          const values = lines[i].split(",").map((v2) => v2.trim().replace(/^["']|["']$/g, ""));
          const row = {};
          headers.forEach((h2, idx) => {
            row[h2] = values[idx] || "";
          });
          data.push(row);
        }
        csvData.push(...data);
      };
      const handleBulkGenerate = async () => {
        let items = [];
        if (mode.value === "paste") {
          items = pasteData.value.split(/\r?\n/).filter((line) => line.trim()).map((topic) => ({
            topic: topic.trim(),
            post_type: globalSettings.value.postType
          }));
        } else {
          items = csvData.value.map((row) => ({
            topic: row[mapping.value.topic],
            keywords: mapping.value.keywords ? row[mapping.value.keywords] : "",
            post_type: mapping.value.post_type ? row[mapping.value.post_type] : globalSettings.value.postType
          }));
        }
        if (items.length === 0) return;
        submitting.value = true;
        activeBatch.value = true;
        totalCount.value = items.length;
        completedCount.value = 0;
        progress.value = 0;
        progressStatus.value = "";
        progressText.value = "Preparing items...";
        try {
          const response = await ajaxFetch("kitsune_ai_platform_bulk_generate_content", {
            items,
            settings: globalSettings.value
          });
          if (response.success) {
            showNotification("success", "Bulk generation started in background");
            simulateProgress();
          } else {
            showNotification("error", response.message || "Failed to start bulk generation");
            activeBatch.value = false;
          }
        } catch (error) {
          showNotification("error", "An error occurred while starting bulk generation");
          activeBatch.value = false;
        } finally {
          submitting.value = false;
        }
      };
      const simulateProgress = () => {
        progressText.value = "Processing queue...";
        const interval = setInterval(() => {
          if (completedCount.value < totalCount.value) {
            completedCount.value++;
            progress.value = Math.round(completedCount.value / totalCount.value * 100);
          } else {
            clearInterval(interval);
            progressStatus.value = "success";
            progressText.value = "Bulk generation complete!";
            showNotification("success", "Bulk generation task finished!");
          }
        }, 1e3);
      };
      const viewGenerated = () => {
        window.location.href = "edit.php?post_type=post";
      };
      return (_ctx, _cache) => {
        const _component_el_radio_button = resolveComponent("el-radio-button");
        const _component_el_radio_group = resolveComponent("el-radio-group");
        const _component_el_input = resolveComponent("el-input");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_upload = resolveComponent("el-upload");
        const _component_el_table_column = resolveComponent("el-table-column");
        const _component_el_option = resolveComponent("el-option");
        const _component_el_select = resolveComponent("el-select");
        const _component_el_table = resolveComponent("el-table");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_card = resolveComponent("el-card");
        const _component_el_col = resolveComponent("el-col");
        const _component_el_form_item = resolveComponent("el-form-item");
        const _component_el_input_number = resolveComponent("el-input-number");
        const _component_el_radio = resolveComponent("el-radio");
        const _component_el_form = resolveComponent("el-form");
        const _component_el_progress = resolveComponent("el-progress");
        const _component_el_row = resolveComponent("el-row");
        return openBlock(), createElementBlock("div", _hoisted_1$H, [
          createVNode(_component_el_row, { gutter: 20 }, {
            default: withCtx(() => [
              createVNode(_component_el_col, {
                span: 24,
                lg: 16
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_card, {
                    shadow: "never",
                    class: "mb-6"
                  }, {
                    header: withCtx(() => [
                      createBaseVNode("div", _hoisted_2$G, [
                        _cache[8] || (_cache[8] = createBaseVNode("h3", { class: "font-semibold text-gray-900" }, "Bulk Content Creation", -1)),
                        createVNode(_component_el_radio_group, {
                          modelValue: mode.value,
                          "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => mode.value = $event),
                          size: "small"
                        }, {
                          default: withCtx(() => [
                            createVNode(_component_el_radio_button, { label: "paste" }, {
                              default: withCtx(() => [..._cache[6] || (_cache[6] = [
                                createTextVNode("Quick Paste", -1)
                              ])]),
                              _: 1
                            }),
                            createVNode(_component_el_radio_button, { label: "csv" }, {
                              default: withCtx(() => [..._cache[7] || (_cache[7] = [
                                createTextVNode("CSV Upload", -1)
                              ])]),
                              _: 1
                            })
                          ]),
                          _: 1
                        }, 8, ["modelValue"])
                      ])
                    ]),
                    default: withCtx(() => [
                      mode.value === "paste" ? (openBlock(), createElementBlock("div", _hoisted_3$C, [
                        _cache[9] || (_cache[9] = createBaseVNode("p", { class: "text-sm text-gray-500 mb-4" }, "Enter one topic per line. Each line will be generated as a separate post.", -1)),
                        createVNode(_component_el_input, {
                          modelValue: pasteData.value,
                          "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => pasteData.value = $event),
                          type: "textarea",
                          rows: 10,
                          placeholder: "e.g. Benefits of AI in Marketing\nHow to use ChatGPT for SEO\nFuture of AI in Web Development"
                        }, null, 8, ["modelValue"])
                      ])) : createCommentVNode("", true),
                      mode.value === "csv" ? (openBlock(), createElementBlock("div", _hoisted_4$z, [
                        createBaseVNode("div", _hoisted_5$t, [
                          createVNode(_component_el_upload, {
                            drag: "",
                            action: "#",
                            "auto-upload": false,
                            "on-change": handleFileChange,
                            limit: 1,
                            accept: ".csv"
                          }, {
                            tip: withCtx(() => [..._cache[10] || (_cache[10] = [
                              createBaseVNode("div", { class: "el-upload__tip text-gray-500 mt-2" }, " CSV should have a 'topic' column. Optional columns: 'keywords', 'post_type'. ", -1)
                            ])]),
                            default: withCtx(() => [
                              createVNode(_component_el_icon, { class: "el-icon--upload" }, {
                                default: withCtx(() => [
                                  createVNode(unref(upload_filled_default))
                                ]),
                                _: 1
                              }),
                              _cache[11] || (_cache[11] = createBaseVNode("div", { class: "el-upload__text" }, [
                                createTextVNode(" Drop CSV file here or "),
                                createBaseVNode("em", null, "click to upload")
                              ], -1))
                            ]),
                            _: 1
                          })
                        ]),
                        csvData.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_6$f, [
                          _cache[12] || (_cache[12] = createBaseVNode("h4", { class: "font-medium mb-3" }, "Map CSV Columns", -1)),
                          createVNode(_component_el_table, {
                            data: csvMappingPreview,
                            size: "small",
                            border: ""
                          }, {
                            default: withCtx(() => [
                              createVNode(_component_el_table_column, {
                                prop: "field",
                                label: "Post Field",
                                width: "150"
                              }),
                              createVNode(_component_el_table_column, { label: "CSV Column" }, {
                                default: withCtx((scope) => [
                                  createVNode(_component_el_select, {
                                    modelValue: mapping.value[scope.row.key],
                                    "onUpdate:modelValue": ($event) => mapping.value[scope.row.key] = $event,
                                    placeholder: "Select column",
                                    class: "w-full"
                                  }, {
                                    default: withCtx(() => [
                                      (openBlock(true), createElementBlock(Fragment, null, renderList(csvHeaders.value, (col) => {
                                        return openBlock(), createBlock(_component_el_option, {
                                          key: col,
                                          label: col,
                                          value: col
                                        }, null, 8, ["label", "value"]);
                                      }), 128))
                                    ]),
                                    _: 1
                                  }, 8, ["modelValue", "onUpdate:modelValue"])
                                ]),
                                _: 1
                              })
                            ]),
                            _: 1
                          }),
                          createBaseVNode("p", _hoisted_7$d, "Found " + toDisplayString(csvData.value.length) + " rows for processing.", 1)
                        ])) : createCommentVNode("", true)
                      ])) : createCommentVNode("", true),
                      createBaseVNode("div", _hoisted_8$d, [
                        createVNode(_component_el_button, {
                          type: "primary",
                          loading: submitting.value,
                          onClick: handleBulkGenerate,
                          disabled: !canGenerate.value
                        }, {
                          default: withCtx(() => [
                            createVNode(_component_el_icon, { class: "mr-1" }, {
                              default: withCtx(() => [
                                createVNode(unref(video_play_default))
                              ]),
                              _: 1
                            }),
                            _cache[13] || (_cache[13] = createTextVNode(" Start Bulk Generation ", -1))
                          ]),
                          _: 1
                        }, 8, ["loading", "disabled"])
                      ])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }),
              createVNode(_component_el_col, {
                span: 24,
                lg: 8
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_card, {
                    shadow: "never",
                    class: "mb-6"
                  }, {
                    header: withCtx(() => [..._cache[14] || (_cache[14] = [
                      createBaseVNode("h3", { class: "font-semibold text-gray-900" }, "Batch Settings", -1)
                    ])]),
                    default: withCtx(() => [
                      createVNode(_component_el_form, { "label-position": "top" }, {
                        default: withCtx(() => [
                          createVNode(_component_el_form_item, { label: "Style Instruction" }, {
                            default: withCtx(() => [
                              createVNode(_component_el_input, {
                                modelValue: globalSettings.value.style,
                                "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => globalSettings.value.style = $event),
                                type: "textarea",
                                rows: 3
                              }, null, 8, ["modelValue"])
                            ]),
                            _: 1
                          }),
                          createVNode(_component_el_form_item, { label: "Target Length (Words)" }, {
                            default: withCtx(() => [
                              createVNode(_component_el_input_number, {
                                modelValue: globalSettings.value.length,
                                "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => globalSettings.value.length = $event),
                                min: 100,
                                max: 3e3,
                                step: 100,
                                class: "w-full"
                              }, null, 8, ["modelValue"])
                            ]),
                            _: 1
                          }),
                          createVNode(_component_el_form_item, { label: "Default Post Type" }, {
                            default: withCtx(() => [
                              createVNode(_component_el_select, {
                                modelValue: globalSettings.value.postType,
                                "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => globalSettings.value.postType = $event),
                                class: "w-full"
                              }, {
                                default: withCtx(() => [
                                  createVNode(_component_el_option, {
                                    label: "Post",
                                    value: "post"
                                  }),
                                  createVNode(_component_el_option, {
                                    label: "Page",
                                    value: "page"
                                  })
                                ]),
                                _: 1
                              }, 8, ["modelValue"])
                            ]),
                            _: 1
                          }),
                          createVNode(_component_el_form_item, { label: "Publishing" }, {
                            default: withCtx(() => [
                              createVNode(_component_el_radio_group, {
                                modelValue: globalSettings.value.status,
                                "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => globalSettings.value.status = $event)
                              }, {
                                default: withCtx(() => [
                                  createVNode(_component_el_radio, { label: "draft" }, {
                                    default: withCtx(() => [..._cache[15] || (_cache[15] = [
                                      createTextVNode("Save as Draft", -1)
                                    ])]),
                                    _: 1
                                  }),
                                  createVNode(_component_el_radio, { label: "publish" }, {
                                    default: withCtx(() => [..._cache[16] || (_cache[16] = [
                                      createTextVNode("Publish Directly", -1)
                                    ])]),
                                    _: 1
                                  })
                                ]),
                                _: 1
                              }, 8, ["modelValue"])
                            ]),
                            _: 1
                          })
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }),
                  activeBatch.value ? (openBlock(), createBlock(_component_el_card, {
                    key: 0,
                    shadow: "never"
                  }, {
                    header: withCtx(() => [..._cache[17] || (_cache[17] = [
                      createBaseVNode("h3", { class: "font-semibold text-gray-900" }, "Execution Progress", -1)
                    ])]),
                    default: withCtx(() => [
                      createBaseVNode("div", _hoisted_9$c, [
                        createVNode(_component_el_progress, {
                          type: "circle",
                          percentage: progress.value,
                          status: progressStatus.value
                        }, null, 8, ["percentage", "status"]),
                        createBaseVNode("div", _hoisted_10$9, [
                          createBaseVNode("p", _hoisted_11$9, toDisplayString(progressText.value), 1),
                          createBaseVNode("p", _hoisted_12$6, toDisplayString(completedCount.value) + " of " + toDisplayString(totalCount.value) + " items processed", 1)
                        ])
                      ]),
                      createBaseVNode("div", _hoisted_13$5, [
                        progressStatus.value === "success" ? (openBlock(), createBlock(_component_el_button, {
                          key: 0,
                          type: "success",
                          plain: "",
                          class: "w-full",
                          onClick: viewGenerated
                        }, {
                          default: withCtx(() => [..._cache[18] || (_cache[18] = [
                            createTextVNode(" View Generated Posts ", -1)
                          ])]),
                          _: 1
                        })) : createCommentVNode("", true)
                      ])
                    ]),
                    _: 1
                  })) : createCommentVNode("", true)
                ]),
                _: 1
              })
            ]),
            _: 1
          })
        ]);
      };
    }
  };
  const BulkGenerator = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["__scopeId", "data-v-7c87bce6"]]);
  const _hoisted_1$G = { class: "content-enhancer" };
  const _hoisted_2$F = { key: 0 };
  const _hoisted_3$B = { class: "flex justify-between items-center" };
  const _hoisted_4$y = { class: "flex gap-2" };
  const _hoisted_5$s = { class: "mt-4 flex justify-end" };
  const _hoisted_6$e = { key: 1 };
  const _hoisted_7$c = { class: "mb-4 flex items-center justify-between" };
  const _hoisted_8$c = { class: "text-sm text-gray-500" };
  const _hoisted_9$b = { class: "font-semibold text-gray-900" };
  const _sfc_main$I = {
    __name: "ContentEnhancer",
    setup(__props) {
      const { getWPPosts } = useContentAPI();
      inject("t", (k) => k);
      const posts = ref([]);
      const loading = ref(false);
      const search = ref("");
      const postType = ref("post");
      const page = ref(1);
      const total2 = ref(0);
      const selectedPost = ref(null);
      const enhancerData = ref(null);
      const fetchPosts = async () => {
        loading.value = true;
        try {
          const response = await getWPPosts({
            post_type: postType.value,
            search: search.value,
            page: page.value
          });
          if (response.success) {
            posts.value = response.data.posts;
            total2.value = response.data.total;
          }
        } catch (error) {
          console.error("Failed to fetch posts:", error);
        } finally {
          loading.value = false;
        }
      };
      const handleSearch = () => {
        page.value = 1;
        fetchPosts();
      };
      const selectPost = (post) => {
        selectedPost.value = post;
        enhancerData.value = {
          topic: post.title,
          description: `Current Content: ${post.content.substring(0, 500)}...`,
          styleInstruction: "Improve the clarity, SEO, and engagement of the existing content while maintaining its core message.",
          length: 1e3
        };
      };
      const getStatusType = (status) => {
        switch (status) {
          case "publish":
            return "success";
          case "draft":
            return "info";
          case "pending":
            return "warning";
          default:
            return "";
        }
      };
      onMounted(fetchPosts);
      return (_ctx, _cache) => {
        const _component_el_input = resolveComponent("el-input");
        const _component_el_option = resolveComponent("el-option");
        const _component_el_select = resolveComponent("el-select");
        const _component_el_table_column = resolveComponent("el-table-column");
        const _component_el_tag = resolveComponent("el-tag");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_table = resolveComponent("el-table");
        const _component_el_pagination = resolveComponent("el-pagination");
        const _component_el_card = resolveComponent("el-card");
        const _directive_loading = resolveDirective("loading");
        return openBlock(), createElementBlock("div", _hoisted_1$G, [
          !selectedPost.value ? (openBlock(), createElementBlock("div", _hoisted_2$F, [
            createVNode(_component_el_card, {
              shadow: "never",
              class: "mb-6"
            }, {
              header: withCtx(() => [
                createBaseVNode("div", _hoisted_3$B, [
                  _cache[4] || (_cache[4] = createBaseVNode("h3", { class: "font-semibold text-gray-900" }, "Search Content to Enhance", -1)),
                  createBaseVNode("div", _hoisted_4$y, [
                    createVNode(_component_el_input, {
                      modelValue: search.value,
                      "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => search.value = $event),
                      placeholder: "Search posts...",
                      "prefix-icon": "Search",
                      clearable: "",
                      onInput: handleSearch,
                      class: "w-64"
                    }, null, 8, ["modelValue"]),
                    createVNode(_component_el_select, {
                      modelValue: postType.value,
                      "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => postType.value = $event),
                      class: "w-32",
                      onChange: fetchPosts
                    }, {
                      default: withCtx(() => [
                        createVNode(_component_el_option, {
                          label: "Posts",
                          value: "post"
                        }),
                        createVNode(_component_el_option, {
                          label: "Pages",
                          value: "page"
                        })
                      ]),
                      _: 1
                    }, 8, ["modelValue"])
                  ])
                ])
              ]),
              default: withCtx(() => [
                withDirectives((openBlock(), createBlock(_component_el_table, {
                  data: posts.value,
                  style: { "width": "100%" }
                }, {
                  default: withCtx(() => [
                    createVNode(_component_el_table_column, {
                      prop: "title",
                      label: "Title",
                      "min-width": "300"
                    }),
                    createVNode(_component_el_table_column, {
                      prop: "status",
                      label: "Status",
                      width: "120"
                    }, {
                      default: withCtx((scope) => [
                        createVNode(_component_el_tag, {
                          type: getStatusType(scope.row.status),
                          size: "small"
                        }, {
                          default: withCtx(() => [
                            createTextVNode(toDisplayString(scope.row.status), 1)
                          ]),
                          _: 2
                        }, 1032, ["type"])
                      ]),
                      _: 1
                    }),
                    createVNode(_component_el_table_column, {
                      prop: "date",
                      label: "Date",
                      width: "180"
                    }),
                    createVNode(_component_el_table_column, {
                      label: "Actions",
                      width: "150",
                      fixed: "right"
                    }, {
                      default: withCtx((scope) => [
                        createVNode(_component_el_button, {
                          type: "primary",
                          size: "small",
                          plain: "",
                          onClick: ($event) => selectPost(scope.row)
                        }, {
                          default: withCtx(() => [
                            createVNode(_component_el_icon, { class: "mr-1" }, {
                              default: withCtx(() => [
                                createVNode(unref(magic_stick_default))
                              ]),
                              _: 1
                            }),
                            _cache[5] || (_cache[5] = createTextVNode(" Enhance ", -1))
                          ]),
                          _: 1
                        }, 8, ["onClick"])
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                }, 8, ["data"])), [
                  [_directive_loading, loading.value]
                ]),
                createBaseVNode("div", _hoisted_5$s, [
                  createVNode(_component_el_pagination, {
                    "current-page": page.value,
                    "onUpdate:currentPage": _cache[2] || (_cache[2] = ($event) => page.value = $event),
                    total: total2.value,
                    "page-size": 20,
                    layout: "prev, pager, next",
                    onCurrentChange: fetchPosts
                  }, null, 8, ["current-page", "total"])
                ])
              ]),
              _: 1
            })
          ])) : (openBlock(), createElementBlock("div", _hoisted_6$e, [
            createBaseVNode("div", _hoisted_7$c, [
              createVNode(_component_el_button, {
                onClick: _cache[3] || (_cache[3] = ($event) => selectedPost.value = null),
                plain: ""
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_icon, { class: "mr-1" }, {
                    default: withCtx(() => [
                      createVNode(unref(back_default))
                    ]),
                    _: 1
                  }),
                  _cache[6] || (_cache[6] = createTextVNode(" Back to List ", -1))
                ]),
                _: 1
              }),
              createBaseVNode("div", _hoisted_8$c, [
                _cache[7] || (_cache[7] = createTextVNode(" Enhancing: ", -1)),
                createBaseVNode("span", _hoisted_9$b, toDisplayString(selectedPost.value.title), 1)
              ])
            ]),
            createVNode(_sfc_main$K, { "initial-data": enhancerData.value }, null, 8, ["initial-data"])
          ]))
        ]);
      };
    }
  };
  const _hoisted_1$F = { class: "flex flex-col lg:flex-row gap-6 h-[calc(100vh-200px)]" };
  const _hoisted_2$E = { class: "flex-1 overflow-y-auto p-6" };
  const _hoisted_3$A = {
    key: 0,
    class: "text-xs text-orange-500 mt-1"
  };
  const _hoisted_4$x = { class: "flex items-center gap-4" };
  const _hoisted_5$r = { class: "p-4 border-t border-gray-200" };
  const _hoisted_6$d = {
    key: 0,
    class: "h-full flex items-center justify-center"
  };
  const _hoisted_7$b = { class: "bg-gray-100 rounded-lg overflow-hidden flex flex-col" };
  const _hoisted_8$b = { class: "p-3 border-t bg-white flex flex-col gap-2" };
  const _hoisted_9$a = { class: "text-xs text-gray-400" };
  const _hoisted_10$8 = { class: "text-xs text-gray-500 line-clamp-2" };
  const _hoisted_11$8 = { class: "flex gap-2" };
  const _sfc_main$H = {
    __name: "ImageGenerator",
    setup(__props) {
      const { showNotification } = useNotifications();
      const { generateImage, saveGeneratedImage } = useContentAPI();
      const { connectedImageModels, defaultModels: defaultModels2 } = useAIModels();
      const prompt = ref("");
      const promptStyle = ref("Photorealistic");
      const aspectRatio = ref("16:9");
      const variations = ref(1);
      const loading = ref(false);
      const savingIndex = ref(null);
      const generatedImages = ref([]);
      const selectedModel = ref("");
      const modelOptionValues = ref({});
      const styles = ["Photorealistic", "Digital Art", "3D Render", "Illustration"];
      const ratios = ["1:1", "16:9", "9:16"];
      const groupedImageModels = computed(() => {
        const groups = {};
        for (const m2 of connectedImageModels.value) {
          if (!groups[m2.providerId]) {
            groups[m2.providerId] = { provider: m2.provider, models: [] };
          }
          groups[m2.providerId].models.push(m2);
        }
        return Object.values(groups);
      });
      const selectedModelId = computed(() => {
        if (!selectedModel.value) return "";
        const parts = selectedModel.value.split(":");
        return parts.length === 2 ? parts[1] : selectedModel.value;
      });
      const currentModelOptions = computed(() => getImageModelOptions(selectedModelId.value));
      watch(
        () => defaultModels2.value.imageGen,
        (val) => {
          if (val && !selectedModel.value) selectedModel.value = val;
        },
        { immediate: true }
      );
      watch(connectedImageModels, (models) => {
        if (models.length > 0 && !selectedModel.value) {
          selectedModel.value = defaultModels2.value.imageGen || models[0].id;
        }
      }, { immediate: true });
      watch(currentModelOptions, (opts) => {
        const defaults = {};
        for (const opt of opts) {
          defaults[opt.key] = opt.default;
        }
        modelOptionValues.value = defaults;
      }, { immediate: true });
      const imageColSpan = computed(() => variations.value <= 1 ? 24 : 12);
      const previewImageUrls = computed(() => generatedImages.value.map((image) => image.url).filter(Boolean));
      const aspectStyles = computed(() => ({
        aspectRatio: aspectRatio.value.replace(":", " / ")
      }));
      const handleGenerate = async () => {
        if (!prompt.value) {
          showNotification("warning", "Please enter a prompt");
          return;
        }
        if (!selectedModel.value) {
          showNotification("warning", "Please select an image model");
          return;
        }
        loading.value = true;
        generatedImages.value = [];
        try {
          const response = await generateImage({
            prompt: prompt.value,
            prompt_style: promptStyle.value,
            aspect_ratio: aspectRatio.value,
            variations: variations.value,
            model: selectedModel.value,
            ...modelOptionValues.value
          });
          if (response.success) {
            generatedImages.value = response.data.images || [];
          } else {
            showNotification("error", response.message || "Image generation failed");
          }
        } catch (error) {
          console.error("Image generation failed:", error);
          showNotification("error", "Image generation failed");
        } finally {
          loading.value = false;
        }
      };
      const downloadImage = (image) => {
        if (!image?.url) return;
        const link = document.createElement("a");
        link.href = image.url;
        link.download = image.filename || "ai-image.png";
        document.body.appendChild(link);
        link.click();
        link.remove();
      };
      const saveAsAttachment = async (image, idx) => {
        if (!image?.url) return;
        savingIndex.value = idx;
        try {
          const response = await saveGeneratedImage({
            url: image.url,
            title: image.prompt
          });
          if (response.success) {
            showNotification("success", "Image saved to Media Library.");
          } else {
            showNotification("error", response.message || "Failed to save image");
          }
        } catch (error) {
          showNotification("error", "Failed to save image");
        } finally {
          savingIndex.value = null;
        }
      };
      return (_ctx, _cache) => {
        const _component_el_option = resolveComponent("el-option");
        const _component_el_option_group = resolveComponent("el-option-group");
        const _component_el_select = resolveComponent("el-select");
        const _component_el_form_item = resolveComponent("el-form-item");
        const _component_el_input = resolveComponent("el-input");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_col = resolveComponent("el-col");
        const _component_el_row = resolveComponent("el-row");
        const _component_el_divider = resolveComponent("el-divider");
        const _component_el_radio_button = resolveComponent("el-radio-button");
        const _component_el_radio_group = resolveComponent("el-radio-group");
        const _component_el_input_number = resolveComponent("el-input-number");
        const _component_el_form = resolveComponent("el-form");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_card = resolveComponent("el-card");
        const _component_el_empty = resolveComponent("el-empty");
        const _component_el_image = resolveComponent("el-image");
        return openBlock(), createElementBlock("div", _hoisted_1$F, [
          createVNode(_component_el_card, {
            class: "w-full lg:w-1/3 flex flex-col",
            shadow: "never",
            "body-style": { display: "flex", flexDirection: "column", flex: 1, padding: 0 }
          }, {
            header: withCtx(() => [..._cache[4] || (_cache[4] = [
              createBaseVNode("h3", { class: "font-semibold text-gray-900" }, "Image Settings", -1)
            ])]),
            default: withCtx(() => [
              createBaseVNode("div", _hoisted_2$E, [
                createVNode(_component_el_form, {
                  "label-position": "top",
                  class: "space-y-4"
                }, {
                  default: withCtx(() => [
                    createVNode(_component_el_form_item, { label: "Model" }, {
                      default: withCtx(() => [
                        createVNode(_component_el_select, {
                          modelValue: selectedModel.value,
                          "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => selectedModel.value = $event),
                          class: "w-full",
                          placeholder: "Select image model",
                          disabled: unref(connectedImageModels).length === 0
                        }, {
                          default: withCtx(() => [
                            (openBlock(true), createElementBlock(Fragment, null, renderList(groupedImageModels.value, (group) => {
                              return openBlock(), createBlock(_component_el_option_group, {
                                key: group.provider,
                                label: group.provider
                              }, {
                                default: withCtx(() => [
                                  (openBlock(true), createElementBlock(Fragment, null, renderList(group.models, (m2) => {
                                    return openBlock(), createBlock(_component_el_option, {
                                      key: m2.id,
                                      label: m2.name,
                                      value: m2.id
                                    }, null, 8, ["label", "value"]);
                                  }), 128))
                                ]),
                                _: 2
                              }, 1032, ["label"]);
                            }), 128))
                          ]),
                          _: 1
                        }, 8, ["modelValue", "disabled"]),
                        unref(connectedImageModels).length === 0 ? (openBlock(), createElementBlock("p", _hoisted_3$A, " No image models connected — configure a provider in AI Models settings. ")) : createCommentVNode("", true)
                      ]),
                      _: 1
                    }),
                    createVNode(_component_el_form_item, { label: "Prompt" }, {
                      default: withCtx(() => [
                        createVNode(_component_el_input, {
                          modelValue: prompt.value,
                          "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => prompt.value = $event),
                          type: "textarea",
                          rows: 5,
                          placeholder: "Describe the image you want to generate..."
                        }, null, 8, ["modelValue"])
                      ]),
                      _: 1
                    }),
                    createVNode(_component_el_form_item, { label: "Prompt Style" }, {
                      default: withCtx(() => [
                        createVNode(_component_el_row, { gutter: 8 }, {
                          default: withCtx(() => [
                            (openBlock(), createElementBlock(Fragment, null, renderList(styles, (s2) => {
                              return createVNode(_component_el_col, {
                                key: s2,
                                span: 12,
                                class: "mb-2"
                              }, {
                                default: withCtx(() => [
                                  createVNode(_component_el_button, {
                                    class: "w-full",
                                    onClick: ($event) => promptStyle.value = s2,
                                    type: promptStyle.value === s2 ? "primary" : "default",
                                    plain: promptStyle.value !== s2
                                  }, {
                                    default: withCtx(() => [
                                      createTextVNode(toDisplayString(s2), 1)
                                    ]),
                                    _: 2
                                  }, 1032, ["onClick", "type", "plain"])
                                ]),
                                _: 2
                              }, 1024);
                            }), 64))
                          ]),
                          _: 1
                        })
                      ]),
                      _: 1
                    }),
                    currentModelOptions.value.length > 0 ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
                      createVNode(_component_el_divider),
                      _cache[5] || (_cache[5] = createBaseVNode("p", { class: "text-xs font-medium text-gray-500 -mt-2 mb-1" }, "Model Options", -1)),
                      (openBlock(true), createElementBlock(Fragment, null, renderList(currentModelOptions.value, (opt) => {
                        return openBlock(), createBlock(_component_el_form_item, {
                          key: opt.key,
                          label: opt.label
                        }, {
                          default: withCtx(() => [
                            opt.type === "enum" ? (openBlock(), createBlock(_component_el_radio_group, {
                              key: 0,
                              modelValue: modelOptionValues.value[opt.key],
                              "onUpdate:modelValue": ($event) => modelOptionValues.value[opt.key] = $event,
                              class: "w-full flex-wrap"
                            }, {
                              default: withCtx(() => [
                                (openBlock(true), createElementBlock(Fragment, null, renderList(opt.values, (v2) => {
                                  return openBlock(), createBlock(_component_el_radio_button, {
                                    key: v2,
                                    value: v2
                                  }, {
                                    default: withCtx(() => [
                                      createTextVNode(toDisplayString(v2), 1)
                                    ]),
                                    _: 2
                                  }, 1032, ["value"]);
                                }), 128))
                              ]),
                              _: 2
                            }, 1032, ["modelValue", "onUpdate:modelValue"])) : createCommentVNode("", true)
                          ]),
                          _: 2
                        }, 1032, ["label"]);
                      }), 128))
                    ], 64)) : createCommentVNode("", true),
                    createVNode(_component_el_form_item, { label: "Variations" }, {
                      default: withCtx(() => [
                        createBaseVNode("div", _hoisted_4$x, [
                          createVNode(_component_el_input_number, {
                            modelValue: variations.value,
                            "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => variations.value = $event),
                            min: 1,
                            max: 4
                          }, null, 8, ["modelValue"]),
                          _cache[6] || (_cache[6] = createBaseVNode("span", { class: "text-sm text-gray-500" }, "Generate up to 4 variations", -1))
                        ])
                      ]),
                      _: 1
                    }),
                    createVNode(_component_el_form_item, { label: "Aspect Ratio" }, {
                      default: withCtx(() => [
                        createVNode(_component_el_radio_group, {
                          modelValue: aspectRatio.value,
                          "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => aspectRatio.value = $event),
                          class: "w-full"
                        }, {
                          default: withCtx(() => [
                            (openBlock(), createElementBlock(Fragment, null, renderList(ratios, (ratio) => {
                              return createVNode(_component_el_radio_button, {
                                key: ratio,
                                value: ratio
                              }, {
                                default: withCtx(() => [
                                  createTextVNode(toDisplayString(ratio), 1)
                                ]),
                                _: 2
                              }, 1032, ["value"]);
                            }), 64))
                          ]),
                          _: 1
                        }, 8, ["modelValue"])
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                })
              ]),
              createBaseVNode("div", _hoisted_5$r, [
                createVNode(_component_el_button, {
                  type: "primary",
                  class: "w-full",
                  loading: loading.value,
                  disabled: !selectedModel.value || !prompt.value,
                  onClick: handleGenerate
                }, {
                  default: withCtx(() => [
                    !loading.value ? (openBlock(), createBlock(_component_el_icon, {
                      key: 0,
                      class: "mr-1"
                    }, {
                      default: withCtx(() => [
                        createVNode(unref(brush_default))
                      ]),
                      _: 1
                    })) : createCommentVNode("", true),
                    createTextVNode(" " + toDisplayString(loading.value ? "Generating..." : "Generate Images"), 1)
                  ]),
                  _: 1
                }, 8, ["loading", "disabled"])
              ])
            ]),
            _: 1
          }),
          createVNode(_component_el_card, {
            class: "w-full lg:w-2/3 overflow-y-auto",
            shadow: "never"
          }, {
            default: withCtx(() => [
              generatedImages.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_6$d, [
                createVNode(_component_el_empty, { description: "Generate images to see results" }, {
                  image: withCtx(() => [
                    createVNode(_component_el_icon, { class: "text-4xl text-gray-300" }, {
                      default: withCtx(() => [
                        createVNode(unref(picture_default))
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                })
              ])) : (openBlock(), createBlock(_component_el_row, {
                key: 1,
                gutter: 16
              }, {
                default: withCtx(() => [
                  (openBlock(true), createElementBlock(Fragment, null, renderList(generatedImages.value, (image, idx) => {
                    return openBlock(), createBlock(_component_el_col, {
                      key: image.id || idx,
                      span: imageColSpan.value
                    }, {
                      default: withCtx(() => [
                        createBaseVNode("div", _hoisted_7$b, [
                          createBaseVNode("div", {
                            class: "w-full bg-gray-100",
                            style: normalizeStyle(aspectStyles.value)
                          }, [
                            createVNode(_component_el_image, {
                              src: image.url,
                              fit: "cover",
                              lazy: "",
                              "preview-src-list": previewImageUrls.value,
                              "initial-index": idx,
                              class: "w-full h-full"
                            }, null, 8, ["src", "preview-src-list", "initial-index"])
                          ], 4),
                          createBaseVNode("div", _hoisted_8$b, [
                            createBaseVNode("div", _hoisted_9$a, toDisplayString(image.provider) + " / " + toDisplayString(image.model), 1),
                            createBaseVNode("div", _hoisted_10$8, toDisplayString(image.prompt), 1),
                            createBaseVNode("div", _hoisted_11$8, [
                              createVNode(_component_el_button, {
                                size: "small",
                                type: "primary",
                                plain: "",
                                onClick: ($event) => downloadImage(image)
                              }, {
                                default: withCtx(() => [
                                  createVNode(_component_el_icon, { class: "mr-1" }, {
                                    default: withCtx(() => [
                                      createVNode(unref(download_default))
                                    ]),
                                    _: 1
                                  }),
                                  _cache[7] || (_cache[7] = createTextVNode(" Download ", -1))
                                ]),
                                _: 1
                              }, 8, ["onClick"]),
                              createVNode(_component_el_button, {
                                size: "small",
                                type: "success",
                                plain: "",
                                loading: savingIndex.value === idx,
                                onClick: ($event) => saveAsAttachment(image, idx)
                              }, {
                                default: withCtx(() => [
                                  createVNode(_component_el_icon, { class: "mr-1" }, {
                                    default: withCtx(() => [
                                      createVNode(unref(picture_default))
                                    ]),
                                    _: 1
                                  }),
                                  _cache[8] || (_cache[8] = createTextVNode(" Save as Attachment ", -1))
                                ]),
                                _: 1
                              }, 8, ["loading", "onClick"])
                            ])
                          ])
                        ])
                      ]),
                      _: 2
                    }, 1032, ["span"]);
                  }), 128))
                ]),
                _: 1
              }))
            ]),
            _: 1
          })
        ]);
      };
    }
  };
  function useSettingsAPI() {
    const getSettings = async () => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_get_settings", {}, "GET");
        return { success: true, data: response, message: response.message ?? "" };
      } catch (error) {
        console.error("Error fetching settings:", error);
        return { success: false, message: error.message };
      }
    };
    const updateSettings = async (section, data) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_save_settings", { settings: data });
        return { success: true, data: response.settings, message: response.message ?? "" };
      } catch (error) {
        console.error("Error updating settings:", error);
        return { success: false, message: error.message };
      }
    };
    const getAccessControl = async () => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_get_access_control", {}, "GET");
        return { success: true, data: response, message: response.message ?? "" };
      } catch (error) {
        console.error("Error fetching access control:", error);
        return { success: false, message: error.message };
      }
    };
    const saveAccessControl = async (roles) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_save_access_control", { roles });
        return { success: true, data: response.roles, message: response.message ?? "" };
      } catch (error) {
        console.error("Error saving access control:", error);
        return { success: false, message: error.message };
      }
    };
    const getNotificationSettings = async () => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_get_notification_settings", {}, "GET");
        return { success: true, data: response, message: response.message ?? "" };
      } catch (error) {
        console.error("Error fetching notification settings:", error);
        return { success: false, message: error.message };
      }
    };
    const saveNotificationSettings = async (data) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_save_notification_settings", { settings: data });
        return { success: true, data: response.settings, message: response.message ?? "" };
      } catch (error) {
        console.error("Error saving notification settings:", error);
        return { success: false, message: error.message };
      }
    };
    const exportSettings = async () => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_export_settings", {}, "GET");
        return { success: true, data: response, message: response.message ?? "" };
      } catch (error) {
        console.error("Error exporting settings:", error);
        return { success: false, message: error.message };
      }
    };
    const importSettings = async (json) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_import_settings", { json: JSON.stringify(json) });
        return { success: true, data: response, message: response.message ?? "" };
      } catch (error) {
        console.error("Error importing settings:", error);
        return { success: false, message: error.message };
      }
    };
    return {
      getSettings,
      updateSettings,
      getAccessControl,
      saveAccessControl,
      getNotificationSettings,
      saveNotificationSettings,
      exportSettings,
      importSettings
    };
  }
  const _hoisted_1$E = { class: "w-full" };
  const _hoisted_2$D = { class: "flex items-center justify-between w-full gap-4" };
  const _hoisted_3$z = { class: "flex items-center justify-between w-full gap-4" };
  const _hoisted_4$w = { class: "mt-6 pt-6 border-t border-gray-200 flex justify-end" };
  const _sfc_main$G = {
    __name: "ContentSettings",
    setup(__props) {
      const { showNotification } = useNotifications();
      const { getSettings, updateSettings } = useSettingsAPI();
      const loading = ref(true);
      const saving = ref(false);
      const settings = ref({
        enableInEditor: true,
        autoSuggestions: false
      });
      const fetchSettings = async () => {
        loading.value = true;
        const result = await getSettings();
        if (result.success && result.data && result.data.settings) {
          settings.value = {
            ...settings.value,
            enableInEditor: result.data.settings.enable_in_editor === "1" || result.data.settings.enable_in_editor === true,
            autoSuggestions: result.data.settings.auto_suggestions === "1" || result.data.settings.auto_suggestions === true
          };
        }
        loading.value = false;
      };
      const saveSettings = async () => {
        saving.value = true;
        const payload = {
          enable_in_editor: settings.value.enableInEditor,
          auto_suggestions: settings.value.autoSuggestions
        };
        const result = await updateSettings("content", payload);
        if (result.success) {
          showNotification("success", "Settings saved successfully");
        } else {
          showNotification("error", result.message || "Failed to save settings");
        }
        saving.value = false;
      };
      onMounted(() => {
        fetchSettings();
      });
      return (_ctx, _cache) => {
        const _component_el_switch = resolveComponent("el-switch");
        const _component_el_form_item = resolveComponent("el-form-item");
        const _component_el_form = resolveComponent("el-form");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_card = resolveComponent("el-card");
        return openBlock(), createElementBlock("div", _hoisted_1$E, [
          loading.value ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            rows: 5,
            "show-toolbar": false
          })) : (openBlock(), createBlock(_component_el_card, {
            key: 1,
            shadow: "never"
          }, {
            header: withCtx(() => [..._cache[2] || (_cache[2] = [
              createBaseVNode("p", { class: "text-sm text-gray-600" }, " Configure how AI content tools behave in your WordPress editor. ", -1)
            ])]),
            default: withCtx(() => [
              createVNode(_component_el_form, {
                "label-position": "top",
                class: "space-y-4"
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_form_item, { class: "!mb-0" }, {
                    default: withCtx(() => [
                      createBaseVNode("div", _hoisted_2$D, [
                        _cache[3] || (_cache[3] = createBaseVNode("div", null, [
                          createBaseVNode("h3", { class: "font-medium text-gray-900" }, "Enable in Editor"),
                          createBaseVNode("p", { class: "text-sm text-gray-500" }, "Show AI Copilot sidebar in Gutenberg/Classic editor.")
                        ], -1)),
                        createVNode(_component_el_switch, {
                          modelValue: settings.value.enableInEditor,
                          "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => settings.value.enableInEditor = $event)
                        }, null, 8, ["modelValue"])
                      ])
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_form_item, { class: "!mb-0" }, {
                    default: withCtx(() => [
                      createBaseVNode("div", _hoisted_3$z, [
                        _cache[4] || (_cache[4] = createBaseVNode("div", null, [
                          createBaseVNode("h3", { class: "font-medium text-gray-900" }, "Auto-suggestions"),
                          createBaseVNode("p", { class: "text-sm text-gray-500" }, "Automatically suggest completions while typing.")
                        ], -1)),
                        createVNode(_component_el_switch, {
                          modelValue: settings.value.autoSuggestions,
                          "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => settings.value.autoSuggestions = $event)
                        }, null, 8, ["modelValue"])
                      ])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }),
              createBaseVNode("div", _hoisted_4$w, [
                createVNode(_component_el_button, {
                  type: "primary",
                  loading: saving.value,
                  disabled: saving.value,
                  onClick: saveSettings
                }, {
                  default: withCtx(() => [
                    createVNode(_component_el_icon, { class: "mr-1" }, {
                      default: withCtx(() => [
                        createVNode(unref(check_default))
                      ]),
                      _: 1
                    }),
                    _cache[5] || (_cache[5] = createTextVNode(" Save Settings ", -1))
                  ]),
                  _: 1
                }, 8, ["loading", "disabled"])
              ])
            ]),
            _: 1
          }))
        ]);
      };
    }
  };
  const _hoisted_1$D = { class: "px-6 py-4" };
  const _hoisted_2$C = { class: "mb-2" };
  const _hoisted_3$y = { class: "text-2xl font-bold text-gray-900" };
  const _hoisted_4$v = { class: "text-gray-600 mt-1" };
  const _hoisted_5$q = { class: "flex items-center" };
  const _sfc_main$F = {
    __name: "ContentStudio",
    setup(__props) {
      const t = inject("t", (k) => k);
      const currentTab = ref("generate");
      const tabs = computed(() => [
        { id: "generate", name: t("generateContent"), icon: "fas fa-pen-nib" },
        { id: "bulk", name: t("bulkStudio"), icon: "fas fa-layer-group" },
        { id: "enhancer", name: t("navEnhancer") || "Content Enhancer", icon: "fas fa-wand-magic-sparkles" },
        { id: "image", name: t("imageGenerator"), icon: "fas fa-image" },
        { id: "settings", name: t("contentSettings"), icon: "fas fa-cog" }
      ]);
      const tabComponents = {
        "generate": _sfc_main$K,
        "bulk": BulkGenerator,
        "enhancer": _sfc_main$I,
        "image": _sfc_main$H,
        "settings": _sfc_main$G
      };
      const currentTabComponent = computed(() => tabComponents[currentTab.value]);
      return (_ctx, _cache) => {
        const _component_el_tab_pane = resolveComponent("el-tab-pane");
        const _component_el_tabs = resolveComponent("el-tabs");
        return openBlock(), createElementBlock("div", _hoisted_1$D, [
          createBaseVNode("div", _hoisted_2$C, [
            createBaseVNode("h1", _hoisted_3$y, toDisplayString(unref(t)("navContent")), 1),
            createBaseVNode("p", _hoisted_4$v, toDisplayString(unref(t)("contentSubtitle")), 1)
          ]),
          createVNode(_component_el_tabs, {
            modelValue: currentTab.value,
            "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => currentTab.value = $event),
            class: "mb-4"
          }, {
            default: withCtx(() => [
              (openBlock(true), createElementBlock(Fragment, null, renderList(tabs.value, (tab) => {
                return openBlock(), createBlock(_component_el_tab_pane, {
                  key: tab.id,
                  label: tab.name,
                  name: tab.id
                }, {
                  label: withCtx(() => [
                    createBaseVNode("span", _hoisted_5$q, [
                      createBaseVNode("i", {
                        class: normalizeClass([tab.icon, "mr-2"])
                      }, null, 2),
                      createTextVNode(" " + toDisplayString(tab.name), 1)
                    ])
                  ]),
                  _: 2
                }, 1032, ["label", "name"]);
              }), 128))
            ]),
            _: 1
          }, 8, ["modelValue"]),
          createVNode(Transition, {
            name: "fade",
            mode: "out-in"
          }, {
            default: withCtx(() => [
              (openBlock(), createBlock(KeepAlive, null, [
                (openBlock(), createBlock(resolveDynamicComponent(currentTabComponent.value)))
              ], 1024))
            ]),
            _: 1
          })
        ]);
      };
    }
  };
  const _hoisted_1$C = { class: "flex justify-between items-start" };
  const _hoisted_2$B = { class: "flex items-center" };
  const _hoisted_3$x = { class: "w-12 h-12 bg-blue-100 rounded-lg flex items-center justify-center text-blue-600 text-xl" };
  const _hoisted_4$u = { class: "ml-4" };
  const _hoisted_5$p = { class: "font-semibold text-lg" };
  const _hoisted_6$c = { class: "space-y-3 mb-6" };
  const _hoisted_7$a = { class: "flex justify-between text-sm" };
  const _hoisted_8$a = { class: "font-medium" };
  const _sfc_main$E = {
    __name: "FormCardList",
    props: {
      forms: {
        type: Array,
        default: () => []
      }
    },
    emits: ["edit", "command"],
    setup(__props, { emit: __emit }) {
      const emit2 = __emit;
      const emitCommand = (command, form) => {
        emit2("command", command, form);
      };
      const getFormIcon = (type) => {
        const icons = {
          contact: "fas fa-envelope",
          survey: "fas fa-poll",
          quiz: "fas fa-question-circle",
          application: "fas fa-file-alt"
        };
        return icons[type] || "fas fa-file";
      };
      return (_ctx, _cache) => {
        const _component_CircleClose = resolveComponent("CircleClose");
        const _component_CircleCheck = resolveComponent("CircleCheck");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_col = resolveComponent("el-col");
        const _component_CopyDocument = resolveComponent("CopyDocument");
        const _component_Edit = resolveComponent("Edit");
        const _component_Delete = resolveComponent("Delete");
        const _component_el_row = resolveComponent("el-row");
        const _component_el_card = resolveComponent("el-card");
        return openBlock(), createBlock(_component_el_row, { gutter: 24 }, {
          default: withCtx(() => [
            (openBlock(true), createElementBlock(Fragment, null, renderList(__props.forms, (form) => {
              return openBlock(), createBlock(_component_el_col, {
                xs: 24,
                md: 12,
                lg: 8,
                key: form.id,
                class: "mb-6"
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_card, {
                    shadow: "hover",
                    class: "h-full"
                  }, {
                    header: withCtx(() => [
                      createBaseVNode("div", _hoisted_1$C, [
                        createBaseVNode("div", _hoisted_2$B, [
                          createBaseVNode("div", _hoisted_3$x, [
                            createBaseVNode("i", {
                              class: normalizeClass(getFormIcon(form.type))
                            }, null, 2)
                          ]),
                          createBaseVNode("div", _hoisted_4$u, [
                            createBaseVNode("h3", _hoisted_5$p, toDisplayString(form.name), 1)
                          ])
                        ])
                      ])
                    ]),
                    default: withCtx(() => [
                      createBaseVNode("div", _hoisted_6$c, [
                        createBaseVNode("div", _hoisted_7$a, [
                          _cache[0] || (_cache[0] = createBaseVNode("span", { class: "text-gray-500" }, "Submissions", -1)),
                          createBaseVNode("span", _hoisted_8$a, toDisplayString(form.submissions.toLocaleString()), 1)
                        ])
                      ]),
                      createVNode(_component_el_row, { gutter: 8 }, {
                        default: withCtx(() => [
                          createVNode(_component_el_col, { span: 12 }, {
                            default: withCtx(() => [
                              createVNode(_component_el_button, {
                                plain: "",
                                class: "w-full",
                                onClick: withModifiers(($event) => emitCommand(form.isActive ? "deactivate" : "activate", form), ["stop"])
                              }, {
                                default: withCtx(() => [
                                  createVNode(_component_el_icon, { class: "mr-1" }, {
                                    default: withCtx(() => [
                                      form.isActive ? (openBlock(), createBlock(_component_CircleClose, { key: 0 })) : (openBlock(), createBlock(_component_CircleCheck, { key: 1 }))
                                    ]),
                                    _: 2
                                  }, 1024),
                                  createTextVNode(" " + toDisplayString(form.isActive ? "Deactivate" : "Activate"), 1)
                                ]),
                                _: 2
                              }, 1032, ["onClick"])
                            ]),
                            _: 2
                          }, 1024),
                          createVNode(_component_el_col, { span: 12 }, {
                            default: withCtx(() => [
                              createVNode(_component_el_button, {
                                plain: "",
                                class: "w-full",
                                onClick: withModifiers(($event) => emitCommand("duplicate", form), ["stop"])
                              }, {
                                default: withCtx(() => [
                                  createVNode(_component_el_icon, { class: "mr-1" }, {
                                    default: withCtx(() => [
                                      createVNode(_component_CopyDocument)
                                    ]),
                                    _: 1
                                  }),
                                  _cache[1] || (_cache[1] = createTextVNode(" Duplicate ", -1))
                                ]),
                                _: 1
                              }, 8, ["onClick"])
                            ]),
                            _: 2
                          }, 1024),
                          createVNode(_component_el_col, {
                            span: 12,
                            class: "mt-2"
                          }, {
                            default: withCtx(() => [
                              createVNode(_component_el_button, {
                                type: "primary",
                                plain: "",
                                class: "w-full",
                                onClick: withModifiers(($event) => _ctx.$emit("edit", form.id), ["stop"])
                              }, {
                                default: withCtx(() => [
                                  createVNode(_component_el_icon, { class: "mr-1" }, {
                                    default: withCtx(() => [
                                      createVNode(_component_Edit)
                                    ]),
                                    _: 1
                                  }),
                                  _cache[2] || (_cache[2] = createTextVNode(" Edit ", -1))
                                ]),
                                _: 1
                              }, 8, ["onClick"])
                            ]),
                            _: 2
                          }, 1024),
                          createVNode(_component_el_col, {
                            span: 12,
                            class: "mt-2"
                          }, {
                            default: withCtx(() => [
                              createVNode(_component_el_button, {
                                plain: "",
                                type: "danger",
                                class: "w-full",
                                onClick: withModifiers(($event) => emitCommand("delete", form), ["stop"])
                              }, {
                                default: withCtx(() => [
                                  createVNode(_component_el_icon, { class: "mr-1" }, {
                                    default: withCtx(() => [
                                      createVNode(_component_Delete)
                                    ]),
                                    _: 1
                                  }),
                                  _cache[3] || (_cache[3] = createTextVNode(" Delete ", -1))
                                ]),
                                _: 1
                              }, 8, ["onClick"])
                            ]),
                            _: 2
                          }, 1024)
                        ]),
                        _: 2
                      }, 1024)
                    ]),
                    _: 2
                  }, 1024)
                ]),
                _: 2
              }, 1024);
            }), 128))
          ]),
          _: 1
        });
      };
    }
  };
  const _hoisted_1$B = { class: "space-y-6" };
  const _hoisted_2$A = { class: "flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4" };
  const _hoisted_3$w = { class: "flex space-x-3 w-full sm:w-auto" };
  const _hoisted_4$t = { key: 1 };
  const _hoisted_5$o = {
    key: 2,
    class: "flex justify-center mt-6"
  };
  const _sfc_main$D = {
    __name: "AllForms",
    emits: ["create", "edit"],
    setup(__props, { emit: __emit }) {
      const emit2 = __emit;
      const { getForms, deleteForm, updateForm, createForm } = useFormsAPI();
      const { showNotification } = useNotifications();
      const forms = ref([]);
      const loading = ref(true);
      const searchQuery = ref("");
      const currentPage = ref(1);
      const pageSize = ref(20);
      const total2 = ref(0);
      const filteredForms = computed(() => {
        if (!searchQuery.value) return forms.value;
        return forms.value.filter((f2) => f2.name.toLowerCase().includes(searchQuery.value.toLowerCase()));
      });
      const loadForms = async () => {
        loading.value = true;
        try {
          const response = await getForms(currentPage.value, pageSize.value);
          if (response.success) {
            forms.value = response.data.map((f2) => ({
              ...f2,
              submissions: f2.submissions_count || 0,
              isActive: f2.status === "active"
            }));
            total2.value = response.total;
          }
        } catch (error) {
          console.error("Failed to load forms:", error);
        } finally {
          loading.value = false;
        }
      };
      const handlePageChange = (page) => {
        currentPage.value = page;
        loadForms();
      };
      const deleteFormItem = async (id) => {
        try {
          await ElMessageBox.confirm("Are you sure you want to delete this form?", "Warning", {
            confirmButtonText: "Delete",
            cancelButtonText: "Cancel",
            type: "warning",
            confirmButtonClass: "el-button--danger"
          });
          const response = await deleteForm(id);
          if (response.success) {
            showNotification("success", "Form deleted successfully");
            loadForms();
          } else {
            showNotification("error", response.message || "Failed to delete form");
          }
        } catch (e) {
        }
      };
      const handleCommand = (command, form) => {
        switch (command) {
          case "edit":
            editForm(form.id);
            break;
          case "duplicate":
            duplicateForm(form);
            break;
          case "activate":
            toggleFormStatus(form, "active");
            break;
          case "deactivate":
            toggleFormStatus(form, "inactive");
            break;
          case "export":
            exportForm(form);
            break;
          case "delete":
            deleteFormItem(form.id);
            break;
        }
      };
      const editForm = (id) => {
        emit2("edit", id);
      };
      const duplicateForm = async (form) => {
        try {
          const { id, submissions, submissions_count, isActive, ...payload } = form;
          const response = await createForm({
            ...payload,
            name: `Copy of ${form.name}`,
            status: form.isActive ? "active" : "inactive"
          });
          if (response.success) {
            showNotification("success", "Form duplicated successfully");
            await loadForms();
          } else {
            showNotification("error", response.message || "Failed to duplicate form");
          }
        } catch (error) {
          showNotification("error", "An error occurred");
        }
      };
      const toggleFormStatus = async (form, status) => {
        try {
          const response = await updateForm(form.id, { status });
          if (response.success) {
            showNotification("success", `Form ${status === "active" ? "activated" : "deactivated"}`);
            await loadForms();
          } else {
            showNotification("error", response.message || "Failed to update form status");
          }
        } catch (error) {
          showNotification("error", "Failed to update form status");
        }
      };
      const exportForm = (form) => {
        const dataStr = JSON.stringify(form, null, 2);
        const dataBlob = new Blob([dataStr], { type: "application/json" });
        const url = URL.createObjectURL(dataBlob);
        const link = document.createElement("a");
        link.href = url;
        link.download = `form-${form.name.toLowerCase().replace(/\s+/g, "-")}.json`;
        link.click();
        showNotification("success", "Form exported successfully");
      };
      onMounted(() => {
        loadForms();
      });
      return (_ctx, _cache) => {
        const _component_el_input = resolveComponent("el-input");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_empty = resolveComponent("el-empty");
        const _component_el_pagination = resolveComponent("el-pagination");
        return openBlock(), createElementBlock("div", _hoisted_1$B, [
          createBaseVNode("div", _hoisted_2$A, [
            createVNode(_component_el_input, {
              modelValue: searchQuery.value,
              "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchQuery.value = $event),
              placeholder: "Search forms...",
              "prefix-icon": unref(search_default),
              clearable: "",
              class: "w-64"
            }, null, 8, ["modelValue", "prefix-icon"]),
            createBaseVNode("div", _hoisted_3$w, [
              createVNode(_component_el_button, null, {
                default: withCtx(() => [
                  createVNode(_component_el_icon, { class: "mr-1" }, {
                    default: withCtx(() => [
                      createVNode(unref(filter_default))
                    ]),
                    _: 1
                  }),
                  _cache[3] || (_cache[3] = createTextVNode(" Filter ", -1))
                ]),
                _: 1
              }),
              createVNode(_component_el_button, {
                type: "primary",
                onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("create"))
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_icon, { class: "mr-1" }, {
                    default: withCtx(() => [
                      createVNode(unref(plus_default))
                    ]),
                    _: 1
                  }),
                  _cache[4] || (_cache[4] = createTextVNode(" Create Form ", -1))
                ]),
                _: 1
              })
            ])
          ]),
          loading.value ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            rows: 7,
            "show-action": false
          })) : (openBlock(), createElementBlock("div", _hoisted_4$t, [
            filteredForms.value.length === 0 && !loading.value ? (openBlock(), createBlock(_component_el_empty, {
              key: 0,
              description: "No forms found."
            })) : (openBlock(), createBlock(_sfc_main$E, {
              key: 1,
              forms: filteredForms.value,
              onEdit: editForm,
              onCommand: handleCommand
            }, null, 8, ["forms"])),
            total2.value > 0 ? (openBlock(), createElementBlock("div", _hoisted_5$o, [
              createVNode(_component_el_pagination, {
                background: "",
                layout: "prev, pager, next",
                total: total2.value,
                "page-size": pageSize.value,
                "current-page": currentPage.value,
                "onUpdate:currentPage": _cache[2] || (_cache[2] = ($event) => currentPage.value = $event),
                onCurrentChange: handlePageChange
              }, null, 8, ["total", "page-size", "current-page"])
            ])) : createCommentVNode("", true)
          ]))
        ]);
      };
    }
  };
  const _hoisted_1$A = { class: "h-[calc(100vh-200px)] -m-6" };
  const _hoisted_2$z = { class: "flex-1 overflow-y-auto p-4 space-y-6" };
  const _hoisted_3$v = { class: "space-y-2" };
  const _hoisted_4$s = ["onDragstart"];
  const _hoisted_5$n = { class: "flex items-center space-x-2" };
  const _hoisted_6$b = { class: "flex space-x-2" };
  const _hoisted_7$9 = { class: "border-b border-gray-200 pb-4 mb-6" };
  const _hoisted_8$9 = { class: "text-2xl font-bold text-gray-900" };
  const _hoisted_9$9 = { class: "text-gray-500 mt-1" };
  const _hoisted_10$7 = {
    key: 0,
    class: "flex flex-col items-center justify-center p-12 text-gray-400"
  };
  const _hoisted_11$7 = ["onDragstart", "onDragover", "onDrop", "onClick"];
  const _hoisted_12$5 = {
    key: 0,
    class: "absolute right-0 top-0 hidden group-hover:flex space-x-1 bg-white shadow-sm border border-gray-200 rounded p-1 z-10"
  };
  const _hoisted_13$4 = { class: "block text-sm font-medium text-gray-700 mb-1" };
  const _hoisted_14$3 = {
    key: 0,
    class: "text-red-500"
  };
  const _hoisted_15$3 = {
    key: 5,
    class: "flex flex-col"
  };
  const _hoisted_16$3 = { key: 6 };
  const _hoisted_17$3 = {
    key: 7,
    class: "border border-gray-300 bg-gray-50 rounded p-3 flex items-center justify-between"
  };
  const _hoisted_18$3 = { class: "flex items-center" };
  const _hoisted_19$3 = { class: "text-xs text-gray-400 flex flex-col items-end" };
  const _hoisted_20$3 = { class: "text-sm font-medium pointer-events-none flex items-center" };
  const _hoisted_21$3 = { class: "p-4 border-b border-gray-200 bg-gray-50" };
  const _hoisted_22$3 = { class: "font-semibold text-gray-900" };
  const _hoisted_23$2 = {
    key: 0,
    class: "p-4 space-y-4 flex-1 overflow-y-auto"
  };
  const _hoisted_24$2 = { key: 0 };
  const _hoisted_25$2 = {
    key: 1,
    class: "flex items-center"
  };
  const _hoisted_26 = { key: 2 };
  const _hoisted_27 = { class: "space-y-2" };
  const _hoisted_28 = { key: 3 };
  const _hoisted_29 = {
    key: 1,
    class: "p-4 space-y-4"
  };
  const _sfc_main$C = {
    __name: "FormBuilder",
    props: {
      editingFormId: {
        type: [Number, String],
        default: null
      },
      templateData: {
        type: Object,
        default: null
      }
    },
    emits: ["saved"],
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const emit2 = __emit;
      const formId = ref(null);
      const formTitle = ref("Untitled Form");
      const formDescription = ref("");
      const formFields = ref([]);
      const selectedField = ref(null);
      const previewMode = ref(false);
      const history = ref([]);
      const formLoading = ref(false);
      const saving = ref(false);
      const historyIndex = ref(-1);
      const formSettings = ref({});
      const formsAPI = useFormsAPI();
      const { showNotification } = useNotifications();
      const isEditing = computed(() => !!formId.value);
      const inputFields = [
        { type: "text", label: "Text Input", placeholder: "Enter text..." },
        { type: "textarea", label: "Text Area", placeholder: "Enter details..." },
        { type: "email", label: "Email", placeholder: "example@email.com" },
        { type: "tel", label: "Phone", placeholder: "+1 (555) 000-0000" },
        { type: "number", label: "Number", placeholder: "0" },
        { type: "date", label: "Date", placeholder: "" },
        { type: "select", label: "Dropdown", options: ["Option 1", "Option 2", "Option 3"] },
        { type: "checkbox", label: "Checkboxes", options: ["Option 1", "Option 2"] },
        { type: "radio", label: "Radio Buttons", options: ["Option 1", "Option 2"] },
        { type: "captcha", label: "Captcha", provider: "reCAPTCHA" }
      ];
      const saveToHistory = () => {
        const currentState = JSON.stringify({
          fields: formFields.value,
          title: formTitle.value,
          desc: formDescription.value
        });
        if (historyIndex.value >= 0 && history.value[historyIndex.value] === currentState) return;
        if (historyIndex.value < history.value.length - 1) {
          history.value = history.value.slice(0, historyIndex.value + 1);
        }
        history.value.push(currentState);
        historyIndex.value++;
      };
      watch([formFields, formTitle, formDescription], () => {
      }, { deep: true });
      const undo = () => {
        if (historyIndex.value > 0) {
          historyIndex.value--;
          const state = JSON.parse(history.value[historyIndex.value]);
          formFields.value = state.fields;
          formTitle.value = state.title;
          formDescription.value = state.desc;
          if (selectedField.value && !formFields.value.find((f2) => f2.id === selectedField.value.id)) {
            selectedField.value = null;
          }
        }
      };
      const redo = () => {
        if (historyIndex.value < history.value.length - 1) {
          historyIndex.value++;
          const state = JSON.parse(history.value[historyIndex.value]);
          formFields.value = state.fields;
          formTitle.value = state.title;
          formDescription.value = state.desc;
        }
      };
      const onDragStart = (event, fieldTemplate) => {
        event.dataTransfer.dropEffect = "copy";
        event.dataTransfer.effectAllowed = "copy";
        event.dataTransfer.setData("application/json", JSON.stringify(fieldTemplate));
        event.dataTransfer.setData("type", "new-field");
      };
      const onFieldDragStart = (event, index) => {
        event.dataTransfer.dropEffect = "move";
        event.dataTransfer.effectAllowed = "move";
        event.dataTransfer.setData("index", index);
        event.dataTransfer.setData("type", "reorder-field");
      };
      const onFieldDragOver = (event) => {
        event.preventDefault();
        const dragType = event.dataTransfer.getData("type");
        if (dragType === "new-field") {
          event.dataTransfer.dropEffect = "copy";
        } else {
          event.dataTransfer.dropEffect = "move";
        }
      };
      const onFieldDrop = (event, targetIndex) => {
        const type = event.dataTransfer.getData("type");
        if (type === "reorder-field") {
          const sourceIndex = parseInt(event.dataTransfer.getData("index"));
          if (sourceIndex === targetIndex) return;
          const item = formFields.value[sourceIndex];
          formFields.value.splice(sourceIndex, 1);
          formFields.value.splice(targetIndex, 0, item);
          saveToHistory();
        } else if (type === "new-field") {
          const fieldTemplate = JSON.parse(event.dataTransfer.getData("application/json"));
          const newField = {
            ...fieldTemplate,
            id: "field_" + Date.now(),
            required: false,
            options: fieldTemplate.options ? [...fieldTemplate.options] : void 0
          };
          formFields.value.splice(targetIndex, 0, newField);
          selectedField.value = newField;
          saveToHistory();
        }
      };
      const onDrop = (event) => {
        const type = event.dataTransfer.getData("type");
        if (type === "new-field") {
          const fieldTemplate = JSON.parse(event.dataTransfer.getData("application/json"));
          const newField = {
            ...fieldTemplate,
            id: "field_" + Date.now(),
            required: false,
            options: fieldTemplate.options ? [...fieldTemplate.options] : void 0
          };
          formFields.value.push(newField);
          selectedField.value = newField;
          saveToHistory();
        } else if (type === "reorder-field") {
          const sourceIndex = parseInt(event.dataTransfer.getData("index"));
          if (sourceIndex === formFields.value.length - 1) return;
          const item = formFields.value[sourceIndex];
          formFields.value.splice(sourceIndex, 1);
          formFields.value.push(item);
          saveToHistory();
        }
      };
      const selectField = (field) => {
        if (!previewMode.value) {
          selectedField.value = field;
        }
      };
      const removeField = (index) => {
        if (selectedField.value && formFields.value[index].id === selectedField.value.id) {
          selectedField.value = null;
        }
        formFields.value.splice(index, 1);
        saveToHistory();
      };
      const duplicateField = (index) => {
        const original = formFields.value[index];
        const newField = {
          ...JSON.parse(JSON.stringify(original)),
          // deep copy
          id: "field_" + Date.now()
        };
        formFields.value.splice(index + 1, 0, newField);
        selectedField.value = newField;
        saveToHistory();
      };
      const addOption = () => {
        if (selectedField.value && selectedField.value.options) {
          selectedField.value.options.push("New Option");
        }
      };
      const removeOption = (idx) => {
        if (selectedField.value && selectedField.value.options) {
          selectedField.value.options.splice(idx, 1);
        }
      };
      const saveForm = async () => {
        saving.value = true;
        const formData = {
          name: formTitle.value,
          description: formDescription.value,
          config: {
            fields: formFields.value,
            settings: formSettings.value
          },
          status: "active"
        };
        try {
          let response;
          if (isEditing.value) {
            response = await formsAPI.updateForm(formId.value, formData);
          } else {
            response = await formsAPI.createForm(formData);
          }
          if (response.success) {
            showNotification("success", isEditing.value ? "Form updated successfully" : "Form created successfully");
            emit2("saved");
          } else {
            showNotification("error", response.message || "Failed to save form");
          }
        } catch (error) {
          console.error("Error saving form:", error);
          showNotification("error", "Failed to save form");
        } finally {
          saving.value = false;
        }
      };
      const loadForm = async (id) => {
        formLoading.value = true;
        try {
          const response = await formsAPI.getForm(id);
          if (response.success && response.data) {
            const form = response.data;
            formId.value = form.id;
            formTitle.value = form.name || "Untitled Form";
            formDescription.value = form.description || "";
            const config = typeof form.config === "string" ? JSON.parse(form.config) : form.config;
            if (config) {
              formFields.value = config.fields || [];
              formSettings.value = {};
            }
            history.value = [];
            historyIndex.value = -1;
            saveToHistory();
          } else {
            showNotification("error", "Form not found");
          }
        } catch (error) {
          console.error("Error loading form:", error);
          showNotification("error", "Failed to load form");
        } finally {
          formLoading.value = false;
        }
      };
      const loadTemplate = (template) => {
        formId.value = null;
        formTitle.value = template.name || "Untitled Form";
        formDescription.value = template.description || "";
        const config = typeof template.config === "string" ? JSON.parse(template.config) : template.config;
        if (config) {
          formFields.value = config.fields || [];
          formSettings.value = {};
        } else {
          formFields.value = [];
          formSettings.value = {};
        }
        history.value = [];
        historyIndex.value = -1;
        saveToHistory();
      };
      const resetForm = () => {
        formId.value = null;
        formTitle.value = "Untitled Form";
        formDescription.value = "";
        formFields.value = [];
        selectedField.value = null;
        formSettings.value = {};
        history.value = [];
        historyIndex.value = -1;
        saveToHistory();
      };
      watch(() => props2.editingFormId, (newId) => {
        if (newId) {
          loadForm(newId);
        } else if (!props2.templateData) {
          resetForm();
        }
      }, { immediate: true });
      watch(() => props2.templateData, (newTemplate) => {
        if (newTemplate) {
          loadTemplate(newTemplate);
        }
      }, { immediate: true });
      if (!props2.editingFormId && !props2.templateData) {
        saveToHistory();
      }
      const openFormSettings = () => {
        if (!previewMode.value) {
          selectedField.value = null;
        }
      };
      return (_ctx, _cache) => {
        const _component_el_aside = resolveComponent("el-aside");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_button_group = resolveComponent("el-button-group");
        const _component_el_header = resolveComponent("el-header");
        const _component_Plus = resolveComponent("Plus");
        const _component_Edit = resolveComponent("Edit");
        const _component_CopyDocument = resolveComponent("CopyDocument");
        const _component_Delete = resolveComponent("Delete");
        const _component_el_input = resolveComponent("el-input");
        const _component_el_date_picker = resolveComponent("el-date-picker");
        const _component_el_option = resolveComponent("el-option");
        const _component_el_select = resolveComponent("el-select");
        const _component_el_checkbox = resolveComponent("el-checkbox");
        const _component_el_radio = resolveComponent("el-radio");
        const _component_el_radio_group = resolveComponent("el-radio-group");
        const _component_Lock = resolveComponent("Lock");
        const _component_el_card = resolveComponent("el-card");
        const _component_el_main = resolveComponent("el-main");
        const _component_el_container = resolveComponent("el-container");
        const _component_el_tag = resolveComponent("el-tag");
        const _component_el_divider = resolveComponent("el-divider");
        const _component_Close = resolveComponent("Close");
        const _component_el_alert = resolveComponent("el-alert");
        return openBlock(), createElementBlock("div", _hoisted_1$A, [
          formLoading.value ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            rows: 12,
            "show-toolbar": false
          })) : (openBlock(), createBlock(_component_el_container, {
            key: 1,
            class: "h-full"
          }, {
            default: withCtx(() => [
              createVNode(_component_el_aside, {
                width: "260px",
                class: "bg-white border-r border-gray-200 flex flex-col"
              }, {
                default: withCtx(() => [
                  _cache[12] || (_cache[12] = createBaseVNode("div", { class: "p-4 border-b border-gray-200 bg-gray-50" }, [
                    createBaseVNode("h3", { class: "font-semibold text-gray-900" }, "Form Elements")
                  ], -1)),
                  createBaseVNode("div", _hoisted_2$z, [
                    createBaseVNode("div", null, [
                      _cache[11] || (_cache[11] = createBaseVNode("h4", { class: "text-xs font-semibold text-gray-500 uppercase mb-3" }, "Input Fields", -1)),
                      createBaseVNode("div", _hoisted_3$v, [
                        (openBlock(), createElementBlock(Fragment, null, renderList(inputFields, (field) => {
                          return createBaseVNode("div", {
                            key: field.type,
                            draggable: "true",
                            onDragstart: ($event) => onDragStart($event, field),
                            class: "bg-gray-50 border border-gray-200 rounded p-2 text-sm text-gray-700 hover:border-blue-500 hover:text-blue-600 cursor-move flex items-center"
                          }, [
                            _cache[10] || (_cache[10] = createBaseVNode("i", { class: "fas fa-grip-vertical text-gray-400 mr-2" }, null, -1)),
                            createTextVNode(" " + toDisplayString(field.label), 1)
                          ], 40, _hoisted_4$s);
                        }), 64))
                      ])
                    ])
                  ])
                ]),
                _: 1
              }),
              createVNode(_component_el_container, null, {
                default: withCtx(() => [
                  createVNode(_component_el_header, {
                    height: "auto",
                    class: "bg-white border-b border-gray-200 p-4 flex justify-between items-center"
                  }, {
                    default: withCtx(() => [
                      createBaseVNode("div", _hoisted_5$n, [
                        createVNode(_component_el_button_group, null, {
                          default: withCtx(() => [
                            createVNode(_component_el_button, {
                              size: "small",
                              onClick: undo,
                              disabled: historyIndex.value <= 0
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_icon, { class: "mr-1" }, {
                                  default: withCtx(() => [
                                    createVNode(unref(refresh_left_default))
                                  ]),
                                  _: 1
                                }),
                                _cache[13] || (_cache[13] = createTextVNode(" Undo ", -1))
                              ]),
                              _: 1
                            }, 8, ["disabled"]),
                            createVNode(_component_el_button, {
                              size: "small",
                              onClick: redo,
                              disabled: historyIndex.value >= history.value.length - 1
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_icon, { class: "mr-1" }, {
                                  default: withCtx(() => [
                                    createVNode(unref(refresh_right_default))
                                  ]),
                                  _: 1
                                }),
                                _cache[14] || (_cache[14] = createTextVNode(" Redo ", -1))
                              ]),
                              _: 1
                            }, 8, ["disabled"])
                          ]),
                          _: 1
                        })
                      ]),
                      createBaseVNode("div", _hoisted_6$b, [
                        createVNode(_component_el_button, {
                          onClick: _cache[0] || (_cache[0] = ($event) => previewMode.value = !previewMode.value)
                        }, {
                          default: withCtx(() => [
                            createTextVNode(toDisplayString(previewMode.value ? "Edit" : "Preview"), 1)
                          ]),
                          _: 1
                        }),
                        createVNode(_component_el_button, { onClick: openFormSettings }, {
                          default: withCtx(() => [..._cache[15] || (_cache[15] = [
                            createTextVNode("Settings", -1)
                          ])]),
                          _: 1
                        }),
                        createVNode(_component_el_button, {
                          type: "primary",
                          onClick: saveForm,
                          loading: saving.value
                        }, {
                          default: withCtx(() => [
                            createTextVNode(toDisplayString(isEditing.value ? "Update Form" : "Save Form"), 1)
                          ]),
                          _: 1
                        }, 8, ["loading"])
                      ])
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_main, {
                    class: "bg-gray-100 p-8",
                    onDragover: _cache[3] || (_cache[3] = withModifiers(() => {
                    }, ["prevent"])),
                    onDrop
                  }, {
                    default: withCtx(() => [
                      createVNode(_component_el_card, {
                        shadow: "never",
                        class: "max-w-2xl mx-auto min-h-[500px] relative",
                        "body-style": { padding: "32px" }
                      }, {
                        default: withCtx(() => [
                          createBaseVNode("div", _hoisted_7$9, [
                            createBaseVNode("h2", _hoisted_8$9, toDisplayString(formTitle.value), 1),
                            createBaseVNode("p", _hoisted_9$9, toDisplayString(formDescription.value), 1)
                          ]),
                          createBaseVNode("div", {
                            class: normalizeClass(["space-y-4 min-h-[200px]", { "border-2 border-dashed border-gray-200 rounded": formFields.value.length === 0 && !previewMode.value }])
                          }, [
                            formFields.value.length === 0 && !previewMode.value ? (openBlock(), createElementBlock("div", _hoisted_10$7, [
                              createVNode(_component_el_icon, {
                                size: 24,
                                class: "mb-2"
                              }, {
                                default: withCtx(() => [
                                  createVNode(_component_Plus)
                                ]),
                                _: 1
                              }),
                              _cache[16] || (_cache[16] = createBaseVNode("span", null, "Drag elements here", -1))
                            ])) : createCommentVNode("", true),
                            (openBlock(true), createElementBlock(Fragment, null, renderList(formFields.value, (field, index) => {
                              return openBlock(), createElementBlock("div", {
                                key: field.id,
                                draggable: "true",
                                onDragstart: ($event) => onFieldDragStart($event, index),
                                onDragover: withModifiers(($event) => onFieldDragOver($event, index), ["prevent"]),
                                onDrop: withModifiers(($event) => onFieldDrop($event, index), ["stop"]),
                                onClick: ($event) => selectField(field),
                                class: normalizeClass(["relative group rounded p-2 -m-2 border-2", [
                                  selectedField.value?.id === field.id && !previewMode.value ? "border-primary-500 bg-primary-50" : "border-transparent hover:border-blue-300",
                                  previewMode.value ? "" : "cursor-move"
                                ]])
                              }, [
                                !previewMode.value ? (openBlock(), createElementBlock("div", _hoisted_12$5, [
                                  createVNode(_component_el_button, {
                                    size: "small",
                                    onClick: withModifiers(($event) => selectField(field), ["stop"])
                                  }, {
                                    default: withCtx(() => [
                                      createVNode(_component_el_icon, { class: "mr-1" }, {
                                        default: withCtx(() => [
                                          createVNode(_component_Edit)
                                        ]),
                                        _: 1
                                      }),
                                      _cache[17] || (_cache[17] = createTextVNode(" Edit ", -1))
                                    ]),
                                    _: 1
                                  }, 8, ["onClick"]),
                                  createVNode(_component_el_button, {
                                    size: "small",
                                    onClick: withModifiers(($event) => duplicateField(index), ["stop"])
                                  }, {
                                    default: withCtx(() => [
                                      createVNode(_component_el_icon, { class: "mr-1" }, {
                                        default: withCtx(() => [
                                          createVNode(_component_CopyDocument)
                                        ]),
                                        _: 1
                                      }),
                                      _cache[18] || (_cache[18] = createTextVNode(" Duplicate ", -1))
                                    ]),
                                    _: 1
                                  }, 8, ["onClick"]),
                                  createVNode(_component_el_button, {
                                    size: "small",
                                    type: "danger",
                                    plain: "",
                                    onClick: withModifiers(($event) => removeField(index), ["stop"])
                                  }, {
                                    default: withCtx(() => [
                                      createVNode(_component_el_icon, { class: "mr-1" }, {
                                        default: withCtx(() => [
                                          createVNode(_component_Delete)
                                        ]),
                                        _: 1
                                      }),
                                      _cache[19] || (_cache[19] = createTextVNode(" Delete ", -1))
                                    ]),
                                    _: 1
                                  }, 8, ["onClick"])
                                ])) : createCommentVNode("", true),
                                createBaseVNode("label", _hoisted_13$4, [
                                  createTextVNode(toDisplayString(field.label) + " ", 1),
                                  field.required ? (openBlock(), createElementBlock("span", _hoisted_14$3, "*")) : createCommentVNode("", true)
                                ]),
                                ["text", "email", "tel", "number", "time"].includes(field.type) ? (openBlock(), createBlock(_component_el_input, {
                                  key: 1,
                                  type: field.type === "number" ? "number" : "text",
                                  placeholder: field.placeholder,
                                  disabled: !previewMode.value
                                }, null, 8, ["type", "placeholder", "disabled"])) : field.type === "date" ? (openBlock(), createBlock(_component_el_date_picker, {
                                  key: 2,
                                  type: "date",
                                  placeholder: field.placeholder || "Select date",
                                  class: "w-full",
                                  disabled: !previewMode.value
                                }, null, 8, ["placeholder", "disabled"])) : field.type === "textarea" ? (openBlock(), createBlock(_component_el_input, {
                                  key: 3,
                                  type: "textarea",
                                  rows: 3,
                                  placeholder: field.placeholder,
                                  disabled: !previewMode.value
                                }, null, 8, ["placeholder", "disabled"])) : field.type === "select" ? (openBlock(), createBlock(_component_el_select, {
                                  key: 4,
                                  class: "w-full",
                                  disabled: !previewMode.value,
                                  placeholder: field.placeholder || "Select an option"
                                }, {
                                  default: withCtx(() => [
                                    (openBlock(true), createElementBlock(Fragment, null, renderList(field.options, (opt) => {
                                      return openBlock(), createBlock(_component_el_option, {
                                        key: opt,
                                        label: opt,
                                        value: opt
                                      }, null, 8, ["label", "value"]);
                                    }), 128))
                                  ]),
                                  _: 2
                                }, 1032, ["disabled", "placeholder"])) : field.type === "checkbox" ? (openBlock(), createElementBlock("div", _hoisted_15$3, [
                                  (openBlock(true), createElementBlock(Fragment, null, renderList(field.options, (opt) => {
                                    return openBlock(), createBlock(_component_el_checkbox, {
                                      key: opt,
                                      label: opt,
                                      disabled: !previewMode.value
                                    }, null, 8, ["label", "disabled"]);
                                  }), 128))
                                ])) : field.type === "radio" ? (openBlock(), createElementBlock("div", _hoisted_16$3, [
                                  createVNode(_component_el_radio_group, { class: "flex flex-col items-start" }, {
                                    default: withCtx(() => [
                                      (openBlock(true), createElementBlock(Fragment, null, renderList(field.options, (opt) => {
                                        return openBlock(), createBlock(_component_el_radio, {
                                          key: opt,
                                          label: opt,
                                          disabled: !previewMode.value
                                        }, {
                                          default: withCtx(() => [
                                            createTextVNode(toDisplayString(opt), 1)
                                          ]),
                                          _: 2
                                        }, 1032, ["label", "disabled"]);
                                      }), 128))
                                    ]),
                                    _: 2
                                  }, 1024)
                                ])) : field.type === "captcha" ? (openBlock(), createElementBlock("div", _hoisted_17$3, [
                                  createBaseVNode("div", _hoisted_18$3, [
                                    createVNode(_component_el_checkbox, { disabled: "" }, {
                                      default: withCtx(() => [..._cache[20] || (_cache[20] = [
                                        createTextVNode(toDisplayString("I'm not a robot"), -1)
                                      ])]),
                                      _: 1
                                    })
                                  ]),
                                  createBaseVNode("div", _hoisted_19$3, [
                                    createVNode(_component_el_icon, { class: "text-lg mb-1" }, {
                                      default: withCtx(() => [
                                        createVNode(_component_Lock)
                                      ]),
                                      _: 1
                                    }),
                                    createBaseVNode("span", null, toDisplayString(field.provider || "reCAPTCHA"), 1)
                                  ])
                                ])) : createCommentVNode("", true)
                              ], 42, _hoisted_11$7);
                            }), 128)),
                            !previewMode.value ? (openBlock(), createElementBlock("div", {
                              key: 1,
                              onDragover: _cache[1] || (_cache[1] = withModifiers(($event) => onFieldDragOver($event), ["prevent"])),
                              onDrop: _cache[2] || (_cache[2] = withModifiers(($event) => onDrop($event), ["stop"])),
                              class: "relative z-10 border-2 border-dashed border-gray-200 rounded-lg p-4 my-4 min-h-[64px] flex items-center justify-center text-gray-400 hover:border-blue-400 hover:text-blue-500 hover:bg-blue-50 transition-colors cursor-pointer",
                              title: "Drop last item here"
                            }, [
                              createBaseVNode("span", _hoisted_20$3, [
                                createVNode(_component_el_icon, { class: "mr-2" }, {
                                  default: withCtx(() => [
                                    createVNode(_component_Plus)
                                  ]),
                                  _: 1
                                }),
                                _cache[21] || (_cache[21] = createTextVNode(" Drop here to add at bottom ", -1))
                              ])
                            ], 32)) : createCommentVNode("", true)
                          ], 2)
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }),
              !previewMode.value ? (openBlock(), createBlock(_component_el_aside, {
                key: 0,
                width: "300px",
                class: "bg-white border-l border-gray-200 flex flex-col"
              }, {
                default: withCtx(() => [
                  createBaseVNode("div", _hoisted_21$3, [
                    createBaseVNode("h3", _hoisted_22$3, toDisplayString(selectedField.value ? "Field Properties" : "Form Settings"), 1)
                  ]),
                  selectedField.value ? (openBlock(), createElementBlock("div", _hoisted_23$2, [
                    createBaseVNode("div", null, [
                      _cache[22] || (_cache[22] = createBaseVNode("label", { class: "block text-xs font-medium text-gray-500 uppercase mb-1" }, "Type", -1)),
                      createVNode(_component_el_tag, null, {
                        default: withCtx(() => [
                          createTextVNode(toDisplayString(selectedField.value.label), 1)
                        ]),
                        _: 1
                      })
                    ]),
                    createBaseVNode("div", null, [
                      _cache[23] || (_cache[23] = createBaseVNode("label", { class: "block text-xs font-medium text-gray-500 uppercase mb-1" }, "Label", -1)),
                      createVNode(_component_el_input, {
                        modelValue: selectedField.value.label,
                        "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => selectedField.value.label = $event),
                        size: "small"
                      }, null, 8, ["modelValue"])
                    ]),
                    ["text", "email", "tel", "number", "textarea", "select"].includes(selectedField.value.type) ? (openBlock(), createElementBlock("div", _hoisted_24$2, [
                      _cache[24] || (_cache[24] = createBaseVNode("label", { class: "block text-xs font-medium text-gray-500 uppercase mb-1" }, "Placeholder", -1)),
                      createVNode(_component_el_input, {
                        modelValue: selectedField.value.placeholder,
                        "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => selectedField.value.placeholder = $event),
                        size: "small"
                      }, null, 8, ["modelValue"])
                    ])) : createCommentVNode("", true),
                    selectedField.value.type !== "captcha" ? (openBlock(), createElementBlock("div", _hoisted_25$2, [
                      createVNode(_component_el_checkbox, {
                        modelValue: selectedField.value.required,
                        "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => selectedField.value.required = $event),
                        label: "Required Field"
                      }, null, 8, ["modelValue"])
                    ])) : createCommentVNode("", true),
                    ["select", "checkbox", "radio"].includes(selectedField.value.type) ? (openBlock(), createElementBlock("div", _hoisted_26, [
                      createVNode(_component_el_divider, { class: "my-4" }),
                      _cache[27] || (_cache[27] = createBaseVNode("label", { class: "block text-xs font-medium text-gray-500 uppercase mb-1" }, "Options", -1)),
                      createBaseVNode("div", _hoisted_27, [
                        (openBlock(true), createElementBlock(Fragment, null, renderList(selectedField.value.options, (opt, idx) => {
                          return openBlock(), createElementBlock("div", {
                            key: idx,
                            class: "flex items-center space-x-2"
                          }, [
                            createVNode(_component_el_input, {
                              modelValue: selectedField.value.options[idx],
                              "onUpdate:modelValue": ($event) => selectedField.value.options[idx] = $event,
                              size: "small"
                            }, null, 8, ["modelValue", "onUpdate:modelValue"]),
                            createVNode(_component_el_button, {
                              size: "small",
                              type: "danger",
                              plain: "",
                              onClick: ($event) => removeOption(idx)
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_icon, { class: "mr-1" }, {
                                  default: withCtx(() => [
                                    createVNode(_component_Close)
                                  ]),
                                  _: 1
                                }),
                                _cache[25] || (_cache[25] = createTextVNode(" Remove ", -1))
                              ]),
                              _: 1
                            }, 8, ["onClick"])
                          ]);
                        }), 128)),
                        createVNode(_component_el_button, {
                          link: "",
                          type: "primary",
                          size: "small",
                          onClick: addOption
                        }, {
                          default: withCtx(() => [..._cache[26] || (_cache[26] = [
                            createTextVNode("+ Add Option", -1)
                          ])]),
                          _: 1
                        })
                      ])
                    ])) : createCommentVNode("", true),
                    selectedField.value.type === "captcha" ? (openBlock(), createElementBlock("div", _hoisted_28, [
                      createVNode(_component_el_divider, { class: "my-4" }),
                      _cache[28] || (_cache[28] = createBaseVNode("label", { class: "block text-xs font-medium text-gray-500 uppercase mb-1" }, "Provider", -1)),
                      createVNode(_component_el_select, {
                        modelValue: selectedField.value.provider,
                        "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => selectedField.value.provider = $event),
                        size: "small",
                        class: "w-full"
                      }, {
                        default: withCtx(() => [
                          createVNode(_component_el_option, {
                            label: "Google reCAPTCHA v2",
                            value: "reCAPTCHA"
                          }),
                          createVNode(_component_el_option, {
                            label: "Google reCAPTCHA v3",
                            value: "reCAPTCHA v3"
                          }),
                          createVNode(_component_el_option, {
                            label: "hCaptcha",
                            value: "hCaptcha"
                          }),
                          createVNode(_component_el_option, {
                            label: "Cloudflare Turnstile",
                            value: "Cloudflare"
                          })
                        ]),
                        _: 1
                      }, 8, ["modelValue"]),
                      createVNode(_component_el_alert, {
                        title: "Ensure API keys are configured in Settings",
                        type: "warning",
                        "show-icon": "",
                        closable: false,
                        class: "mt-4"
                      })
                    ])) : createCommentVNode("", true)
                  ])) : (openBlock(), createElementBlock("div", _hoisted_29, [
                    createBaseVNode("div", null, [
                      _cache[29] || (_cache[29] = createBaseVNode("label", { class: "block text-xs font-medium text-gray-500 uppercase mb-1" }, "Form Title", -1)),
                      createVNode(_component_el_input, {
                        modelValue: formTitle.value,
                        "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => formTitle.value = $event),
                        size: "small",
                        placeholder: "Form Title"
                      }, null, 8, ["modelValue"])
                    ]),
                    createBaseVNode("div", null, [
                      _cache[30] || (_cache[30] = createBaseVNode("label", { class: "block text-xs font-medium text-gray-500 uppercase mb-1" }, "Form Description", -1)),
                      createVNode(_component_el_input, {
                        modelValue: formDescription.value,
                        "onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => formDescription.value = $event),
                        type: "textarea",
                        rows: 3,
                        size: "small",
                        placeholder: "Form description"
                      }, null, 8, ["modelValue"])
                    ]),
                    _cache[31] || (_cache[31] = createBaseVNode("p", { class: "text-xs text-gray-500 mb-4" }, "Configure global settings for this form.", -1))
                  ]))
                ]),
                _: 1
              })) : createCommentVNode("", true)
            ]),
            _: 1
          }))
        ]);
      };
    }
  };
  const _hoisted_1$z = { class: "w-full" };
  const _hoisted_2$y = { class: "flex items-center justify-between w-full gap-4" };
  const _hoisted_3$u = { class: "mt-6 pt-6 border-t border-gray-200 flex justify-end" };
  const _sfc_main$B = {
    __name: "FormSettings",
    setup(__props) {
      const { getFormSettings, saveFormSettings } = useFormsAPI();
      const { showNotification } = useNotifications();
      const loading = ref(false);
      const saving = ref(false);
      const defaults = () => ({
        emailNotification: false,
        recipientEmail: "",
        confirmationType: "message",
        confirmationMessage: "Thank you for your submission! We will get back to you shortly.",
        redirectUrl: ""
      });
      const settings = ref(defaults());
      const loadSettings = async () => {
        loading.value = true;
        try {
          const res = await getFormSettings();
          if (res.success) {
            settings.value = { ...defaults(), ...res.data };
          }
        } catch (e) {
          console.error("Failed to load form settings:", e);
        } finally {
          loading.value = false;
        }
      };
      const saveSettings = async () => {
        saving.value = true;
        try {
          const res = await saveFormSettings(settings.value);
          if (res.success) {
            showNotification("success", "Form settings saved successfully");
          } else {
            showNotification("error", res.message || "Failed to save settings");
          }
        } catch (e) {
          console.error("Failed to save form settings:", e);
          showNotification("error", "Failed to save settings");
        } finally {
          saving.value = false;
        }
      };
      onMounted(loadSettings);
      return (_ctx, _cache) => {
        const _component_el_switch = resolveComponent("el-switch");
        const _component_el_form_item = resolveComponent("el-form-item");
        const _component_el_input = resolveComponent("el-input");
        const _component_el_divider = resolveComponent("el-divider");
        const _component_el_option = resolveComponent("el-option");
        const _component_el_select = resolveComponent("el-select");
        const _component_el_form = resolveComponent("el-form");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_card = resolveComponent("el-card");
        return openBlock(), createElementBlock("div", _hoisted_1$z, [
          loading.value ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            rows: 8,
            "show-toolbar": false
          })) : (openBlock(), createBlock(_component_el_card, {
            key: 1,
            shadow: "never"
          }, {
            header: withCtx(() => [..._cache[5] || (_cache[5] = [
              createBaseVNode("div", null, [
                createBaseVNode("h3", { class: "font-semibold text-gray-900" }, "Global Form Settings"),
                createBaseVNode("p", { class: "text-sm text-gray-500 mt-0.5" }, " These settings apply to all forms rendered in the chatbot. ")
              ], -1)
            ])]),
            default: withCtx(() => [
              createVNode(_component_el_form, {
                "label-position": "top",
                class: "space-y-4"
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_form_item, { class: "!mb-0" }, {
                    default: withCtx(() => [
                      createBaseVNode("div", _hoisted_2$y, [
                        _cache[6] || (_cache[6] = createBaseVNode("div", null, [
                          createBaseVNode("div", { class: "font-medium text-gray-800" }, "Send Email Notification"),
                          createBaseVNode("div", { class: "text-sm text-gray-500" }, "Receive an email when any form is submitted.")
                        ], -1)),
                        createVNode(_component_el_switch, {
                          modelValue: settings.value.emailNotification,
                          "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => settings.value.emailNotification = $event)
                        }, null, 8, ["modelValue"])
                      ])
                    ]),
                    _: 1
                  }),
                  settings.value.emailNotification ? (openBlock(), createBlock(_component_el_form_item, {
                    key: 0,
                    label: "Recipient Email",
                    class: "!mb-0"
                  }, {
                    default: withCtx(() => [
                      createVNode(_component_el_input, {
                        modelValue: settings.value.recipientEmail,
                        "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => settings.value.recipientEmail = $event),
                        type: "email",
                        placeholder: "admin@example.com"
                      }, null, 8, ["modelValue"])
                    ]),
                    _: 1
                  })) : createCommentVNode("", true),
                  createVNode(_component_el_divider, { class: "!my-4" }),
                  _cache[7] || (_cache[7] = createBaseVNode("div", null, [
                    createBaseVNode("h4", { class: "font-medium text-gray-800" }, "After Submission"),
                    createBaseVNode("p", { class: "text-sm text-gray-500" }, "What visitors see after a successful submission.")
                  ], -1)),
                  createVNode(_component_el_form_item, {
                    label: "Confirmation Type",
                    class: "!mb-0"
                  }, {
                    default: withCtx(() => [
                      createVNode(_component_el_select, {
                        modelValue: settings.value.confirmationType,
                        "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => settings.value.confirmationType = $event),
                        class: "w-full"
                      }, {
                        default: withCtx(() => [
                          createVNode(_component_el_option, {
                            label: "Show Message",
                            value: "message"
                          }),
                          createVNode(_component_el_option, {
                            label: "Redirect to URL",
                            value: "redirect"
                          })
                        ]),
                        _: 1
                      }, 8, ["modelValue"])
                    ]),
                    _: 1
                  }),
                  settings.value.confirmationType === "message" ? (openBlock(), createBlock(_component_el_form_item, {
                    key: 1,
                    label: "Success Message",
                    class: "!mb-0"
                  }, {
                    default: withCtx(() => [
                      createVNode(_component_el_input, {
                        modelValue: settings.value.confirmationMessage,
                        "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => settings.value.confirmationMessage = $event),
                        type: "textarea",
                        rows: 3,
                        placeholder: "Thank you for your submission!"
                      }, null, 8, ["modelValue"])
                    ]),
                    _: 1
                  })) : createCommentVNode("", true),
                  settings.value.confirmationType === "redirect" ? (openBlock(), createBlock(_component_el_form_item, {
                    key: 2,
                    label: "Redirect URL",
                    class: "!mb-0"
                  }, {
                    default: withCtx(() => [
                      createVNode(_component_el_input, {
                        modelValue: settings.value.redirectUrl,
                        "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => settings.value.redirectUrl = $event),
                        type: "url",
                        placeholder: "https://example.com/thank-you"
                      }, null, 8, ["modelValue"])
                    ]),
                    _: 1
                  })) : createCommentVNode("", true)
                ]),
                _: 1
              }),
              createBaseVNode("div", _hoisted_3$u, [
                createVNode(_component_el_button, {
                  type: "primary",
                  onClick: saveSettings,
                  loading: saving.value
                }, {
                  default: withCtx(() => [
                    createVNode(_component_el_icon, { class: "mr-1" }, {
                      default: withCtx(() => [
                        createVNode(unref(check_default))
                      ]),
                      _: 1
                    }),
                    _cache[8] || (_cache[8] = createTextVNode(" Save Settings ", -1))
                  ]),
                  _: 1
                }, 8, ["loading"])
              ])
            ]),
            _: 1
          }))
        ]);
      };
    }
  };
  const _hoisted_1$y = { key: 1 };
  const _hoisted_2$x = { class: "flex justify-between items-center" };
  const _hoisted_3$t = { class: "flex space-x-3" };
  const _hoisted_4$r = { class: "text-sm text-gray-500" };
  const _hoisted_5$m = { class: "text-gray-600 text-sm truncate" };
  const _hoisted_6$a = {
    key: 0,
    class: "mt-4 flex justify-end"
  };
  const _hoisted_7$8 = { class: "mb-3 flex items-center gap-3 text-sm text-gray-500" };
  const _hoisted_8$8 = { class: "font-medium capitalize" };
  const _hoisted_9$8 = { class: "whitespace-pre-wrap break-words" };
  const _sfc_main$A = {
    __name: "FormSubmissions",
    setup(__props) {
      const { getFormSubmissions, getForms } = useFormsAPI();
      const submissions = ref([]);
      const forms = ref([]);
      const selectedFormId = ref("");
      const loading = ref(true);
      const currentPage = ref(1);
      const perPage = ref(20);
      const total2 = ref(0);
      const dialogVisible = ref(false);
      const activeSubmission = ref(null);
      const formatDate = (dateString) => {
        if (!dateString) return "—";
        return new Date(dateString).toLocaleString();
      };
      const getFormName = (id) => {
        const form = forms.value.find((f2) => f2.id == id);
        return form ? form.name : `Form #${id}`;
      };
      const getDataPreview = (data) => {
        if (!data || typeof data !== "object") return "—";
        const entries = Object.entries(data).filter(([k]) => k !== "_meta");
        if (!entries.length) return "—";
        const [key, val] = entries[0];
        const formatted = Array.isArray(val) ? val.join(", ") : String(val ?? "");
        return formatted.length > 60 ? formatted.substring(0, 57) + "…" : formatted;
      };
      const visibleFields = (data) => {
        if (!data || typeof data !== "object") return {};
        const result = {};
        for (const [k, v2] of Object.entries(data)) {
          if (k !== "_meta") result[k] = v2;
        }
        return result;
      };
      const hasVisibleFields = (data) => {
        return Object.keys(visibleFields(data)).length > 0;
      };
      const formatFieldKey = (key) => {
        return String(key).replace(/_/g, " ");
      };
      const formatFieldValue = (value) => {
        if (value === null || value === void 0) return "—";
        if (Array.isArray(value)) return value.join(", ");
        return String(value);
      };
      const viewSubmission = (row) => {
        activeSubmission.value = row;
        dialogVisible.value = true;
      };
      const loadSubmissions = async (page = 1) => {
        currentPage.value = page;
        try {
          const res = await getFormSubmissions(selectedFormId.value || null, page, perPage.value);
          if (res.success) {
            submissions.value = res.data;
            total2.value = res.total;
          }
        } catch (error) {
          console.error("Failed to load submissions:", error);
        }
      };
      const onFormChange = () => {
        currentPage.value = 1;
        loadSubmissions(1);
      };
      onMounted(async () => {
        loading.value = true;
        try {
          const formRes = await getForms(1, 100);
          if (formRes.success) forms.value = formRes.data || [];
          await loadSubmissions(1);
        } catch (error) {
          console.error("Failed to load submissions:", error);
        } finally {
          loading.value = false;
        }
      });
      return (_ctx, _cache) => {
        const _component_el_option = resolveComponent("el-option");
        const _component_el_select = resolveComponent("el-select");
        const _component_el_table_column = resolveComponent("el-table-column");
        const _component_el_tag = resolveComponent("el-tag");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_table = resolveComponent("el-table");
        const _component_el_pagination = resolveComponent("el-pagination");
        const _component_el_card = resolveComponent("el-card");
        const _component_el_descriptions_item = resolveComponent("el-descriptions-item");
        const _component_el_descriptions = resolveComponent("el-descriptions");
        const _component_el_dialog = resolveComponent("el-dialog");
        return loading.value ? (openBlock(), createBlock(_sfc_main$P, {
          key: 0,
          rows: 7
        })) : (openBlock(), createElementBlock("div", _hoisted_1$y, [
          createVNode(_component_el_card, { shadow: "never" }, {
            header: withCtx(() => [
              createBaseVNode("div", _hoisted_2$x, [
                createBaseVNode("div", _hoisted_3$t, [
                  createVNode(_component_el_select, {
                    modelValue: selectedFormId.value,
                    "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => selectedFormId.value = $event),
                    placeholder: "All Forms",
                    class: "w-48",
                    onChange: onFormChange,
                    clearable: ""
                  }, {
                    default: withCtx(() => [
                      createVNode(_component_el_option, {
                        label: "All Forms",
                        value: ""
                      }),
                      (openBlock(true), createElementBlock(Fragment, null, renderList(forms.value, (form) => {
                        return openBlock(), createBlock(_component_el_option, {
                          key: form.id,
                          label: form.name,
                          value: form.id
                        }, null, 8, ["label", "value"]);
                      }), 128))
                    ]),
                    _: 1
                  }, 8, ["modelValue"])
                ]),
                createBaseVNode("div", _hoisted_4$r, toDisplayString(total2.value) + " submission" + toDisplayString(total2.value !== 1 ? "s" : ""), 1)
              ])
            ]),
            default: withCtx(() => [
              createVNode(_component_el_table, {
                data: submissions.value,
                stripe: "",
                style: { "width": "100%" },
                "empty-text": "No submissions found"
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_table_column, {
                    prop: "id",
                    label: "ID",
                    width: "70"
                  }, {
                    default: withCtx((scope) => [
                      createTextVNode("#" + toDisplayString(scope.row.id), 1)
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_table_column, {
                    label: "Date",
                    "min-width": "160"
                  }, {
                    default: withCtx((scope) => [
                      createTextVNode(toDisplayString(formatDate(scope.row.created_at)), 1)
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_table_column, {
                    label: "Form",
                    "min-width": "150"
                  }, {
                    default: withCtx((scope) => [
                      createTextVNode(toDisplayString(getFormName(scope.row.form_id)), 1)
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_table_column, {
                    label: "Preview",
                    "min-width": "220"
                  }, {
                    default: withCtx((scope) => [
                      createBaseVNode("span", _hoisted_5$m, toDisplayString(getDataPreview(scope.row.data)), 1)
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_table_column, {
                    label: "Status",
                    width: "110"
                  }, {
                    default: withCtx((scope) => [
                      createVNode(_component_el_tag, {
                        size: "small",
                        effect: "light"
                      }, {
                        default: withCtx(() => [
                          createTextVNode(toDisplayString(scope.row.status || "new"), 1)
                        ]),
                        _: 2
                      }, 1024)
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_table_column, {
                    label: "Actions",
                    width: "90",
                    align: "center"
                  }, {
                    default: withCtx((scope) => [
                      createVNode(_component_el_button, {
                        link: "",
                        type: "primary",
                        size: "small",
                        onClick: ($event) => viewSubmission(scope.row)
                      }, {
                        default: withCtx(() => [..._cache[4] || (_cache[4] = [
                          createTextVNode(" View ", -1)
                        ])]),
                        _: 1
                      }, 8, ["onClick"])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }, 8, ["data"]),
              total2.value > perPage.value ? (openBlock(), createElementBlock("div", _hoisted_6$a, [
                createVNode(_component_el_pagination, {
                  "current-page": currentPage.value,
                  "onUpdate:currentPage": _cache[1] || (_cache[1] = ($event) => currentPage.value = $event),
                  "page-size": perPage.value,
                  total: total2.value,
                  layout: "prev, pager, next",
                  onCurrentChange: loadSubmissions
                }, null, 8, ["current-page", "page-size", "total"])
              ])) : createCommentVNode("", true)
            ]),
            _: 1
          }),
          createVNode(_component_el_dialog, {
            modelValue: dialogVisible.value,
            "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => dialogVisible.value = $event),
            title: "Submission Details",
            width: "580px",
            "close-on-click-modal": true,
            "destroy-on-close": ""
          }, {
            footer: withCtx(() => [
              createVNode(_component_el_button, {
                onClick: _cache[2] || (_cache[2] = ($event) => dialogVisible.value = false)
              }, {
                default: withCtx(() => [..._cache[9] || (_cache[9] = [
                  createTextVNode("Close", -1)
                ])]),
                _: 1
              })
            ]),
            default: withCtx(() => [
              activeSubmission.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
                createBaseVNode("div", _hoisted_7$8, [
                  createBaseVNode("span", null, [
                    _cache[5] || (_cache[5] = createBaseVNode("i", { class: "fas fa-calendar-alt mr-1" }, null, -1)),
                    createTextVNode(toDisplayString(formatDate(activeSubmission.value.created_at)), 1)
                  ]),
                  createBaseVNode("span", null, [
                    _cache[6] || (_cache[6] = createBaseVNode("i", { class: "fas fa-hashtag mr-1" }, null, -1)),
                    createTextVNode(toDisplayString(getFormName(activeSubmission.value.form_id)), 1)
                  ]),
                  createVNode(_component_el_tag, {
                    size: "small",
                    effect: "light"
                  }, {
                    default: withCtx(() => [
                      createTextVNode(toDisplayString(activeSubmission.value.status || "new"), 1)
                    ]),
                    _: 1
                  })
                ]),
                createVNode(_component_el_descriptions, {
                  column: 1,
                  border: "",
                  class: "mt-2"
                }, {
                  default: withCtx(() => [
                    (openBlock(true), createElementBlock(Fragment, null, renderList(visibleFields(activeSubmission.value.data), (value, key) => {
                      return openBlock(), createBlock(_component_el_descriptions_item, { key }, {
                        label: withCtx(() => [
                          createBaseVNode("span", _hoisted_8$8, toDisplayString(formatFieldKey(key)), 1)
                        ]),
                        default: withCtx(() => [
                          createBaseVNode("span", _hoisted_9$8, toDisplayString(formatFieldValue(value)), 1)
                        ]),
                        _: 2
                      }, 1024);
                    }), 128)),
                    !hasVisibleFields(activeSubmission.value.data) ? (openBlock(), createBlock(_component_el_descriptions_item, { key: 0 }, {
                      label: withCtx(() => [..._cache[7] || (_cache[7] = [
                        createTextVNode("Data", -1)
                      ])]),
                      default: withCtx(() => [
                        _cache[8] || (_cache[8] = createBaseVNode("span", { class: "text-gray-400" }, "No field data", -1))
                      ]),
                      _: 1
                    })) : createCommentVNode("", true)
                  ]),
                  _: 1
                })
              ], 64)) : createCommentVNode("", true)
            ]),
            _: 1
          }, 8, ["modelValue"])
        ]));
      };
    }
  };
  function useTemplatesAPI() {
    const getTemplates = async (type = null) => {
      try {
        const params = type ? { type } : {};
        const response = await ajaxFetch("kitsune_ai_platform_get_templates", params, "GET");
        return { success: true, data: response };
      } catch (error) {
        console.error("Error fetching templates:", error);
        return { success: false, message: error.message };
      }
    };
    const installTemplate = async (type, id) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_install_template", { type, id });
        return { success: true, message: response.message };
      } catch (error) {
        console.error("Error installing template:", error);
        return { success: false, message: error.message };
      }
    };
    return {
      getTemplates,
      installTemplate
    };
  }
  const _hoisted_1$x = { class: "h-40 bg-gray-100 rounded-lg flex items-center justify-center mb-4" };
  const _hoisted_2$w = { class: "flex justify-between items-start mb-2" };
  const _hoisted_3$s = { class: "font-bold text-lg" };
  const _hoisted_4$q = { class: "text-gray-600 text-sm mb-4" };
  const _sfc_main$z = {
    __name: "FormTemplates",
    setup(__props) {
      const { getTemplates } = useTemplatesAPI();
      const templates = ref([]);
      const loading = ref(true);
      onMounted(async () => {
        try {
          const response = await getTemplates("forms");
          if (response.success) {
            templates.value = response.data;
          }
        } catch (error) {
          console.error("Failed to load templates:", error);
        } finally {
          loading.value = false;
        }
      });
      return (_ctx, _cache) => {
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_card = resolveComponent("el-card");
        const _component_el_col = resolveComponent("el-col");
        const _component_el_row = resolveComponent("el-row");
        const _component_el_empty = resolveComponent("el-empty");
        return openBlock(), createElementBlock("div", null, [
          loading.value ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            "show-toolbar": false,
            cards: 3
          })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
            createVNode(_component_el_row, { gutter: 24 }, {
              default: withCtx(() => [
                (openBlock(true), createElementBlock(Fragment, null, renderList(templates.value, (template) => {
                  return openBlock(), createBlock(_component_el_col, {
                    xs: 24,
                    md: 12,
                    lg: 8,
                    key: template.id,
                    class: "mb-6"
                  }, {
                    default: withCtx(() => [
                      createVNode(_component_el_card, {
                        shadow: "hover",
                        class: "h-full"
                      }, {
                        default: withCtx(() => [
                          createBaseVNode("div", _hoisted_1$x, [
                            createVNode(_component_el_icon, { class: "text-5xl text-gray-400" }, {
                              default: withCtx(() => [
                                createVNode(unref(document_default))
                              ]),
                              _: 1
                            })
                          ]),
                          createBaseVNode("div", _hoisted_2$w, [
                            createBaseVNode("h3", _hoisted_3$s, toDisplayString(template.name), 1)
                          ]),
                          createBaseVNode("p", _hoisted_4$q, toDisplayString(template.description), 1),
                          createVNode(_component_el_button, {
                            class: "w-full",
                            plain: "",
                            type: "primary",
                            onClick: ($event) => _ctx.$emit("use-template", template)
                          }, {
                            default: withCtx(() => [..._cache[0] || (_cache[0] = [
                              createTextVNode(" Use Template ", -1)
                            ])]),
                            _: 1
                          }, 8, ["onClick"])
                        ]),
                        _: 2
                      }, 1024)
                    ]),
                    _: 2
                  }, 1024);
                }), 128))
              ]),
              _: 1
            }),
            templates.value.length === 0 ? (openBlock(), createBlock(_component_el_empty, {
              key: 0,
              description: "No templates available"
            })) : createCommentVNode("", true)
          ], 64))
        ]);
      };
    }
  };
  const _hoisted_1$w = { class: "px-6 py-4" };
  const _hoisted_2$v = { class: "mb-6" };
  const _hoisted_3$r = { class: "text-2xl font-bold text-gray-900" };
  const _hoisted_4$p = { class: "text-gray-600 mt-1" };
  const _hoisted_5$l = { class: "flex items-center" };
  const _sfc_main$y = {
    __name: "AIForms",
    setup(__props) {
      const t = inject("t", (k) => k);
      const currentTab = ref("all");
      const editingFormId = ref(null);
      const templateData = ref(null);
      const tabs = computed(() => [
        { id: "all", name: t("allForms"), icon: "fas fa-list" },
        { id: "builder", name: t("formBuilder"), icon: "fas fa-tools" },
        { id: "settings", name: t("formSettings"), icon: "fas fa-cog" },
        { id: "submissions", name: t("submissions"), icon: "fas fa-inbox" },
        { id: "templates", name: t("templates"), icon: "fas fa-clone" }
      ]);
      const tabComponents = {
        "all": _sfc_main$D,
        "builder": _sfc_main$C,
        "settings": _sfc_main$B,
        "submissions": _sfc_main$A,
        "templates": _sfc_main$z
      };
      const currentTabComponent = computed(() => tabComponents[currentTab.value]);
      const handleTabChange = (tabName) => {
        if (tabName === "builder" && currentTab.value !== "builder") {
          editingFormId.value = null;
          templateData.value = null;
        }
      };
      const handleCreate = () => {
        editingFormId.value = null;
        templateData.value = null;
        currentTab.value = "builder";
      };
      const handleEdit = (formId) => {
        editingFormId.value = formId;
        templateData.value = null;
        currentTab.value = "builder";
      };
      const handleUseTemplate = (template) => {
        editingFormId.value = null;
        templateData.value = template;
        currentTab.value = "builder";
      };
      const handleFormSaved = () => {
        editingFormId.value = null;
        templateData.value = null;
        currentTab.value = "all";
      };
      return (_ctx, _cache) => {
        const _component_el_tab_pane = resolveComponent("el-tab-pane");
        const _component_el_tabs = resolveComponent("el-tabs");
        return openBlock(), createElementBlock("div", _hoisted_1$w, [
          createBaseVNode("div", _hoisted_2$v, [
            createBaseVNode("h1", _hoisted_3$r, toDisplayString(unref(t)("navForms")), 1),
            createBaseVNode("p", _hoisted_4$p, toDisplayString(unref(t)("formsSubtitle")), 1)
          ]),
          createVNode(_component_el_tabs, {
            modelValue: currentTab.value,
            "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => currentTab.value = $event),
            class: "mb-4",
            onTabChange: handleTabChange
          }, {
            default: withCtx(() => [
              (openBlock(true), createElementBlock(Fragment, null, renderList(tabs.value, (tab) => {
                return openBlock(), createBlock(_component_el_tab_pane, {
                  key: tab.id,
                  label: tab.name,
                  name: tab.id
                }, {
                  label: withCtx(() => [
                    createBaseVNode("span", _hoisted_5$l, [
                      createBaseVNode("i", {
                        class: normalizeClass([tab.icon, "mr-2"])
                      }, null, 2),
                      createTextVNode(" " + toDisplayString(tab.name), 1)
                    ])
                  ]),
                  _: 2
                }, 1032, ["label", "name"]);
              }), 128))
            ]),
            _: 1
          }, 8, ["modelValue"]),
          createVNode(Transition, {
            name: "fade",
            mode: "out-in"
          }, {
            default: withCtx(() => [
              (openBlock(), createBlock(KeepAlive, null, [
                (openBlock(), createBlock(resolveDynamicComponent(currentTabComponent.value), {
                  "editing-form-id": editingFormId.value,
                  "template-data": templateData.value,
                  onCreate: handleCreate,
                  onEdit: handleEdit,
                  onSaved: handleFormSaved,
                  onUseTemplate: handleUseTemplate
                }, null, 40, ["editing-form-id", "template-data"]))
              ], 1024))
            ]),
            _: 1
          })
        ]);
      };
    }
  };
  const _hoisted_1$v = { class: "flex h-[500px]" };
  const _hoisted_2$u = { class: "w-64 border-r border-gray-200 pr-4" };
  const _hoisted_3$q = { class: "flex-1 pl-6 overflow-y-auto" };
  const _hoisted_4$o = {
    key: 0,
    class: "space-y-6"
  };
  const _hoisted_5$k = { class: "ml-2" };
  const _hoisted_6$9 = { class: "font-bold text-gray-800" };
  const _hoisted_7$7 = { class: "text-xs text-gray-500 whitespace-normal" };
  const _hoisted_8$7 = {
    key: 0,
    class: "mt-4 pl-8 space-y-3"
  };
  const _hoisted_9$7 = {
    key: 0,
    class: "space-y-2"
  };
  const _hoisted_10$6 = { class: "text-xs text-gray-500" };
  const _hoisted_11$6 = {
    key: 1,
    class: "space-y-6"
  };
  const _hoisted_12$4 = {
    key: 2,
    class: "space-y-6"
  };
  const _hoisted_13$3 = { class: "dialog-footer" };
  const _sfc_main$x = {
    __name: "AddSourceModal",
    props: {
      visible: {
        type: Boolean,
        default: false
      },
      submitting: {
        type: Boolean,
        default: false
      }
    },
    emits: ["close", "add"],
    setup(__props, { emit: __emit }) {
      const { showNotification } = useNotifications();
      const props2 = __props;
      const emit2 = __emit;
      const currentTab = ref("wordpress");
      const postTypes = ref([]);
      const postTypesLoading = ref(false);
      const selectedPostTypes = ref([]);
      const postTypeSelections = ref({});
      const postsByType = ref({});
      const postsLoadingByType = ref({});
      const uploadFiles = ref([]);
      const pasteData = ref({
        name: "",
        content: ""
      });
      const { getWordPressPostTypes, getWordPressPosts } = useKnowledgeBaseAPI();
      const allowedModes = ["all", "include", "exclude"];
      const handleTabSelect = (index) => {
        currentTab.value = index;
      };
      const resetFormState = () => {
        currentTab.value = "wordpress";
        selectedPostTypes.value = [];
        postTypeSelections.value = {};
        uploadFiles.value = [];
        pasteData.value = {
          name: "",
          content: ""
        };
      };
      const handleClose = () => {
        if (props2.submitting) {
          return;
        }
        resetFormState();
        emit2("close");
      };
      const updateSelectionForPostType = (postTypeId, updater) => {
        const next = { ...postTypeSelections.value };
        const current = next[postTypeId] || { mode: "all", postIds: [] };
        next[postTypeId] = updater({
          mode: current.mode,
          postIds: Array.isArray(current.postIds) ? [...current.postIds] : []
        });
        postTypeSelections.value = next;
      };
      const getPostTypeMode = (postTypeId) => {
        return postTypeSelections.value[postTypeId]?.mode || "all";
      };
      const getSelectedPostIds = (postTypeId) => {
        const postIds = postTypeSelections.value[postTypeId]?.postIds;
        return Array.isArray(postIds) ? postIds : [];
      };
      const setPostTypeMode = async (postTypeId, mode) => {
        const nextMode = allowedModes.includes(mode) ? mode : "all";
        updateSelectionForPostType(postTypeId, (selection) => ({
          ...selection,
          mode: nextMode,
          postIds: nextMode === "all" ? [] : selection.postIds
        }));
        if (nextMode !== "all") {
          await searchPostsForType(postTypeId, "");
        }
      };
      const setSelectedPostIds = (postTypeId, postIds) => {
        updateSelectionForPostType(postTypeId, (selection) => ({
          ...selection,
          postIds: Array.isArray(postIds) ? postIds.map((id) => Number(id)).filter((id) => Number.isInteger(id) && id > 0) : []
        }));
      };
      const isPostsLoading = (postTypeId) => Boolean(postsLoadingByType.value[postTypeId]);
      const getPostOptions = (postTypeId) => postsByType.value[postTypeId] || [];
      const mergePostOptions = (existingOptions, incomingOptions) => {
        const map2 = /* @__PURE__ */ new Map();
        (existingOptions || []).forEach((item) => {
          map2.set(item.id, item);
        });
        (incomingOptions || []).forEach((item) => {
          map2.set(item.id, item);
        });
        return Array.from(map2.values());
      };
      const loadWordPressPostTypes = async () => {
        if (postTypesLoading.value) {
          return;
        }
        postTypesLoading.value = true;
        try {
          const response = await getWordPressPostTypes();
          if (response.success) {
            postTypes.value = response.data || [];
            return;
          }
          showNotification("error", response.message || "Failed to load post types");
        } catch (error) {
          showNotification("error", error?.message || "Failed to load post types");
        } finally {
          postTypesLoading.value = false;
        }
      };
      const searchPostsForType = async (postTypeId, query = "") => {
        if (isPostsLoading(postTypeId)) {
          return;
        }
        postsLoadingByType.value = {
          ...postsLoadingByType.value,
          [postTypeId]: true
        };
        try {
          const response = await getWordPressPosts(postTypeId, query || "", 50);
          if (response.success) {
            postsByType.value = {
              ...postsByType.value,
              [postTypeId]: mergePostOptions(postsByType.value[postTypeId], response.data || [])
            };
            return;
          }
          showNotification("error", response.message || `Failed to load ${postTypeId} posts`);
        } catch (error) {
          showNotification("error", error?.message || `Failed to load ${postTypeId} posts`);
        } finally {
          postsLoadingByType.value = {
            ...postsLoadingByType.value,
            [postTypeId]: false
          };
        }
      };
      const isAllowedUploadFile = (file) => {
        const filename = (file?.name || "").toLowerCase();
        return filename.endsWith(".txt") || filename.endsWith(".csv");
      };
      const beforeUpload = (rawFile) => {
        if (!isAllowedUploadFile(rawFile)) {
          showNotification("warning", "Only TXT or CSV files are allowed.");
          return false;
        }
        return false;
      };
      const handleUploadChange = (_uploadFile, uploadFileList) => {
        const filtered = uploadFileList.filter((file) => isAllowedUploadFile(file.raw || file));
        if (filtered.length !== uploadFileList.length) {
          showNotification("warning", "Only TXT or CSV files are allowed.");
        }
        uploadFiles.value = filtered;
      };
      const handleUploadRemove = (_uploadFile, uploadFileList) => {
        uploadFiles.value = uploadFileList.filter((file) => isAllowedUploadFile(file.raw || file));
      };
      watch(
        selectedPostTypes,
        (nextSelectedTypes) => {
          const nextSelections = {};
          nextSelectedTypes.forEach((postTypeId) => {
            const existing = postTypeSelections.value[postTypeId];
            nextSelections[postTypeId] = existing ? {
              mode: allowedModes.includes(existing.mode) ? existing.mode : "all",
              postIds: Array.isArray(existing.postIds) ? existing.postIds : []
            } : {
              mode: "all",
              postIds: []
            };
          });
          postTypeSelections.value = nextSelections;
        },
        { deep: true }
      );
      watch(
        () => props2.visible,
        (visible) => {
          if (visible) {
            loadWordPressPostTypes();
          }
        }
      );
      const validateWordPressSelection = () => {
        if (selectedPostTypes.value.length === 0) {
          showNotification("warning", "Select at least one post type to ingest.");
          return false;
        }
        for (const postTypeId of selectedPostTypes.value) {
          const mode = getPostTypeMode(postTypeId);
          const selectedPosts = getSelectedPostIds(postTypeId);
          if (mode === "include" && selectedPosts.length === 0) {
            showNotification("warning", `Select at least one ${postTypeId} item to include.`);
            return false;
          }
        }
        return true;
      };
      const handleAddSource = () => {
        if (currentTab.value === "wordpress" && !validateWordPressSelection()) {
          return;
        }
        if (currentTab.value === "upload" && uploadFiles.value.length === 0) {
          showNotification("warning", "Upload at least one TXT or CSV file.");
          return;
        }
        const data = {
          type: currentTab.value,
          paste: pasteData.value
        };
        if (currentTab.value === "wordpress") {
          const postTypeSelectionsPayload = {};
          selectedPostTypes.value.forEach((postTypeId) => {
            const mode = getPostTypeMode(postTypeId);
            const postIds = getSelectedPostIds(postTypeId);
            postTypeSelectionsPayload[postTypeId] = {
              mode,
              postIds
            };
          });
          data.postTypes = [...selectedPostTypes.value];
          data.postTypeSelections = postTypeSelectionsPayload;
        }
        if (currentTab.value === "upload") {
          data.upload = {
            files: uploadFiles.value.map((file) => ({
              name: file.name,
              size: file.size,
              type: file.raw?.type || file.type || ""
            }))
          };
        }
        emit2("add", data);
      };
      return (_ctx, _cache) => {
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_menu_item = resolveComponent("el-menu-item");
        const _component_el_menu = resolveComponent("el-menu");
        const _component_el_skeleton = resolveComponent("el-skeleton");
        const _component_el_empty = resolveComponent("el-empty");
        const _component_el_checkbox = resolveComponent("el-checkbox");
        const _component_el_radio = resolveComponent("el-radio");
        const _component_el_radio_group = resolveComponent("el-radio-group");
        const _component_el_option = resolveComponent("el-option");
        const _component_el_select = resolveComponent("el-select");
        const _component_el_card = resolveComponent("el-card");
        const _component_el_checkbox_group = resolveComponent("el-checkbox-group");
        const _component_el_upload = resolveComponent("el-upload");
        const _component_el_input = resolveComponent("el-input");
        const _component_el_form_item = resolveComponent("el-form-item");
        const _component_el_form = resolveComponent("el-form");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_dialog = resolveComponent("el-dialog");
        return openBlock(), createBlock(_component_el_dialog, {
          "model-value": __props.visible,
          title: "Add Knowledge Source",
          width: "900px",
          "before-close": handleClose,
          "destroy-on-close": "",
          class: "add-source-modal"
        }, {
          footer: withCtx(() => [
            createBaseVNode("span", _hoisted_13$3, [
              createVNode(_component_el_button, {
                disabled: __props.submitting,
                onClick: handleClose
              }, {
                default: withCtx(() => [..._cache[14] || (_cache[14] = [
                  createTextVNode("Cancel", -1)
                ])]),
                _: 1
              }, 8, ["disabled"]),
              createVNode(_component_el_button, {
                type: "primary",
                loading: __props.submitting,
                disabled: __props.submitting,
                onClick: handleAddSource
              }, {
                default: withCtx(() => [..._cache[15] || (_cache[15] = [
                  createTextVNode(" Add Source ", -1)
                ])]),
                _: 1
              }, 8, ["loading", "disabled"])
            ])
          ]),
          default: withCtx(() => [
            createBaseVNode("div", _hoisted_1$v, [
              createBaseVNode("div", _hoisted_2$u, [
                createVNode(_component_el_menu, {
                  "default-active": currentTab.value,
                  class: "el-menu-vertical-demo border-none",
                  onSelect: handleTabSelect
                }, {
                  default: withCtx(() => [
                    createVNode(_component_el_menu_item, { index: "wordpress" }, {
                      default: withCtx(() => [
                        createVNode(_component_el_icon, null, {
                          default: withCtx(() => [
                            createVNode(unref(platform_default))
                          ]),
                          _: 1
                        }),
                        _cache[3] || (_cache[3] = createBaseVNode("span", null, "WordPress Data", -1))
                      ]),
                      _: 1
                    }),
                    createVNode(_component_el_menu_item, { index: "upload" }, {
                      default: withCtx(() => [
                        createVNode(_component_el_icon, null, {
                          default: withCtx(() => [
                            createVNode(unref(upload_default))
                          ]),
                          _: 1
                        }),
                        _cache[4] || (_cache[4] = createBaseVNode("span", null, "Upload Document", -1))
                      ]),
                      _: 1
                    }),
                    createVNode(_component_el_menu_item, { index: "paste" }, {
                      default: withCtx(() => [
                        createVNode(_component_el_icon, null, {
                          default: withCtx(() => [
                            createVNode(unref(document_default))
                          ]),
                          _: 1
                        }),
                        _cache[5] || (_cache[5] = createBaseVNode("span", null, "Paste Text", -1))
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                }, 8, ["default-active"])
              ]),
              createBaseVNode("div", _hoisted_3$q, [
                currentTab.value === "wordpress" ? (openBlock(), createElementBlock("div", _hoisted_4$o, [
                  _cache[9] || (_cache[9] = createBaseVNode("h3", { class: "text-lg font-bold text-gray-900 mb-2" }, "Ingest WordPress Content", -1)),
                  postTypesLoading.value ? (openBlock(), createBlock(_component_el_skeleton, {
                    key: 0,
                    rows: 6,
                    animated: ""
                  })) : postTypes.value.length === 0 ? (openBlock(), createBlock(_component_el_empty, {
                    key: 1,
                    description: "No supported post types found for ingestion"
                  })) : (openBlock(), createBlock(_component_el_checkbox_group, {
                    key: 2,
                    modelValue: selectedPostTypes.value,
                    "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => selectedPostTypes.value = $event),
                    class: "space-y-4"
                  }, {
                    default: withCtx(() => [
                      (openBlock(true), createElementBlock(Fragment, null, renderList(postTypes.value, (type) => {
                        return openBlock(), createBlock(_component_el_card, {
                          key: type.id,
                          shadow: "hover",
                          "body-style": { padding: "15px" },
                          class: normalizeClass(["cursor-pointer", { "border-blue-500": selectedPostTypes.value.includes(type.id) }])
                        }, {
                          default: withCtx(() => [
                            createVNode(_component_el_checkbox, {
                              label: type.id,
                              class: "w-full"
                            }, {
                              default: withCtx(() => [
                                createBaseVNode("div", _hoisted_5$k, [
                                  createBaseVNode("div", _hoisted_6$9, toDisplayString(type.name), 1),
                                  createBaseVNode("div", _hoisted_7$7, toDisplayString(type.description), 1)
                                ])
                              ]),
                              _: 2
                            }, 1032, ["label"]),
                            selectedPostTypes.value.includes(type.id) ? (openBlock(), createElementBlock("div", _hoisted_8$7, [
                              createVNode(_component_el_radio_group, {
                                "model-value": getPostTypeMode(type.id),
                                onChange: (mode) => setPostTypeMode(type.id, mode)
                              }, {
                                default: withCtx(() => [
                                  createVNode(_component_el_radio, { label: "all" }, {
                                    default: withCtx(() => [..._cache[6] || (_cache[6] = [
                                      createTextVNode("Select all", -1)
                                    ])]),
                                    _: 1
                                  }),
                                  createVNode(_component_el_radio, { label: "include" }, {
                                    default: withCtx(() => [..._cache[7] || (_cache[7] = [
                                      createTextVNode("Include selected", -1)
                                    ])]),
                                    _: 1
                                  }),
                                  createVNode(_component_el_radio, { label: "exclude" }, {
                                    default: withCtx(() => [..._cache[8] || (_cache[8] = [
                                      createTextVNode("Exclude selected", -1)
                                    ])]),
                                    _: 1
                                  })
                                ]),
                                _: 1
                              }, 8, ["model-value", "onChange"]),
                              getPostTypeMode(type.id) !== "all" ? (openBlock(), createElementBlock("div", _hoisted_9$7, [
                                createVNode(_component_el_select, {
                                  "model-value": getSelectedPostIds(type.id),
                                  multiple: "",
                                  filterable: "",
                                  remote: "",
                                  "reserve-keyword": "",
                                  clearable: "",
                                  "collapse-tags": "",
                                  "collapse-tags-tooltip": "",
                                  class: "w-full",
                                  placeholder: "Search posts by title",
                                  loading: isPostsLoading(type.id),
                                  "onUpdate:modelValue": (ids) => setSelectedPostIds(type.id, ids),
                                  "remote-method": (query) => searchPostsForType(type.id, query),
                                  onVisibleChange: (visible) => visible && searchPostsForType(type.id, "")
                                }, {
                                  default: withCtx(() => [
                                    (openBlock(true), createElementBlock(Fragment, null, renderList(getPostOptions(type.id), (post) => {
                                      return openBlock(), createBlock(_component_el_option, {
                                        key: post.id,
                                        label: post.title,
                                        value: post.id
                                      }, null, 8, ["label", "value"]);
                                    }), 128))
                                  ]),
                                  _: 2
                                }, 1032, ["model-value", "loading", "onUpdate:modelValue", "remote-method", "onVisibleChange"]),
                                createBaseVNode("div", _hoisted_10$6, toDisplayString(getPostTypeMode(type.id) === "include" ? "Only selected posts will be ingested." : "Selected posts will be excluded from ingestion."), 1)
                              ])) : createCommentVNode("", true)
                            ])) : createCommentVNode("", true)
                          ]),
                          _: 2
                        }, 1032, ["class"]);
                      }), 128))
                    ]),
                    _: 1
                  }, 8, ["modelValue"]))
                ])) : createCommentVNode("", true),
                currentTab.value === "upload" ? (openBlock(), createElementBlock("div", _hoisted_11$6, [
                  _cache[12] || (_cache[12] = createBaseVNode("h3", { class: "text-lg font-bold text-gray-900 mb-4" }, "Upload Documents", -1)),
                  createVNode(_component_el_upload, {
                    class: "upload-demo",
                    drag: "",
                    action: "#",
                    multiple: "",
                    "auto-upload": false,
                    "file-list": uploadFiles.value,
                    accept: ".txt,.csv,text/plain,text/csv",
                    "before-upload": beforeUpload,
                    "on-change": handleUploadChange,
                    "on-remove": handleUploadRemove
                  }, {
                    tip: withCtx(() => [..._cache[10] || (_cache[10] = [
                      createBaseVNode("div", { class: "el-upload__tip" }, " TXT or CSV only (max 10MB per file) ", -1)
                    ])]),
                    default: withCtx(() => [
                      createVNode(_component_el_icon, { class: "el-icon--upload" }, {
                        default: withCtx(() => [
                          createVNode(unref(upload_filled_default))
                        ]),
                        _: 1
                      }),
                      _cache[11] || (_cache[11] = createBaseVNode("div", { class: "el-upload__text" }, [
                        createTextVNode(" Drop file here or "),
                        createBaseVNode("em", null, "click to upload")
                      ], -1))
                    ]),
                    _: 1
                  }, 8, ["file-list"])
                ])) : createCommentVNode("", true),
                currentTab.value === "paste" ? (openBlock(), createElementBlock("div", _hoisted_12$4, [
                  _cache[13] || (_cache[13] = createBaseVNode("h3", { class: "text-lg font-bold text-gray-900 mb-4" }, "Paste Text Information", -1)),
                  createVNode(_component_el_form, { "label-position": "top" }, {
                    default: withCtx(() => [
                      createVNode(_component_el_form_item, { label: "Source Name" }, {
                        default: withCtx(() => [
                          createVNode(_component_el_input, {
                            modelValue: pasteData.value.name,
                            "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => pasteData.value.name = $event),
                            placeholder: "e.g., Support Instructions"
                          }, null, 8, ["modelValue"])
                        ]),
                        _: 1
                      }),
                      createVNode(_component_el_form_item, { label: "Content" }, {
                        default: withCtx(() => [
                          createVNode(_component_el_input, {
                            modelValue: pasteData.value.content,
                            "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => pasteData.value.content = $event),
                            type: "textarea",
                            rows: 10,
                            placeholder: "Paste your text content here..."
                          }, null, 8, ["modelValue"])
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  })
                ])) : createCommentVNode("", true)
              ])
            ])
          ]),
          _: 1
        }, 8, ["model-value"]);
      };
    }
  };
  const AddSourceModal = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["__scopeId", "data-v-a357c512"]]);
  const _hoisted_1$u = { class: "flex justify-between items-center" };
  const _hoisted_2$t = { class: "font-medium text-gray-900" };
  const _hoisted_3$p = { class: "flex flex-col items-end" };
  const _hoisted_4$n = { class: "flex items-center justify-end" };
  const _sfc_main$w = {
    __name: "KnowledgeSources",
    setup(__props) {
      const { showNotification } = useNotifications();
      const showAddSourceModal = ref(false);
      const searchQuery = ref("");
      const loading = ref(true);
      const showLogsDialog = ref(false);
      const selectedSource = ref(null);
      const addSourceLoading = ref(false);
      const syncLoadingMap = ref({});
      const deleteLoadingMap = ref({});
      const sourceActionStatus = ref({});
      const sources = ref([]);
      const {
        getKnowledgeSources,
        getVectorDatabases,
        getDefaultModelSettings,
        addSource,
        deleteSource: deleteSourceApi,
        syncSource: syncSourceApi
      } = useKnowledgeBaseAPI();
      const isSyncing = (sourceId) => Boolean(syncLoadingMap.value[sourceId]);
      const isDeleting = (sourceId) => Boolean(deleteLoadingMap.value[sourceId]);
      const setSyncLoading = (sourceId, loading2) => {
        syncLoadingMap.value = {
          ...syncLoadingMap.value,
          [sourceId]: loading2
        };
      };
      const setDeleteLoading = (sourceId, loading2) => {
        deleteLoadingMap.value = {
          ...deleteLoadingMap.value,
          [sourceId]: loading2
        };
      };
      const setSourceActionStatus = (sourceId, type, message2) => {
        sourceActionStatus.value = {
          ...sourceActionStatus.value,
          [sourceId]: { type, message: message2 }
        };
      };
      const clearSourceActionStatus = (sourceId) => {
        const next = { ...sourceActionStatus.value };
        delete next[sourceId];
        sourceActionStatus.value = next;
      };
      const filteredSources = computed(() => {
        if (!searchQuery.value) return sources.value;
        const query = searchQuery.value.toLowerCase();
        return sources.value.filter((source) => (source.name || "").toLowerCase().includes(query));
      });
      const selectedSourceLogs = computed(() => {
        if (!selectedSource.value) return [];
        if (Array.isArray(selectedSource.value.logs) && selectedSource.value.logs.length > 0) {
          return selectedSource.value.logs;
        }
        return [
          {
            time: selectedSource.value.last_updated || "recent",
            level: selectedSource.value.status === "synced" ? "success" : "warning",
            message: selectedSource.value.status === "synced" ? "Source synced successfully to the default vector database." : "Source is pending sync to the default vector database."
          },
          {
            time: selectedSource.value.last_updated || "recent",
            level: "info",
            message: `Chunk count: ${selectedSource.value.chunks || 0}`
          }
        ];
      });
      const loadSources = async () => {
        loading.value = true;
        try {
          const response = await getKnowledgeSources("", 100);
          if (response.success) {
            sources.value = response.data;
          }
        } catch (error) {
          showNotification("error", "Failed to load knowledge sources");
        } finally {
          loading.value = false;
        }
      };
      const openLogsDialog = (row) => {
        selectedSource.value = row;
        showLogsDialog.value = true;
      };
      const ensureAddSourcePrerequisites = async () => {
        const [vectorResponse, modelSettingsResponse] = await Promise.all([
          getVectorDatabases(),
          getDefaultModelSettings()
        ]);
        if (!vectorResponse.success) {
          showNotification("error", vectorResponse.message || "Failed to validate vector database connection");
          return false;
        }
        if (!modelSettingsResponse.success) {
          showNotification("error", modelSettingsResponse.message || "Failed to validate default embedding model");
          return false;
        }
        const vectorState = vectorResponse.data || {};
        const defaultId = vectorState.default || "chroma";
        const defaultDatabase = (vectorState.databases || []).find((db) => db.id === defaultId);
        const hasConnectedVectorDb = Boolean(defaultDatabase?.connected);
        const hasEmbeddingModel = Boolean(modelSettingsResponse.data?.embeddings);
        if (!hasEmbeddingModel) {
          showNotification("warning", "Select a default embedding model before adding a knowledge source.");
          return false;
        }
        if (!hasConnectedVectorDb) {
          showNotification("warning", "Connect the default vector database before adding a knowledge source.");
          return false;
        }
        return true;
      };
      const handleAddSource = async (data) => {
        if (addSourceLoading.value) {
          return;
        }
        const canProceed = await ensureAddSourcePrerequisites();
        if (!canProceed) {
          return;
        }
        addSourceLoading.value = true;
        try {
          const response = await addSource(data);
          if (response.success) {
            await loadSources();
            showNotification("success", response.message || "Knowledge source added");
            showAddSourceModal.value = false;
            return;
          }
          showNotification("error", response.message || "Failed to add knowledge source");
        } catch (error) {
          showNotification("error", error?.message || "Failed to add knowledge source");
        } finally {
          addSourceLoading.value = false;
        }
      };
      const syncSource = async (id) => {
        clearSourceActionStatus(id);
        if (isSyncing(id)) {
          return;
        }
        setSyncLoading(id, true);
        try {
          const response = await syncSourceApi(id);
          if (response.success) {
            await loadSources();
            const successMessage = response.message || "Source synced successfully.";
            setSourceActionStatus(id, "success", successMessage);
            showNotification("success", successMessage);
            return;
          }
          const errorMessage = response.message || "Failed to sync source";
          setSourceActionStatus(id, "error", errorMessage);
          showNotification("error", errorMessage);
        } catch (error) {
          const errorMessage = error?.message || "Failed to sync source";
          setSourceActionStatus(id, "error", errorMessage);
          showNotification("error", errorMessage);
        } finally {
          setSyncLoading(id, false);
        }
      };
      const deleteSource = async (id) => {
        if (isDeleting(id) || isSyncing(id)) {
          return;
        }
        try {
          await ElMessageBox.confirm("Delete this knowledge source?", "Warning", {
            confirmButtonText: "Delete",
            cancelButtonText: "Cancel",
            type: "warning",
            confirmButtonClass: "el-button--danger"
          });
          setDeleteLoading(id, true);
          const response = await deleteSourceApi(id);
          if (response.success) {
            await loadSources();
            clearSourceActionStatus(id);
            showNotification("success", response.message || "Source deleted");
            return;
          }
          showNotification("error", response.message || "Failed to delete knowledge source");
        } catch (error) {
        } finally {
          setDeleteLoading(id, false);
        }
      };
      onMounted(loadSources);
      return (_ctx, _cache) => {
        const _component_Search = resolveComponent("Search");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_input = resolveComponent("el-input");
        const _component_Plus = resolveComponent("Plus");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_empty = resolveComponent("el-empty");
        const _component_el_table_column = resolveComponent("el-table-column");
        const _component_el_tag = resolveComponent("el-tag");
        const _component_Delete = resolveComponent("Delete");
        const _component_el_alert = resolveComponent("el-alert");
        const _component_el_table = resolveComponent("el-table");
        const _component_el_card = resolveComponent("el-card");
        const _component_el_timeline_item = resolveComponent("el-timeline-item");
        const _component_el_timeline = resolveComponent("el-timeline");
        const _component_el_dialog = resolveComponent("el-dialog");
        return openBlock(), createElementBlock("div", null, [
          loading.value ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            rows: 8
          })) : (openBlock(), createBlock(_component_el_card, {
            key: 1,
            shadow: "never",
            class: "box-card"
          }, {
            header: withCtx(() => [
              createBaseVNode("div", _hoisted_1$u, [
                createVNode(_component_el_input, {
                  modelValue: searchQuery.value,
                  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchQuery.value = $event),
                  placeholder: "Search sources...",
                  class: "w-64",
                  clearable: ""
                }, {
                  prefix: withCtx(() => [
                    createVNode(_component_el_icon, null, {
                      default: withCtx(() => [
                        createVNode(_component_Search)
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                }, 8, ["modelValue"]),
                createVNode(_component_el_button, {
                  type: "primary",
                  disabled: addSourceLoading.value,
                  onClick: _cache[1] || (_cache[1] = ($event) => showAddSourceModal.value = true)
                }, {
                  default: withCtx(() => [
                    createVNode(_component_el_icon, { class: "mr-2" }, {
                      default: withCtx(() => [
                        createVNode(_component_Plus)
                      ]),
                      _: 1
                    }),
                    _cache[4] || (_cache[4] = createTextVNode(" Add Source ", -1))
                  ]),
                  _: 1
                }, 8, ["disabled"])
              ])
            ]),
            default: withCtx(() => [
              createVNode(_component_el_table, {
                data: filteredSources.value,
                style: { "width": "100%" },
                onRowClick: openLogsDialog,
                "row-class-name": "cursor-pointer"
              }, {
                empty: withCtx(() => [
                  createVNode(_component_el_empty, { description: "No knowledge sources found" })
                ]),
                default: withCtx(() => [
                  createVNode(_component_el_table_column, {
                    label: "Source Name",
                    "min-width": "200"
                  }, {
                    default: withCtx((scope) => [
                      createBaseVNode("span", _hoisted_2$t, toDisplayString(scope.row.name), 1)
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_table_column, {
                    label: "Type",
                    width: "120"
                  }, {
                    default: withCtx((scope) => [
                      createVNode(_component_el_tag, {
                        size: "small",
                        type: "info",
                        effect: "plain",
                        class: "capitalize"
                      }, {
                        default: withCtx(() => [
                          createTextVNode(toDisplayString(scope.row.type), 1)
                        ]),
                        _: 2
                      }, 1024)
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_table_column, {
                    label: "Status",
                    width: "120"
                  }, {
                    default: withCtx((scope) => [
                      createVNode(_component_el_tag, {
                        size: "small",
                        type: scope.row.status === "synced" ? "success" : "warning",
                        effect: "dark",
                        class: "capitalize border-none"
                      }, {
                        default: withCtx(() => [
                          createTextVNode(toDisplayString(scope.row.status), 1)
                        ]),
                        _: 2
                      }, 1032, ["type"])
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_table_column, {
                    prop: "last_updated",
                    label: "Last Updated",
                    width: "150",
                    "class-name": "text-gray-500"
                  }),
                  createVNode(_component_el_table_column, {
                    prop: "chunks",
                    label: "Chunks",
                    width: "100",
                    "class-name": "text-gray-500"
                  }),
                  createVNode(_component_el_table_column, {
                    label: "Actions",
                    "min-width": "300",
                    align: "right"
                  }, {
                    default: withCtx((scope) => [
                      createBaseVNode("div", _hoisted_3$p, [
                        createBaseVNode("div", _hoisted_4$n, [
                          createVNode(_component_el_button, {
                            plain: "",
                            type: "primary",
                            size: "small",
                            onClick: withModifiers(($event) => syncSource(scope.row.id), ["stop"]),
                            class: "mr-2",
                            loading: isSyncing(scope.row.id),
                            disabled: isSyncing(scope.row.id) || isDeleting(scope.row.id)
                          }, {
                            default: withCtx(() => [..._cache[5] || (_cache[5] = [
                              createTextVNode(" Sync ", -1)
                            ])]),
                            _: 1
                          }, 8, ["onClick", "loading", "disabled"]),
                          createVNode(_component_el_button, {
                            plain: "",
                            type: "danger",
                            size: "small",
                            onClick: withModifiers(($event) => deleteSource(scope.row.id), ["stop"]),
                            loading: isDeleting(scope.row.id),
                            disabled: isSyncing(scope.row.id) || isDeleting(scope.row.id)
                          }, {
                            default: withCtx(() => [
                              createVNode(_component_el_icon, { class: "mr-1" }, {
                                default: withCtx(() => [
                                  createVNode(_component_Delete)
                                ]),
                                _: 1
                              }),
                              _cache[6] || (_cache[6] = createTextVNode(" Delete ", -1))
                            ]),
                            _: 1
                          }, 8, ["onClick", "loading", "disabled"])
                        ]),
                        sourceActionStatus.value[scope.row.id]?.message ? (openBlock(), createBlock(_component_el_alert, {
                          key: 0,
                          title: sourceActionStatus.value[scope.row.id].message,
                          type: sourceActionStatus.value[scope.row.id].type,
                          "show-icon": "",
                          closable: false,
                          class: "mt-2 w-full"
                        }, null, 8, ["title", "type"])) : createCommentVNode("", true)
                      ])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }, 8, ["data"])
            ]),
            _: 1
          })),
          createVNode(AddSourceModal, {
            visible: showAddSourceModal.value,
            submitting: addSourceLoading.value,
            onClose: _cache[2] || (_cache[2] = ($event) => showAddSourceModal.value = false),
            onAdd: handleAddSource
          }, null, 8, ["visible", "submitting"]),
          createVNode(_component_el_dialog, {
            modelValue: showLogsDialog.value,
            "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => showLogsDialog.value = $event),
            title: selectedSource.value ? `${selectedSource.value.name} Logs` : "Source Logs",
            width: "620px"
          }, {
            default: withCtx(() => [
              selectedSourceLogs.value.length > 0 ? (openBlock(), createBlock(_component_el_timeline, { key: 0 }, {
                default: withCtx(() => [
                  (openBlock(true), createElementBlock(Fragment, null, renderList(selectedSourceLogs.value, (log, index) => {
                    return openBlock(), createBlock(_component_el_timeline_item, {
                      key: index,
                      type: log.level === "error" ? "danger" : log.level === "warning" ? "warning" : "success",
                      timestamp: log.time
                    }, {
                      default: withCtx(() => [
                        createTextVNode(toDisplayString(log.message), 1)
                      ]),
                      _: 2
                    }, 1032, ["type", "timestamp"]);
                  }), 128))
                ]),
                _: 1
              })) : (openBlock(), createBlock(_component_el_empty, {
                key: 1,
                description: "No logs available for this source"
              }))
            ]),
            _: 1
          }, 8, ["modelValue", "title"])
        ]);
      };
    }
  };
  const _hoisted_1$t = { class: "space-y-6" };
  const _hoisted_2$s = {
    key: 0,
    class: "absolute top-0 right-0 w-16 h-16 bg-blue-50 rounded-bl-full z-0"
  };
  const _hoisted_3$o = { class: "relative z-10" };
  const _hoisted_4$m = { class: "flex justify-between items-start mb-4" };
  const _hoisted_5$j = { class: "flex flex-col items-end gap-1" };
  const _hoisted_6$8 = { class: "font-bold text-lg text-gray-800 mb-1" };
  const _hoisted_7$6 = { class: "text-xs text-gray-500 mb-6 leading-relaxed min-h-[48px]" };
  const _hoisted_8$6 = { class: "h-[100px] mb-6 flex items-center justify-center border-2 border-dashed border-gray-100 rounded-xl text-xs font-bold text-gray-400 uppercase tracking-widest" };
  const _hoisted_9$6 = { class: "flex gap-2" };
  const CHROMA_OFFICIAL_ENDPOINT = "https://api.trychroma.com";
  const _sfc_main$v = {
    __name: "VectorDatabases",
    setup(__props) {
      const { showNotification } = useNotifications();
      const showConfigModal = ref(false);
      const loading = ref(true);
      const selectedDb = ref(null);
      const configDraft = ref({});
      const vectorState = ref({ default: "chroma", databases: [] });
      const dbLoadingMap = ref({});
      const dbLoadingText = ref({});
      const dbActionStatus = ref({});
      const { getVectorDatabases, updateVectorDatabase } = useKnowledgeBaseAPI();
      const allDatabases = computed(() => vectorState.value.databases || []);
      const defaultDb = computed(() => vectorState.value.default || "chroma");
      const configSchemas = {
        chroma: [
          { key: "endpoint", label: "Endpoint URL", placeholder: CHROMA_OFFICIAL_ENDPOINT },
          { key: "apiKey", label: "API Key", type: "password", placeholder: "Optional API key" },
          { key: "tenantId", label: "Tenant ID", placeholder: "Optional tenant identifier" },
          { key: "database", label: "Database", placeholder: "default_database" },
          { key: "collection", label: "Collection Name", placeholder: "kitsune_ai_platform_kb" },
          { key: "collectionId", label: "Collection UUID", placeholder: "Optional — paste UUID from Chroma UI" }
        ]
      };
      const selectedSchema = computed(() => {
        if (!selectedDb.value) return [];
        return configSchemas[selectedDb.value.id] || [];
      });
      const isDbLoading = (dbId) => {
        return Boolean(dbLoadingMap.value[dbId]);
      };
      const getDbLoadingText = (dbId) => {
        return dbLoadingText.value[dbId] || "Processing...";
      };
      const setDbLoading = (dbId, loading2, text = "Processing...") => {
        dbLoadingMap.value = {
          ...dbLoadingMap.value,
          [dbId]: loading2
        };
        dbLoadingText.value = {
          ...dbLoadingText.value,
          [dbId]: text
        };
      };
      const setDbActionStatus = (dbId, type, message2) => {
        dbActionStatus.value = {
          ...dbActionStatus.value,
          [dbId]: { type, message: message2 }
        };
      };
      const clearDbActionStatus = (dbId) => {
        const next = { ...dbActionStatus.value };
        delete next[dbId];
        dbActionStatus.value = next;
      };
      const normalizeConfigDraft = (dbId, config = {}) => {
        const normalized = { ...config };
        if (dbId === "chroma" && !normalized.endpoint) {
          normalized.endpoint = CHROMA_OFFICIAL_ENDPOINT;
        }
        return normalized;
      };
      const connectDb = async (id) => {
        clearDbActionStatus(id);
        setDbLoading(id, true, "Connecting to Chroma DB...");
        try {
          const response = await updateVectorDatabase(id, "connect");
          if (response.success) {
            vectorState.value = response.data;
            const message2 = response.data?.message || "Connection successful.";
            setDbActionStatus(id, "success", message2);
            showNotification("success", message2);
          } else {
            const message2 = response.message || "Unable to connect to database";
            setDbActionStatus(id, "error", message2);
            showNotification("error", message2);
          }
        } catch (error) {
          const message2 = error?.message || "Failed to connect database";
          setDbActionStatus(id, "error", message2);
          showNotification("error", message2);
        } finally {
          setDbLoading(id, false);
        }
      };
      const disconnectDb = async (id) => {
        clearDbActionStatus(id);
        setDbLoading(id, true, "Disconnecting from Chroma DB...");
        try {
          const response = await updateVectorDatabase(id, "disconnect");
          if (response.success) {
            vectorState.value = response.data;
            const message2 = response.data?.message || "Database disconnected.";
            setDbActionStatus(id, "success", message2);
            showNotification("success", message2);
          } else {
            const message2 = response.message || "Failed to disconnect database";
            setDbActionStatus(id, "error", message2);
            showNotification("error", message2);
          }
        } catch (error) {
          const message2 = error?.message || "Failed to disconnect database";
          setDbActionStatus(id, "error", message2);
          showNotification("error", message2);
        } finally {
          setDbLoading(id, false);
        }
      };
      const openConfig = (db) => {
        selectedDb.value = db;
        configDraft.value = normalizeConfigDraft(db.id, db.config || {});
        showConfigModal.value = true;
      };
      const saveConfig = async () => {
        if (!selectedDb.value) return;
        try {
          const payload = normalizeConfigDraft(selectedDb.value.id, configDraft.value);
          const response = await updateVectorDatabase(selectedDb.value.id, "configure", payload);
          if (response.success) {
            vectorState.value = response.data;
            showNotification("success", "Configuration updated.");
            showConfigModal.value = false;
          } else {
            showNotification("error", response.message || "Failed to save configuration");
          }
        } catch (error) {
          showNotification("error", "Failed to save configuration");
        }
      };
      const loadDatabases = async () => {
        loading.value = true;
        try {
          const response = await getVectorDatabases();
          if (response.success) {
            vectorState.value = response.data;
          }
        } catch (error) {
          showNotification("error", "Failed to load vector databases");
        } finally {
          loading.value = false;
        }
      };
      onMounted(loadDatabases);
      return (_ctx, _cache) => {
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_tag = resolveComponent("el-tag");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_alert = resolveComponent("el-alert");
        const _component_el_card = resolveComponent("el-card");
        const _component_el_col = resolveComponent("el-col");
        const _component_el_row = resolveComponent("el-row");
        const _component_el_input = resolveComponent("el-input");
        const _component_el_form_item = resolveComponent("el-form-item");
        const _component_el_form = resolveComponent("el-form");
        const _component_el_dialog = resolveComponent("el-dialog");
        const _directive_loading = resolveDirective("loading");
        return openBlock(), createElementBlock("div", _hoisted_1$t, [
          loading.value ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            "show-toolbar": false,
            cards: 2
          })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
            createVNode(_component_el_row, { gutter: 24 }, {
              default: withCtx(() => [
                (openBlock(true), createElementBlock(Fragment, null, renderList(allDatabases.value, (db) => {
                  return openBlock(), createBlock(_component_el_col, {
                    xs: 24,
                    sm: 12,
                    lg: 8,
                    key: db.id,
                    class: "mb-6"
                  }, {
                    default: withCtx(() => [
                      withDirectives((openBlock(), createBlock(_component_el_card, {
                        "element-loading-text": getDbLoadingText(db.id),
                        shadow: "hover",
                        class: normalizeClass(["relative h-full transition-all", { "ring-2 ring-blue-500": defaultDb.value === db.id }])
                      }, {
                        default: withCtx(() => [
                          defaultDb.value === db.id ? (openBlock(), createElementBlock("div", _hoisted_2$s, [
                            createVNode(_component_el_icon, { class: "absolute top-3 right-3 text-blue-500 font-bold" }, {
                              default: withCtx(() => [
                                createVNode(unref(check_default))
                              ]),
                              _: 1
                            })
                          ])) : createCommentVNode("", true),
                          createBaseVNode("div", _hoisted_3$o, [
                            createBaseVNode("div", _hoisted_4$m, [
                              createBaseVNode("div", {
                                class: normalizeClass([db.colorClass, "w-14 h-14 rounded-xl flex items-center justify-center text-2xl"])
                              }, [
                                createBaseVNode("i", {
                                  class: normalizeClass(db.icon)
                                }, null, 2)
                              ], 2),
                              createBaseVNode("div", _hoisted_5$j, [
                                db.connected ? (openBlock(), createBlock(_component_el_tag, {
                                  key: 0,
                                  type: "success",
                                  size: "small",
                                  effect: "light"
                                }, {
                                  default: withCtx(() => [..._cache[2] || (_cache[2] = [
                                    createTextVNode("Connected", -1)
                                  ])]),
                                  _: 1
                                })) : (openBlock(), createBlock(_component_el_tag, {
                                  key: 1,
                                  type: "info",
                                  size: "small",
                                  effect: "light"
                                }, {
                                  default: withCtx(() => [..._cache[3] || (_cache[3] = [
                                    createTextVNode("Disconnected", -1)
                                  ])]),
                                  _: 1
                                })),
                                _cache[4] || (_cache[4] = createBaseVNode("span", { class: "text-xs font-bold text-blue-600 uppercase flex items-center mt-1" }, "Default", -1))
                              ])
                            ]),
                            createBaseVNode("h3", _hoisted_6$8, toDisplayString(db.name), 1),
                            createBaseVNode("p", _hoisted_7$6, toDisplayString(db.description), 1),
                            createBaseVNode("div", _hoisted_8$6, toDisplayString(db.connected ? "Connected" : "Not Connected"), 1)
                          ]),
                          createBaseVNode("div", _hoisted_9$6, [
                            db.connected ? (openBlock(), createBlock(_component_el_button, {
                              key: 0,
                              type: "warning",
                              plain: "",
                              class: "flex-1",
                              loading: isDbLoading(db.id),
                              disabled: isDbLoading(db.id),
                              onClick: ($event) => disconnectDb(db.id)
                            }, {
                              default: withCtx(() => [..._cache[5] || (_cache[5] = [
                                createTextVNode(" Disconnect ", -1)
                              ])]),
                              _: 1
                            }, 8, ["loading", "disabled", "onClick"])) : (openBlock(), createBlock(_component_el_button, {
                              key: 1,
                              type: "primary",
                              class: "flex-1",
                              loading: isDbLoading(db.id),
                              disabled: isDbLoading(db.id),
                              onClick: ($event) => connectDb(db.id)
                            }, {
                              default: withCtx(() => [..._cache[6] || (_cache[6] = [
                                createTextVNode(" Connect Database ", -1)
                              ])]),
                              _: 1
                            }, 8, ["loading", "disabled", "onClick"])),
                            createVNode(_component_el_button, {
                              disabled: isDbLoading(db.id),
                              onClick: ($event) => openConfig(db)
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_icon, { class: "mr-1" }, {
                                  default: withCtx(() => [
                                    createVNode(unref(setting_default))
                                  ]),
                                  _: 1
                                }),
                                _cache[7] || (_cache[7] = createTextVNode(" Settings ", -1))
                              ]),
                              _: 1
                            }, 8, ["disabled", "onClick"])
                          ]),
                          dbActionStatus.value[db.id]?.message ? (openBlock(), createBlock(_component_el_alert, {
                            key: 1,
                            title: dbActionStatus.value[db.id].message,
                            type: dbActionStatus.value[db.id].type,
                            "show-icon": "",
                            closable: false,
                            class: "mt-3"
                          }, null, 8, ["title", "type"])) : createCommentVNode("", true)
                        ]),
                        _: 2
                      }, 1032, ["element-loading-text", "class"])), [
                        [_directive_loading, isDbLoading(db.id)]
                      ])
                    ]),
                    _: 2
                  }, 1024);
                }), 128))
              ]),
              _: 1
            }),
            createVNode(_component_el_dialog, {
              modelValue: showConfigModal.value,
              "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => showConfigModal.value = $event),
              title: `Configure ${selectedDb.value?.name || ""}`,
              width: "520px",
              "destroy-on-close": ""
            }, {
              footer: withCtx(() => [
                createVNode(_component_el_button, {
                  onClick: _cache[0] || (_cache[0] = ($event) => showConfigModal.value = false)
                }, {
                  default: withCtx(() => [..._cache[8] || (_cache[8] = [
                    createTextVNode("Cancel", -1)
                  ])]),
                  _: 1
                }),
                createVNode(_component_el_button, {
                  type: "primary",
                  onClick: saveConfig
                }, {
                  default: withCtx(() => [..._cache[9] || (_cache[9] = [
                    createTextVNode("Save Configuration", -1)
                  ])]),
                  _: 1
                })
              ]),
              default: withCtx(() => [
                createVNode(_component_el_form, { "label-position": "top" }, {
                  default: withCtx(() => [
                    (openBlock(true), createElementBlock(Fragment, null, renderList(selectedSchema.value, (field) => {
                      return openBlock(), createBlock(_component_el_form_item, {
                        key: field.key,
                        label: field.label
                      }, {
                        default: withCtx(() => [
                          createVNode(_component_el_input, {
                            modelValue: configDraft.value[field.key],
                            "onUpdate:modelValue": ($event) => configDraft.value[field.key] = $event,
                            type: field.type || "text",
                            placeholder: field.placeholder || ""
                          }, null, 8, ["modelValue", "onUpdate:modelValue", "type", "placeholder"])
                        ]),
                        _: 2
                      }, 1032, ["label"]);
                    }), 128))
                  ]),
                  _: 1
                })
              ]),
              _: 1
            }, 8, ["modelValue", "title"])
          ], 64))
        ]);
      };
    }
  };
  const _sfc_main$u = {
    __name: "SemanticSearch",
    setup(__props) {
      const { showNotification } = useNotifications();
      const { semanticSearch } = useKnowledgeBaseAPI();
      const searchQuery = ref("");
      const searching = ref(false);
      const showResults = ref(false);
      const results = ref({
        latency: 0,
        vectorCount: 0,
        items: []
      });
      const uniqueTitles = computed(() => {
        return [...new Set(results.value.items.map((item) => item.source))];
      });
      const handleSearch = async () => {
        if (!searchQuery.value) {
          return;
        }
        searching.value = true;
        try {
          const response = await semanticSearch(searchQuery.value);
          if (response.success) {
            results.value = {
              latency: response.latency || 0,
              vectorCount: response.vectorCount || 0,
              items: response.items || []
            };
            showResults.value = true;
            return;
          }
          showNotification("error", response.message || "Semantic search failed.");
        } catch (error) {
          showNotification("error", error?.message || "Search failed");
        } finally {
          searching.value = false;
        }
      };
      return (_ctx, _cache) => {
        const _component_el_text = resolveComponent("el-text");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_input = resolveComponent("el-input");
        const _component_el_space = resolveComponent("el-space");
        const _component_el_card = resolveComponent("el-card");
        const _component_el_statistic = resolveComponent("el-statistic");
        const _component_el_col = resolveComponent("el-col");
        const _component_el_row = resolveComponent("el-row");
        const _component_el_tag = resolveComponent("el-tag");
        return openBlock(), createBlock(_component_el_space, {
          direction: "vertical",
          fill: "",
          size: 20,
          style: { "width": "100%" }
        }, {
          default: withCtx(() => [
            createVNode(_component_el_card, { shadow: "never" }, {
              header: withCtx(() => [..._cache[1] || (_cache[1] = [
                createBaseVNode("span", null, "Semantic Explorer", -1)
              ])]),
              default: withCtx(() => [
                createVNode(_component_el_space, {
                  direction: "vertical",
                  fill: "",
                  size: 14,
                  style: { "width": "100%" }
                }, {
                  default: withCtx(() => [
                    createVNode(_component_el_text, { type: "info" }, {
                      default: withCtx(() => [..._cache[2] || (_cache[2] = [
                        createTextVNode(" Query your vector space to find contextually relevant information across connected sources. ", -1)
                      ])]),
                      _: 1
                    }),
                    createVNode(_component_el_input, {
                      modelValue: searchQuery.value,
                      "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchQuery.value = $event),
                      placeholder: "Ask a question or enter a search query...",
                      size: "large",
                      clearable: "",
                      onKeyup: withKeys(handleSearch, ["enter"])
                    }, {
                      append: withCtx(() => [
                        createVNode(_component_el_button, {
                          type: "primary",
                          loading: searching.value,
                          onClick: handleSearch
                        }, {
                          default: withCtx(() => [
                            !searching.value ? (openBlock(), createBlock(_component_el_icon, { key: 0 }, {
                              default: withCtx(() => [
                                createVNode(unref(search_default))
                              ]),
                              _: 1
                            })) : createCommentVNode("", true),
                            _cache[3] || (_cache[3] = createTextVNode(" Search ", -1))
                          ]),
                          _: 1
                        }, 8, ["loading"])
                      ]),
                      _: 1
                    }, 8, ["modelValue"])
                  ]),
                  _: 1
                })
              ]),
              _: 1
            }),
            showResults.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
              createVNode(_component_el_row, { gutter: 16 }, {
                default: withCtx(() => [
                  createVNode(_component_el_col, { span: 8 }, {
                    default: withCtx(() => [
                      createVNode(_component_el_card, { shadow: "never" }, {
                        default: withCtx(() => [
                          createVNode(_component_el_space, null, {
                            default: withCtx(() => [
                              createVNode(_component_el_icon, null, {
                                default: withCtx(() => [
                                  createVNode(unref(lightning_default))
                                ]),
                                _: 1
                              }),
                              createVNode(_component_el_statistic, {
                                title: "Search Latency",
                                value: results.value.latency
                              }, {
                                suffix: withCtx(() => [..._cache[4] || (_cache[4] = [
                                  createTextVNode("ms", -1)
                                ])]),
                                _: 1
                              }, 8, ["value"])
                            ]),
                            _: 1
                          })
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_col, { span: 8 }, {
                    default: withCtx(() => [
                      createVNode(_component_el_card, { shadow: "never" }, {
                        default: withCtx(() => [
                          createVNode(_component_el_space, null, {
                            default: withCtx(() => [
                              createVNode(_component_el_icon, null, {
                                default: withCtx(() => [
                                  createVNode(unref(coin_default))
                                ]),
                                _: 1
                              }),
                              createVNode(_component_el_statistic, {
                                title: "Vectors Scanned",
                                value: results.value.vectorCount
                              }, null, 8, ["value"])
                            ]),
                            _: 1
                          })
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_col, { span: 8 }, {
                    default: withCtx(() => [
                      createVNode(_component_el_card, { shadow: "never" }, {
                        default: withCtx(() => [
                          createVNode(_component_el_space, null, {
                            default: withCtx(() => [
                              createVNode(_component_el_icon, null, {
                                default: withCtx(() => [
                                  createVNode(unref(files_default))
                                ]),
                                _: 1
                              }),
                              createVNode(_component_el_statistic, {
                                title: "Unique Sources",
                                value: uniqueTitles.value.length
                              }, {
                                suffix: withCtx(() => [..._cache[5] || (_cache[5] = [
                                  createTextVNode("documents", -1)
                                ])]),
                                _: 1
                              }, 8, ["value"])
                            ]),
                            _: 1
                          })
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }),
              createVNode(_component_el_card, { shadow: "never" }, {
                header: withCtx(() => [
                  createVNode(_component_el_space, null, {
                    default: withCtx(() => [
                      createVNode(_component_el_icon, null, {
                        default: withCtx(() => [
                          createVNode(unref(link_default))
                        ]),
                        _: 1
                      }),
                      _cache[6] || (_cache[6] = createBaseVNode("span", null, "Contributed Sources", -1))
                    ]),
                    _: 1
                  })
                ]),
                default: withCtx(() => [
                  createVNode(_component_el_space, { wrap: "" }, {
                    default: withCtx(() => [
                      (openBlock(true), createElementBlock(Fragment, null, renderList(uniqueTitles.value, (title) => {
                        return openBlock(), createBlock(_component_el_tag, {
                          key: title,
                          type: "info",
                          effect: "plain"
                        }, {
                          default: withCtx(() => [
                            createTextVNode(toDisplayString(title), 1)
                          ]),
                          _: 2
                        }, 1024);
                      }), 128))
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }),
              createVNode(_component_el_space, {
                direction: "vertical",
                fill: "",
                size: 12,
                style: { "width": "100%" }
              }, {
                default: withCtx(() => [
                  (openBlock(true), createElementBlock(Fragment, null, renderList(results.value.items, (item, index) => {
                    return openBlock(), createBlock(_component_el_card, {
                      key: index,
                      shadow: "hover"
                    }, {
                      default: withCtx(() => [
                        createVNode(_component_el_space, {
                          direction: "vertical",
                          fill: "",
                          size: 8,
                          style: { "width": "100%" }
                        }, {
                          default: withCtx(() => [
                            createVNode(_component_el_space, null, {
                              default: withCtx(() => [
                                createVNode(_component_el_tag, { type: "info" }, {
                                  default: withCtx(() => [
                                    createTextVNode("#" + toDisplayString(index + 1), 1)
                                  ]),
                                  _: 2
                                }, 1024),
                                createVNode(_component_el_text, null, {
                                  default: withCtx(() => [
                                    createTextVNode(toDisplayString(item.source), 1)
                                  ]),
                                  _: 2
                                }, 1024),
                                createVNode(_component_el_tag, { type: "primary" }, {
                                  default: withCtx(() => [
                                    createTextVNode("Score: " + toDisplayString(item.score), 1)
                                  ]),
                                  _: 2
                                }, 1024)
                              ]),
                              _: 2
                            }, 1024),
                            createVNode(_component_el_text, null, {
                              default: withCtx(() => [
                                createTextVNode(toDisplayString(item.content), 1)
                              ]),
                              _: 2
                            }, 1024)
                          ]),
                          _: 2
                        }, 1024)
                      ]),
                      _: 2
                    }, 1024);
                  }), 128))
                ]),
                _: 1
              })
            ], 64)) : createCommentVNode("", true)
          ]),
          _: 1
        });
      };
    }
  };
  const _hoisted_1$s = { class: "w-full space-y-4" };
  const _hoisted_2$r = { class: "mt-6 pt-6 border-t border-gray-200 flex justify-end" };
  const _hoisted_3$n = { class: "flex items-center gap-2" };
  const _hoisted_4$l = {
    key: 0,
    class: "text-xs text-gray-400 mb-4"
  };
  const _hoisted_5$i = {
    key: 1,
    class: "text-xs text-gray-400 mb-4"
  };
  const _sfc_main$t = {
    __name: "SourceSettings",
    setup(__props) {
      const { showNotification } = useNotifications();
      const loading = ref(true);
      const saving = ref(false);
      const resetting = ref(false);
      const lastReset = ref("");
      const settings = ref({
        chunkSize: 512,
        chunkOverlap: 50
      });
      const { getSettings, saveSettings: saveSettingsApi, resetKnowledgeBase } = useKnowledgeBaseAPI();
      const loadSettings = async () => {
        loading.value = true;
        try {
          const response = await getSettings();
          if (response.success) {
            settings.value = {
              ...settings.value,
              chunkSize: response.data.chunkSize ?? 512,
              chunkOverlap: response.data.chunkOverlap ?? 50
            };
            lastReset.value = response.data.lastReset || "";
          }
        } catch (error) {
          showNotification("error", "Failed to load settings");
        } finally {
          loading.value = false;
        }
      };
      const saveSettings = async () => {
        saving.value = true;
        try {
          const response = await saveSettingsApi(settings.value);
          if (response.success) {
            settings.value = response.data;
            lastReset.value = response.data.lastReset || lastReset.value;
            showNotification("success", "Settings saved successfully");
          }
        } catch (error) {
          showNotification("error", "Failed to save settings");
        } finally {
          saving.value = false;
        }
      };
      const confirmReset = async () => {
        try {
          await ElMessageBox.confirm(
            "This will permanently delete ALL knowledge base sources and their embeddings from the vector database. This cannot be undone. Continue?",
            "Reset Knowledge Base",
            {
              type: "warning",
              confirmButtonText: "Reset Everything",
              cancelButtonText: "Cancel",
              confirmButtonClass: "el-button--danger"
            }
          );
        } catch {
          return;
        }
        resetting.value = true;
        try {
          const response = await resetKnowledgeBase();
          if (response.success) {
            lastReset.value = response.resetTime || "";
            showNotification("success", response.message || "Knowledge base reset successfully.");
          } else {
            showNotification("error", response.message || "Reset failed.");
          }
        } catch (error) {
          showNotification("error", "Reset failed.");
        } finally {
          resetting.value = false;
        }
      };
      onMounted(loadSettings);
      return (_ctx, _cache) => {
        const _component_el_input_number = resolveComponent("el-input-number");
        const _component_el_form_item = resolveComponent("el-form-item");
        const _component_el_form = resolveComponent("el-form");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_card = resolveComponent("el-card");
        return openBlock(), createElementBlock("div", _hoisted_1$s, [
          loading.value ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            rows: 5,
            "show-toolbar": false
          })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
            createVNode(_component_el_card, { shadow: "never" }, {
              header: withCtx(() => [..._cache[2] || (_cache[2] = [
                createBaseVNode("p", { class: "text-sm text-gray-600" }, " Configure how source content is chunked before embeddings are generated. ", -1)
              ])]),
              default: withCtx(() => [
                createVNode(_component_el_form, {
                  model: settings.value,
                  "label-position": "top",
                  class: "space-y-4"
                }, {
                  default: withCtx(() => [
                    createVNode(_component_el_form_item, {
                      label: "Chunk Size (Tokens)",
                      class: "!mb-0"
                    }, {
                      default: withCtx(() => [
                        createBaseVNode("div", null, [
                          createVNode(_component_el_input_number, {
                            modelValue: settings.value.chunkSize,
                            "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => settings.value.chunkSize = $event),
                            min: 128,
                            max: 2048,
                            step: 128
                          }, null, 8, ["modelValue"]),
                          _cache[3] || (_cache[3] = createBaseVNode("p", { class: "text-xs text-gray-500 mt-1" }, "Smaller chunks are more precise, larger chunks preserve more context.", -1))
                        ])
                      ]),
                      _: 1
                    }),
                    createVNode(_component_el_form_item, {
                      label: "Chunk Overlap",
                      class: "!mb-0"
                    }, {
                      default: withCtx(() => [
                        createBaseVNode("div", null, [
                          createVNode(_component_el_input_number, {
                            modelValue: settings.value.chunkOverlap,
                            "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => settings.value.chunkOverlap = $event),
                            min: 0,
                            max: 200,
                            step: 10
                          }, null, 8, ["modelValue"]),
                          _cache[4] || (_cache[4] = createBaseVNode("p", { class: "text-xs text-gray-500 mt-1" }, "Number of tokens to overlap between adjacent chunks.", -1))
                        ])
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                }, 8, ["model"]),
                createBaseVNode("div", _hoisted_2$r, [
                  createVNode(_component_el_button, {
                    type: "primary",
                    loading: saving.value,
                    disabled: saving.value,
                    onClick: saveSettings
                  }, {
                    default: withCtx(() => [
                      createVNode(_component_el_icon, { class: "mr-1" }, {
                        default: withCtx(() => [
                          createVNode(unref(check_default))
                        ]),
                        _: 1
                      }),
                      _cache[5] || (_cache[5] = createTextVNode(" Save Settings ", -1))
                    ]),
                    _: 1
                  }, 8, ["loading", "disabled"])
                ])
              ]),
              _: 1
            }),
            createVNode(_component_el_card, {
              shadow: "never",
              class: "border-red-200"
            }, {
              header: withCtx(() => [
                createBaseVNode("div", _hoisted_3$n, [
                  createVNode(_component_el_icon, { class: "text-red-500" }, {
                    default: withCtx(() => [
                      createVNode(unref(delete_default))
                    ]),
                    _: 1
                  }),
                  _cache[6] || (_cache[6] = createBaseVNode("span", { class: "font-semibold text-red-600" }, "Reset Knowledge Base", -1))
                ])
              ]),
              default: withCtx(() => [
                _cache[8] || (_cache[8] = createBaseVNode("p", { class: "text-sm text-gray-600 mb-3" }, " Permanently removes all knowledge base sources, their embeddings from the vector database, and all locally stored embedding data. This action cannot be undone. ", -1)),
                lastReset.value ? (openBlock(), createElementBlock("p", _hoisted_4$l, " Last reset: " + toDisplayString(lastReset.value), 1)) : (openBlock(), createElementBlock("p", _hoisted_5$i, " Never reset. ")),
                createVNode(_component_el_button, {
                  type: "danger",
                  loading: resetting.value,
                  disabled: resetting.value,
                  onClick: confirmReset
                }, {
                  default: withCtx(() => [
                    createVNode(_component_el_icon, { class: "mr-1" }, {
                      default: withCtx(() => [
                        createVNode(unref(delete_default))
                      ]),
                      _: 1
                    }),
                    _cache[7] || (_cache[7] = createTextVNode(" Reset Knowledge Base ", -1))
                  ]),
                  _: 1
                }, 8, ["loading", "disabled"])
              ]),
              _: 1
            })
          ], 64))
        ]);
      };
    }
  };
  const _hoisted_1$r = { class: "px-6 py-4" };
  const _hoisted_2$q = { class: "mb-6" };
  const _hoisted_3$m = { class: "text-2xl font-bold text-gray-900" };
  const _hoisted_4$k = { class: "text-gray-600 mt-1" };
  const _hoisted_5$h = { class: "flex items-center" };
  const _sfc_main$s = {
    __name: "KnowledgeBase",
    setup(__props) {
      const t = inject("t", (k) => k);
      const currentTab = ref("sources");
      const tabs = computed(() => [
        { id: "sources", name: t("knowledgeSources"), icon: "fas fa-database" },
        { id: "vector-db", name: t("vectorDatabases"), icon: "fas fa-project-diagram" },
        { id: "semantic-search", name: t("semanticSearch"), icon: "fas fa-search" },
        { id: "settings", name: t("navSettings"), icon: "fas fa-cog" }
      ]);
      const tabComponents = {
        "sources": _sfc_main$w,
        "vector-db": _sfc_main$v,
        "semantic-search": _sfc_main$u,
        "settings": _sfc_main$t
      };
      const currentTabComponent = computed(() => tabComponents[currentTab.value]);
      return (_ctx, _cache) => {
        const _component_el_tab_pane = resolveComponent("el-tab-pane");
        const _component_el_tabs = resolveComponent("el-tabs");
        return openBlock(), createElementBlock("div", _hoisted_1$r, [
          createBaseVNode("div", _hoisted_2$q, [
            createBaseVNode("h1", _hoisted_3$m, toDisplayString(unref(t)("navKB")), 1),
            createBaseVNode("p", _hoisted_4$k, toDisplayString(unref(t)("kbSubtitle")), 1)
          ]),
          createVNode(_component_el_tabs, {
            modelValue: currentTab.value,
            "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => currentTab.value = $event),
            class: "mb-4"
          }, {
            default: withCtx(() => [
              (openBlock(true), createElementBlock(Fragment, null, renderList(tabs.value, (tab) => {
                return openBlock(), createBlock(_component_el_tab_pane, {
                  key: tab.id,
                  label: tab.name,
                  name: tab.id
                }, {
                  label: withCtx(() => [
                    createBaseVNode("span", _hoisted_5$h, [
                      createBaseVNode("i", {
                        class: normalizeClass([tab.icon, "mr-2"])
                      }, null, 2),
                      createTextVNode(" " + toDisplayString(tab.name), 1)
                    ])
                  ]),
                  _: 2
                }, 1032, ["label", "name"]);
              }), 128))
            ]),
            _: 1
          }, 8, ["modelValue"]),
          createVNode(Transition, {
            name: "fade",
            mode: "out-in"
          }, {
            default: withCtx(() => [
              (openBlock(), createBlock(KeepAlive, null, [
                (openBlock(), createBlock(resolveDynamicComponent(currentTabComponent.value)))
              ], 1024))
            ]),
            _: 1
          })
        ]);
      };
    }
  };
  const _hoisted_1$q = { class: "workflow-editor" };
  const _hoisted_2$p = { class: "header-content" };
  const _hoisted_3$l = { class: "header-left" };
  const _hoisted_4$j = { class: "header-actions" };
  const _hoisted_5$g = { class: "workflow-main" };
  const _hoisted_6$7 = { class: "sidebar-content" };
  const _hoisted_7$5 = { class: "sidebar-section" };
  const _hoisted_8$5 = { class: "sidebar-items" };
  const _hoisted_9$5 = { class: "block-content" };
  const _hoisted_10$5 = { class: "block-text" };
  const _hoisted_11$5 = { class: "sidebar-section" };
  const _hoisted_12$3 = { class: "sidebar-items" };
  const _hoisted_13$2 = { class: "block-content" };
  const _hoisted_14$2 = { class: "block-text" };
  const _hoisted_15$2 = { class: "absolute top-0 left-0 w-[5000px] h-[5000px] pointer-events-none z-0" };
  const _hoisted_16$2 = ["d", "onClick"];
  const _hoisted_17$2 = ["d"];
  const _hoisted_18$2 = { class: "node-actions" };
  const _hoisted_19$2 = { class: "node-body" };
  const _hoisted_20$2 = ["onMouseup"];
  const _hoisted_21$2 = ["onMousedown"];
  const _hoisted_22$2 = {
    key: 0,
    class: "canvas-empty-hint"
  };
  const _hoisted_23$1 = { class: "settings-header" };
  const _hoisted_24$1 = { class: "settings-content" };
  const _hoisted_25$1 = { class: "context-vars-grid" };
  const _sfc_main$r = /* @__PURE__ */ Object.assign({ name: "WorkflowBuilder" }, {
    __name: "Workflows",
    props: {
      templateToLoad: {
        type: Object,
        default: null
      },
      workflowToEdit: {
        type: [Number, String],
        default: null
      }
    },
    emits: ["switch-tab"],
    setup(__props, { emit: __emit }) {
      const { showNotification } = useNotifications();
      const props2 = __props;
      const triggers = ref([]);
      const actions = ref([]);
      const nodes = ref([]);
      const links = ref([]);
      const scale = ref(1);
      const pan = reactive({ x: 0, y: 0 });
      const selectedNode = ref(null);
      const workflowName = ref("New Workflow");
      const workflowId = ref(null);
      const isSaving = ref(false);
      const isRunning = ref(false);
      const isLoading2 = ref(false);
      const runDialogVisible = ref(false);
      const runTriggerVars = ref({});
      const runContextValues = ref({});
      const isDirty2 = ref(false);
      let initialized = false;
      const kbSources = reactive({ loading: false, list: [] });
      const postTypes = reactive({ loading: false, list: [] });
      const posts = reactive({ loading: false, list: [], cachedPostType: "" });
      const selectedNodeObj = computed(() => nodes.value.find((n) => n.id === selectedNode.value));
      const selectedNodeData = computed(() => {
        if (!selectedNodeObj.value) return null;
        const list = selectedNodeObj.value.type === "trigger" ? triggers.value : actions.value;
        return list.find((item) => item.id === selectedNodeObj.value.componentId);
      });
      const selectedNodeConfig = computed(() => {
        return selectedNodeObj.value ? selectedNodeObj.value.config : {};
      });
      const triggerContextVars = computed(() => {
        const triggerNode = nodes.value.find((n) => n.type === "trigger");
        if (!triggerNode) return null;
        if (selectedNode.value === triggerNode.id) {
          const triggerDef2 = triggers.value.find((t) => t.id === triggerNode.componentId);
          return triggerDef2?.context_vars || null;
        }
        const visited = /* @__PURE__ */ new Set();
        const queue2 = [triggerNode.id];
        while (queue2.length > 0) {
          const current = queue2.shift();
          if (visited.has(current)) continue;
          visited.add(current);
          links.value.filter((l2) => l2.source === current).forEach((l2) => queue2.push(l2.target));
        }
        if (!visited.has(selectedNode.value)) return null;
        const triggerDef = triggers.value.find((t) => t.id === triggerNode.componentId);
        return triggerDef?.context_vars || null;
      });
      const draggingNode = ref(null);
      const isPanning = ref(false);
      const lastMousePos = reactive({ x: 0, y: 0 });
      const dragLink = ref(null);
      const canvasRef = ref(null);
      watch(() => props2.templateToLoad, (template) => {
        if (template && template.config) {
          loadFromConfig(template.config, template.name || "Template Workflow");
          workflowId.value = null;
        }
      }, { immediate: true });
      watch(() => props2.workflowToEdit, async (id) => {
        if (id) {
          await loadWorkflow(id);
        }
      }, { immediate: true });
      watch([nodes, links], () => {
        if (initialized) isDirty2.value = true;
      }, { deep: true });
      async function loadWorkflow(id) {
        isLoading2.value = true;
        if (!triggers.value.length && !actions.value.length) {
          await fetchComponents();
        }
        try {
          const params = new URLSearchParams({
            action: "kitsune_ai_platform_get_workflow",
            nonce: window.kitsuneAiPlatformConfig.ajaxNonce,
            workflow_id: id
          });
          const response = await fetch(`${window.kitsuneAiPlatformConfig.ajaxUrl}?${params.toString()}`);
          const result = await response.json();
          if (result.success && result.data.workflow) {
            const workflow = result.data.workflow;
            workflowId.value = workflow.id;
            workflowName.value = workflow.name;
            const config = typeof workflow.config === "string" ? JSON.parse(workflow.config) : workflow.config;
            if (config) {
              loadFromConfig(config, workflow.name);
            }
          } else {
            showNotification("error", result.data?.message || "Failed to load workflow");
          }
        } catch (error) {
          console.error("Load workflow error:", error);
          showNotification("error", "Failed to load workflow");
        } finally {
          isLoading2.value = false;
          isDirty2.value = false;
        }
      }
      function loadFromConfig(config, name) {
        clearCanvas();
        workflowName.value = name;
        if (!config.trigger) return;
        const triggerNode = {
          id: "node_trigger_" + Date.now(),
          type: "trigger",
          componentId: config.trigger.type,
          label: getTriggerLabel(config.trigger.type),
          x: 200,
          y: 100,
          config: config.trigger.config || {}
        };
        nodes.value.push(triggerNode);
        if (config.trigger.actions && Array.isArray(config.trigger.actions)) {
          let yOffset = 250;
          config.trigger.actions.forEach((action, index) => {
            buildActionNodes(action, triggerNode.id, 150 + index * 300, yOffset);
          });
        }
      }
      function buildActionNodes(actionData, parentId, x2, y) {
        const actionNode = {
          id: actionData.id || "node_" + Date.now() + "_" + Math.random().toString(36).substr(2, 9),
          type: "action",
          componentId: actionData.action_type,
          label: getActionLabel(actionData.action_type),
          x: x2,
          y,
          config: actionData.config || {}
        };
        nodes.value.push(actionNode);
        links.value.push({
          id: "link_" + Date.now() + "_" + Math.random().toString(36).substr(2, 9),
          source: parentId,
          target: actionNode.id
        });
        if (actionData.next_action) {
          buildActionNodes(actionData.next_action, actionNode.id, x2, y + 150);
        }
      }
      function getTriggerLabel(type) {
        const trigger2 = triggers.value.find((t) => t.id === type);
        return trigger2 ? trigger2.label : type;
      }
      function getActionLabel(type) {
        const action = actions.value.find((a2) => a2.id === type);
        return action ? action.label : type;
      }
      async function fetchComponents() {
        try {
          const url = `${window.kitsuneAiPlatformConfig.ajaxUrl}?action=ai_platform_get_automation_components&nonce=${window.kitsuneAiPlatformConfig.ajaxNonce}`;
          const response = await fetch(url);
          const data = await response.json();
          if (!data.triggers || !data.actions) {
            throw new Error(data.data ? data.data.message : "Invalid response");
          }
          triggers.value = Object.entries(data.triggers).map(([key, val]) => ({
            id: key,
            label: val.label,
            description: val.description,
            config_fields: val.config_fields || [],
            context_vars: val.context_vars || {}
          }));
          actions.value = Object.entries(data.actions).map(([key, val]) => ({
            id: key,
            label: val.label,
            description: val.description,
            config_fields: val.config_fields || []
          }));
        } catch (error) {
          console.error("Failed to fetch components", error);
          showNotification("error", "Failed to load automation components");
        }
      }
      const saveWorkflow = async () => {
        const triggerNode = nodes.value.find((n) => n.type === "trigger");
        if (!triggerNode) {
          showNotification("warning", "Workflow must have a trigger");
          return;
        }
        const buildActionChain = (nodeId) => {
          const link = links.value.find((l2) => l2.source === nodeId);
          if (!link) return null;
          const targetNode = nodes.value.find((n) => n.id === link.target);
          if (!targetNode) return null;
          return {
            id: targetNode.id,
            action_type: targetNode.componentId,
            type: "action",
            config: targetNode.config || {},
            // User config will go here
            next_action: buildActionChain(targetNode.id)
          };
        };
        const initialLinks = links.value.filter((l2) => l2.source === triggerNode.id);
        const parallelActions = initialLinks.map((link) => {
          const targetNode = nodes.value.find((n) => n.id === link.target);
          if (!targetNode) return null;
          return {
            id: targetNode.id,
            action_type: targetNode.componentId,
            type: "action",
            config: targetNode.config || {},
            next_action: buildActionChain(targetNode.id)
            // Build linear chain from here
          };
        }).filter((n) => n !== null);
        const workflowData = {
          name: workflowName.value,
          trigger_type: triggerNode.componentId,
          config: {
            trigger: {
              type: triggerNode.componentId,
              config: triggerNode.config || {},
              actions: parallelActions
            }
          }
        };
        if (workflowId.value) {
          workflowData.id = workflowId.value;
        }
        isSaving.value = true;
        try {
          const formData = new FormData();
          formData.append("action", "kitsune_ai_platform_save_workflow");
          formData.append("nonce", window.kitsuneAiPlatformConfig.ajaxNonce);
          formData.append("workflow_data", JSON.stringify(workflowData));
          const response = await fetch(window.kitsuneAiPlatformConfig.ajaxUrl, {
            method: "POST",
            body: formData
          });
          const result = await response.json();
          if (result.success) {
            showNotification("success", result.data.message || "Workflow saved successfully");
            isDirty2.value = false;
            if (!workflowId.value && result.data.workflow_id) {
              workflowId.value = result.data.workflow_id;
            }
          } else {
            throw new Error(result.data ? result.data.message : "Unknown error");
          }
        } catch (error) {
          showNotification("error", error.message || "Failed to save workflow");
        } finally {
          isSaving.value = false;
        }
      };
      onMounted(async () => {
        if (!triggers.value.length && !actions.value.length) {
          await fetchComponents();
        }
        refreshNodeLabels();
        isDirty2.value = false;
        initialized = true;
      });
      function runWorkflow() {
        if (!workflowId.value) return;
        const triggerNode = nodes.value.find((n) => n.type === "trigger");
        if (triggerNode) {
          const triggerDef = triggers.value.find((t) => t.id === triggerNode.componentId);
          const vars = triggerDef?.context_vars || {};
          runTriggerVars.value = vars;
          runContextValues.value = Object.fromEntries(Object.keys(vars).map((k) => [k, ""]));
          runDialogVisible.value = true;
          return;
        }
        doRunWorkflow({});
      }
      async function doRunWorkflow(extraContext) {
        if (!workflowId.value) return;
        isRunning.value = true;
        runDialogVisible.value = false;
        try {
          const formData = new FormData();
          formData.append("action", "kitsune_ai_platform_execute_workflow");
          formData.append("nonce", window.kitsuneAiPlatformConfig.ajaxNonce);
          formData.append("workflow_id", workflowId.value);
          const filteredContext = Object.fromEntries(
            Object.entries(extraContext).filter(([, v2]) => v2 !== "")
          );
          if (Object.keys(filteredContext).length > 0) {
            formData.append("run_context", JSON.stringify(filteredContext));
          }
          const response = await fetch(window.kitsuneAiPlatformConfig.ajaxUrl, { method: "POST", body: formData });
          const result = await response.json();
          if (result.success) {
            showNotification("success", result.data?.message || "Workflow executed successfully");
          } else {
            showNotification("error", result.data?.message || "Failed to execute workflow");
          }
        } catch (error) {
          showNotification("error", "Failed to execute workflow");
        } finally {
          isRunning.value = false;
        }
      }
      function isFieldVisible(field) {
        if (!field.depends_on || typeof field.depends_on !== "object") return true;
        const config = selectedNodeConfig.value;
        for (const [depField, allowedValues] of Object.entries(field.depends_on)) {
          const current = config[depField];
          if (Array.isArray(allowedValues)) {
            if (!allowedValues.includes(current)) return false;
          } else {
            if (current !== allowedValues) return false;
          }
        }
        return true;
      }
      async function fetchKbSources() {
        if (kbSources.list.length > 0) return;
        kbSources.loading = true;
        try {
          const url = `${window.kitsuneAiPlatformConfig.ajaxUrl}?action=ai_platform_kb_get_sources&nonce=${window.kitsuneAiPlatformConfig.ajaxNonce}&per_page=100`;
          const response = await fetch(url);
          const result = await response.json();
          if (result.success && result.data?.data?.sources) {
            kbSources.list = result.data.data.sources;
          }
        } catch (e) {
          console.error("fetchKbSources error", e);
        } finally {
          kbSources.loading = false;
        }
      }
      async function fetchPostTypes() {
        if (postTypes.list.length > 0) return;
        postTypes.loading = true;
        try {
          const url = `${window.kitsuneAiPlatformConfig.ajaxUrl}?action=ai_platform_kb_get_wordpress_post_types&nonce=${window.kitsuneAiPlatformConfig.ajaxNonce}`;
          const response = await fetch(url);
          const result = await response.json();
          if (result.success && result.data?.post_types) {
            postTypes.list = result.data.post_types;
          }
        } catch (e) {
          console.error("fetchPostTypes error", e);
        } finally {
          postTypes.loading = false;
        }
      }
      async function fetchPostsForSelector() {
        const ptField = selectedNodeConfig.value?.post_type_select || "post";
        if (posts.cachedPostType !== ptField) {
          posts.list = [];
          posts.cachedPostType = ptField;
        }
        if (posts.list.length > 0) return;
        posts.loading = true;
        try {
          const url = `${window.kitsuneAiPlatformConfig.ajaxUrl}?action=ai_platform_kb_get_wordpress_posts&nonce=${window.kitsuneAiPlatformConfig.ajaxNonce}&post_type=${encodeURIComponent(ptField)}&per_page=50`;
          const response = await fetch(url);
          const result = await response.json();
          if (result.success && result.data?.posts) {
            posts.list = result.data.posts;
          }
        } catch (e) {
          console.error("fetchPostsForSelector error", e);
        } finally {
          posts.loading = false;
        }
      }
      const onSidebarDragStart = (event, type, item) => {
        event.dataTransfer.effectAllowed = "copy";
        event.dataTransfer.setData("application/json", JSON.stringify({
          type,
          componentId: item.id,
          label: item.label
        }));
      };
      const onCanvasDrop = (event) => {
        const data = JSON.parse(event.dataTransfer.getData("application/json"));
        if (data.type === "trigger" && nodes.value.find((n) => n.type === "trigger")) {
          showNotification("warning", "Only one trigger allowed per workflow");
          return;
        }
        const rect = canvasRef.value.getBoundingClientRect();
        const x2 = (event.clientX - rect.left - pan.x) / scale.value;
        const y = (event.clientY - rect.top - pan.y) / scale.value;
        const componentDef = data.type === "trigger" ? triggers.value.find((t) => t.id === data.componentId) : actions.value.find((a2) => a2.id === data.componentId);
        const defaultConfig = {};
        if (componentDef?.config_fields) {
          componentDef.config_fields.forEach((f2) => {
            if (f2.default !== void 0) defaultConfig[f2.name] = f2.default;
          });
        }
        const newNodeId = "node_" + Date.now();
        nodes.value.push({
          id: newNodeId,
          type: data.type,
          componentId: data.componentId,
          label: data.label,
          x: x2 - 128,
          y: y - 20,
          config: defaultConfig
        });
        selectedNode.value = newNodeId;
      };
      const startPan = (event) => {
        isPanning.value = true;
        lastMousePos.x = event.clientX;
        lastMousePos.y = event.clientY;
        canvasRef.value.style.cursor = "grabbing";
      };
      const handleMouseMove = (event) => {
        if (isPanning.value) {
          pan.x += event.clientX - lastMousePos.x;
          pan.y += event.clientY - lastMousePos.y;
          lastMousePos.x = event.clientX;
          lastMousePos.y = event.clientY;
        } else if (draggingNode.value) {
          const dx = (event.clientX - lastMousePos.x) / scale.value;
          const dy = (event.clientY - lastMousePos.y) / scale.value;
          const node = nodes.value.find((n) => n.id === draggingNode.value);
          if (node) {
            node.x += dx;
            node.y += dy;
          }
          lastMousePos.x = event.clientX;
          lastMousePos.y = event.clientY;
        } else if (dragLink.value) {
          const rect = canvasRef.value.getBoundingClientRect();
          dragLink.value.currentX = (event.clientX - rect.left - pan.x) / scale.value;
          dragLink.value.currentY = (event.clientY - rect.top - pan.y) / scale.value;
        }
      };
      const handleMouseUp = () => {
        isPanning.value = false;
        draggingNode.value = null;
        dragLink.value = null;
        if (canvasRef.value) canvasRef.value.style.cursor = "grab";
      };
      const startNodeDrag = (event, id) => {
        draggingNode.value = id;
        selectedNode.value = id;
        lastMousePos.x = event.clientX;
        lastMousePos.y = event.clientY;
      };
      const startLinkDrag = (event, sourceId) => {
        const rect = canvasRef.value.getBoundingClientRect();
        dragLink.value = {
          sourceId,
          currentX: (event.clientX - rect.left - pan.x) / scale.value,
          currentY: (event.clientY - rect.top - pan.y) / scale.value
        };
      };
      const endLinkDrag = (targetId) => {
        if (!dragLink.value) return;
        const sourceId = dragLink.value.sourceId;
        if (sourceId === targetId) return;
        const sourceNode = nodes.value.find((n) => n.id === sourceId);
        const targetNode = nodes.value.find((n) => n.id === targetId);
        if (targetNode.type === "trigger") {
          showNotification("warning", "Cannot connect to a trigger");
          return;
        }
        if (sourceNode.type === "action") {
          const existingLink = links.value.find((l2) => l2.source === sourceId);
          if (existingLink) {
            links.value = links.value.filter((l2) => l2.source !== sourceId);
          }
        }
        if (!links.value.find((l2) => l2.source === sourceId && l2.target === targetId)) {
          links.value.push({ id: "link_" + Date.now(), source: sourceId, target: targetId });
        }
        dragLink.value = null;
      };
      const deleteNode = (index) => {
        const id = nodes.value[index].id;
        nodes.value.splice(index, 1);
        links.value = links.value.filter((l2) => l2.source !== id && l2.target !== id);
      };
      const deleteLink = (index) => links.value.splice(index, 1);
      function clearCanvas() {
        nodes.value = [];
        links.value = [];
        isDirty2.value = false;
      }
      const getNodePortPos = (nodeId, type) => {
        const node = nodes.value.find((n) => n.id === nodeId);
        if (!node) return { x: 0, y: 0 };
        return {
          x: node.x + 128,
          y: type === "out" ? node.y + (node.type === "trigger" ? 80 : 80) + 12 : node.y - 12
        };
      };
      const getLinkPath = (l2) => {
        const s2 = getNodePortPos(l2.source, "out");
        const e = getNodePortPos(l2.target, "in");
        return `M ${s2.x} ${s2.y} C ${s2.x} ${s2.y + 50} ${e.x} ${e.y - 50} ${e.x} ${e.y}`;
      };
      const getTempLinkPath = () => {
        if (!dragLink.value) return "";
        const s2 = getNodePortPos(dragLink.value.sourceId, "out");
        const e = { x: dragLink.value.currentX, y: dragLink.value.currentY };
        return `M ${s2.x} ${s2.y} C ${s2.x} ${s2.y + 50} ${e.x} ${e.y - 50} ${e.x} ${e.y}`;
      };
      const handleZoom = (e) => {
        const d2 = e.deltaY > 0 ? -0.1 : 0.1;
        scale.value = Math.min(Math.max(scale.value + d2, 0.5), 2);
      };
      function refreshNodeLabels() {
        nodes.value.forEach((node) => {
          const list = node.type === "trigger" ? triggers.value : actions.value;
          const found = list.find((item) => item.id === node.componentId);
          if (found) node.label = found.label;
        });
      }
      function resetView() {
        scale.value = 1;
        pan.x = 0;
        pan.y = 0;
      }
      async function copyVariable(key) {
        const text = "{{" + key + "}}";
        try {
          await navigator.clipboard.writeText(text);
          showNotification("success", `Copied: ${text}`);
        } catch {
          showNotification("info", `Variable: ${text}`);
        }
      }
      return (_ctx, _cache) => {
        const _component_el_input = resolveComponent("el-input");
        const _component_el_tag = resolveComponent("el-tag");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_card = resolveComponent("el-card");
        const _component_el_text = resolveComponent("el-text");
        const _component_el_divider = resolveComponent("el-divider");
        const _component_el_scrollbar = resolveComponent("el-scrollbar");
        const _component_el_tooltip = resolveComponent("el-tooltip");
        const _component_el_option = resolveComponent("el-option");
        const _component_el_select = resolveComponent("el-select");
        const _component_el_radio = resolveComponent("el-radio");
        const _component_el_radio_group = resolveComponent("el-radio-group");
        const _component_el_checkbox = resolveComponent("el-checkbox");
        const _component_el_form_item = resolveComponent("el-form-item");
        const _component_el_form = resolveComponent("el-form");
        const _component_el_empty = resolveComponent("el-empty");
        const _component_el_dialog = resolveComponent("el-dialog");
        return openBlock(), createElementBlock(Fragment, null, [
          createBaseVNode("div", _hoisted_1$q, [
            isLoading2.value ? (openBlock(), createBlock(_sfc_main$P, {
              key: 0,
              rows: 10,
              "show-toolbar": false
            })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
              createVNode(_component_el_card, {
                shadow: "never",
                class: "workflow-header"
              }, {
                default: withCtx(() => [
                  createBaseVNode("div", _hoisted_2$p, [
                    createBaseVNode("div", _hoisted_3$l, [
                      createVNode(_component_el_input, {
                        modelValue: workflowName.value,
                        "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => workflowName.value = $event),
                        placeholder: "Enter workflow name...",
                        size: "large",
                        class: "workflow-name-input",
                        onInput: _cache[1] || (_cache[1] = ($event) => isDirty2.value = true)
                      }, null, 8, ["modelValue"]),
                      isDirty2.value ? (openBlock(), createBlock(_component_el_tag, {
                        key: 0,
                        type: "warning",
                        size: "small",
                        effect: "light",
                        class: "unsaved-tag"
                      }, {
                        default: withCtx(() => [..._cache[12] || (_cache[12] = [
                          createTextVNode(" Unsaved ", -1)
                        ])]),
                        _: 1
                      })) : createCommentVNode("", true)
                    ]),
                    createBaseVNode("div", _hoisted_4$j, [
                      workflowId.value ? (openBlock(), createBlock(_component_el_button, {
                        key: 0,
                        type: "success",
                        plain: "",
                        onClick: runWorkflow,
                        loading: isRunning.value
                      }, {
                        default: withCtx(() => [
                          createVNode(_component_el_icon, { class: "mr-1" }, {
                            default: withCtx(() => [
                              createVNode(unref(video_play_default))
                            ]),
                            _: 1
                          }),
                          _cache[13] || (_cache[13] = createTextVNode(" Run Now ", -1))
                        ]),
                        _: 1
                      }, 8, ["loading"])) : createCommentVNode("", true),
                      createVNode(_component_el_button, {
                        onClick: clearCanvas,
                        plain: ""
                      }, {
                        default: withCtx(() => [..._cache[14] || (_cache[14] = [
                          createTextVNode("Clear", -1)
                        ])]),
                        _: 1
                      }),
                      createVNode(_component_el_button, {
                        type: "primary",
                        onClick: saveWorkflow,
                        loading: isSaving.value
                      }, {
                        default: withCtx(() => [..._cache[15] || (_cache[15] = [
                          createTextVNode("Save Workflow", -1)
                        ])]),
                        _: 1
                      }, 8, ["loading"])
                    ])
                  ])
                ]),
                _: 1
              }),
              createBaseVNode("div", _hoisted_5$g, [
                createVNode(_component_el_card, {
                  shadow: "never",
                  class: "workflow-sidebar",
                  "body-style": { padding: 0, height: "100%", display: "flex", flexDirection: "column" }
                }, {
                  header: withCtx(() => [
                    createVNode(_component_el_text, {
                      type: "info",
                      size: "small"
                    }, {
                      default: withCtx(() => [..._cache[16] || (_cache[16] = [
                        createTextVNode("DRAG BLOCKS TO CANVAS", -1)
                      ])]),
                      _: 1
                    })
                  ]),
                  default: withCtx(() => [
                    createVNode(_component_el_scrollbar, { class: "sidebar-scrollbar" }, {
                      default: withCtx(() => [
                        createBaseVNode("div", _hoisted_6$7, [
                          createBaseVNode("div", _hoisted_7$5, [
                            createVNode(_component_el_text, {
                              type: "success",
                              size: "small",
                              tag: "h4",
                              class: "section-title"
                            }, {
                              default: withCtx(() => [..._cache[17] || (_cache[17] = [
                                createTextVNode("TRIGGERS", -1)
                              ])]),
                              _: 1
                            }),
                            createBaseVNode("div", _hoisted_8$5, [
                              (openBlock(true), createElementBlock(Fragment, null, renderList(triggers.value, (trigger2) => {
                                return openBlock(), createBlock(_component_el_card, {
                                  key: trigger2.id,
                                  shadow: "hover",
                                  draggable: "true",
                                  class: "sidebar-block sidebar-block--trigger",
                                  onDragstart: ($event) => onSidebarDragStart($event, "trigger", trigger2)
                                }, {
                                  default: withCtx(() => [
                                    createBaseVNode("div", _hoisted_9$5, [
                                      createVNode(_component_el_icon, {
                                        size: 16,
                                        color: "var(--el-color-success)"
                                      }, {
                                        default: withCtx(() => [
                                          createVNode(unref(lightning_default))
                                        ]),
                                        _: 1
                                      }),
                                      createBaseVNode("div", _hoisted_10$5, [
                                        createVNode(_component_el_text, {
                                          size: "small",
                                          tag: "span"
                                        }, {
                                          default: withCtx(() => [
                                            createTextVNode(toDisplayString(trigger2.label), 1)
                                          ]),
                                          _: 2
                                        }, 1024),
                                        createVNode(_component_el_text, {
                                          type: "info",
                                          size: "small",
                                          class: "block-desc"
                                        }, {
                                          default: withCtx(() => [
                                            createTextVNode(toDisplayString(trigger2.description), 1)
                                          ]),
                                          _: 2
                                        }, 1024)
                                      ])
                                    ])
                                  ]),
                                  _: 2
                                }, 1032, ["onDragstart"]);
                              }), 128))
                            ])
                          ]),
                          createVNode(_component_el_divider),
                          createBaseVNode("div", _hoisted_11$5, [
                            createVNode(_component_el_text, {
                              type: "primary",
                              size: "small",
                              tag: "h4",
                              class: "section-title"
                            }, {
                              default: withCtx(() => [..._cache[18] || (_cache[18] = [
                                createTextVNode("ACTIONS", -1)
                              ])]),
                              _: 1
                            }),
                            createBaseVNode("div", _hoisted_12$3, [
                              (openBlock(true), createElementBlock(Fragment, null, renderList(actions.value, (action) => {
                                return openBlock(), createBlock(_component_el_card, {
                                  key: action.id,
                                  shadow: "hover",
                                  draggable: "true",
                                  class: "sidebar-block sidebar-block--action",
                                  onDragstart: ($event) => onSidebarDragStart($event, "action", action)
                                }, {
                                  default: withCtx(() => [
                                    createBaseVNode("div", _hoisted_13$2, [
                                      createVNode(_component_el_icon, {
                                        size: 16,
                                        color: "var(--el-color-primary)"
                                      }, {
                                        default: withCtx(() => [
                                          createVNode(unref(setting_default))
                                        ]),
                                        _: 1
                                      }),
                                      createBaseVNode("div", _hoisted_14$2, [
                                        createVNode(_component_el_text, {
                                          size: "small",
                                          tag: "span"
                                        }, {
                                          default: withCtx(() => [
                                            createTextVNode(toDisplayString(action.label), 1)
                                          ]),
                                          _: 2
                                        }, 1024),
                                        createVNode(_component_el_text, {
                                          type: "info",
                                          size: "small",
                                          class: "block-desc"
                                        }, {
                                          default: withCtx(() => [
                                            createTextVNode(toDisplayString(action.description), 1)
                                          ]),
                                          _: 2
                                        }, 1024)
                                      ])
                                    ])
                                  ]),
                                  _: 2
                                }, 1032, ["onDragstart"]);
                              }), 128))
                            ])
                          ])
                        ])
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                }),
                createBaseVNode("div", {
                  class: "flex-1 bg-gray-50 relative overflow-hidden",
                  ref_key: "canvasRef",
                  ref: canvasRef,
                  onDrop: onCanvasDrop,
                  onDragover: _cache[4] || (_cache[4] = withModifiers(() => {
                  }, ["prevent"])),
                  onMousedown: startPan,
                  onMousemove: handleMouseMove,
                  onMouseup: handleMouseUp,
                  onWheel: withModifiers(handleZoom, ["prevent"]),
                  style: normalizeStyle([{ "cursor": "grab" }, {
                    backgroundImage: "radial-gradient(#cbd5e1 1px, transparent 1px)",
                    backgroundSize: `${20 * scale.value}px ${20 * scale.value}px`,
                    backgroundPosition: `${pan.x}px ${pan.y}px`
                  }])
                }, [
                  createBaseVNode("div", {
                    style: normalizeStyle({ transform: `translate(${pan.x}px, ${pan.y}px) scale(${scale.value})`, transformOrigin: "0 0" }),
                    class: "w-full h-full relative"
                  }, [
                    (openBlock(), createElementBlock("svg", _hoisted_15$2, [
                      (openBlock(true), createElementBlock(Fragment, null, renderList(links.value, (link, index) => {
                        return openBlock(), createElementBlock("path", {
                          key: link.id,
                          d: getLinkPath(link),
                          class: "stroke-gray-400 stroke-2 fill-transparent hover:stroke-blue-500 cursor-pointer",
                          onClick: withModifiers(($event) => deleteLink(index), ["stop"])
                        }, null, 8, _hoisted_16$2);
                      }), 128)),
                      dragLink.value ? (openBlock(), createElementBlock("path", {
                        key: 0,
                        d: getTempLinkPath(),
                        class: "stroke-blue-400 stroke-2 fill-transparent border-dashed",
                        "stroke-dasharray": "5,5"
                      }, null, 8, _hoisted_17$2)) : createCommentVNode("", true)
                    ])),
                    (openBlock(true), createElementBlock(Fragment, null, renderList(nodes.value, (node, index) => {
                      return openBlock(), createBlock(_component_el_card, {
                        key: node.id,
                        shadow: "always",
                        "body-style": { padding: "0" },
                        class: normalizeClass(["workflow-node", { "is-selected": selectedNode.value === node.id }]),
                        style: normalizeStyle({ left: `${node.x}px`, top: `${node.y}px` }),
                        onMousedown: withModifiers(($event) => startNodeDrag($event, node.id), ["stop"])
                      }, {
                        default: withCtx(() => [
                          createBaseVNode("div", {
                            class: normalizeClass(["node-header", node.type === "trigger" ? "node-header--trigger" : "node-header--action"])
                          }, [
                            createVNode(_component_el_tag, {
                              type: node.type === "trigger" ? "success" : "primary",
                              size: "small",
                              effect: "light"
                            }, {
                              default: withCtx(() => [
                                createTextVNode(toDisplayString(node.type.toUpperCase()), 1)
                              ]),
                              _: 2
                            }, 1032, ["type"]),
                            createBaseVNode("div", _hoisted_18$2, [
                              createVNode(_component_el_button, {
                                size: "small",
                                type: "primary",
                                plain: "",
                                onClick: withModifiers(($event) => selectedNode.value = node.id, ["stop"])
                              }, {
                                default: withCtx(() => [
                                  createVNode(_component_el_icon, null, {
                                    default: withCtx(() => [
                                      createVNode(unref(setting_default))
                                    ]),
                                    _: 1
                                  })
                                ]),
                                _: 1
                              }, 8, ["onClick"]),
                              createVNode(_component_el_button, {
                                size: "small",
                                type: "danger",
                                plain: "",
                                onClick: withModifiers(($event) => deleteNode(index), ["stop"])
                              }, {
                                default: withCtx(() => [
                                  createVNode(_component_el_icon, null, {
                                    default: withCtx(() => [
                                      createVNode(unref(close_default))
                                    ]),
                                    _: 1
                                  })
                                ]),
                                _: 1
                              }, 8, ["onClick"])
                            ])
                          ], 2),
                          createBaseVNode("div", _hoisted_19$2, [
                            createVNode(_component_el_icon, {
                              size: 18,
                              color: node.type === "trigger" ? "var(--el-color-success)" : "var(--el-color-primary)"
                            }, {
                              default: withCtx(() => [
                                (openBlock(), createBlock(resolveDynamicComponent(node.type === "trigger" ? unref(lightning_default) : unref(setting_default))))
                              ]),
                              _: 2
                            }, 1032, ["color"]),
                            createVNode(_component_el_text, {
                              size: "default",
                              tag: "span"
                            }, {
                              default: withCtx(() => [
                                createTextVNode(toDisplayString(node.label), 1)
                              ]),
                              _: 2
                            }, 1024)
                          ]),
                          node.type === "action" ? (openBlock(), createElementBlock("div", {
                            key: 0,
                            class: "node-port node-port--input",
                            onMouseup: ($event) => endLinkDrag(node.id)
                          }, [..._cache[19] || (_cache[19] = [
                            createBaseVNode("div", { class: "node-port-dot" }, null, -1)
                          ])], 40, _hoisted_20$2)) : createCommentVNode("", true),
                          createBaseVNode("div", {
                            class: "node-port node-port--output",
                            onMousedown: withModifiers(($event) => startLinkDrag($event, node.id), ["stop"])
                          }, [..._cache[20] || (_cache[20] = [
                            createBaseVNode("div", { class: "node-port-dot" }, null, -1)
                          ])], 40, _hoisted_21$2)
                        ]),
                        _: 2
                      }, 1032, ["class", "style", "onMousedown"]);
                    }), 128))
                  ], 4),
                  nodes.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_22$2, [
                    createVNode(_component_el_icon, {
                      size: 52,
                      color: "var(--el-border-color-darker)"
                    }, {
                      default: withCtx(() => [
                        createVNode(unref(connection_default))
                      ]),
                      _: 1
                    }),
                    _cache[21] || (_cache[21] = createBaseVNode("p", null, [
                      createTextVNode("Drag a "),
                      createBaseVNode("strong", null, "Trigger"),
                      createTextVNode(" from the sidebar to get started")
                    ], -1)),
                    _cache[22] || (_cache[22] = createBaseVNode("p", { class: "canvas-hint-sub" }, [
                      createTextVNode("Then connect "),
                      createBaseVNode("strong", null, "Action"),
                      createTextVNode(" blocks to build your workflow")
                    ], -1))
                  ])) : createCommentVNode("", true),
                  createVNode(_component_el_card, {
                    shadow: "always",
                    class: "canvas-controls"
                  }, {
                    default: withCtx(() => [
                      createVNode(_component_el_button, {
                        size: "small",
                        onClick: _cache[2] || (_cache[2] = ($event) => scale.value = Math.min(scale.value + 0.1, 2))
                      }, {
                        default: withCtx(() => [
                          createVNode(_component_el_icon, { class: "mr-1" }, {
                            default: withCtx(() => [
                              createVNode(unref(plus_default))
                            ]),
                            _: 1
                          })
                        ]),
                        _: 1
                      }),
                      createVNode(_component_el_text, {
                        size: "small",
                        class: "zoom-text"
                      }, {
                        default: withCtx(() => [
                          createTextVNode(toDisplayString(Math.round(scale.value * 100)) + "%", 1)
                        ]),
                        _: 1
                      }),
                      createVNode(_component_el_button, {
                        size: "small",
                        onClick: _cache[3] || (_cache[3] = ($event) => scale.value = Math.max(scale.value - 0.1, 0.5))
                      }, {
                        default: withCtx(() => [
                          createVNode(_component_el_icon, { class: "mr-1" }, {
                            default: withCtx(() => [
                              createVNode(unref(minus_default))
                            ]),
                            _: 1
                          })
                        ]),
                        _: 1
                      }),
                      createVNode(_component_el_divider, { style: { "margin": "4px 0" } }),
                      createVNode(_component_el_tooltip, {
                        content: "Reset View",
                        placement: "left"
                      }, {
                        default: withCtx(() => [
                          createVNode(_component_el_button, {
                            size: "small",
                            onClick: resetView
                          }, {
                            default: withCtx(() => [
                              createVNode(_component_el_icon, null, {
                                default: withCtx(() => [
                                  createVNode(unref(aim_default))
                                ]),
                                _: 1
                              })
                            ]),
                            _: 1
                          })
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  })
                ], 36),
                selectedNode.value ? (openBlock(), createBlock(_component_el_card, {
                  key: 0,
                  shadow: "never",
                  class: "settings-sidebar",
                  "body-style": { padding: 0, height: "100%", display: "flex", flexDirection: "column" }
                }, {
                  header: withCtx(() => [
                    createBaseVNode("div", _hoisted_23$1, [
                      createBaseVNode("div", null, [
                        createVNode(_component_el_text, {
                          size: "default",
                          tag: "h3"
                        }, {
                          default: withCtx(() => [
                            createTextVNode("Configure " + toDisplayString(selectedNodeData.value?.label), 1)
                          ]),
                          _: 1
                        }),
                        createVNode(_component_el_text, {
                          type: "info",
                          size: "small"
                        }, {
                          default: withCtx(() => [
                            createTextVNode(toDisplayString(selectedNodeData.value?.type === "trigger" ? "Trigger" : "Action") + " Settings ", 1)
                          ]),
                          _: 1
                        })
                      ]),
                      createVNode(_component_el_button, {
                        size: "small",
                        onClick: _cache[5] || (_cache[5] = ($event) => selectedNode.value = null)
                      }, {
                        default: withCtx(() => [
                          createVNode(_component_el_icon, { class: "mr-1" }, {
                            default: withCtx(() => [
                              createVNode(unref(close_default))
                            ]),
                            _: 1
                          }),
                          _cache[23] || (_cache[23] = createTextVNode(" Close ", -1))
                        ]),
                        _: 1
                      })
                    ])
                  ]),
                  default: withCtx(() => [
                    createVNode(_component_el_scrollbar, { class: "settings-scrollbar" }, {
                      default: withCtx(() => [
                        createBaseVNode("div", _hoisted_24$1, [
                          selectedNodeData.value?.config_fields && selectedNodeData.value.config_fields.length > 0 ? (openBlock(), createBlock(_component_el_form, {
                            key: 0,
                            "label-position": "top",
                            size: "default"
                          }, {
                            default: withCtx(() => [
                              (openBlock(true), createElementBlock(Fragment, null, renderList(selectedNodeData.value.config_fields, (field) => {
                                return openBlock(), createElementBlock(Fragment, {
                                  key: field.name
                                }, [
                                  isFieldVisible(field) ? (openBlock(), createBlock(_component_el_form_item, {
                                    key: 0,
                                    label: field.label
                                  }, {
                                    default: withCtx(() => [
                                      field.type === "select" ? (openBlock(), createBlock(_component_el_select, {
                                        key: 0,
                                        modelValue: selectedNodeConfig.value[field.name],
                                        "onUpdate:modelValue": ($event) => selectedNodeConfig.value[field.name] = $event,
                                        style: { "width": "100%" },
                                        clearable: ""
                                      }, {
                                        default: withCtx(() => [
                                          Array.isArray(field.options) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(field.options, (opt) => {
                                            return openBlock(), createBlock(_component_el_option, {
                                              key: opt,
                                              label: opt,
                                              value: opt
                                            }, null, 8, ["label", "value"]);
                                          }), 128)) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(field.options, (label, value) => {
                                            return openBlock(), createBlock(_component_el_option, {
                                              key: value,
                                              label,
                                              value
                                            }, null, 8, ["label", "value"]);
                                          }), 128))
                                        ]),
                                        _: 2
                                      }, 1032, ["modelValue", "onUpdate:modelValue"])) : field.type === "multiselect" ? (openBlock(), createBlock(_component_el_select, {
                                        key: 1,
                                        modelValue: selectedNodeConfig.value[field.name],
                                        "onUpdate:modelValue": ($event) => selectedNodeConfig.value[field.name] = $event,
                                        style: { "width": "100%" },
                                        multiple: "",
                                        "collapse-tags": "",
                                        "collapse-tags-tooltip": "",
                                        placeholder: field.placeholder || "Select…",
                                        clearable: ""
                                      }, {
                                        default: withCtx(() => [
                                          Array.isArray(field.options) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(field.options, (opt) => {
                                            return openBlock(), createBlock(_component_el_option, {
                                              key: opt,
                                              label: opt,
                                              value: opt
                                            }, null, 8, ["label", "value"]);
                                          }), 128)) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(field.options, (label, value) => {
                                            return openBlock(), createBlock(_component_el_option, {
                                              key: value,
                                              label,
                                              value
                                            }, null, 8, ["label", "value"]);
                                          }), 128))
                                        ]),
                                        _: 2
                                      }, 1032, ["modelValue", "onUpdate:modelValue", "placeholder"])) : field.type === "radio" ? (openBlock(), createBlock(_component_el_radio_group, {
                                        key: 2,
                                        modelValue: selectedNodeConfig.value[field.name],
                                        "onUpdate:modelValue": ($event) => selectedNodeConfig.value[field.name] = $event,
                                        class: "field-radio-group"
                                      }, {
                                        default: withCtx(() => [
                                          Array.isArray(field.options) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(field.options, (opt) => {
                                            return openBlock(), createBlock(_component_el_radio, {
                                              key: opt,
                                              value: opt
                                            }, {
                                              default: withCtx(() => [
                                                createTextVNode(toDisplayString(opt), 1)
                                              ]),
                                              _: 2
                                            }, 1032, ["value"]);
                                          }), 128)) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(field.options, (label, value) => {
                                            return openBlock(), createBlock(_component_el_radio, {
                                              key: value,
                                              value
                                            }, {
                                              default: withCtx(() => [
                                                createTextVNode(toDisplayString(label), 1)
                                              ]),
                                              _: 2
                                            }, 1032, ["value"]);
                                          }), 128))
                                        ]),
                                        _: 2
                                      }, 1032, ["modelValue", "onUpdate:modelValue"])) : field.type === "textarea" ? (openBlock(), createBlock(_component_el_input, {
                                        key: 3,
                                        modelValue: selectedNodeConfig.value[field.name],
                                        "onUpdate:modelValue": ($event) => selectedNodeConfig.value[field.name] = $event,
                                        type: "textarea",
                                        rows: field.rows || 3,
                                        placeholder: field.placeholder || field.label
                                      }, null, 8, ["modelValue", "onUpdate:modelValue", "rows", "placeholder"])) : field.type === "checkbox" ? (openBlock(), createBlock(_component_el_checkbox, {
                                        key: 4,
                                        modelValue: selectedNodeConfig.value[field.name],
                                        "onUpdate:modelValue": ($event) => selectedNodeConfig.value[field.name] = $event
                                      }, {
                                        default: withCtx(() => [
                                          createTextVNode(toDisplayString(field.checkbox_label || field.label), 1)
                                        ]),
                                        _: 2
                                      }, 1032, ["modelValue", "onUpdate:modelValue"])) : field.type === "kb_selector" ? (openBlock(), createBlock(_component_el_select, {
                                        key: 5,
                                        modelValue: selectedNodeConfig.value[field.name],
                                        "onUpdate:modelValue": ($event) => selectedNodeConfig.value[field.name] = $event,
                                        placeholder: "Select Knowledge Base",
                                        style: { "width": "100%" },
                                        loading: kbSources.loading,
                                        onVisibleChange: _cache[6] || (_cache[6] = (v2) => v2 && fetchKbSources())
                                      }, {
                                        default: withCtx(() => [
                                          (openBlock(true), createElementBlock(Fragment, null, renderList(kbSources.list, (kb) => {
                                            return openBlock(), createBlock(_component_el_option, {
                                              key: kb.id,
                                              label: kb.name,
                                              value: String(kb.id)
                                            }, null, 8, ["label", "value"]);
                                          }), 128))
                                        ]),
                                        _: 1
                                      }, 8, ["modelValue", "onUpdate:modelValue", "loading"])) : field.type === "post_type_selector" ? (openBlock(), createBlock(_component_el_select, {
                                        key: 6,
                                        modelValue: selectedNodeConfig.value[field.name],
                                        "onUpdate:modelValue": ($event) => selectedNodeConfig.value[field.name] = $event,
                                        placeholder: "Select Post Type",
                                        style: { "width": "100%" },
                                        loading: postTypes.loading,
                                        onVisibleChange: _cache[7] || (_cache[7] = (v2) => v2 && fetchPostTypes())
                                      }, {
                                        default: withCtx(() => [
                                          (openBlock(true), createElementBlock(Fragment, null, renderList(postTypes.list, (pt2) => {
                                            return openBlock(), createBlock(_component_el_option, {
                                              key: pt2.id,
                                              label: pt2.name,
                                              value: pt2.id
                                            }, null, 8, ["label", "value"]);
                                          }), 128))
                                        ]),
                                        _: 1
                                      }, 8, ["modelValue", "onUpdate:modelValue", "loading"])) : field.type === "post_selector" ? (openBlock(), createBlock(_component_el_select, {
                                        key: 7,
                                        modelValue: selectedNodeConfig.value[field.name],
                                        "onUpdate:modelValue": ($event) => selectedNodeConfig.value[field.name] = $event,
                                        placeholder: "Select Post",
                                        style: { "width": "100%" },
                                        filterable: "",
                                        loading: posts.loading,
                                        onVisibleChange: _cache[8] || (_cache[8] = (v2) => v2 && fetchPostsForSelector())
                                      }, {
                                        default: withCtx(() => [
                                          (openBlock(true), createElementBlock(Fragment, null, renderList(posts.list, (post) => {
                                            return openBlock(), createBlock(_component_el_option, {
                                              key: post.id,
                                              label: post.title,
                                              value: String(post.id)
                                            }, null, 8, ["label", "value"]);
                                          }), 128))
                                        ]),
                                        _: 1
                                      }, 8, ["modelValue", "onUpdate:modelValue", "loading"])) : (openBlock(), createBlock(_component_el_input, {
                                        key: 8,
                                        modelValue: selectedNodeConfig.value[field.name],
                                        "onUpdate:modelValue": ($event) => selectedNodeConfig.value[field.name] = $event,
                                        placeholder: field.placeholder || field.label
                                      }, null, 8, ["modelValue", "onUpdate:modelValue", "placeholder"]))
                                    ]),
                                    _: 2
                                  }, 1032, ["label"])) : createCommentVNode("", true)
                                ], 64);
                              }), 128))
                            ]),
                            _: 1
                          })) : (openBlock(), createBlock(_component_el_empty, {
                            key: 1,
                            description: "No configuration needed for this component.",
                            "image-size": 80
                          })),
                          triggerContextVars.value && Object.keys(triggerContextVars.value).length > 0 ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
                            createVNode(_component_el_divider, {
                              "content-position": "left",
                              style: { "margin": "20px 0 12px" }
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_text, {
                                  type: "info",
                                  size: "small"
                                }, {
                                  default: withCtx(() => [
                                    createTextVNode(toDisplayString(selectedNodeData.value?.type === "trigger" ? "Exposed Variables" : "Available Variables"), 1)
                                  ]),
                                  _: 1
                                })
                              ]),
                              _: 1
                            }),
                            createVNode(_component_el_text, {
                              type: "info",
                              size: "small",
                              class: "context-vars-hint"
                            }, {
                              default: withCtx(() => [
                                createTextVNode(toDisplayString(selectedNodeData.value?.type === "trigger" ? "Variables this trigger exposes to downstream actions:" : "Click to copy — paste into text fields:"), 1)
                              ]),
                              _: 1
                            }),
                            createBaseVNode("div", _hoisted_25$1, [
                              (openBlock(true), createElementBlock(Fragment, null, renderList(triggerContextVars.value, (label, key) => {
                                return openBlock(), createBlock(_component_el_tooltip, {
                                  key,
                                  content: label,
                                  placement: "top"
                                }, {
                                  default: withCtx(() => [
                                    createVNode(_component_el_tag, {
                                      class: "context-var-tag",
                                      size: "small",
                                      effect: "plain",
                                      onClick: ($event) => copyVariable(key)
                                    }, {
                                      default: withCtx(() => [
                                        createTextVNode(toDisplayString("{{" + key + "}}"), 1)
                                      ]),
                                      _: 2
                                    }, 1032, ["onClick"])
                                  ]),
                                  _: 2
                                }, 1032, ["content"]);
                              }), 128))
                            ])
                          ], 64)) : createCommentVNode("", true)
                        ])
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                })) : createCommentVNode("", true)
              ])
            ], 64))
          ]),
          createVNode(_component_el_dialog, {
            modelValue: runDialogVisible.value,
            "onUpdate:modelValue": _cache[11] || (_cache[11] = ($event) => runDialogVisible.value = $event),
            title: "Simulate Trigger — Provide Variable Values",
            width: "480px",
            "close-on-click-modal": false
          }, {
            footer: withCtx(() => [
              createVNode(_component_el_button, {
                onClick: _cache[9] || (_cache[9] = ($event) => runDialogVisible.value = false)
              }, {
                default: withCtx(() => [..._cache[25] || (_cache[25] = [
                  createTextVNode("Cancel", -1)
                ])]),
                _: 1
              }),
              createVNode(_component_el_button, {
                type: "primary",
                loading: isRunning.value,
                onClick: _cache[10] || (_cache[10] = ($event) => doRunWorkflow(runContextValues.value))
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_icon, { class: "mr-1" }, {
                    default: withCtx(() => [
                      createVNode(unref(video_play_default))
                    ]),
                    _: 1
                  }),
                  _cache[26] || (_cache[26] = createTextVNode(" Run Workflow ", -1))
                ]),
                _: 1
              }, 8, ["loading"])
            ]),
            default: withCtx(() => [
              createVNode(_component_el_text, {
                type: "info",
                size: "small",
                style: { "display": "block", "margin-bottom": "16px" }
              }, {
                default: withCtx(() => [..._cache[24] || (_cache[24] = [
                  createTextVNode(" This workflow is triggered by an event. Fill in test values to simulate the trigger context. Fields left empty will be skipped. ", -1)
                ])]),
                _: 1
              }),
              createVNode(_component_el_form, {
                "label-position": "top",
                size: "default"
              }, {
                default: withCtx(() => [
                  (openBlock(true), createElementBlock(Fragment, null, renderList(runTriggerVars.value, (label, key) => {
                    return openBlock(), createBlock(_component_el_form_item, {
                      key,
                      label
                    }, {
                      default: withCtx(() => [
                        createVNode(_component_el_input, {
                          modelValue: runContextValues.value[key],
                          "onUpdate:modelValue": ($event) => runContextValues.value[key] = $event,
                          placeholder: "e.g. value for " + key,
                          clearable: ""
                        }, null, 8, ["modelValue", "onUpdate:modelValue", "placeholder"])
                      ]),
                      _: 2
                    }, 1032, ["label"]);
                  }), 128))
                ]),
                _: 1
              })
            ]),
            _: 1
          }, 8, ["modelValue"])
        ], 64);
      };
    }
  });
  const Workflows = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["__scopeId", "data-v-38560554"]]);
  const _hoisted_1$p = { class: "flex items-start justify-between gap-4" };
  const _hoisted_2$o = { class: "font-semibold text-lg text-gray-900" };
  const _hoisted_3$k = { class: "font-medium text-gray-900" };
  const _hoisted_4$i = { class: "font-medium text-gray-900" };
  const _sfc_main$q = {
    __name: "WorkflowCardList",
    props: {
      workflows: {
        type: Array,
        default: () => []
      },
      filteredWorkflows: {
        type: Array,
        default: () => []
      },
      loading: {
        type: Boolean,
        default: false
      }
    },
    emits: ["create", "edit", "toggle", "delete", "run"],
    setup(__props, { emit: __emit }) {
      const props2 = __props;
      const showEmptyState = computed(() => !props2.loading && props2.filteredWorkflows.length === 0);
      const emptyDescription = computed(
        () => props2.workflows.length === 0 ? "No workflows created yet" : "No workflows found"
      );
      const showCreateButton = computed(() => props2.workflows.length === 0);
      const formatTriggerType = (type) => {
        const labels = {
          post_updated: "Post Updated",
          publish_post: "Post Published",
          trashed_post: "Post Trashed",
          comment_post: "New Comment",
          add_attachment: "File Uploaded",
          delete_attachment: "Attachment Deleted",
          init: "System Init"
        };
        return labels[type] || type;
      };
      return (_ctx, _cache) => {
        const _component_el_button = resolveComponent("el-button");
        const _component_el_empty = resolveComponent("el-empty");
        const _component_el_tag = resolveComponent("el-tag");
        const _component_el_col = resolveComponent("el-col");
        const _component_el_row = resolveComponent("el-row");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_card = resolveComponent("el-card");
        return openBlock(), createElementBlock("div", null, [
          showEmptyState.value ? (openBlock(), createBlock(_component_el_empty, {
            key: 0,
            description: emptyDescription.value
          }, {
            default: withCtx(() => [
              showCreateButton.value ? (openBlock(), createBlock(_component_el_button, {
                key: 0,
                type: "primary",
                onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("create"))
              }, {
                default: withCtx(() => [..._cache[1] || (_cache[1] = [
                  createTextVNode("Create Your First Workflow", -1)
                ])]),
                _: 1
              })) : createCommentVNode("", true)
            ]),
            _: 1
          }, 8, ["description"])) : (openBlock(), createBlock(_component_el_row, {
            key: 1,
            gutter: 24
          }, {
            default: withCtx(() => [
              (openBlock(true), createElementBlock(Fragment, null, renderList(__props.filteredWorkflows, (row) => {
                return openBlock(), createBlock(_component_el_col, {
                  key: row.id,
                  span: 24,
                  md: 12,
                  lg: 8
                }, {
                  default: withCtx(() => [
                    createVNode(_component_el_card, {
                      shadow: "hover",
                      class: "workflow-card",
                      onClick: ($event) => _ctx.$emit("edit", row)
                    }, {
                      default: withCtx(() => [
                        createBaseVNode("div", _hoisted_1$p, [
                          createBaseVNode("div", null, [
                            createBaseVNode("h3", _hoisted_2$o, toDisplayString(row.name), 1),
                            createVNode(_component_el_tag, {
                              size: "small",
                              type: "info",
                              class: "mt-2"
                            }, {
                              default: withCtx(() => [
                                createTextVNode(toDisplayString(formatTriggerType(row.trigger_type)), 1)
                              ]),
                              _: 2
                            }, 1024)
                          ])
                        ]),
                        createVNode(_component_el_row, {
                          class: "mt-4 text-sm",
                          gutter: 16
                        }, {
                          default: withCtx(() => [
                            createVNode(_component_el_col, { span: 12 }, {
                              default: withCtx(() => [
                                _cache[2] || (_cache[2] = createBaseVNode("div", { class: "text-gray-500" }, "Runs", -1)),
                                createBaseVNode("div", _hoisted_3$k, toDisplayString(row.run_count || 0), 1)
                              ]),
                              _: 2
                            }, 1024),
                            createVNode(_component_el_col, { span: 12 }, {
                              default: withCtx(() => [
                                _cache[3] || (_cache[3] = createBaseVNode("div", { class: "text-gray-500" }, "Last Run", -1)),
                                createBaseVNode("div", _hoisted_4$i, toDisplayString(row.last_run || "Never"), 1)
                              ]),
                              _: 2
                            }, 1024)
                          ]),
                          _: 2
                        }, 1024),
                        createVNode(_component_el_row, {
                          gutter: 8,
                          class: "mt-6"
                        }, {
                          default: withCtx(() => [
                            createVNode(_component_el_col, { span: 12 }, {
                              default: withCtx(() => [
                                createVNode(_component_el_button, {
                                  plain: "",
                                  class: "w-full",
                                  loading: row.toggling,
                                  onClick: withModifiers(($event) => _ctx.$emit("toggle", row), ["stop"])
                                }, {
                                  default: withCtx(() => [
                                    createVNode(_component_el_icon, { class: "mr-1" }, {
                                      default: withCtx(() => [
                                        row.active ? (openBlock(), createBlock(unref(circle_close_default), { key: 0 })) : (openBlock(), createBlock(unref(circle_check_default), { key: 1 }))
                                      ]),
                                      _: 2
                                    }, 1024),
                                    createTextVNode(" " + toDisplayString(row.active ? "Deactivate" : "Activate"), 1)
                                  ]),
                                  _: 2
                                }, 1032, ["loading", "onClick"])
                              ]),
                              _: 2
                            }, 1024),
                            createVNode(_component_el_col, { span: 12 }, {
                              default: withCtx(() => [
                                createVNode(_component_el_button, {
                                  type: "primary",
                                  plain: "",
                                  class: "w-full",
                                  onClick: withModifiers(($event) => _ctx.$emit("edit", row), ["stop"])
                                }, {
                                  default: withCtx(() => [
                                    createVNode(_component_el_icon, { class: "mr-1" }, {
                                      default: withCtx(() => [
                                        createVNode(unref(edit_default))
                                      ]),
                                      _: 1
                                    }),
                                    _cache[4] || (_cache[4] = createTextVNode(" Edit ", -1))
                                  ]),
                                  _: 1
                                }, 8, ["onClick"])
                              ]),
                              _: 2
                            }, 1024),
                            !row.trigger_type ? (openBlock(), createBlock(_component_el_col, {
                              key: 0,
                              span: 12,
                              class: "mt-2"
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_button, {
                                  type: "success",
                                  plain: "",
                                  class: "w-full",
                                  loading: row.running,
                                  onClick: withModifiers(($event) => _ctx.$emit("run", row), ["stop"])
                                }, {
                                  default: withCtx(() => [
                                    createVNode(_component_el_icon, { class: "mr-1" }, {
                                      default: withCtx(() => [
                                        createVNode(unref(video_play_default))
                                      ]),
                                      _: 1
                                    }),
                                    _cache[5] || (_cache[5] = createTextVNode(" Run Now ", -1))
                                  ]),
                                  _: 1
                                }, 8, ["loading", "onClick"])
                              ]),
                              _: 2
                            }, 1024)) : createCommentVNode("", true),
                            createVNode(_component_el_col, {
                              span: row.trigger_type ? 24 : 12,
                              class: "mt-2"
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_button, {
                                  plain: "",
                                  type: "danger",
                                  class: "w-full",
                                  onClick: withModifiers(($event) => _ctx.$emit("delete", row), ["stop"])
                                }, {
                                  default: withCtx(() => [
                                    createVNode(_component_el_icon, { class: "mr-1" }, {
                                      default: withCtx(() => [
                                        createVNode(unref(delete_default))
                                      ]),
                                      _: 1
                                    }),
                                    _cache[6] || (_cache[6] = createTextVNode(" Delete ", -1))
                                  ]),
                                  _: 1
                                }, 8, ["onClick"])
                              ]),
                              _: 2
                            }, 1032, ["span"])
                          ]),
                          _: 2
                        }, 1024)
                      ]),
                      _: 2
                    }, 1032, ["onClick"])
                  ]),
                  _: 2
                }, 1024);
              }), 128))
            ]),
            _: 1
          }))
        ]);
      };
    }
  };
  const WorkflowCardList = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["__scopeId", "data-v-e6717ba0"]]);
  const _hoisted_1$o = { class: "flex justify-between items-center mb-5" };
  const _hoisted_2$n = { key: 1 };
  const _sfc_main$p = /* @__PURE__ */ Object.assign({ name: "ActiveWorkflows" }, {
    __name: "ActiveWorkflows",
    emits: ["switch-tab", "edit-workflow"],
    setup(__props, { emit: __emit }) {
      const emit2 = __emit;
      const { showNotification } = useNotifications();
      const ajaxUrl = window.kitsuneAiPlatformConfig?.ajaxUrl || "/wp-admin/admin-ajax.php";
      const nonce = window.kitsuneAiPlatformConfig?.ajaxNonce || "";
      const loading = ref(true);
      const searchQuery = ref("");
      const workflows = ref([]);
      const filteredWorkflows = computed(() => {
        if (!searchQuery.value) return workflows.value;
        const query = searchQuery.value.toLowerCase();
        return workflows.value.filter(
          (w2) => w2.name.toLowerCase().includes(query) || w2.trigger_type && w2.trigger_type.toLowerCase().includes(query)
        );
      });
      onMounted(() => fetchWorkflows());
      onActivated(() => fetchWorkflows());
      async function fetchWorkflows() {
        loading.value = true;
        try {
          const formData = new FormData();
          formData.append("action", "kitsune_ai_platform_get_workflows");
          formData.append("nonce", nonce);
          const response = await fetch(ajaxUrl, {
            method: "POST",
            body: formData
          });
          const result = await response.json();
          if (result.success && result.data.workflows) {
            workflows.value = result.data.workflows.map((w2) => ({
              ...w2,
              active: w2.status === "active" || w2.status === "publish",
              toggling: false,
              running: false
            }));
          } else {
            showNotification("error", result.data?.message || "Failed to fetch workflows");
          }
        } catch (error) {
          console.error("Fetch workflows error:", error);
          showNotification("error", "Failed to fetch workflows");
        } finally {
          loading.value = false;
        }
      }
      async function toggleStatus(row) {
        row.toggling = true;
        try {
          const formData = new FormData();
          formData.append("action", "kitsune_ai_platform_toggle_workflow_status");
          formData.append("nonce", nonce);
          formData.append("workflow_id", row.id);
          formData.append("active", row.active ? "1" : "0");
          const response = await fetch(ajaxUrl, {
            method: "POST",
            body: formData
          });
          const result = await response.json();
          if (result.success) {
            showNotification("success", result.data.message);
          } else {
            row.active = !row.active;
            showNotification("error", result.data?.message || "Failed to update status");
          }
        } catch (error) {
          row.active = !row.active;
          showNotification("error", "Failed to update status");
        } finally {
          row.toggling = false;
        }
      }
      function editWorkflow(row) {
        emit2("edit-workflow", row.id);
      }
      function confirmDelete(row) {
        ElMessageBox.confirm(
          `Are you sure you want to delete the workflow "${row.name}"?`,
          "Delete Workflow",
          {
            confirmButtonText: "Delete",
            cancelButtonText: "Cancel",
            type: "warning",
            confirmButtonClass: "el-button--danger"
          }
        ).then(() => {
          deleteWorkflow(row);
        }).catch(() => {
        });
      }
      async function deleteWorkflow(row) {
        try {
          const formData = new FormData();
          formData.append("action", "kitsune_ai_platform_delete_workflow");
          formData.append("nonce", nonce);
          formData.append("workflow_id", row.id);
          const response = await fetch(ajaxUrl, {
            method: "POST",
            body: formData
          });
          const result = await response.json();
          if (result.success) {
            workflows.value = workflows.value.filter((w2) => w2.id !== row.id);
            showNotification("success", "Workflow deleted successfully");
          } else {
            showNotification("error", result.data?.message || "Failed to delete workflow");
          }
        } catch (error) {
          showNotification("error", "Failed to delete workflow");
        }
      }
      function goToBuilder() {
        emit2("switch-tab", "builder");
      }
      async function runWorkflow(row) {
        row.running = true;
        try {
          const formData = new FormData();
          formData.append("action", "kitsune_ai_platform_execute_workflow");
          formData.append("nonce", nonce);
          formData.append("workflow_id", row.id);
          const response = await fetch(ajaxUrl, {
            method: "POST",
            body: formData
          });
          const result = await response.json();
          if (result.success) {
            showNotification("success", result.data?.message || "Workflow executed successfully");
          } else {
            showNotification("error", result.data?.message || "Failed to execute workflow");
          }
        } catch (error) {
          showNotification("error", "Failed to execute workflow");
        } finally {
          row.running = false;
        }
      }
      function handleSearch() {
      }
      return (_ctx, _cache) => {
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_input = resolveComponent("el-input");
        const _component_el_button = resolveComponent("el-button");
        return openBlock(), createElementBlock("div", null, [
          createBaseVNode("div", _hoisted_1$o, [
            createVNode(_component_el_input, {
              modelValue: searchQuery.value,
              "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchQuery.value = $event),
              placeholder: "Search workflows...",
              clearable: "",
              class: "w-64",
              onInput: handleSearch
            }, {
              prefix: withCtx(() => [
                createVNode(_component_el_icon, null, {
                  default: withCtx(() => [
                    createVNode(unref(search_default))
                  ]),
                  _: 1
                })
              ]),
              _: 1
            }, 8, ["modelValue"]),
            createVNode(_component_el_button, {
              type: "primary",
              onClick: goToBuilder
            }, {
              default: withCtx(() => [
                createVNode(_component_el_icon, { class: "mr-2" }, {
                  default: withCtx(() => [
                    createVNode(unref(plus_default))
                  ]),
                  _: 1
                }),
                _cache[1] || (_cache[1] = createTextVNode(" Create New ", -1))
              ]),
              _: 1
            })
          ]),
          loading.value ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            "show-action": false,
            cards: 3
          })) : (openBlock(), createElementBlock("div", _hoisted_2$n, [
            createVNode(WorkflowCardList, {
              workflows: workflows.value,
              "filtered-workflows": filteredWorkflows.value,
              loading: loading.value,
              onCreate: goToBuilder,
              onEdit: editWorkflow,
              onDelete: confirmDelete,
              onToggle: toggleStatus,
              onRun: runWorkflow
            }, null, 8, ["workflows", "filtered-workflows", "loading"])
          ]))
        ]);
      };
    }
  });
  const _hoisted_1$n = { class: "workflow-templates" };
  const _hoisted_2$m = { class: "template-icon" };
  const _hoisted_3$j = { class: "description" };
  const _hoisted_4$h = { class: "template-meta" };
  const _sfc_main$o = /* @__PURE__ */ Object.assign({ name: "WorkflowTemplates" }, {
    __name: "WorkflowTemplates",
    emits: ["use-template"],
    setup(__props, { emit: __emit }) {
      const { showNotification } = useNotifications();
      const emit2 = __emit;
      const ajaxUrl = window.kitsuneAiPlatformConfig?.ajaxUrl || "/wp-admin/admin-ajax.php";
      const nonce = window.kitsuneAiPlatformConfig?.ajaxNonce || "";
      const loading = ref(false);
      const templates = ref([]);
      onMounted(() => fetchTemplates());
      onActivated(() => fetchTemplates());
      async function fetchTemplates() {
        loading.value = true;
        try {
          const formData = new FormData();
          formData.append("action", "kitsune_ai_platform_get_workflow_templates");
          formData.append("nonce", nonce);
          const response = await fetch(ajaxUrl, {
            method: "POST",
            body: formData
          });
          const result = await response.json();
          if (result.success && result.data.templates) {
            templates.value = result.data.templates;
          } else {
            templates.value = getDefaultTemplates();
          }
        } catch (error) {
          console.error("Fetch templates error:", error);
          templates.value = getDefaultTemplates();
        } finally {
          loading.value = false;
        }
      }
      function getDefaultTemplates() {
        return [
          {
            id: "new-post-kb",
            name: "Auto-Update Knowledge Base",
            description: "Automatically add new posts to your AI chatbot knowledge base when published.",
            category: "content",
            trigger: "publish_post",
            config: {
              trigger: {
                type: "publish_post",
                config: { post_type: "post" },
                actions: [
                  {
                    action_type: "update_kb",
                    config: { data_source: "trigger" }
                  }
                ]
              }
            }
          },
          {
            id: "new-post-email",
            name: "New Post Email Notification",
            description: "Send an email notification to admins when a new post is published.",
            category: "notifications",
            trigger: "publish_post",
            config: {
              trigger: {
                type: "publish_post",
                config: { post_type: "post" },
                actions: [
                  {
                    action_type: "send_email",
                    config: {
                      email_source: "template",
                      email_template: "new_post",
                      to: "{{admin_email}}"
                    }
                  }
                ]
              }
            }
          },
          {
            id: "media-upload-kb",
            name: "Media Upload to Knowledge Base",
            description: "Automatically process uploaded media files and add to knowledge base.",
            category: "content",
            trigger: "add_attachment",
            config: {
              trigger: {
                type: "add_attachment",
                config: {},
                actions: [
                  {
                    action_type: "update_kb",
                    config: { data_source: "trigger" }
                  }
                ]
              }
            }
          }
        ];
      }
      function useTemplate(template) {
        emit2("use-template", template);
        showNotification("success", `Template "${template.name}" loaded into builder`);
      }
      function getIcon(category) {
        const icons = {
          "content": document_default,
          "notifications": bell_default,
          "media": upload_default,
          "email": message_default
        };
        return icons[category] || document_default;
      }
      function getIconColor(category) {
        const colors = {
          "content": "#409EFF",
          "notifications": "#E6A23C",
          "integrations": "#67C23A",
          "media": "#909399",
          "email": "#F56C6C"
        };
        return colors[category] || "#409EFF";
      }
      function formatCategory(category) {
        const labels = {
          "content": "Content",
          "notifications": "Notifications",
          "integrations": "Integrations",
          "media": "Media",
          "email": "Email"
        };
        return labels[category] || category;
      }
      function formatTrigger(trigger2) {
        const labels = {
          "save_post": "Post Created/Updated",
          "publish_post": "Post Published",
          "comment_post": "New Comment",
          "add_attachment": "File Uploaded"
        };
        return labels[trigger2] || trigger2;
      }
      return (_ctx, _cache) => {
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_tag = resolveComponent("el-tag");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_card = resolveComponent("el-card");
        const _component_el_col = resolveComponent("el-col");
        const _component_el_row = resolveComponent("el-row");
        const _component_el_empty = resolveComponent("el-empty");
        return openBlock(), createElementBlock("div", _hoisted_1$n, [
          _cache[1] || (_cache[1] = createBaseVNode("div", { class: "templates-intro" }, [
            createBaseVNode("h3", null, "Pre-built Workflow Templates"),
            createBaseVNode("p", { class: "text-muted" }, 'Get started quickly with these ready-to-use automation workflows. Click "Use Template" to add it to the builder.')
          ], -1)),
          loading.value ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            "show-toolbar": false,
            cards: 3
          })) : (openBlock(), createBlock(_component_el_row, {
            key: 1,
            gutter: 20
          }, {
            default: withCtx(() => [
              (openBlock(true), createElementBlock(Fragment, null, renderList(templates.value, (template) => {
                return openBlock(), createBlock(_component_el_col, {
                  key: template.id,
                  span: 24,
                  sm: 12,
                  lg: 8
                }, {
                  default: withCtx(() => [
                    createVNode(_component_el_card, {
                      shadow: "hover",
                      class: "template-card"
                    }, {
                      default: withCtx(() => [
                        createBaseVNode("div", _hoisted_2$m, [
                          createVNode(_component_el_icon, {
                            size: 32,
                            color: getIconColor(template.category)
                          }, {
                            default: withCtx(() => [
                              (openBlock(), createBlock(resolveDynamicComponent(getIcon(template.category))))
                            ]),
                            _: 2
                          }, 1032, ["color"])
                        ]),
                        createBaseVNode("h4", null, toDisplayString(template.name), 1),
                        createBaseVNode("p", _hoisted_3$j, toDisplayString(template.description), 1),
                        createBaseVNode("div", _hoisted_4$h, [
                          createVNode(_component_el_tag, {
                            size: "small",
                            type: "info"
                          }, {
                            default: withCtx(() => [
                              createTextVNode(toDisplayString(formatCategory(template.category)), 1)
                            ]),
                            _: 2
                          }, 1024),
                          template.trigger ? (openBlock(), createBlock(_component_el_tag, {
                            key: 0,
                            size: "small"
                          }, {
                            default: withCtx(() => [
                              createTextVNode(toDisplayString(formatTrigger(template.trigger)), 1)
                            ]),
                            _: 2
                          }, 1024)) : createCommentVNode("", true)
                        ]),
                        createVNode(_component_el_button, {
                          type: "primary",
                          onClick: ($event) => useTemplate(template),
                          class: "use-btn"
                        }, {
                          default: withCtx(() => [..._cache[0] || (_cache[0] = [
                            createTextVNode(" Use Template ", -1)
                          ])]),
                          _: 1
                        }, 8, ["onClick"])
                      ]),
                      _: 2
                    }, 1024)
                  ]),
                  _: 2
                }, 1024);
              }), 128))
            ]),
            _: 1
          })),
          !loading.value && templates.value.length === 0 ? (openBlock(), createBlock(_component_el_empty, {
            key: 2,
            description: "No templates available"
          })) : createCommentVNode("", true)
        ]);
      };
    }
  });
  const WorkflowTemplates = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["__scopeId", "data-v-a4541da0"]]);
  const _hoisted_1$m = { class: "scheduled-tasks" };
  const _hoisted_2$l = { class: "toolbar" };
  const _hoisted_3$i = { class: "task-name" };
  const _hoisted_4$g = { class: "text-muted" };
  const _hoisted_5$f = { class: "text-muted" };
  const _hoisted_6$6 = { class: "task-actions" };
  const _sfc_main$n = /* @__PURE__ */ Object.assign({ name: "ScheduledTasks" }, {
    __name: "ScheduledTasks",
    setup(__props) {
      const { showNotification } = useNotifications();
      const ajaxUrl = window.kitsuneAiPlatformConfig?.ajaxUrl || "/wp-admin/admin-ajax.php";
      const nonce = window.kitsuneAiPlatformConfig?.ajaxNonce || "";
      const loading = ref(true);
      const saving = ref(false);
      const searchQuery = ref("");
      const tasks = ref([]);
      const workflowOptions = ref([]);
      const frequencyOptions = ref({});
      const dialogVisible = ref(false);
      const editingTask = ref(null);
      const formRef = ref(null);
      const form = ref({
        name: "",
        workflow_id: "",
        frequency: "daily",
        start_date: "",
        end_date: "",
        time_of_day: "09:00",
        active: true
      });
      const formRules = {
        name: [{ required: true, message: "Please enter task name", trigger: "blur" }],
        workflow_id: [{ required: true, message: "Please select a workflow", trigger: "change" }],
        frequency: [{ required: true, message: "Please select frequency", trigger: "change" }],
        start_date: [{ required: true, message: "Please select start date", trigger: "change" }],
        time_of_day: [{ required: true, message: "Please select time", trigger: "change" }]
      };
      const filteredTasks = computed(() => {
        if (!searchQuery.value) return tasks.value;
        const query = searchQuery.value.toLowerCase();
        return tasks.value.filter(
          (t) => t.name.toLowerCase().includes(query) || t.workflow_name && t.workflow_name.toLowerCase().includes(query)
        );
      });
      onMounted(() => {
        fetchTasks();
        fetchWorkflows();
      });
      onActivated(() => {
        fetchTasks();
        fetchWorkflows();
      });
      async function fetchTasks() {
        loading.value = true;
        try {
          const formData = new FormData();
          formData.append("action", "kitsune_ai_platform_get_scheduled_tasks");
          formData.append("nonce", nonce);
          const response = await fetch(ajaxUrl, {
            method: "POST",
            body: formData
          });
          const result = await response.json();
          if (result.success) {
            tasks.value = (result.data.tasks || []).map((t) => ({
              ...t,
              active: t.status === "active",
              toggling: false,
              running: false
            }));
            frequencyOptions.value = result.data.frequency_options || {};
          } else {
            showNotification("error", result.data?.message || "Failed to fetch scheduled tasks");
          }
        } catch (error) {
          console.error("Fetch tasks error:", error);
          showNotification("error", "Failed to fetch scheduled tasks");
        } finally {
          loading.value = false;
        }
      }
      async function fetchWorkflows() {
        try {
          const formData = new FormData();
          formData.append("action", "kitsune_ai_platform_get_workflows");
          formData.append("nonce", nonce);
          const response = await fetch(ajaxUrl, {
            method: "POST",
            body: formData
          });
          const result = await response.json();
          if (result.success && result.data.workflows) {
            workflowOptions.value = result.data.workflows.filter((w2) => w2.status === "active" || w2.status === "publish");
          }
        } catch (error) {
          console.error("Fetch workflows error:", error);
        }
      }
      function openAddDialog() {
        editingTask.value = null;
        form.value = {
          name: "",
          workflow_id: "",
          frequency: "daily",
          start_date: (/* @__PURE__ */ new Date()).toISOString().split("T")[0],
          end_date: "",
          time_of_day: "09:00",
          active: true
        };
        dialogVisible.value = true;
      }
      function editTask(row) {
        editingTask.value = row;
        form.value = {
          id: row.id,
          name: row.name,
          workflow_id: row.workflow_id,
          frequency: row.frequency,
          start_date: row.start_date,
          end_date: row.end_date || "",
          time_of_day: row.time_of_day,
          active: row.status === "active"
        };
        dialogVisible.value = true;
      }
      async function saveTask() {
        if (!formRef.value) return;
        try {
          await formRef.value.validate();
        } catch (e) {
          return;
        }
        saving.value = true;
        try {
          const formData = new FormData();
          formData.append("action", "kitsune_ai_platform_save_scheduled_task");
          formData.append("nonce", nonce);
          formData.append("task_data", JSON.stringify(form.value));
          const response = await fetch(ajaxUrl, {
            method: "POST",
            body: formData
          });
          const result = await response.json();
          if (result.success) {
            showNotification("success", result.data.message);
            dialogVisible.value = false;
            fetchTasks();
          } else {
            showNotification("error", result.data?.message || "Failed to save scheduled task");
          }
        } catch (error) {
          showNotification("error", "Failed to save scheduled task");
        } finally {
          saving.value = false;
        }
      }
      function confirmDelete(row) {
        ElMessageBox.confirm(
          `Are you sure you want to delete the scheduled task "${row.name}"?`,
          "Delete Scheduled Task",
          {
            confirmButtonText: "Delete",
            cancelButtonText: "Cancel",
            type: "warning",
            confirmButtonClass: "el-button--danger"
          }
        ).then(() => {
          deleteTask(row);
        }).catch(() => {
        });
      }
      async function deleteTask(row) {
        try {
          const formData = new FormData();
          formData.append("action", "kitsune_ai_platform_delete_scheduled_task");
          formData.append("nonce", nonce);
          formData.append("task_id", row.id);
          const response = await fetch(ajaxUrl, {
            method: "POST",
            body: formData
          });
          const result = await response.json();
          if (result.success) {
            tasks.value = tasks.value.filter((t) => t.id !== row.id);
            showNotification("success", "Scheduled task deleted successfully");
          } else {
            showNotification("error", result.data?.message || "Failed to delete scheduled task");
          }
        } catch (error) {
          showNotification("error", "Failed to delete scheduled task");
        }
      }
      async function toggleTaskStatus(row, newActive) {
        row.toggling = true;
        try {
          const formData = new FormData();
          formData.append("action", "kitsune_ai_platform_toggle_scheduled_task");
          formData.append("nonce", nonce);
          formData.append("task_id", row.id);
          formData.append("active", newActive ? "1" : "0");
          const response = await fetch(ajaxUrl, { method: "POST", body: formData });
          const result = await response.json();
          if (result.success) {
            row.status = result.data.status;
            if (result.data.next_run) row.next_run = result.data.next_run;
            showNotification("success", result.data.message);
          } else {
            row.active = !newActive;
            showNotification("error", result.data?.message || "Failed to update status");
          }
        } catch (error) {
          row.active = !newActive;
          showNotification("error", "Failed to update status");
        } finally {
          row.toggling = false;
        }
      }
      async function runTaskNow(row) {
        row.running = true;
        try {
          const formData = new FormData();
          formData.append("action", "kitsune_ai_platform_run_scheduled_task_now");
          formData.append("nonce", nonce);
          formData.append("task_id", row.id);
          const response = await fetch(ajaxUrl, { method: "POST", body: formData });
          const result = await response.json();
          if (result.success) {
            if (result.data.last_run) row.last_run = result.data.last_run;
            showNotification("success", result.data.message || "Task executed successfully");
          } else {
            showNotification("error", result.data?.message || "Failed to execute task");
          }
        } catch (error) {
          showNotification("error", "Failed to execute task");
        } finally {
          row.running = false;
        }
      }
      function formatFrequency(frequency) {
        return frequencyOptions.value[frequency] || frequency;
      }
      return (_ctx, _cache) => {
        const _component_el_input = resolveComponent("el-input");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_table_column = resolveComponent("el-table-column");
        const _component_el_tag = resolveComponent("el-tag");
        const _component_el_switch = resolveComponent("el-switch");
        const _component_el_table = resolveComponent("el-table");
        const _component_el_empty = resolveComponent("el-empty");
        const _component_el_form_item = resolveComponent("el-form-item");
        const _component_el_option = resolveComponent("el-option");
        const _component_el_select = resolveComponent("el-select");
        const _component_el_date_picker = resolveComponent("el-date-picker");
        const _component_el_time_picker = resolveComponent("el-time-picker");
        const _component_el_form = resolveComponent("el-form");
        const _component_el_dialog = resolveComponent("el-dialog");
        return openBlock(), createElementBlock("div", _hoisted_1$m, [
          createBaseVNode("div", _hoisted_2$l, [
            createVNode(_component_el_input, {
              modelValue: searchQuery.value,
              "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchQuery.value = $event),
              placeholder: "Search scheduled tasks...",
              "prefix-icon": "Search",
              clearable: "",
              style: { "width": "300px" }
            }, null, 8, ["modelValue"]),
            createVNode(_component_el_button, {
              type: "primary",
              onClick: openAddDialog
            }, {
              default: withCtx(() => [
                createVNode(_component_el_icon, null, {
                  default: withCtx(() => [
                    createVNode(unref(plus_default))
                  ]),
                  _: 1
                }),
                _cache[10] || (_cache[10] = createTextVNode(" Add Schedule ", -1))
              ]),
              _: 1
            })
          ]),
          loading.value ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            rows: 8,
            "show-action": false
          })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
            createVNode(_component_el_table, {
              data: filteredTasks.value,
              stripe: ""
            }, {
              default: withCtx(() => [
                createVNode(_component_el_table_column, {
                  prop: "name",
                  label: "Task Name",
                  "min-width": "180"
                }, {
                  default: withCtx(({ row }) => [
                    createBaseVNode("span", _hoisted_3$i, toDisplayString(row.name), 1)
                  ]),
                  _: 1
                }),
                createVNode(_component_el_table_column, {
                  prop: "workflow_name",
                  label: "Workflow",
                  "min-width": "180"
                }),
                createVNode(_component_el_table_column, {
                  prop: "frequency",
                  label: "Frequency",
                  width: "120"
                }, {
                  default: withCtx(({ row }) => [
                    createVNode(_component_el_tag, { size: "small" }, {
                      default: withCtx(() => [
                        createTextVNode(toDisplayString(formatFrequency(row.frequency)), 1)
                      ]),
                      _: 2
                    }, 1024)
                  ]),
                  _: 1
                }),
                createVNode(_component_el_table_column, {
                  prop: "time_of_day",
                  label: "Time",
                  width: "100"
                }, {
                  default: withCtx(({ row }) => [
                    createBaseVNode("span", null, toDisplayString(row.time_of_day), 1)
                  ]),
                  _: 1
                }),
                createVNode(_component_el_table_column, {
                  label: "Status",
                  width: "100",
                  align: "center"
                }, {
                  default: withCtx(({ row }) => [
                    createVNode(_component_el_switch, {
                      modelValue: row.active,
                      "onUpdate:modelValue": ($event) => row.active = $event,
                      loading: row.toggling,
                      "active-color": "var(--el-color-success)",
                      onChange: ($event) => toggleTaskStatus(row, $event)
                    }, null, 8, ["modelValue", "onUpdate:modelValue", "loading", "onChange"])
                  ]),
                  _: 1
                }),
                createVNode(_component_el_table_column, {
                  prop: "next_run",
                  label: "Next Run",
                  width: "160"
                }, {
                  default: withCtx(({ row }) => [
                    createBaseVNode("span", _hoisted_4$g, toDisplayString(row.next_run || "Not scheduled"), 1)
                  ]),
                  _: 1
                }),
                createVNode(_component_el_table_column, {
                  prop: "last_run",
                  label: "Last Run",
                  width: "140"
                }, {
                  default: withCtx(({ row }) => [
                    createBaseVNode("span", _hoisted_5$f, toDisplayString(row.last_run || "Never"), 1)
                  ]),
                  _: 1
                }),
                createVNode(_component_el_table_column, {
                  label: "Actions",
                  width: "290",
                  align: "center"
                }, {
                  default: withCtx(({ row }) => [
                    createBaseVNode("div", _hoisted_6$6, [
                      createVNode(_component_el_button, {
                        size: "small",
                        type: "success",
                        plain: "",
                        onClick: ($event) => runTaskNow(row),
                        loading: row.running
                      }, {
                        default: withCtx(() => [
                          createVNode(_component_el_icon, null, {
                            default: withCtx(() => [
                              createVNode(unref(video_play_default))
                            ]),
                            _: 1
                          }),
                          _cache[11] || (_cache[11] = createTextVNode(" Run ", -1))
                        ]),
                        _: 1
                      }, 8, ["onClick", "loading"]),
                      createVNode(_component_el_button, {
                        size: "small",
                        type: "primary",
                        plain: "",
                        onClick: ($event) => editTask(row)
                      }, {
                        default: withCtx(() => [
                          createVNode(_component_el_icon, null, {
                            default: withCtx(() => [
                              createVNode(unref(edit_default))
                            ]),
                            _: 1
                          }),
                          _cache[12] || (_cache[12] = createTextVNode(" Edit ", -1))
                        ]),
                        _: 1
                      }, 8, ["onClick"]),
                      createVNode(_component_el_button, {
                        size: "small",
                        type: "danger",
                        plain: "",
                        onClick: ($event) => confirmDelete(row)
                      }, {
                        default: withCtx(() => [
                          createVNode(_component_el_icon, null, {
                            default: withCtx(() => [
                              createVNode(unref(delete_default))
                            ]),
                            _: 1
                          }),
                          _cache[13] || (_cache[13] = createTextVNode(" Delete ", -1))
                        ]),
                        _: 1
                      }, 8, ["onClick"])
                    ])
                  ]),
                  _: 1
                })
              ]),
              _: 1
            }, 8, ["data"]),
            tasks.value.length === 0 ? (openBlock(), createBlock(_component_el_empty, {
              key: 0,
              description: "No scheduled tasks created yet"
            }, {
              default: withCtx(() => [
                createVNode(_component_el_button, {
                  type: "primary",
                  onClick: openAddDialog
                }, {
                  default: withCtx(() => [..._cache[14] || (_cache[14] = [
                    createTextVNode("Create Your First Schedule", -1)
                  ])]),
                  _: 1
                })
              ]),
              _: 1
            })) : createCommentVNode("", true)
          ], 64)),
          createVNode(_component_el_dialog, {
            modelValue: dialogVisible.value,
            "onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => dialogVisible.value = $event),
            title: editingTask.value ? "Edit Scheduled Task" : "Add Scheduled Task",
            width: "550px"
          }, {
            footer: withCtx(() => [
              createVNode(_component_el_button, {
                onClick: _cache[8] || (_cache[8] = ($event) => dialogVisible.value = false)
              }, {
                default: withCtx(() => [..._cache[15] || (_cache[15] = [
                  createTextVNode("Cancel", -1)
                ])]),
                _: 1
              }),
              createVNode(_component_el_button, {
                type: "primary",
                onClick: saveTask,
                loading: saving.value
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString(editingTask.value ? "Update" : "Create"), 1)
                ]),
                _: 1
              }, 8, ["loading"])
            ]),
            default: withCtx(() => [
              createVNode(_component_el_form, {
                model: form.value,
                "label-width": "140px",
                rules: formRules,
                ref_key: "formRef",
                ref: formRef
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_form_item, {
                    label: "Task Name",
                    prop: "name"
                  }, {
                    default: withCtx(() => [
                      createVNode(_component_el_input, {
                        modelValue: form.value.name,
                        "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => form.value.name = $event),
                        placeholder: "Enter task name"
                      }, null, 8, ["modelValue"])
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_form_item, {
                    label: "Workflow",
                    prop: "workflow_id"
                  }, {
                    default: withCtx(() => [
                      createVNode(_component_el_select, {
                        modelValue: form.value.workflow_id,
                        "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => form.value.workflow_id = $event),
                        placeholder: "Select workflow",
                        style: { "width": "100%" }
                      }, {
                        default: withCtx(() => [
                          (openBlock(true), createElementBlock(Fragment, null, renderList(workflowOptions.value, (w2) => {
                            return openBlock(), createBlock(_component_el_option, {
                              key: w2.id,
                              label: w2.name,
                              value: w2.id
                            }, null, 8, ["label", "value"]);
                          }), 128))
                        ]),
                        _: 1
                      }, 8, ["modelValue"])
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_form_item, {
                    label: "Frequency",
                    prop: "frequency"
                  }, {
                    default: withCtx(() => [
                      createVNode(_component_el_select, {
                        modelValue: form.value.frequency,
                        "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => form.value.frequency = $event),
                        placeholder: "Select frequency",
                        style: { "width": "100%" }
                      }, {
                        default: withCtx(() => [
                          (openBlock(true), createElementBlock(Fragment, null, renderList(frequencyOptions.value, (label, key) => {
                            return openBlock(), createBlock(_component_el_option, {
                              key,
                              label,
                              value: key
                            }, null, 8, ["label", "value"]);
                          }), 128))
                        ]),
                        _: 1
                      }, 8, ["modelValue"])
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_form_item, {
                    label: "Start Date",
                    prop: "start_date"
                  }, {
                    default: withCtx(() => [
                      createVNode(_component_el_date_picker, {
                        modelValue: form.value.start_date,
                        "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => form.value.start_date = $event),
                        type: "date",
                        placeholder: "Select start date",
                        format: "YYYY-MM-DD",
                        "value-format": "YYYY-MM-DD",
                        style: { "width": "100%" }
                      }, null, 8, ["modelValue"])
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_form_item, { label: "End Date (Optional)" }, {
                    default: withCtx(() => [
                      createVNode(_component_el_date_picker, {
                        modelValue: form.value.end_date,
                        "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => form.value.end_date = $event),
                        type: "date",
                        placeholder: "Select end date (optional)",
                        format: "YYYY-MM-DD",
                        "value-format": "YYYY-MM-DD",
                        style: { "width": "100%" }
                      }, null, 8, ["modelValue"])
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_form_item, {
                    label: "Time of Day",
                    prop: "time_of_day"
                  }, {
                    default: withCtx(() => [
                      createVNode(_component_el_time_picker, {
                        modelValue: form.value.time_of_day,
                        "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => form.value.time_of_day = $event),
                        placeholder: "Select time",
                        format: "HH:mm",
                        "value-format": "HH:mm",
                        style: { "width": "100%" }
                      }, null, 8, ["modelValue"])
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_form_item, { label: "Active" }, {
                    default: withCtx(() => [
                      createVNode(_component_el_switch, {
                        modelValue: form.value.active,
                        "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => form.value.active = $event)
                      }, null, 8, ["modelValue"])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }, 8, ["model"])
            ]),
            _: 1
          }, 8, ["modelValue", "title"])
        ]);
      };
    }
  });
  const ScheduledTasks = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["__scopeId", "data-v-dd5756d7"]]);
  const _hoisted_1$l = { class: "workflow-logs" };
  const _hoisted_2$k = { class: "filters-bar" };
  const _hoisted_3$h = { class: "log-message" };
  const _hoisted_4$f = {
    key: 0,
    class: "pagination-wrapper"
  };
  const _hoisted_5$e = {
    key: 0,
    class: "log-details"
  };
  const _hoisted_6$5 = { class: "detail-row" };
  const _hoisted_7$4 = { class: "detail-row" };
  const _hoisted_8$4 = { class: "detail-row" };
  const _hoisted_9$4 = { class: "detail-row" };
  const _hoisted_10$4 = { class: "detail-row full-width" };
  const _hoisted_11$4 = {
    key: 0,
    class: "detail-row full-width"
  };
  const _sfc_main$m = /* @__PURE__ */ Object.assign({ name: "WorkflowLogs" }, {
    __name: "WorkflowLogs",
    setup(__props) {
      const { showNotification } = useNotifications();
      const ajaxUrl = window.kitsuneAiPlatformConfig?.ajaxUrl || "/wp-admin/admin-ajax.php";
      const nonce = window.kitsuneAiPlatformConfig?.ajaxNonce || "";
      const loading = ref(true);
      const clearing = ref(false);
      const logs = ref([]);
      const workflowOptions = ref([]);
      const filters = ref({
        workflow_id: "",
        level: "",
        search: ""
      });
      const dateRange = ref([]);
      const pagination = ref({
        page: 1,
        per_page: 20,
        total: 0,
        pages: 0
      });
      const detailsVisible = ref(false);
      const selectedLog = ref(null);
      const traceVisible = ref(false);
      const traceLogs = ref([]);
      onMounted(() => {
        fetchLogs();
        fetchWorkflowOptions();
      });
      onActivated(() => {
        fetchLogs();
        fetchWorkflowOptions();
      });
      watch(dateRange, (val) => {
        if (val && val.length === 2) {
          filters.value.date_from = val[0];
          filters.value.date_to = val[1];
        } else {
          filters.value.date_from = "";
          filters.value.date_to = "";
        }
      });
      async function fetchLogs() {
        loading.value = true;
        try {
          const params = new URLSearchParams({
            action: "kitsune_ai_platform_get_logs",
            nonce,
            page: pagination.value.page,
            per_page: pagination.value.per_page
          });
          if (filters.value.workflow_id) params.append("workflow_id", filters.value.workflow_id);
          if (filters.value.level) params.append("level", filters.value.level);
          if (filters.value.search) params.append("search", filters.value.search);
          if (filters.value.date_from) params.append("date_from", filters.value.date_from);
          if (filters.value.date_to) params.append("date_to", filters.value.date_to);
          const response = await fetch(`${ajaxUrl}?${params.toString()}`);
          const result = await response.json();
          if (result.success) {
            logs.value = result.data.logs || [];
            pagination.value.total = result.data.total || 0;
            pagination.value.pages = result.data.pages || 0;
          } else {
            showNotification("error", result.data?.message || "Failed to fetch logs");
          }
        } catch (error) {
          console.error("Fetch logs error:", error);
          showNotification("error", "Failed to fetch logs");
        } finally {
          loading.value = false;
        }
      }
      async function fetchWorkflowOptions() {
        try {
          const formData = new FormData();
          formData.append("action", "kitsune_ai_platform_get_workflows");
          formData.append("nonce", nonce);
          const response = await fetch(ajaxUrl, {
            method: "POST",
            body: formData
          });
          const result = await response.json();
          if (result.success && result.data.workflows) {
            workflowOptions.value = result.data.workflows;
          }
        } catch (error) {
          console.error("Fetch workflow options error:", error);
        }
      }
      async function viewTrace(traceId) {
        if (!traceId) return;
        detailsVisible.value = false;
        try {
          const params = new URLSearchParams({
            action: "kitsune_ai_platform_get_log_trace",
            nonce,
            trace_id: traceId
          });
          const response = await fetch(`${ajaxUrl}?${params.toString()}`);
          const result = await response.json();
          if (result.success) {
            traceLogs.value = result.data.logs || [];
            traceVisible.value = true;
          } else {
            showNotification("error", result.data?.message || "Failed to fetch trace");
          }
        } catch (error) {
          showNotification("error", "Failed to fetch trace");
        }
      }
      function viewDetails(row) {
        selectedLog.value = row;
        detailsVisible.value = true;
      }
      function handlePageChange(page) {
        pagination.value.page = page;
        fetchLogs();
      }
      function confirmClearLogs() {
        ElMessageBox.confirm(
          "This will permanently delete all workflow logs. Are you sure?",
          "Clear All Logs",
          {
            confirmButtonText: "Clear All",
            cancelButtonText: "Cancel",
            type: "warning",
            confirmButtonClass: "el-button--danger"
          }
        ).then(() => {
          clearLogs();
        }).catch(() => {
        });
      }
      async function clearLogs() {
        clearing.value = true;
        try {
          const formData = new FormData();
          formData.append("action", "kitsune_ai_platform_clear_logs");
          formData.append("nonce", nonce);
          if (filters.value.workflow_id) formData.append("workflow_id", filters.value.workflow_id);
          const response = await fetch(ajaxUrl, { method: "POST", body: formData });
          const result = await response.json();
          if (result.success) {
            logs.value = [];
            pagination.value.total = 0;
            showNotification("success", result.data?.message || "Logs cleared successfully");
          } else {
            showNotification("error", result.data?.message || "Failed to clear logs");
          }
        } catch (error) {
          showNotification("error", "Failed to clear logs");
        } finally {
          clearing.value = false;
        }
      }
      function formatDate(dateStr) {
        if (!dateStr) return "N/A";
        const date = new Date(dateStr);
        return date.toLocaleString();
      }
      function truncateMessage(message2, maxLength = 80) {
        if (!message2) return "";
        return message2.length > maxLength ? message2.substring(0, maxLength) + "..." : message2;
      }
      function getLevelType(level) {
        const types2 = {
          "info": "info",
          "warning": "warning",
          "error": "danger",
          "debug": ""
        };
        return types2[level] || "info";
      }
      function getTimelineType(level) {
        const types2 = {
          "info": "primary",
          "warning": "warning",
          "error": "danger",
          "debug": "info"
        };
        return types2[level] || "primary";
      }
      return (_ctx, _cache) => {
        const _component_el_option = resolveComponent("el-option");
        const _component_el_select = resolveComponent("el-select");
        const _component_el_date_picker = resolveComponent("el-date-picker");
        const _component_el_input = resolveComponent("el-input");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_table_column = resolveComponent("el-table-column");
        const _component_el_tag = resolveComponent("el-tag");
        const _component_el_table = resolveComponent("el-table");
        const _component_el_pagination = resolveComponent("el-pagination");
        const _component_el_empty = resolveComponent("el-empty");
        const _component_el_dialog = resolveComponent("el-dialog");
        const _component_el_collapse_item = resolveComponent("el-collapse-item");
        const _component_el_collapse = resolveComponent("el-collapse");
        const _component_el_card = resolveComponent("el-card");
        const _component_el_timeline_item = resolveComponent("el-timeline-item");
        const _component_el_timeline = resolveComponent("el-timeline");
        return openBlock(), createElementBlock("div", _hoisted_1$l, [
          createBaseVNode("div", _hoisted_2$k, [
            createVNode(_component_el_select, {
              modelValue: filters.value.workflow_id,
              "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => filters.value.workflow_id = $event),
              placeholder: "All Workflows",
              clearable: "",
              style: { "width": "200px" }
            }, {
              default: withCtx(() => [
                (openBlock(true), createElementBlock(Fragment, null, renderList(workflowOptions.value, (w2) => {
                  return openBlock(), createBlock(_component_el_option, {
                    key: w2.id,
                    label: w2.name,
                    value: w2.id
                  }, null, 8, ["label", "value"]);
                }), 128))
              ]),
              _: 1
            }, 8, ["modelValue"]),
            createVNode(_component_el_select, {
              modelValue: filters.value.level,
              "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => filters.value.level = $event),
              placeholder: "All Levels",
              clearable: "",
              style: { "width": "150px" }
            }, {
              default: withCtx(() => [
                createVNode(_component_el_option, {
                  label: "Info",
                  value: "info"
                }),
                createVNode(_component_el_option, {
                  label: "Warning",
                  value: "warning"
                }),
                createVNode(_component_el_option, {
                  label: "Error",
                  value: "error"
                }),
                createVNode(_component_el_option, {
                  label: "Debug",
                  value: "debug"
                })
              ]),
              _: 1
            }, 8, ["modelValue"]),
            createVNode(_component_el_date_picker, {
              modelValue: dateRange.value,
              "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => dateRange.value = $event),
              type: "daterange",
              "range-separator": "to",
              "start-placeholder": "Start date",
              "end-placeholder": "End date",
              format: "YYYY-MM-DD",
              "value-format": "YYYY-MM-DD",
              style: { "width": "280px" }
            }, null, 8, ["modelValue"]),
            createVNode(_component_el_input, {
              modelValue: filters.value.search,
              "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => filters.value.search = $event),
              placeholder: "Search logs...",
              "prefix-icon": "Search",
              clearable: "",
              style: { "width": "250px" }
            }, null, 8, ["modelValue"]),
            createVNode(_component_el_button, {
              type: "primary",
              onClick: fetchLogs
            }, {
              default: withCtx(() => [
                createVNode(_component_el_icon, null, {
                  default: withCtx(() => [
                    createVNode(unref(search_default))
                  ]),
                  _: 1
                }),
                _cache[10] || (_cache[10] = createTextVNode(" Apply ", -1))
              ]),
              _: 1
            }),
            createVNode(_component_el_button, {
              type: "danger",
              plain: "",
              onClick: confirmClearLogs,
              loading: clearing.value
            }, {
              default: withCtx(() => [
                createVNode(_component_el_icon, null, {
                  default: withCtx(() => [
                    createVNode(unref(delete_default))
                  ]),
                  _: 1
                }),
                _cache[11] || (_cache[11] = createTextVNode(" Clear Logs ", -1))
              ]),
              _: 1
            }, 8, ["loading"])
          ]),
          loading.value ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            rows: 8,
            "show-action": false
          })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
            createVNode(_component_el_table, {
              data: logs.value,
              stripe: "",
              onRowClick: viewDetails
            }, {
              default: withCtx(() => [
                createVNode(_component_el_table_column, {
                  prop: "created_at",
                  label: "Timestamp",
                  width: "180"
                }, {
                  default: withCtx(({ row }) => [
                    createBaseVNode("span", null, toDisplayString(formatDate(row.created_at)), 1)
                  ]),
                  _: 1
                }),
                createVNode(_component_el_table_column, {
                  prop: "workflow_name",
                  label: "Workflow",
                  "min-width": "180"
                }, {
                  default: withCtx(({ row }) => [
                    createBaseVNode("span", null, toDisplayString(row.workflow_name || "N/A"), 1)
                  ]),
                  _: 1
                }),
                createVNode(_component_el_table_column, {
                  prop: "level",
                  label: "Level",
                  width: "100"
                }, {
                  default: withCtx(({ row }) => [
                    createVNode(_component_el_tag, {
                      type: getLevelType(row.level),
                      size: "small"
                    }, {
                      default: withCtx(() => [
                        createTextVNode(toDisplayString(row.level), 1)
                      ]),
                      _: 2
                    }, 1032, ["type"])
                  ]),
                  _: 1
                }),
                createVNode(_component_el_table_column, {
                  prop: "message",
                  label: "Message",
                  "min-width": "250"
                }, {
                  default: withCtx(({ row }) => [
                    createBaseVNode("span", _hoisted_3$h, toDisplayString(truncateMessage(row.message)), 1)
                  ]),
                  _: 1
                }),
                createVNode(_component_el_table_column, {
                  label: "Actions",
                  width: "100",
                  align: "center"
                }, {
                  default: withCtx(({ row }) => [
                    createVNode(_component_el_button, {
                      size: "small",
                      onClick: withModifiers(($event) => viewDetails(row), ["stop"])
                    }, {
                      default: withCtx(() => [
                        createVNode(_component_el_icon, { class: "mr-1" }, {
                          default: withCtx(() => [
                            createVNode(unref(view_default))
                          ]),
                          _: 1
                        }),
                        _cache[12] || (_cache[12] = createTextVNode(" View ", -1))
                      ]),
                      _: 1
                    }, 8, ["onClick"])
                  ]),
                  _: 1
                })
              ]),
              _: 1
            }, 8, ["data"]),
            pagination.value.total > 0 ? (openBlock(), createElementBlock("div", _hoisted_4$f, [
              createVNode(_component_el_pagination, {
                "current-page": pagination.value.page,
                "onUpdate:currentPage": _cache[4] || (_cache[4] = ($event) => pagination.value.page = $event),
                "page-size": pagination.value.per_page,
                total: pagination.value.total,
                layout: "total, prev, pager, next",
                onCurrentChange: handlePageChange
              }, null, 8, ["current-page", "page-size", "total"])
            ])) : createCommentVNode("", true),
            logs.value.length === 0 ? (openBlock(), createBlock(_component_el_empty, {
              key: 1,
              description: "No logs found"
            })) : createCommentVNode("", true)
          ], 64)),
          createVNode(_component_el_dialog, {
            modelValue: detailsVisible.value,
            "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => detailsVisible.value = $event),
            title: "Log Details",
            width: "700px"
          }, {
            footer: withCtx(() => [
              createVNode(_component_el_button, {
                onClick: _cache[6] || (_cache[6] = ($event) => detailsVisible.value = false)
              }, {
                default: withCtx(() => [..._cache[19] || (_cache[19] = [
                  createTextVNode("Close", -1)
                ])]),
                _: 1
              }),
              createVNode(_component_el_button, {
                type: "primary",
                onClick: _cache[7] || (_cache[7] = ($event) => viewTrace(selectedLog.value?.trace_id))
              }, {
                default: withCtx(() => [..._cache[20] || (_cache[20] = [
                  createTextVNode("View Full Trace", -1)
                ])]),
                _: 1
              })
            ]),
            default: withCtx(() => [
              selectedLog.value ? (openBlock(), createElementBlock("div", _hoisted_5$e, [
                createBaseVNode("div", _hoisted_6$5, [
                  _cache[13] || (_cache[13] = createBaseVNode("label", null, "Timestamp:", -1)),
                  createBaseVNode("span", null, toDisplayString(formatDate(selectedLog.value.created_at)), 1)
                ]),
                createBaseVNode("div", _hoisted_7$4, [
                  _cache[14] || (_cache[14] = createBaseVNode("label", null, "Workflow:", -1)),
                  createBaseVNode("span", null, toDisplayString(selectedLog.value.workflow_name), 1)
                ]),
                createBaseVNode("div", _hoisted_8$4, [
                  _cache[15] || (_cache[15] = createBaseVNode("label", null, "Level:", -1)),
                  createVNode(_component_el_tag, {
                    type: getLevelType(selectedLog.value.level),
                    size: "small"
                  }, {
                    default: withCtx(() => [
                      createTextVNode(toDisplayString(selectedLog.value.level), 1)
                    ]),
                    _: 1
                  }, 8, ["type"])
                ]),
                createBaseVNode("div", _hoisted_9$4, [
                  _cache[16] || (_cache[16] = createBaseVNode("label", null, "Trace ID:", -1)),
                  createBaseVNode("code", {
                    onClick: _cache[5] || (_cache[5] = ($event) => viewTrace(selectedLog.value.trace_id)),
                    class: "trace-id"
                  }, toDisplayString(selectedLog.value.trace_id), 1)
                ]),
                createBaseVNode("div", _hoisted_10$4, [
                  _cache[17] || (_cache[17] = createBaseVNode("label", null, "Message:", -1)),
                  createBaseVNode("p", null, toDisplayString(selectedLog.value.message), 1)
                ]),
                selectedLog.value.context ? (openBlock(), createElementBlock("div", _hoisted_11$4, [
                  _cache[18] || (_cache[18] = createBaseVNode("label", null, "Context:", -1)),
                  createBaseVNode("pre", null, toDisplayString(JSON.stringify(selectedLog.value.context, null, 2)), 1)
                ])) : createCommentVNode("", true)
              ])) : createCommentVNode("", true)
            ]),
            _: 1
          }, 8, ["modelValue"]),
          createVNode(_component_el_dialog, {
            modelValue: traceVisible.value,
            "onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => traceVisible.value = $event),
            title: "Execution Trace",
            width: "800px"
          }, {
            default: withCtx(() => [
              traceLogs.value.length > 0 ? (openBlock(), createBlock(_component_el_timeline, { key: 0 }, {
                default: withCtx(() => [
                  (openBlock(true), createElementBlock(Fragment, null, renderList(traceLogs.value, (log) => {
                    return openBlock(), createBlock(_component_el_timeline_item, {
                      key: log.id,
                      timestamp: formatDate(log.created_at),
                      type: getTimelineType(log.level)
                    }, {
                      default: withCtx(() => [
                        createVNode(_component_el_card, { shadow: "never" }, {
                          default: withCtx(() => [
                            createVNode(_component_el_tag, {
                              type: getLevelType(log.level),
                              size: "small",
                              class: "mb-2"
                            }, {
                              default: withCtx(() => [
                                createTextVNode(toDisplayString(log.level), 1)
                              ]),
                              _: 2
                            }, 1032, ["type"]),
                            createBaseVNode("p", null, toDisplayString(log.message), 1),
                            log.context ? (openBlock(), createBlock(_component_el_collapse, { key: 0 }, {
                              default: withCtx(() => [
                                createVNode(_component_el_collapse_item, { title: "Context" }, {
                                  default: withCtx(() => [
                                    createBaseVNode("pre", null, toDisplayString(JSON.stringify(log.context, null, 2)), 1)
                                  ]),
                                  _: 2
                                }, 1024)
                              ]),
                              _: 2
                            }, 1024)) : createCommentVNode("", true)
                          ]),
                          _: 2
                        }, 1024)
                      ]),
                      _: 2
                    }, 1032, ["timestamp", "type"]);
                  }), 128))
                ]),
                _: 1
              })) : (openBlock(), createBlock(_component_el_empty, {
                key: 1,
                description: "No trace logs found"
              }))
            ]),
            _: 1
          }, 8, ["modelValue"])
        ]);
      };
    }
  });
  const WorkflowLogs = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["__scopeId", "data-v-ba15e100"]]);
  const _hoisted_1$k = { class: "px-6 py-4" };
  const _hoisted_2$j = { class: "mb-6" };
  const _hoisted_3$g = { class: "text-2xl font-bold text-gray-900" };
  const _hoisted_4$e = { class: "text-gray-600 mt-1" };
  const _hoisted_5$d = { class: "flex items-center" };
  const _sfc_main$l = {
    __name: "Automation",
    setup(__props) {
      const t = inject("t", (k) => k);
      const currentTab = ref("active");
      const templateToLoad = ref(null);
      const workflowToEdit = ref(null);
      const tabs = computed(() => [
        { id: "active", name: t("workflowsTab"), icon: "fas fa-play-circle" },
        { id: "builder", name: t("workflowBuilder"), icon: "fas fa-random" },
        { id: "templates", name: t("templates"), icon: "fas fa-clone" },
        { id: "schedule", name: t("scheduledTasks"), icon: "fas fa-clock" },
        { id: "logs", name: t("logs"), icon: "fas fa-list-alt" }
      ]);
      const tabComponents = {
        "active": _sfc_main$p,
        "builder": Workflows,
        "templates": WorkflowTemplates,
        "schedule": ScheduledTasks,
        "logs": WorkflowLogs
      };
      const currentTabComponent = computed(() => tabComponents[currentTab.value]);
      watch(currentTab, (newTab, oldTab) => {
        if (newTab !== "builder") {
          templateToLoad.value = null;
          workflowToEdit.value = null;
        }
      });
      function handleCreate() {
        templateToLoad.value = null;
        workflowToEdit.value = null;
        currentTab.value = "builder";
      }
      function handleSwitchTab(tabId) {
        currentTab.value = tabId;
      }
      function handleUseTemplate(template) {
        templateToLoad.value = template;
        workflowToEdit.value = null;
        currentTab.value = "builder";
      }
      function handleEditWorkflow(workflowId) {
        workflowToEdit.value = workflowId;
        templateToLoad.value = null;
        currentTab.value = "builder";
      }
      return (_ctx, _cache) => {
        const _component_el_tab_pane = resolveComponent("el-tab-pane");
        const _component_el_tabs = resolveComponent("el-tabs");
        return openBlock(), createElementBlock("div", _hoisted_1$k, [
          createBaseVNode("div", _hoisted_2$j, [
            createBaseVNode("h1", _hoisted_3$g, toDisplayString(unref(t)("navAutomation")), 1),
            createBaseVNode("p", _hoisted_4$e, toDisplayString(unref(t)("automationSubtitle")), 1)
          ]),
          createVNode(_component_el_tabs, {
            modelValue: currentTab.value,
            "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => currentTab.value = $event),
            class: "mb-4"
          }, {
            default: withCtx(() => [
              (openBlock(true), createElementBlock(Fragment, null, renderList(tabs.value, (tab) => {
                return openBlock(), createBlock(_component_el_tab_pane, {
                  key: tab.id,
                  label: tab.name,
                  name: tab.id
                }, {
                  label: withCtx(() => [
                    createBaseVNode("span", _hoisted_5$d, [
                      createBaseVNode("i", {
                        class: normalizeClass([tab.icon, "mr-2"])
                      }, null, 2),
                      createTextVNode(" " + toDisplayString(tab.name), 1)
                    ])
                  ]),
                  _: 2
                }, 1032, ["label", "name"]);
              }), 128))
            ]),
            _: 1
          }, 8, ["modelValue"]),
          (openBlock(), createBlock(KeepAlive, null, [
            (openBlock(), createBlock(resolveDynamicComponent(currentTabComponent.value), {
              "template-to-load": templateToLoad.value,
              "workflow-to-edit": workflowToEdit.value,
              onCreate: handleCreate,
              onSwitchTab: handleSwitchTab,
              onUseTemplate: handleUseTemplate,
              onEditWorkflow: handleEditWorkflow
            }, null, 40, ["template-to-load", "workflow-to-edit"]))
          ], 1024))
        ]);
      };
    }
  };
  const _hoisted_1$j = { class: "space-y-6" };
  const _hoisted_2$i = { class: "flex justify-between items-center" };
  const _hoisted_3$f = { class: "font-bold" };
  const _sfc_main$k = {
    __name: "UsageCosts",
    setup(__props) {
      const { getAnalytics } = useAnalyticsAPI();
      const usageData = ref([]);
      const loading = ref(true);
      const timeRange = ref("30days");
      const getSummaries = (param) => {
        const { columns: columns2, data } = param;
        const sums = [];
        columns2.forEach((column, index) => {
          if (index === 0) {
            sums[index] = "Total Tokens";
            return;
          }
          if (column.label === "Total Tokens") {
            const total2 = data.reduce((prev, curr) => {
              return prev + curr.input_tokens + curr.output_tokens;
            }, 0);
            sums[index] = total2.toLocaleString();
          } else {
            sums[index] = "";
          }
        });
        return sums;
      };
      onMounted(async () => {
        try {
          const response = await getAnalytics();
          if (response.success && response.data.cost_breakdown) {
            usageData.value = response.data.cost_breakdown;
          }
        } catch (error) {
          console.error("Failed to load usage costs:", error);
        } finally {
          loading.value = false;
        }
      });
      return (_ctx, _cache) => {
        const _component_el_option = resolveComponent("el-option");
        const _component_el_select = resolveComponent("el-select");
        const _component_el_empty = resolveComponent("el-empty");
        const _component_el_table_column = resolveComponent("el-table-column");
        const _component_el_table = resolveComponent("el-table");
        const _component_el_card = resolveComponent("el-card");
        return openBlock(), createElementBlock("div", _hoisted_1$j, [
          loading.value ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            rows: 7
          })) : (openBlock(), createBlock(_component_el_card, {
            key: 1,
            shadow: "never"
          }, {
            header: withCtx(() => [
              createBaseVNode("div", _hoisted_2$i, [
                _cache[1] || (_cache[1] = createBaseVNode("h3", { class: "font-bold text-gray-900" }, "Cost Breakdown by Model", -1)),
                createVNode(_component_el_select, {
                  modelValue: timeRange.value,
                  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => timeRange.value = $event),
                  class: "w-40",
                  size: "default"
                }, {
                  default: withCtx(() => [
                    createVNode(_component_el_option, {
                      label: "Last 30 Days",
                      value: "30days"
                    }),
                    createVNode(_component_el_option, {
                      label: "This Month",
                      value: "thisMonth"
                    }),
                    createVNode(_component_el_option, {
                      label: "Last Month",
                      value: "lastMonth"
                    }),
                    createVNode(_component_el_option, {
                      label: "This Year",
                      value: "thisYear"
                    })
                  ]),
                  _: 1
                }, 8, ["modelValue"])
              ])
            ]),
            default: withCtx(() => [
              createVNode(_component_el_table, {
                data: usageData.value,
                style: { "width": "100%" },
                "show-summary": "",
                "summary-method": getSummaries
              }, {
                empty: withCtx(() => [
                  createVNode(_component_el_empty, { description: "No usage data available" })
                ]),
                default: withCtx(() => [
                  createVNode(_component_el_table_column, {
                    prop: "provider",
                    label: "Provider",
                    sortable: "",
                    "font-weight": "medium"
                  }),
                  createVNode(_component_el_table_column, {
                    prop: "model",
                    label: "Model",
                    sortable: ""
                  }),
                  createVNode(_component_el_table_column, {
                    prop: "requests",
                    label: "Requests",
                    sortable: "",
                    align: "right"
                  }, {
                    default: withCtx((scope) => [
                      createTextVNode(toDisplayString(scope.row.requests.toLocaleString()), 1)
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_table_column, {
                    prop: "input_tokens",
                    label: "Input Tokens",
                    sortable: "",
                    align: "right"
                  }, {
                    default: withCtx((scope) => [
                      createTextVNode(toDisplayString(scope.row.input_tokens.toLocaleString()), 1)
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_table_column, {
                    prop: "output_tokens",
                    label: "Output Tokens",
                    sortable: "",
                    align: "right"
                  }, {
                    default: withCtx((scope) => [
                      createTextVNode(toDisplayString(scope.row.output_tokens.toLocaleString()), 1)
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_table_column, {
                    label: "Total Tokens",
                    align: "right"
                  }, {
                    default: withCtx((scope) => [
                      createBaseVNode("span", _hoisted_3$f, toDisplayString((scope.row.input_tokens + scope.row.output_tokens).toLocaleString()), 1)
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }, 8, ["data"])
            ]),
            _: 1
          }))
        ]);
      };
    }
  };
  const _hoisted_1$i = { class: "space-y-6" };
  const _hoisted_2$h = { class: "flex gap-2" };
  const _hoisted_3$e = { class: "flex flex-col justify-between text-xs text-gray-400 text-right w-10 h-64 pb-0 select-none" };
  const _hoisted_4$d = { class: "flex-1 h-64 flex items-end space-x-1 border-l border-b border-gray-200 relative" };
  const _hoisted_5$c = ["title"];
  const _hoisted_6$4 = { class: "flex gap-2" };
  const _hoisted_7$3 = { class: "flex flex-col justify-between text-xs text-gray-400 text-right w-10 h-64 select-none" };
  const _hoisted_8$3 = { class: "flex-1 h-64 flex items-end space-x-1 border-l border-b border-gray-200 relative" };
  const _hoisted_9$3 = ["title"];
  const _hoisted_10$3 = { class: "font-mono text-xs text-blue-600" };
  const _hoisted_11$3 = { class: "font-bold text-gray-600 text-xs" };
  const _hoisted_12$2 = { class: "text-red-600 font-medium" };
  const _sfc_main$j = {
    __name: "PerformanceMetrics",
    setup(__props) {
      const { getAnalytics } = useAnalyticsAPI();
      const metrics = ref({
        latency: [],
        error_rate: [],
        slowest_requests: []
      });
      const loading = ref(true);
      const maxLatency = computed(() => {
        if (!metrics.value.latency.length) return 100;
        return Math.max(...metrics.value.latency) || 100;
      });
      const maxErrorRate = computed(() => {
        if (!metrics.value.error_rate.length) return 10;
        return Math.max(...metrics.value.error_rate) || 10;
      });
      const latencyYTicks = computed(() => {
        const max2 = maxLatency.value;
        return [max2, Math.round(max2 * 0.75), Math.round(max2 * 0.5), Math.round(max2 * 0.25), 0];
      });
      const errorRateYTicks = computed(() => {
        const max2 = maxErrorRate.value;
        return [max2, +(max2 * 0.75).toFixed(1), +(max2 * 0.5).toFixed(1), +(max2 * 0.25).toFixed(1), 0];
      });
      onMounted(async () => {
        try {
          const response = await getAnalytics();
          if (response.success && response.data.performance_metrics) {
            metrics.value = response.data.performance_metrics;
          }
        } catch (error) {
          console.error("Failed to load performance metrics:", error);
        } finally {
          loading.value = false;
        }
      });
      return (_ctx, _cache) => {
        const _component_el_card = resolveComponent("el-card");
        const _component_el_col = resolveComponent("el-col");
        const _component_el_row = resolveComponent("el-row");
        const _component_el_table_column = resolveComponent("el-table-column");
        const _component_el_table = resolveComponent("el-table");
        return openBlock(), createElementBlock("div", _hoisted_1$i, [
          loading.value ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            rows: 8,
            "show-toolbar": false
          })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
            createVNode(_component_el_row, { gutter: 24 }, {
              default: withCtx(() => [
                createVNode(_component_el_col, {
                  span: 24,
                  lg: 12
                }, {
                  default: withCtx(() => [
                    createVNode(_component_el_card, { shadow: "never" }, {
                      header: withCtx(() => [..._cache[0] || (_cache[0] = [
                        createBaseVNode("div", { class: "font-bold text-gray-900" }, "API Latency (ms)", -1)
                      ])]),
                      default: withCtx(() => [
                        createBaseVNode("div", _hoisted_2$h, [
                          createBaseVNode("div", _hoisted_3$e, [
                            createBaseVNode("span", null, toDisplayString(latencyYTicks.value[0]), 1),
                            createBaseVNode("span", null, toDisplayString(latencyYTicks.value[1]), 1),
                            createBaseVNode("span", null, toDisplayString(latencyYTicks.value[2]), 1),
                            createBaseVNode("span", null, toDisplayString(latencyYTicks.value[3]), 1),
                            createBaseVNode("span", null, toDisplayString(latencyYTicks.value[4]), 1)
                          ]),
                          createBaseVNode("div", _hoisted_4$d, [
                            (openBlock(true), createElementBlock(Fragment, null, renderList(metrics.value.latency, (val, index) => {
                              return openBlock(), createElementBlock("div", {
                                key: index,
                                class: "flex-1 bg-green-500 rounded-t-sm transition-all",
                                style: normalizeStyle(`height: ${maxLatency.value > 0 ? val / maxLatency.value * 100 : 0}%`),
                                title: `${val}ms`
                              }, null, 12, _hoisted_5$c);
                            }), 128))
                          ])
                        ]),
                        _cache[1] || (_cache[1] = createBaseVNode("div", { class: "mt-2 flex justify-between text-sm text-gray-500 pl-12" }, [
                          createBaseVNode("span", null, "00:00"),
                          createBaseVNode("span", null, "12:00"),
                          createBaseVNode("span", null, "23:59")
                        ], -1))
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                }),
                createVNode(_component_el_col, {
                  span: 24,
                  lg: 12
                }, {
                  default: withCtx(() => [
                    createVNode(_component_el_card, { shadow: "never" }, {
                      header: withCtx(() => [..._cache[2] || (_cache[2] = [
                        createBaseVNode("div", { class: "font-bold text-gray-900" }, "Error Rate (%)", -1)
                      ])]),
                      default: withCtx(() => [
                        createBaseVNode("div", _hoisted_6$4, [
                          createBaseVNode("div", _hoisted_7$3, [
                            createBaseVNode("span", null, toDisplayString(errorRateYTicks.value[0]) + "%", 1),
                            createBaseVNode("span", null, toDisplayString(errorRateYTicks.value[1]) + "%", 1),
                            createBaseVNode("span", null, toDisplayString(errorRateYTicks.value[2]) + "%", 1),
                            createBaseVNode("span", null, toDisplayString(errorRateYTicks.value[3]) + "%", 1),
                            _cache[3] || (_cache[3] = createBaseVNode("span", null, "0%", -1))
                          ]),
                          createBaseVNode("div", _hoisted_8$3, [
                            (openBlock(true), createElementBlock(Fragment, null, renderList(metrics.value.error_rate, (val, index) => {
                              return openBlock(), createElementBlock("div", {
                                key: index,
                                class: "flex-1 bg-red-500 rounded-t-sm transition-all",
                                style: normalizeStyle(`height: ${maxErrorRate.value > 0 ? val / maxErrorRate.value * 100 : 0}%`),
                                title: `${val}%`
                              }, null, 12, _hoisted_9$3);
                            }), 128)),
                            createBaseVNode("div", {
                              class: "absolute left-0 right-0 border-t border-dashed border-red-300",
                              style: normalizeStyle(`bottom: ${maxErrorRate.value > 0 ? 2 / maxErrorRate.value * 100 : 20}%`)
                            }, [..._cache[4] || (_cache[4] = [
                              createBaseVNode("span", { class: "text-xs text-red-400 bg-white px-1 relative -top-3" }, "Threshold (2%)", -1)
                            ])], 4)
                          ])
                        ]),
                        _cache[5] || (_cache[5] = createBaseVNode("div", { class: "mt-2 flex justify-between text-sm text-gray-500 pl-12" }, [
                          createBaseVNode("span", null, "00:00"),
                          createBaseVNode("span", null, "12:00"),
                          createBaseVNode("span", null, "23:59")
                        ], -1))
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                })
              ]),
              _: 1
            }),
            createVNode(_component_el_card, { shadow: "never" }, {
              header: withCtx(() => [..._cache[6] || (_cache[6] = [
                createBaseVNode("div", { class: "font-bold text-gray-900" }, "Slowest Requests", -1)
              ])]),
              default: withCtx(() => [
                createVNode(_component_el_table, {
                  data: metrics.value.slowest_requests,
                  style: { "width": "100%" },
                  stripe: ""
                }, {
                  default: withCtx(() => [
                    createVNode(_component_el_table_column, {
                      prop: "endpoint",
                      label: "Endpoint"
                    }, {
                      default: withCtx((scope) => [
                        createBaseVNode("span", _hoisted_10$3, toDisplayString(scope.row.endpoint), 1)
                      ]),
                      _: 1
                    }),
                    createVNode(_component_el_table_column, {
                      prop: "method",
                      label: "Method",
                      width: "100"
                    }, {
                      default: withCtx((scope) => [
                        createBaseVNode("span", _hoisted_11$3, toDisplayString(scope.row.method), 1)
                      ]),
                      _: 1
                    }),
                    createVNode(_component_el_table_column, {
                      prop: "duration",
                      label: "Duration",
                      width: "120"
                    }, {
                      default: withCtx((scope) => [
                        createBaseVNode("span", _hoisted_12$2, toDisplayString(scope.row.duration), 1)
                      ]),
                      _: 1
                    }),
                    createVNode(_component_el_table_column, {
                      prop: "time",
                      label: "Time",
                      width: "150"
                    })
                  ]),
                  _: 1
                }, 8, ["data"])
              ]),
              _: 1
            })
          ], 64))
        ]);
      };
    }
  };
  const _hoisted_1$h = { class: "space-y-6" };
  const _hoisted_2$g = { class: "flex items-center" };
  const _hoisted_3$d = { class: "font-medium text-gray-900" };
  const _hoisted_4$c = {
    key: 0,
    class: "mt-4 flex justify-between items-center"
  };
  const _hoisted_5$b = { class: "text-sm text-gray-500" };
  const _sfc_main$i = {
    __name: "UserActivity",
    setup(__props) {
      const { getAnalytics } = useAnalyticsAPI();
      const logs = ref([]);
      const totalLogs = ref(0);
      const loading = ref(true);
      const searchQuery = ref("");
      const currentPage = ref(1);
      const filteredLogs = computed(() => {
        if (!searchQuery.value) return logs.value;
        const query = searchQuery.value.toLowerCase();
        return logs.value.filter(
          (log) => log.user.name.toLowerCase().includes(query) || log.action.toLowerCase().includes(query) || log.resource.toLowerCase().includes(query)
        );
      });
      const handlePageChange = (page) => {
        currentPage.value = page;
      };
      onMounted(async () => {
        try {
          const response = await getAnalytics();
          if (response.success && response.data.user_activity) {
            logs.value = response.data.user_activity.logs;
            totalLogs.value = response.data.user_activity.total;
          }
        } catch (error) {
          console.error("Failed to load user activity:", error);
        } finally {
          loading.value = false;
        }
      });
      return (_ctx, _cache) => {
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_input = resolveComponent("el-input");
        const _component_el_empty = resolveComponent("el-empty");
        const _component_el_avatar = resolveComponent("el-avatar");
        const _component_el_table_column = resolveComponent("el-table-column");
        const _component_el_table = resolveComponent("el-table");
        const _component_el_pagination = resolveComponent("el-pagination");
        const _component_el_card = resolveComponent("el-card");
        return openBlock(), createElementBlock("div", _hoisted_1$h, [
          loading.value ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            rows: 7
          })) : (openBlock(), createBlock(_component_el_card, {
            key: 1,
            shadow: "never"
          }, {
            header: withCtx(() => [
              createVNode(_component_el_input, {
                modelValue: searchQuery.value,
                "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchQuery.value = $event),
                placeholder: "Search user logs...",
                class: "max-w-sm",
                clearable: ""
              }, {
                prefix: withCtx(() => [
                  createVNode(_component_el_icon, null, {
                    default: withCtx(() => [
                      createVNode(unref(search_default))
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }, 8, ["modelValue"])
            ]),
            default: withCtx(() => [
              createVNode(_component_el_table, {
                data: filteredLogs.value,
                style: { "width": "100%" }
              }, {
                empty: withCtx(() => [
                  createVNode(_component_el_empty, { description: "No activity logs found" })
                ]),
                default: withCtx(() => [
                  createVNode(_component_el_table_column, {
                    label: "User",
                    "min-width": "200"
                  }, {
                    default: withCtx((scope) => [
                      createBaseVNode("div", _hoisted_2$g, [
                        createVNode(_component_el_avatar, {
                          size: "small",
                          class: "mr-3 bg-blue-100 text-blue-600 font-bold"
                        }, {
                          default: withCtx(() => [
                            createTextVNode(toDisplayString(scope.row.user.initials), 1)
                          ]),
                          _: 2
                        }, 1024),
                        createBaseVNode("span", _hoisted_3$d, toDisplayString(scope.row.user.name), 1)
                      ])
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_table_column, {
                    prop: "action",
                    label: "Action",
                    "min-width": "150"
                  }),
                  createVNode(_component_el_table_column, {
                    prop: "resource",
                    label: "Resource",
                    "min-width": "150",
                    "class-name": "text-gray-500"
                  }),
                  createVNode(_component_el_table_column, {
                    prop: "tokens",
                    label: "Tokens Used",
                    width: "120",
                    align: "right",
                    "class-name": "text-gray-500"
                  }),
                  createVNode(_component_el_table_column, {
                    prop: "time",
                    label: "Time",
                    width: "150",
                    align: "right",
                    "class-name": "text-gray-500"
                  })
                ]),
                _: 1
              }, 8, ["data"]),
              totalLogs.value > 0 ? (openBlock(), createElementBlock("div", _hoisted_4$c, [
                createBaseVNode("span", _hoisted_5$b, "Showing 1-" + toDisplayString(logs.value.length) + " of " + toDisplayString(totalLogs.value) + " entries", 1),
                createVNode(_component_el_pagination, {
                  background: "",
                  layout: "prev, pager, next",
                  total: totalLogs.value,
                  "page-size": 10,
                  onCurrentChange: handlePageChange
                }, null, 8, ["total"])
              ])) : createCommentVNode("", true)
            ]),
            _: 1
          }))
        ]);
      };
    }
  };
  const _hoisted_1$g = { class: "px-6 py-4" };
  const _hoisted_2$f = { class: "mb-2" };
  const _hoisted_3$c = { class: "text-2xl font-bold text-gray-900" };
  const _hoisted_4$b = { class: "text-gray-600 mt-1" };
  const _hoisted_5$a = { class: "flex items-center" };
  const _sfc_main$h = {
    __name: "Analytics",
    setup(__props) {
      const t = inject("t", (k) => k);
      const currentTab = ref("usage");
      const tabs = computed(() => [
        { id: "usage", name: t("usageCosts"), icon: "fas fa-coins" },
        { id: "performance", name: t("performance"), icon: "fas fa-tachometer-alt" },
        { id: "activity", name: t("userActivity"), icon: "fas fa-users" }
      ]);
      const tabComponents = {
        "usage": _sfc_main$k,
        "performance": _sfc_main$j,
        "activity": _sfc_main$i
      };
      const currentTabComponent = computed(() => tabComponents[currentTab.value]);
      return (_ctx, _cache) => {
        const _component_el_tab_pane = resolveComponent("el-tab-pane");
        const _component_el_tabs = resolveComponent("el-tabs");
        return openBlock(), createElementBlock("div", _hoisted_1$g, [
          createBaseVNode("div", _hoisted_2$f, [
            createBaseVNode("h1", _hoisted_3$c, toDisplayString(unref(t)("navAnalytics")), 1),
            createBaseVNode("p", _hoisted_4$b, toDisplayString(unref(t)("analyticsSubtitle")), 1)
          ]),
          createVNode(_component_el_tabs, {
            modelValue: currentTab.value,
            "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => currentTab.value = $event),
            class: "mb-4"
          }, {
            default: withCtx(() => [
              (openBlock(true), createElementBlock(Fragment, null, renderList(tabs.value, (tab) => {
                return openBlock(), createBlock(_component_el_tab_pane, {
                  key: tab.id,
                  label: tab.name,
                  name: tab.id
                }, {
                  label: withCtx(() => [
                    createBaseVNode("span", _hoisted_5$a, [
                      createBaseVNode("i", {
                        class: normalizeClass([tab.icon, "mr-2"])
                      }, null, 2),
                      createTextVNode(" " + toDisplayString(tab.name), 1)
                    ])
                  ]),
                  _: 2
                }, 1032, ["label", "name"]);
              }), 128))
            ]),
            _: 1
          }, 8, ["modelValue"]),
          createVNode(Transition, {
            name: "fade",
            mode: "out-in"
          }, {
            default: withCtx(() => [
              (openBlock(), createBlock(KeepAlive, null, [
                (openBlock(), createBlock(resolveDynamicComponent(currentTabComponent.value)))
              ], 1024))
            ]),
            _: 1
          })
        ]);
      };
    }
  };
  const _sfc_main$g = {};
  const _hoisted_1$f = { class: "space-y-4" };
  function _sfc_render(_ctx, _cache) {
    const _component_el_alert = resolveComponent("el-alert");
    const _component_el_empty = resolveComponent("el-empty");
    return openBlock(), createElementBlock("div", _hoisted_1$f, [
      createVNode(_component_el_alert, {
        title: "Integration Directory is coming soon",
        type: "info",
        closable: false,
        "show-icon": "",
        description: "This section is intentionally empty for now."
      }),
      createVNode(_component_el_empty, { description: "Coming soon" })
    ]);
  }
  const IntegrationDirectory = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["render", _sfc_render]]);
  function useWebhooksAPI() {
    const getWebhooks = async () => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_get_webhooks", {}, "GET");
        return { success: true, data: response };
      } catch (error) {
        console.error("Error fetching webhooks:", error);
        return { success: false, message: error.message };
      }
    };
    const createWebhook = async (data) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_create_webhook", { data });
        return { success: true, data: response };
      } catch (error) {
        console.error("Error creating webhook:", error);
        return { success: false, message: error.message };
      }
    };
    const deleteWebhook = async (id) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_delete_webhook", { id });
        return { success: true, message: response.message };
      } catch (error) {
        console.error("Error deleting webhook:", error);
        return { success: false, message: error.message };
      }
    };
    const testWebhook = async (id) => {
      try {
        const response = await ajaxFetch("kitsune_ai_platform_test_webhook", { id });
        return { success: true, message: response.message };
      } catch (error) {
        console.error("Error testing webhook:", error);
        return { success: false, message: error.message };
      }
    };
    return {
      getWebhooks,
      createWebhook,
      deleteWebhook,
      testWebhook
    };
  }
  const _hoisted_1$e = { class: "space-y-6" };
  const _hoisted_2$e = { class: "flex justify-between items-center" };
  const _hoisted_3$b = { class: "text-sm" };
  const _hoisted_4$a = { class: "flex flex-wrap gap-1" };
  const _sfc_main$f = {
    __name: "WebhooksManager",
    setup(__props) {
      const { getWebhooks, createWebhook, deleteWebhook, testWebhook } = useWebhooksAPI();
      const { showNotification } = useNotifications();
      const webhooks = ref([]);
      const loading = ref(true);
      const loadWebhooks = async () => {
        loading.value = true;
        try {
          const response = await getWebhooks();
          if (response.success) {
            webhooks.value = response.data;
          }
        } catch (error) {
          console.error("Failed to load webhooks:", error);
        } finally {
          loading.value = false;
        }
      };
      const handleAddWebhook = async () => {
        try {
          const { value: url } = await ElMessageBox.prompt("Enter Endpoint URL", "Add Webhook", {
            confirmButtonText: "Add",
            cancelButtonText: "Cancel",
            inputPattern: /https?:\/\/.+/,
            inputErrorMessage: "Invalid URL"
          });
          if (url) {
            await createWebhook({ url, events: ["conversation.created"] });
            loadWebhooks();
            showNotification("success", "Webhook added successfully");
          }
        } catch (e) {
        }
      };
      const handleDeleteWebhook = async (id) => {
        try {
          await ElMessageBox.confirm("Are you sure you want to delete this webhook?", "Warning", {
            confirmButtonText: "Delete",
            cancelButtonText: "Cancel",
            type: "warning",
            confirmButtonClass: "el-button--danger"
          });
          await deleteWebhook(id);
          loadWebhooks();
          showNotification("success", "Webhook deleted");
        } catch (e) {
        }
      };
      const handleTestWebhook = async (id) => {
        try {
          await testWebhook(id);
          showNotification("success", "Test event sent successfully!");
        } catch (error) {
          showNotification("error", "Test failed.");
        }
      };
      onMounted(loadWebhooks);
      return (_ctx, _cache) => {
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_table_column = resolveComponent("el-table-column");
        const _component_el_tag = resolveComponent("el-tag");
        const _component_el_switch = resolveComponent("el-switch");
        const _component_el_empty = resolveComponent("el-empty");
        const _component_el_table = resolveComponent("el-table");
        const _component_el_card = resolveComponent("el-card");
        return openBlock(), createElementBlock("div", _hoisted_1$e, [
          loading.value ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            rows: 7
          })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
            createBaseVNode("div", _hoisted_2$e, [
              _cache[1] || (_cache[1] = createBaseVNode("div", null, [
                createBaseVNode("h3", { class: "font-bold text-gray-900 text-lg" }, "Webhooks"),
                createBaseVNode("p", { class: "text-sm text-gray-500" }, "Notify external systems when events occur.")
              ], -1)),
              createVNode(_component_el_button, {
                type: "primary",
                onClick: handleAddWebhook
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_icon, { class: "mr-1" }, {
                    default: withCtx(() => [
                      createVNode(unref(plus_default))
                    ]),
                    _: 1
                  }),
                  _cache[0] || (_cache[0] = createTextVNode(" Add Endpoint ", -1))
                ]),
                _: 1
              })
            ]),
            createVNode(_component_el_card, { shadow: "never" }, {
              default: withCtx(() => [
                createVNode(_component_el_table, {
                  data: webhooks.value,
                  stripe: "",
                  style: { "width": "100%" }
                }, {
                  empty: withCtx(() => [
                    createVNode(_component_el_empty, { description: "No webhooks configured" })
                  ]),
                  default: withCtx(() => [
                    createVNode(_component_el_table_column, {
                      label: "Endpoint URL",
                      "min-width": "250"
                    }, {
                      default: withCtx((scope) => [
                        createBaseVNode("code", _hoisted_3$b, toDisplayString(scope.row.url), 1)
                      ]),
                      _: 1
                    }),
                    createVNode(_component_el_table_column, {
                      label: "Events",
                      "min-width": "200"
                    }, {
                      default: withCtx((scope) => [
                        createBaseVNode("div", _hoisted_4$a, [
                          (openBlock(true), createElementBlock(Fragment, null, renderList(scope.row.events.slice(0, 2), (event, index) => {
                            return openBlock(), createBlock(_component_el_tag, {
                              key: event,
                              size: "small",
                              effect: "light"
                            }, {
                              default: withCtx(() => [
                                createTextVNode(toDisplayString(event), 1)
                              ]),
                              _: 2
                            }, 1024);
                          }), 128)),
                          scope.row.events.length > 2 ? (openBlock(), createBlock(_component_el_tag, {
                            key: 0,
                            size: "small",
                            effect: "light"
                          }, {
                            default: withCtx(() => [
                              createTextVNode(" +" + toDisplayString(scope.row.events.length - 2) + " more ", 1)
                            ]),
                            _: 2
                          }, 1024)) : createCommentVNode("", true)
                        ])
                      ]),
                      _: 1
                    }),
                    createVNode(_component_el_table_column, {
                      label: "Status",
                      "min-width": "100"
                    }, {
                      default: withCtx((scope) => [
                        createVNode(_component_el_switch, {
                          modelValue: scope.row.active,
                          "onUpdate:modelValue": ($event) => scope.row.active = $event,
                          size: "small"
                        }, null, 8, ["modelValue", "onUpdate:modelValue"])
                      ]),
                      _: 1
                    }),
                    createVNode(_component_el_table_column, {
                      label: "Actions",
                      align: "right",
                      "min-width": "120"
                    }, {
                      default: withCtx((scope) => [
                        createVNode(_component_el_button, {
                          link: "",
                          type: "primary",
                          size: "small",
                          onClick: ($event) => handleTestWebhook(scope.row.id)
                        }, {
                          default: withCtx(() => [..._cache[2] || (_cache[2] = [
                            createTextVNode("Test", -1)
                          ])]),
                          _: 1
                        }, 8, ["onClick"]),
                        createVNode(_component_el_button, {
                          link: "",
                          type: "danger",
                          size: "small",
                          onClick: ($event) => handleDeleteWebhook(scope.row.id)
                        }, {
                          default: withCtx(() => [
                            createVNode(_component_el_icon, { class: "mr-1" }, {
                              default: withCtx(() => [
                                createVNode(unref(delete_default))
                              ]),
                              _: 1
                            }),
                            _cache[3] || (_cache[3] = createTextVNode(" Delete ", -1))
                          ]),
                          _: 1
                        }, 8, ["onClick"])
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                }, 8, ["data"])
              ]),
              _: 1
            })
          ], 64))
        ]);
      };
    }
  };
  const _hoisted_1$d = { class: "px-6 py-4" };
  const _hoisted_2$d = { class: "mb-6" };
  const _hoisted_3$a = { class: "text-2xl font-bold text-gray-900" };
  const _hoisted_4$9 = { class: "text-gray-600 mt-1" };
  const _hoisted_5$9 = { class: "flex items-center" };
  const _sfc_main$e = {
    __name: "Integrations",
    setup(__props) {
      const t = inject("t", (k) => k);
      const currentTab = ref("directory");
      const tabs = computed(() => [
        { id: "directory", name: t("integrationDirectory"), icon: "fas fa-th" },
        { id: "webhooks", name: t("tabWebhooks"), icon: "fas fa-globe" }
      ]);
      const tabComponents = {
        "directory": IntegrationDirectory,
        "webhooks": _sfc_main$f
      };
      const currentTabComponent = computed(() => tabComponents[currentTab.value]);
      return (_ctx, _cache) => {
        const _component_el_tab_pane = resolveComponent("el-tab-pane");
        const _component_el_tabs = resolveComponent("el-tabs");
        return openBlock(), createElementBlock("div", _hoisted_1$d, [
          createBaseVNode("div", _hoisted_2$d, [
            createBaseVNode("h1", _hoisted_3$a, toDisplayString(unref(t)("navIntegrations")), 1),
            createBaseVNode("p", _hoisted_4$9, toDisplayString(unref(t)("integrationsSubtitle")), 1)
          ]),
          createVNode(_component_el_tabs, {
            modelValue: currentTab.value,
            "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => currentTab.value = $event),
            class: "mb-4"
          }, {
            default: withCtx(() => [
              (openBlock(true), createElementBlock(Fragment, null, renderList(tabs.value, (tab) => {
                return openBlock(), createBlock(_component_el_tab_pane, {
                  key: tab.id,
                  label: tab.name,
                  name: tab.id
                }, {
                  label: withCtx(() => [
                    createBaseVNode("span", _hoisted_5$9, [
                      createBaseVNode("i", {
                        class: normalizeClass([tab.icon, "mr-2"])
                      }, null, 2),
                      createTextVNode(" " + toDisplayString(tab.name), 1)
                    ])
                  ]),
                  _: 2
                }, 1032, ["label", "name"]);
              }), 128))
            ]),
            _: 1
          }, 8, ["modelValue"]),
          createVNode(Transition, {
            name: "fade",
            mode: "out-in"
          }, {
            default: withCtx(() => [
              (openBlock(), createBlock(KeepAlive, null, [
                (openBlock(), createBlock(resolveDynamicComponent(currentTabComponent.value)))
              ], 1024))
            ]),
            _: 1
          })
        ]);
      };
    }
  };
  const _hoisted_1$c = { class: "space-y-6" };
  const _hoisted_2$c = { class: "flex justify-end" };
  const _sfc_main$d = {
    __name: "GeneralSettings",
    setup(__props) {
      const t = inject("t", (k) => k);
      inject("config");
      const { showNotification } = useNotifications();
      const { getSettings, updateSettings } = useSettingsAPI();
      const loading = ref(true);
      const saving = ref(false);
      const originalLanguage = ref("en");
      const settings = ref({
        tokenLimit: 1e5,
        language: "en"
      });
      const loadGeneralSettings = async () => {
        loading.value = true;
        try {
          const res = await getSettings();
          if (res.success && res.data) {
            settings.value.tokenLimit = res.data.token_limit ?? settings.value.tokenLimit;
            settings.value.language = res.data.language ?? settings.value.language;
            originalLanguage.value = settings.value.language;
          }
        } catch (error) {
          console.error("Failed to load general settings:", error);
        } finally {
          loading.value = false;
        }
      };
      onActivated(loadGeneralSettings);
      const saveSettings = async () => {
        saving.value = true;
        try {
          const res = await updateSettings("general", {
            token_limit: Number(settings.value.tokenLimit) || 0,
            language: settings.value.language
          });
          if (res.success) {
            if (originalLanguage.value !== settings.value.language) {
              showNotification("success", t("notificationSuccess"), { message: t("refreshing") });
              setTimeout(() => {
                window.location.reload();
              }, 1e3);
            } else {
              showNotification("success", t("notificationSuccess"));
            }
          } else {
            showNotification("error", res.message || t("notificationError"));
          }
        } catch (error) {
          showNotification("error", t("notificationError"));
        } finally {
          saving.value = false;
        }
      };
      return (_ctx, _cache) => {
        const _component_el_input = resolveComponent("el-input");
        const _component_el_form_item = resolveComponent("el-form-item");
        const _component_el_option = resolveComponent("el-option");
        const _component_el_select = resolveComponent("el-select");
        const _component_el_form = resolveComponent("el-form");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_card = resolveComponent("el-card");
        return openBlock(), createElementBlock("div", _hoisted_1$c, [
          loading.value ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            rows: 5,
            "show-toolbar": false
          })) : (openBlock(), createBlock(_component_el_card, {
            key: 1,
            shadow: "never"
          }, {
            footer: withCtx(() => [
              createBaseVNode("div", _hoisted_2$c, [
                createVNode(_component_el_button, {
                  type: "primary",
                  loading: saving.value,
                  onClick: saveSettings
                }, {
                  default: withCtx(() => [
                    createTextVNode(toDisplayString(unref(t)("saveChanges")), 1)
                  ]),
                  _: 1
                }, 8, ["loading"])
              ])
            ]),
            default: withCtx(() => [
              createVNode(_component_el_form, { "label-position": "top" }, {
                default: withCtx(() => [
                  createVNode(_component_el_form_item, {
                    label: unref(t)("labelTokenLimit")
                  }, {
                    default: withCtx(() => [
                      createVNode(_component_el_input, {
                        modelValue: settings.value.tokenLimit,
                        "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => settings.value.tokenLimit = $event),
                        type: "number"
                      }, {
                        append: withCtx(() => [
                          createTextVNode(toDisplayString(unref(t)("labelTokens")), 1)
                        ]),
                        _: 1
                      }, 8, ["modelValue"])
                    ]),
                    _: 1
                  }, 8, ["label"]),
                  createVNode(_component_el_form_item, {
                    label: unref(t)("labelDefaultLanguage")
                  }, {
                    default: withCtx(() => [
                      createVNode(_component_el_select, {
                        modelValue: settings.value.language,
                        "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => settings.value.language = $event),
                        class: "w-full"
                      }, {
                        default: withCtx(() => [
                          createVNode(_component_el_option, {
                            label: "English",
                            value: "en"
                          }),
                          createVNode(_component_el_option, {
                            label: "Spanish — Español",
                            value: "es_ES"
                          }),
                          createVNode(_component_el_option, {
                            label: "German — Deutsch",
                            value: "de_DE"
                          }),
                          createVNode(_component_el_option, {
                            label: "French — Français",
                            value: "fr_FR"
                          }),
                          createVNode(_component_el_option, {
                            label: "Portuguese (Brazil) — Português",
                            value: "pt_BR"
                          }),
                          createVNode(_component_el_option, {
                            label: "Japanese — 日本語",
                            value: "ja"
                          }),
                          createVNode(_component_el_option, {
                            label: "Italian — Italiano",
                            value: "it_IT"
                          }),
                          createVNode(_component_el_option, {
                            label: "Chinese (Simplified) — 简体中文",
                            value: "zh_CN"
                          })
                        ]),
                        _: 1
                      }, 8, ["modelValue"])
                    ]),
                    _: 1
                  }, 8, ["label"])
                ]),
                _: 1
              })
            ]),
            _: 1
          }))
        ]);
      };
    }
  };
  const _hoisted_1$b = { class: "space-y-6" };
  const _hoisted_2$b = { class: "font-medium text-gray-900" };
  const _hoisted_3$9 = { class: "flex justify-end" };
  const _sfc_main$c = {
    __name: "AccessControl",
    setup(__props) {
      const t = inject("t", (k) => k);
      const { getAccessControl, saveAccessControl } = useSettingsAPI();
      const { showNotification } = useNotifications();
      const loading = ref(true);
      const saving = ref(false);
      const roles = ref([]);
      const loadAccessControl = async () => {
        loading.value = true;
        try {
          const res = await getAccessControl();
          if (res.success && Array.isArray(res.data)) {
            roles.value = res.data;
          }
        } catch (error) {
          console.error("Failed to load access control settings:", error);
        } finally {
          loading.value = false;
        }
      };
      onActivated(loadAccessControl);
      const savePermissions = async () => {
        saving.value = true;
        try {
          const res = await saveAccessControl(roles.value);
          if (res.success) {
            showNotification("success", "Permissions saved successfully");
          } else {
            showNotification("error", res.message || "Failed to save permissions");
          }
        } catch (error) {
          showNotification("error", "Failed to save permissions");
        } finally {
          saving.value = false;
        }
      };
      return (_ctx, _cache) => {
        const _component_el_empty = resolveComponent("el-empty");
        const _component_el_tag = resolveComponent("el-tag");
        const _component_el_table_column = resolveComponent("el-table-column");
        const _component_el_checkbox = resolveComponent("el-checkbox");
        const _component_el_table = resolveComponent("el-table");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_card = resolveComponent("el-card");
        return openBlock(), createElementBlock("div", _hoisted_1$b, [
          loading.value ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            rows: 8,
            "show-toolbar": false
          })) : (openBlock(), createBlock(_component_el_card, {
            key: 1,
            shadow: "never"
          }, {
            footer: withCtx(() => [
              createBaseVNode("div", _hoisted_3$9, [
                createVNode(_component_el_button, {
                  type: "primary",
                  loading: saving.value,
                  onClick: savePermissions
                }, {
                  default: withCtx(() => [
                    createTextVNode(toDisplayString(unref(t)("savePermissions")), 1)
                  ]),
                  _: 1
                }, 8, ["loading"])
              ])
            ]),
            default: withCtx(() => [
              createVNode(_component_el_table, {
                data: roles.value,
                stripe: "",
                style: { "width": "100%" }
              }, {
                empty: withCtx(() => [
                  createVNode(_component_el_empty, {
                    description: unref(t)("noRolesFound")
                  }, null, 8, ["description"])
                ]),
                default: withCtx(() => [
                  createVNode(_component_el_table_column, {
                    prop: "name",
                    label: unref(t)("labelRole"),
                    "min-width": "180"
                  }, {
                    default: withCtx((scope) => [
                      createBaseVNode("span", _hoisted_2$b, toDisplayString(scope.row.name), 1),
                      scope.row.slug === "administrator" ? (openBlock(), createBlock(_component_el_tag, {
                        key: 0,
                        size: "small",
                        type: "danger",
                        class: "ml-2"
                      }, {
                        default: withCtx(() => [
                          createTextVNode(toDisplayString(unref(t)("labelProtected")), 1)
                        ]),
                        _: 1
                      })) : createCommentVNode("", true)
                    ]),
                    _: 1
                  }, 8, ["label"]),
                  createVNode(_component_el_table_column, {
                    label: unref(t)("navModels"),
                    "min-width": "120",
                    align: "center"
                  }, {
                    default: withCtx((scope) => [
                      createVNode(_component_el_checkbox, {
                        modelValue: scope.row.models,
                        "onUpdate:modelValue": ($event) => scope.row.models = $event,
                        disabled: scope.row.slug === "administrator"
                      }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
                    ]),
                    _: 1
                  }, 8, ["label"]),
                  createVNode(_component_el_table_column, {
                    label: unref(t)("navChatbots"),
                    "min-width": "120",
                    align: "center"
                  }, {
                    default: withCtx((scope) => [
                      createVNode(_component_el_checkbox, {
                        modelValue: scope.row.chatbots,
                        "onUpdate:modelValue": ($event) => scope.row.chatbots = $event,
                        disabled: scope.row.slug === "administrator"
                      }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
                    ]),
                    _: 1
                  }, 8, ["label"]),
                  createVNode(_component_el_table_column, {
                    label: unref(t)("navContent"),
                    "min-width": "140",
                    align: "center"
                  }, {
                    default: withCtx((scope) => [
                      createVNode(_component_el_checkbox, {
                        modelValue: scope.row.content,
                        "onUpdate:modelValue": ($event) => scope.row.content = $event,
                        disabled: scope.row.slug === "administrator"
                      }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
                    ]),
                    _: 1
                  }, 8, ["label"]),
                  createVNode(_component_el_table_column, {
                    label: unref(t)("navKB"),
                    "min-width": "150",
                    align: "center"
                  }, {
                    default: withCtx((scope) => [
                      createVNode(_component_el_checkbox, {
                        modelValue: scope.row.knowledge_base,
                        "onUpdate:modelValue": ($event) => scope.row.knowledge_base = $event,
                        disabled: scope.row.slug === "administrator"
                      }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
                    ]),
                    _: 1
                  }, 8, ["label"]),
                  createVNode(_component_el_table_column, {
                    label: unref(t)("navAutomation"),
                    "min-width": "120",
                    align: "center"
                  }, {
                    default: withCtx((scope) => [
                      createVNode(_component_el_checkbox, {
                        modelValue: scope.row.automation,
                        "onUpdate:modelValue": ($event) => scope.row.automation = $event,
                        disabled: scope.row.slug === "administrator"
                      }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
                    ]),
                    _: 1
                  }, 8, ["label"]),
                  createVNode(_component_el_table_column, {
                    label: unref(t)("navAnalytics"),
                    "min-width": "120",
                    align: "center"
                  }, {
                    default: withCtx((scope) => [
                      createVNode(_component_el_checkbox, {
                        modelValue: scope.row.analytics,
                        "onUpdate:modelValue": ($event) => scope.row.analytics = $event,
                        disabled: scope.row.slug === "administrator"
                      }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
                    ]),
                    _: 1
                  }, 8, ["label"]),
                  createVNode(_component_el_table_column, {
                    label: unref(t)("navIntegrations"),
                    "min-width": "130",
                    align: "center"
                  }, {
                    default: withCtx((scope) => [
                      createVNode(_component_el_checkbox, {
                        modelValue: scope.row.integrations,
                        "onUpdate:modelValue": ($event) => scope.row.integrations = $event,
                        disabled: scope.row.slug === "administrator"
                      }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
                    ]),
                    _: 1
                  }, 8, ["label"]),
                  createVNode(_component_el_table_column, {
                    label: unref(t)("navSettings"),
                    "min-width": "120",
                    align: "center"
                  }, {
                    default: withCtx((scope) => [
                      createVNode(_component_el_checkbox, {
                        modelValue: scope.row.settings,
                        "onUpdate:modelValue": ($event) => scope.row.settings = $event,
                        disabled: scope.row.slug === "administrator"
                      }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
                    ]),
                    _: 1
                  }, 8, ["label"])
                ]),
                _: 1
              }, 8, ["data"])
            ]),
            _: 1
          }))
        ]);
      };
    }
  };
  const _hoisted_1$a = { class: "space-y-6" };
  const _hoisted_2$a = { class: "text-xs font-semibold tracking-wide text-gray-500 uppercase mb-3" };
  const _hoisted_3$8 = { class: "text-xs font-semibold tracking-wide text-gray-500 uppercase mb-3 mt-4" };
  const _hoisted_4$8 = { class: "text-xs text-gray-400 mt-1" };
  const _hoisted_5$8 = { class: "flex justify-end" };
  const _sfc_main$b = {
    __name: "NotificationSettings",
    setup(__props) {
      const t = inject("t", (k) => k);
      const { getNotificationSettings, saveNotificationSettings } = useSettingsAPI();
      const { showNotification } = useNotifications();
      const loading = ref(true);
      const saving = ref(false);
      const settings = ref({
        budgetWarning: true,
        budgetLimit: true,
        apiErrors: true,
        pluginUpdates: false,
        email: ""
      });
      const loadNotificationSettings = async () => {
        loading.value = true;
        try {
          const res = await getNotificationSettings();
          if (res.success && res.data) {
            settings.value = { ...settings.value, ...res.data };
          }
        } catch (error) {
          console.error("Failed to load notification settings:", error);
        } finally {
          loading.value = false;
        }
      };
      onActivated(loadNotificationSettings);
      const savePreferences = async () => {
        saving.value = true;
        try {
          const res = await saveNotificationSettings(settings.value);
          if (res.success) {
            showNotification("success", "Notification preferences saved successfully");
          } else {
            showNotification("error", res.message || "Failed to save preferences");
          }
        } catch (error) {
          showNotification("error", "Failed to save preferences");
        } finally {
          saving.value = false;
        }
      };
      return (_ctx, _cache) => {
        const _component_el_checkbox = resolveComponent("el-checkbox");
        const _component_el_form_item = resolveComponent("el-form-item");
        const _component_el_input = resolveComponent("el-input");
        const _component_el_form = resolveComponent("el-form");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_card = resolveComponent("el-card");
        return openBlock(), createElementBlock("div", _hoisted_1$a, [
          loading.value ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            rows: 7,
            "show-toolbar": false
          })) : (openBlock(), createBlock(_component_el_card, {
            key: 1,
            shadow: "never"
          }, {
            footer: withCtx(() => [
              createBaseVNode("div", _hoisted_5$8, [
                createVNode(_component_el_button, {
                  type: "primary",
                  loading: saving.value,
                  onClick: savePreferences
                }, {
                  default: withCtx(() => [
                    createTextVNode(toDisplayString(unref(t)("savePreferences")), 1)
                  ]),
                  _: 1
                }, 8, ["loading"])
              ])
            ]),
            default: withCtx(() => [
              createVNode(_component_el_form, { "label-position": "top" }, {
                default: withCtx(() => [
                  createBaseVNode("div", _hoisted_2$a, toDisplayString(unref(t)("spendingAlerts")), 1),
                  createVNode(_component_el_form_item, null, {
                    default: withCtx(() => [
                      createVNode(_component_el_checkbox, {
                        modelValue: settings.value.budgetWarning,
                        "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => settings.value.budgetWarning = $event)
                      }, {
                        default: withCtx(() => [
                          createTextVNode(toDisplayString(unref(t)("budgetWarningLabel")), 1)
                        ]),
                        _: 1
                      }, 8, ["modelValue"])
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_form_item, null, {
                    default: withCtx(() => [
                      createVNode(_component_el_checkbox, {
                        modelValue: settings.value.budgetLimit,
                        "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => settings.value.budgetLimit = $event)
                      }, {
                        default: withCtx(() => [
                          createTextVNode(toDisplayString(unref(t)("budgetLimitReachedLabel")), 1)
                        ]),
                        _: 1
                      }, 8, ["modelValue"])
                    ]),
                    _: 1
                  }),
                  createBaseVNode("div", _hoisted_3$8, toDisplayString(unref(t)("systemAlerts")), 1),
                  createVNode(_component_el_form_item, null, {
                    default: withCtx(() => [
                      createVNode(_component_el_checkbox, {
                        modelValue: settings.value.apiErrors,
                        "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => settings.value.apiErrors = $event)
                      }, {
                        default: withCtx(() => [
                          createTextVNode(toDisplayString(unref(t)("apiConnectionErrors")), 1)
                        ]),
                        _: 1
                      }, 8, ["modelValue"])
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_form_item, null, {
                    default: withCtx(() => [
                      createVNode(_component_el_checkbox, {
                        modelValue: settings.value.pluginUpdates,
                        "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => settings.value.pluginUpdates = $event)
                      }, {
                        default: withCtx(() => [
                          createTextVNode(toDisplayString(unref(t)("pluginUpdatesAvailable")), 1)
                        ]),
                        _: 1
                      }, 8, ["modelValue"])
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_form_item, {
                    label: unref(t)("labelNotifEmail")
                  }, {
                    default: withCtx(() => [
                      createVNode(_component_el_input, {
                        modelValue: settings.value.email,
                        "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => settings.value.email = $event),
                        type: "email",
                        placeholder: "admin@example.com"
                      }, null, 8, ["modelValue"]),
                      createBaseVNode("div", _hoisted_4$8, toDisplayString(unref(t)("notifEmailHelp")), 1)
                    ]),
                    _: 1
                  }, 8, ["label"])
                ]),
                _: 1
              })
            ]),
            _: 1
          }))
        ]);
      };
    }
  };
  const _hoisted_1$9 = { class: "space-y-6" };
  const _hoisted_2$9 = { class: "flex items-center w-full gap-4" };
  const _hoisted_3$7 = { class: "text-sm font-medium text-gray-700 w-12" };
  const _hoisted_4$7 = { class: "text-xs text-gray-400 mt-1" };
  const _hoisted_5$7 = { class: "font-medium text-gray-700" };
  const _hoisted_6$3 = { class: "text-sm text-gray-500" };
  const _hoisted_7$2 = { class: "font-medium text-gray-700" };
  const _hoisted_8$2 = { class: "text-sm text-gray-500" };
  const _hoisted_9$2 = { class: "flex items-center gap-2 flex-wrap" };
  const _hoisted_10$2 = { class: "text-xs text-gray-400 mt-1" };
  const _hoisted_11$2 = { class: "flex justify-end" };
  const _sfc_main$a = {
    __name: "AdvancedSettings",
    setup(__props) {
      const t = inject("t", (k) => k);
      const { getSettings, updateSettings, exportSettings, importSettings } = useSettingsAPI();
      const { showNotification } = useNotifications();
      const loading = ref(true);
      const saving = ref(false);
      const exporting = ref(false);
      const importing = ref(false);
      const settings = ref({
        request_timeout: 60,
        debug_mode: false,
        show_branding: false
      });
      const loadAdvancedSettings = async () => {
        loading.value = true;
        try {
          const res = await getSettings();
          if (res.success && res.data) {
            settings.value.request_timeout = res.data.request_timeout ?? 60;
            settings.value.debug_mode = res.data.debug_mode ?? false;
            settings.value.show_branding = res.data.show_branding ?? false;
          }
        } catch (error) {
          console.error("Failed to load advanced settings:", error);
        } finally {
          loading.value = false;
        }
      };
      onActivated(loadAdvancedSettings);
      const saveSettings = async () => {
        saving.value = true;
        try {
          const res = await updateSettings("advanced", {
            request_timeout: settings.value.request_timeout,
            debug_mode: settings.value.debug_mode,
            show_branding: settings.value.show_branding
          });
          if (res.success) {
            showNotification("success", "Advanced settings saved successfully");
          } else {
            showNotification("error", res.message || "Failed to save settings");
          }
        } catch (error) {
          showNotification("error", "Failed to save settings");
        } finally {
          saving.value = false;
        }
      };
      const handleExport = async () => {
        exporting.value = true;
        try {
          const res = await exportSettings();
          if (res.success) {
            const blob = new Blob([JSON.stringify(res.data, null, 2)], { type: "application/json" });
            const url = URL.createObjectURL(blob);
            const a2 = document.createElement("a");
            a2.href = url;
            a2.download = `ai-platform-settings-${(/* @__PURE__ */ new Date()).toISOString().slice(0, 10)}.json`;
            a2.click();
            URL.revokeObjectURL(url);
            showNotification("success", "Settings exported successfully");
          } else {
            showNotification("error", "Failed to export settings");
          }
        } catch (error) {
          showNotification("error", "Export failed");
        } finally {
          exporting.value = false;
        }
      };
      const handleImportFileChange = async (file) => {
        importing.value = true;
        try {
          const text = await file.raw.text();
          const json = JSON.parse(text);
          const res = await importSettings(json);
          if (res.success) {
            showNotification("success", "Settings imported successfully. Refreshing...");
            setTimeout(() => window.location.reload(), 1500);
          } else {
            showNotification("error", res.message || "Import failed");
          }
        } catch (error) {
          showNotification("error", "Invalid JSON file");
        } finally {
          importing.value = false;
        }
      };
      return (_ctx, _cache) => {
        const _component_el_slider = resolveComponent("el-slider");
        const _component_el_form_item = resolveComponent("el-form-item");
        const _component_el_checkbox = resolveComponent("el-checkbox");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_upload = resolveComponent("el-upload");
        const _component_el_form = resolveComponent("el-form");
        const _component_el_card = resolveComponent("el-card");
        return openBlock(), createElementBlock("div", _hoisted_1$9, [
          loading.value ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            rows: 7,
            "show-toolbar": false
          })) : (openBlock(), createBlock(_component_el_card, {
            key: 1,
            shadow: "never"
          }, {
            footer: withCtx(() => [
              createBaseVNode("div", _hoisted_11$2, [
                createVNode(_component_el_button, {
                  type: "primary",
                  loading: saving.value,
                  onClick: saveSettings
                }, {
                  default: withCtx(() => [
                    createTextVNode(toDisplayString(unref(t)("saveChanges")), 1)
                  ]),
                  _: 1
                }, 8, ["loading"])
              ])
            ]),
            default: withCtx(() => [
              createVNode(_component_el_form, { "label-position": "top" }, {
                default: withCtx(() => [
                  createVNode(_component_el_form_item, {
                    label: unref(t)("labelRequestTimeout")
                  }, {
                    default: withCtx(() => [
                      createBaseVNode("div", _hoisted_2$9, [
                        createVNode(_component_el_slider, {
                          modelValue: settings.value.request_timeout,
                          "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => settings.value.request_timeout = $event),
                          min: 10,
                          max: 120,
                          class: "flex-1"
                        }, null, 8, ["modelValue"]),
                        createBaseVNode("span", _hoisted_3$7, toDisplayString(settings.value.request_timeout) + "s", 1)
                      ]),
                      createBaseVNode("div", _hoisted_4$7, toDisplayString(unref(t)("requestTimeoutHelp")), 1)
                    ]),
                    _: 1
                  }, 8, ["label"]),
                  createVNode(_component_el_form_item, null, {
                    default: withCtx(() => [
                      createVNode(_component_el_checkbox, {
                        modelValue: settings.value.debug_mode,
                        "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => settings.value.debug_mode = $event)
                      }, {
                        default: withCtx(() => [
                          createBaseVNode("div", null, [
                            createBaseVNode("div", _hoisted_5$7, toDisplayString(unref(t)("enableDebugMode")), 1),
                            createBaseVNode("div", _hoisted_6$3, toDisplayString(unref(t)("debugModeHelp")), 1)
                          ])
                        ]),
                        _: 1
                      }, 8, ["modelValue"])
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_form_item, null, {
                    default: withCtx(() => [
                      createVNode(_component_el_checkbox, {
                        modelValue: settings.value.show_branding,
                        "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => settings.value.show_branding = $event)
                      }, {
                        default: withCtx(() => [
                          createBaseVNode("div", null, [
                            createBaseVNode("div", _hoisted_7$2, toDisplayString(unref(t)("showBranding")), 1),
                            createBaseVNode("div", _hoisted_8$2, toDisplayString(unref(t)("showBrandingHelp")), 1)
                          ])
                        ]),
                        _: 1
                      }, 8, ["modelValue"])
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_form_item, {
                    label: unref(t)("labelExportImport")
                  }, {
                    default: withCtx(() => [
                      createBaseVNode("div", _hoisted_9$2, [
                        createVNode(_component_el_upload, {
                          action: "#",
                          "auto-upload": false,
                          limit: 1,
                          "show-file-list": false,
                          accept: ".json",
                          "on-change": handleImportFileChange
                        }, {
                          default: withCtx(() => [
                            createVNode(_component_el_button, { loading: importing.value }, {
                              default: withCtx(() => [
                                createVNode(_component_el_icon, { class: "mr-1" }, {
                                  default: withCtx(() => [
                                    createVNode(unref(upload_default))
                                  ]),
                                  _: 1
                                }),
                                createTextVNode(" " + toDisplayString(unref(t)("importSettings")), 1)
                              ]),
                              _: 1
                            }, 8, ["loading"])
                          ]),
                          _: 1
                        }),
                        createVNode(_component_el_button, {
                          loading: exporting.value,
                          onClick: handleExport
                        }, {
                          default: withCtx(() => [
                            createVNode(_component_el_icon, { class: "mr-1" }, {
                              default: withCtx(() => [
                                createVNode(unref(download_default))
                              ]),
                              _: 1
                            }),
                            createTextVNode(" " + toDisplayString(unref(t)("exportPluginSettings")), 1)
                          ]),
                          _: 1
                        }, 8, ["loading"])
                      ])
                    ]),
                    _: 1
                  }, 8, ["label"]),
                  _cache[3] || (_cache[3] = createBaseVNode("br", null, null, -1)),
                  createBaseVNode("div", _hoisted_10$2, toDisplayString(unref(t)("exportImportHelp")), 1)
                ]),
                _: 1
              })
            ]),
            _: 1
          }))
        ]);
      };
    }
  };
  const _hoisted_1$8 = { class: "px-6 py-4" };
  const _hoisted_2$8 = { class: "mb-6" };
  const _hoisted_3$6 = { class: "text-2xl font-bold text-gray-900" };
  const _hoisted_4$6 = { class: "text-gray-600 mt-1" };
  const _hoisted_5$6 = { class: "flex items-center" };
  const _sfc_main$9 = {
    __name: "Settings",
    setup(__props) {
      const t = inject("t", (k) => k);
      const currentTab = ref("general");
      const tabs = computed(() => [
        { id: "general", name: t("tabGeneral"), icon: "fas fa-cog" },
        { id: "access", name: t("tabAccess"), icon: "fas fa-users-cog" },
        { id: "notifications", name: t("tabNotifications"), icon: "fas fa-bell" },
        { id: "advanced", name: t("tabAdvanced"), icon: "fas fa-sliders-h" }
      ]);
      const tabComponents = {
        "general": _sfc_main$d,
        "access": _sfc_main$c,
        "notifications": _sfc_main$b,
        "advanced": _sfc_main$a
      };
      const currentTabComponent = computed(() => tabComponents[currentTab.value]);
      return (_ctx, _cache) => {
        const _component_el_tab_pane = resolveComponent("el-tab-pane");
        const _component_el_tabs = resolveComponent("el-tabs");
        return openBlock(), createElementBlock("div", _hoisted_1$8, [
          createBaseVNode("div", _hoisted_2$8, [
            createBaseVNode("h1", _hoisted_3$6, toDisplayString(unref(t)("navSettings")), 1),
            createBaseVNode("p", _hoisted_4$6, toDisplayString(unref(t)("settingsSubtitle")), 1)
          ]),
          createVNode(_component_el_tabs, {
            modelValue: currentTab.value,
            "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => currentTab.value = $event),
            class: "mb-4"
          }, {
            default: withCtx(() => [
              (openBlock(true), createElementBlock(Fragment, null, renderList(tabs.value, (tab) => {
                return openBlock(), createBlock(_component_el_tab_pane, {
                  key: tab.id,
                  label: tab.name,
                  name: tab.id
                }, {
                  label: withCtx(() => [
                    createBaseVNode("span", _hoisted_5$6, [
                      createBaseVNode("i", {
                        class: normalizeClass([tab.icon, "mr-2"])
                      }, null, 2),
                      createTextVNode(" " + toDisplayString(tab.name), 1)
                    ])
                  ]),
                  _: 2
                }, 1032, ["label", "name"]);
              }), 128))
            ]),
            _: 1
          }, 8, ["modelValue"]),
          createVNode(Transition, {
            name: "fade",
            mode: "out-in"
          }, {
            default: withCtx(() => [
              (openBlock(), createBlock(KeepAlive, null, [
                (openBlock(), createBlock(resolveDynamicComponent(currentTabComponent.value)))
              ], 1024))
            ]),
            _: 1
          })
        ]);
      };
    }
  };
  const _hoisted_1$7 = { class: "max-w-2xl mx-auto" };
  const _hoisted_2$7 = { class: "flex justify-end" };
  const _sfc_main$8 = {
    __name: "ContactSupport",
    setup(__props) {
      const form = ref({
        name: "",
        email: "",
        subject: "general",
        category: "bug",
        priority: "normal",
        message: "",
        includeSystemInfo: false
      });
      const submitTicket = () => {
        console.log("Submitting ticket:", form.value);
      };
      return (_ctx, _cache) => {
        const _component_el_input = resolveComponent("el-input");
        const _component_el_form_item = resolveComponent("el-form-item");
        const _component_el_col = resolveComponent("el-col");
        const _component_el_row = resolveComponent("el-row");
        const _component_el_option = resolveComponent("el-option");
        const _component_el_select = resolveComponent("el-select");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_upload = resolveComponent("el-upload");
        const _component_el_checkbox = resolveComponent("el-checkbox");
        const _component_el_form = resolveComponent("el-form");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_card = resolveComponent("el-card");
        return openBlock(), createElementBlock("div", _hoisted_1$7, [
          createVNode(_component_el_card, { shadow: "never" }, {
            header: withCtx(() => [..._cache[7] || (_cache[7] = [
              createBaseVNode("div", null, [
                createBaseVNode("h2", { class: "text-lg font-bold text-gray-900" }, "Contact Support"),
                createBaseVNode("p", { class: "text-sm text-gray-500" }, "We usually respond within 24 hours.")
              ], -1)
            ])]),
            footer: withCtx(() => [
              createBaseVNode("div", _hoisted_2$7, [
                createVNode(_component_el_button, {
                  type: "primary",
                  onClick: submitTicket
                }, {
                  default: withCtx(() => [..._cache[10] || (_cache[10] = [
                    createTextVNode("Send Ticket", -1)
                  ])]),
                  _: 1
                })
              ])
            ]),
            default: withCtx(() => [
              createVNode(_component_el_form, { "label-position": "top" }, {
                default: withCtx(() => [
                  createVNode(_component_el_row, { gutter: 16 }, {
                    default: withCtx(() => [
                      createVNode(_component_el_col, { span: 12 }, {
                        default: withCtx(() => [
                          createVNode(_component_el_form_item, { label: "Name" }, {
                            default: withCtx(() => [
                              createVNode(_component_el_input, {
                                modelValue: form.value.name,
                                "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => form.value.name = $event),
                                placeholder: "Your Name"
                              }, null, 8, ["modelValue"])
                            ]),
                            _: 1
                          })
                        ]),
                        _: 1
                      }),
                      createVNode(_component_el_col, { span: 12 }, {
                        default: withCtx(() => [
                          createVNode(_component_el_form_item, { label: "Email" }, {
                            default: withCtx(() => [
                              createVNode(_component_el_input, {
                                modelValue: form.value.email,
                                "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => form.value.email = $event),
                                type: "email",
                                placeholder: "you@company.com"
                              }, null, 8, ["modelValue"])
                            ]),
                            _: 1
                          })
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_form_item, { label: "Subject" }, {
                    default: withCtx(() => [
                      createVNode(_component_el_select, {
                        modelValue: form.value.subject,
                        "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => form.value.subject = $event),
                        class: "w-full"
                      }, {
                        default: withCtx(() => [
                          createVNode(_component_el_option, {
                            label: "General Inquiry",
                            value: "general"
                          }),
                          createVNode(_component_el_option, {
                            label: "Technical Issue",
                            value: "technical"
                          }),
                          createVNode(_component_el_option, {
                            label: "Billing Question",
                            value: "billing"
                          }),
                          createVNode(_component_el_option, {
                            label: "Feature Request",
                            value: "feature"
                          })
                        ]),
                        _: 1
                      }, 8, ["modelValue"])
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_row, { gutter: 16 }, {
                    default: withCtx(() => [
                      createVNode(_component_el_col, { span: 12 }, {
                        default: withCtx(() => [
                          createVNode(_component_el_form_item, { label: "Category" }, {
                            default: withCtx(() => [
                              createVNode(_component_el_select, {
                                modelValue: form.value.category,
                                "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => form.value.category = $event),
                                class: "w-full"
                              }, {
                                default: withCtx(() => [
                                  createVNode(_component_el_option, {
                                    label: "Bug Report",
                                    value: "bug"
                                  }),
                                  createVNode(_component_el_option, {
                                    label: "Installation",
                                    value: "installation"
                                  }),
                                  createVNode(_component_el_option, {
                                    label: "Configuration",
                                    value: "configuration"
                                  }),
                                  createVNode(_component_el_option, {
                                    label: "Other",
                                    value: "other"
                                  })
                                ]),
                                _: 1
                              }, 8, ["modelValue"])
                            ]),
                            _: 1
                          })
                        ]),
                        _: 1
                      }),
                      createVNode(_component_el_col, { span: 12 }, {
                        default: withCtx(() => [
                          createVNode(_component_el_form_item, { label: "Priority" }, {
                            default: withCtx(() => [
                              createVNode(_component_el_select, {
                                modelValue: form.value.priority,
                                "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => form.value.priority = $event),
                                class: "w-full"
                              }, {
                                default: withCtx(() => [
                                  createVNode(_component_el_option, {
                                    label: "Low",
                                    value: "low"
                                  }),
                                  createVNode(_component_el_option, {
                                    label: "Normal",
                                    value: "normal"
                                  }),
                                  createVNode(_component_el_option, {
                                    label: "High",
                                    value: "high"
                                  }),
                                  createVNode(_component_el_option, {
                                    label: "Urgent",
                                    value: "urgent"
                                  })
                                ]),
                                _: 1
                              }, 8, ["modelValue"])
                            ]),
                            _: 1
                          })
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_form_item, { label: "Message" }, {
                    default: withCtx(() => [
                      createVNode(_component_el_input, {
                        modelValue: form.value.message,
                        "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => form.value.message = $event),
                        type: "textarea",
                        rows: 5,
                        placeholder: "Describe your issue..."
                      }, null, 8, ["modelValue"])
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_form_item, { label: "Attachments (Optional)" }, {
                    default: withCtx(() => [
                      createVNode(_component_el_upload, {
                        action: "#",
                        "auto-upload": false,
                        drag: ""
                      }, {
                        default: withCtx(() => [
                          createVNode(_component_el_icon, { class: "text-2xl mb-2" }, {
                            default: withCtx(() => [
                              createVNode(unref(upload_filled_default))
                            ]),
                            _: 1
                          }),
                          _cache[8] || (_cache[8] = createBaseVNode("div", { class: "text-sm text-gray-500" }, "Click to upload or drag and drop", -1))
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_form_item, null, {
                    default: withCtx(() => [
                      createVNode(_component_el_checkbox, {
                        modelValue: form.value.includeSystemInfo,
                        "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => form.value.includeSystemInfo = $event)
                      }, {
                        default: withCtx(() => [..._cache[9] || (_cache[9] = [
                          createTextVNode("Include system information (PHP version, WP version, etc.) to help debug.", -1)
                        ])]),
                        _: 1
                      }, 8, ["modelValue"])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              })
            ]),
            _: 1
          })
        ]);
      };
    }
  };
  const _hoisted_1$6 = { class: "max-w-4xl mx-auto" };
  const _hoisted_2$6 = { class: "space-y-4" };
  const _hoisted_3$5 = { class: "flex justify-between items-start mb-2" };
  const _hoisted_4$5 = { class: "font-medium text-gray-900 text-sm" };
  const _hoisted_5$5 = { class: "flex items-center justify-between text-xs text-gray-500" };
  const _sfc_main$7 = {
    __name: "FeatureRequests",
    setup(__props) {
      const form = ref({
        title: "",
        description: "",
        useCase: ""
      });
      const topRequests = [
        { title: "Slack Integration", votes: 128, status: "Planned" },
        { title: "Custom Vector DB Support", votes: 94, status: "Under Review" },
        { title: "Multi-language Admin", votes: 82, status: "Completed" }
      ];
      const getStatusType = (status) => {
        switch (status) {
          case "Completed":
            return "success";
          case "Planned":
            return "warning";
          default:
            return "info";
        }
      };
      const submitRequest = () => {
        console.log("Submitting request:", form.value);
      };
      return (_ctx, _cache) => {
        const _component_el_input = resolveComponent("el-input");
        const _component_el_form_item = resolveComponent("el-form-item");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_form = resolveComponent("el-form");
        const _component_el_card = resolveComponent("el-card");
        const _component_el_col = resolveComponent("el-col");
        const _component_el_tag = resolveComponent("el-tag");
        const _component_el_divider = resolveComponent("el-divider");
        const _component_el_timeline_item = resolveComponent("el-timeline-item");
        const _component_el_timeline = resolveComponent("el-timeline");
        const _component_el_row = resolveComponent("el-row");
        return openBlock(), createElementBlock("div", _hoisted_1$6, [
          createVNode(_component_el_row, { gutter: 32 }, {
            default: withCtx(() => [
              createVNode(_component_el_col, {
                xs: 24,
                lg: 16
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_card, { shadow: "never" }, {
                    header: withCtx(() => [..._cache[3] || (_cache[3] = [
                      createBaseVNode("h2", { class: "text-xl font-bold text-gray-900" }, "Submit a Feature Request", -1)
                    ])]),
                    default: withCtx(() => [
                      createVNode(_component_el_form, { "label-position": "top" }, {
                        default: withCtx(() => [
                          createVNode(_component_el_form_item, { label: "Feature Title" }, {
                            default: withCtx(() => [
                              createVNode(_component_el_input, {
                                modelValue: form.value.title,
                                "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => form.value.title = $event),
                                placeholder: "Enter a descriptive title"
                              }, null, 8, ["modelValue"])
                            ]),
                            _: 1
                          }),
                          createVNode(_component_el_form_item, { label: "Description" }, {
                            default: withCtx(() => [
                              createVNode(_component_el_input, {
                                modelValue: form.value.description,
                                "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => form.value.description = $event),
                                type: "textarea",
                                rows: 4,
                                placeholder: "Describe the feature and why it would be useful..."
                              }, null, 8, ["modelValue"])
                            ]),
                            _: 1
                          }),
                          createVNode(_component_el_form_item, { label: "Use Case" }, {
                            default: withCtx(() => [
                              createVNode(_component_el_input, {
                                modelValue: form.value.useCase,
                                "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => form.value.useCase = $event),
                                type: "textarea",
                                rows: 2,
                                placeholder: "How would you use this feature?"
                              }, null, 8, ["modelValue"])
                            ]),
                            _: 1
                          }),
                          createVNode(_component_el_button, {
                            type: "primary",
                            class: "w-full",
                            onClick: submitRequest
                          }, {
                            default: withCtx(() => [..._cache[4] || (_cache[4] = [
                              createTextVNode("Submit Request", -1)
                            ])]),
                            _: 1
                          })
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }),
              createVNode(_component_el_col, {
                xs: 24,
                lg: 8
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_card, {
                    shadow: "never",
                    class: "bg-gray-50 border-0 h-full"
                  }, {
                    default: withCtx(() => [
                      _cache[9] || (_cache[9] = createBaseVNode("h3", { class: "text-lg font-bold text-gray-900 mb-4" }, "Popular Requests", -1)),
                      createBaseVNode("div", _hoisted_2$6, [
                        (openBlock(), createElementBlock(Fragment, null, renderList(topRequests, (req) => {
                          return createVNode(_component_el_card, {
                            key: req.title,
                            shadow: "hover",
                            class: "bg-white"
                          }, {
                            default: withCtx(() => [
                              createBaseVNode("div", _hoisted_3$5, [
                                createBaseVNode("h4", _hoisted_4$5, toDisplayString(req.title), 1),
                                createVNode(_component_el_tag, {
                                  type: getStatusType(req.status),
                                  size: "small",
                                  effect: "light",
                                  round: ""
                                }, {
                                  default: withCtx(() => [
                                    createTextVNode(toDisplayString(req.status), 1)
                                  ]),
                                  _: 2
                                }, 1032, ["type"])
                              ]),
                              createBaseVNode("div", _hoisted_5$5, [
                                createBaseVNode("span", null, toDisplayString(req.votes) + " votes", 1),
                                createVNode(_component_el_button, {
                                  link: "",
                                  type: "primary",
                                  size: "small"
                                }, {
                                  default: withCtx(() => [..._cache[5] || (_cache[5] = [
                                    createTextVNode("Vote", -1)
                                  ])]),
                                  _: 1
                                })
                              ])
                            ]),
                            _: 2
                          }, 1024);
                        }), 64))
                      ]),
                      createVNode(_component_el_divider),
                      _cache[10] || (_cache[10] = createBaseVNode("h3", { class: "text-lg font-bold text-gray-900 mb-4" }, "Roadmap", -1)),
                      createVNode(_component_el_timeline, null, {
                        default: withCtx(() => [
                          createVNode(_component_el_timeline_item, {
                            color: "green",
                            icon: unref(check_default)
                          }, {
                            default: withCtx(() => [..._cache[6] || (_cache[6] = [
                              createTextVNode("Voice Input (Released)", -1)
                            ])]),
                            _: 1
                          }, 8, ["icon"]),
                          createVNode(_component_el_timeline_item, { color: "blue" }, {
                            default: withCtx(() => [..._cache[7] || (_cache[7] = [
                              createTextVNode("CRM Integrations (In Progress)", -1)
                            ])]),
                            _: 1
                          }),
                          createVNode(_component_el_timeline_item, { color: "gray" }, {
                            default: withCtx(() => [..._cache[8] || (_cache[8] = [
                              createTextVNode("White Label (Planned)", -1)
                            ])]),
                            _: 1
                          })
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              })
            ]),
            _: 1
          })
        ]);
      };
    }
  };
  const _hoisted_1$5 = { class: "flex justify-between items-center" };
  const _hoisted_2$5 = { class: "flex space-x-3" };
  const _sfc_main$6 = {
    __name: "SystemDiagnostics",
    setup(__props) {
      return (_ctx, _cache) => {
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_descriptions_item = resolveComponent("el-descriptions-item");
        const _component_el_descriptions = resolveComponent("el-descriptions");
        const _component_el_col = resolveComponent("el-col");
        const _component_el_tag = resolveComponent("el-tag");
        const _component_el_row = resolveComponent("el-row");
        const _component_el_card = resolveComponent("el-card");
        return openBlock(), createBlock(_component_el_card, { shadow: "never" }, {
          header: withCtx(() => [
            createBaseVNode("div", _hoisted_1$5, [
              _cache[2] || (_cache[2] = createBaseVNode("h2", { class: "text-lg font-bold text-gray-900" }, "System Diagnostics", -1)),
              createBaseVNode("div", _hoisted_2$5, [
                createVNode(_component_el_button, null, {
                  default: withCtx(() => [
                    createVNode(_component_el_icon, { class: "mr-1" }, {
                      default: withCtx(() => [
                        createVNode(unref(download_default))
                      ]),
                      _: 1
                    }),
                    _cache[0] || (_cache[0] = createTextVNode(" Export Report", -1))
                  ]),
                  _: 1
                }),
                createVNode(_component_el_button, { type: "primary" }, {
                  default: withCtx(() => [
                    createVNode(_component_el_icon, { class: "mr-1" }, {
                      default: withCtx(() => [
                        createVNode(unref(first_aid_kit_default))
                      ]),
                      _: 1
                    }),
                    _cache[1] || (_cache[1] = createTextVNode(" Run Diagnostic", -1))
                  ]),
                  _: 1
                })
              ])
            ])
          ]),
          default: withCtx(() => [
            createVNode(_component_el_row, { gutter: 32 }, {
              default: withCtx(() => [
                createVNode(_component_el_col, {
                  xs: 24,
                  md: 12
                }, {
                  default: withCtx(() => [
                    _cache[8] || (_cache[8] = createBaseVNode("h3", { class: "text-xs font-bold text-gray-500 uppercase mb-4" }, "Server Environment", -1)),
                    createVNode(_component_el_descriptions, {
                      column: 1,
                      border: ""
                    }, {
                      default: withCtx(() => [
                        createVNode(_component_el_descriptions_item, { label: "PHP Version" }, {
                          default: withCtx(() => [..._cache[3] || (_cache[3] = [
                            createBaseVNode("code", null, "8.2.14", -1)
                          ])]),
                          _: 1
                        }),
                        createVNode(_component_el_descriptions_item, { label: "WordPress Version" }, {
                          default: withCtx(() => [..._cache[4] || (_cache[4] = [
                            createBaseVNode("code", null, "6.4.2", -1)
                          ])]),
                          _: 1
                        }),
                        createVNode(_component_el_descriptions_item, { label: "Memory Limit" }, {
                          default: withCtx(() => [..._cache[5] || (_cache[5] = [
                            createBaseVNode("code", null, "512M", -1)
                          ])]),
                          _: 1
                        }),
                        createVNode(_component_el_descriptions_item, { label: "Max Execution Time" }, {
                          default: withCtx(() => [..._cache[6] || (_cache[6] = [
                            createBaseVNode("code", null, "300s", -1)
                          ])]),
                          _: 1
                        }),
                        createVNode(_component_el_descriptions_item, { label: "Database Size" }, {
                          default: withCtx(() => [..._cache[7] || (_cache[7] = [
                            createBaseVNode("code", null, "45 MB", -1)
                          ])]),
                          _: 1
                        })
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                }),
                createVNode(_component_el_col, {
                  xs: 24,
                  md: 12
                }, {
                  default: withCtx(() => [
                    _cache[13] || (_cache[13] = createBaseVNode("h3", { class: "text-xs font-bold text-gray-500 uppercase mb-4" }, "Connectivity & Health", -1)),
                    createVNode(_component_el_descriptions, {
                      column: 1,
                      border: ""
                    }, {
                      default: withCtx(() => [
                        createVNode(_component_el_descriptions_item, { label: "API Connection" }, {
                          default: withCtx(() => [
                            createVNode(_component_el_tag, {
                              type: "success",
                              size: "small",
                              effect: "light",
                              round: ""
                            }, {
                              default: withCtx(() => [..._cache[9] || (_cache[9] = [
                                createBaseVNode("span", { class: "inline-block w-2 h-2 bg-green-400 rounded-full mr-1" }, null, -1),
                                createTextVNode(" Connected ", -1)
                              ])]),
                              _: 1
                            })
                          ]),
                          _: 1
                        }),
                        createVNode(_component_el_descriptions_item, { label: "Plugin Conflicts" }, {
                          default: withCtx(() => [
                            createVNode(_component_el_tag, {
                              type: "success",
                              size: "small",
                              effect: "light",
                              round: ""
                            }, {
                              default: withCtx(() => [..._cache[10] || (_cache[10] = [
                                createTextVNode("None Detected", -1)
                              ])]),
                              _: 1
                            })
                          ]),
                          _: 1
                        }),
                        createVNode(_component_el_descriptions_item, { label: "Write Permissions" }, {
                          default: withCtx(() => [
                            createVNode(_component_el_tag, {
                              type: "success",
                              size: "small",
                              effect: "light",
                              round: ""
                            }, {
                              default: withCtx(() => [..._cache[11] || (_cache[11] = [
                                createTextVNode("Writable", -1)
                              ])]),
                              _: 1
                            })
                          ]),
                          _: 1
                        }),
                        createVNode(_component_el_descriptions_item, { label: "Scheduled Actions" }, {
                          default: withCtx(() => [
                            createVNode(_component_el_tag, {
                              type: "success",
                              size: "small",
                              effect: "light",
                              round: ""
                            }, {
                              default: withCtx(() => [..._cache[12] || (_cache[12] = [
                                createTextVNode("Running", -1)
                              ])]),
                              _: 1
                            })
                          ]),
                          _: 1
                        })
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                })
              ]),
              _: 1
            })
          ]),
          _: 1
        });
      };
    }
  };
  const _hoisted_1$4 = { class: "px-6 py-4" };
  const _hoisted_2$4 = { class: "mb-6 flex items-start justify-between" };
  const _hoisted_3$4 = { class: "text-2xl font-bold text-gray-900" };
  const _hoisted_4$4 = { class: "text-gray-600 mt-1" };
  const _hoisted_5$4 = { class: "flex items-center" };
  const _sfc_main$5 = {
    __name: "HelpSupport",
    setup(__props) {
      const startOnboarding = inject("startOnboarding", null);
      const t = inject("t", (k) => k);
      const currentTab = ref("contact");
      const tabs = computed(() => [
        { id: "contact", name: t("contactSupport"), icon: "fas fa-envelope" },
        { id: "features", name: t("featureRequests"), icon: "fas fa-lightbulb" },
        { id: "diagnostics", name: t("systemDiagnostics"), icon: "fas fa-stethoscope" }
      ]);
      const tabComponents = {
        "contact": _sfc_main$8,
        "features": _sfc_main$7,
        "diagnostics": _sfc_main$6
      };
      const currentTabComponent = computed(() => tabComponents[currentTab.value]);
      const launchOnboarding = () => {
        if (startOnboarding) startOnboarding();
      };
      return (_ctx, _cache) => {
        const _component_el_button = resolveComponent("el-button");
        const _component_el_tab_pane = resolveComponent("el-tab-pane");
        const _component_el_tabs = resolveComponent("el-tabs");
        return openBlock(), createElementBlock("div", _hoisted_1$4, [
          createBaseVNode("div", _hoisted_2$4, [
            createBaseVNode("div", null, [
              createBaseVNode("h1", _hoisted_3$4, toDisplayString(unref(t)("navHelp")), 1),
              createBaseVNode("p", _hoisted_4$4, toDisplayString(unref(t)("helpSubtitle")), 1)
            ]),
            createVNode(_component_el_button, {
              type: "primary",
              onClick: launchOnboarding
            }, {
              default: withCtx(() => [
                _cache[1] || (_cache[1] = createBaseVNode("i", { class: "fas fa-magic mr-2" }, null, -1)),
                createTextVNode(" " + toDisplayString(unref(t)("startOnboarding")), 1)
              ]),
              _: 1
            })
          ]),
          createVNode(_component_el_tabs, {
            modelValue: currentTab.value,
            "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => currentTab.value = $event),
            class: "mb-4"
          }, {
            default: withCtx(() => [
              (openBlock(true), createElementBlock(Fragment, null, renderList(tabs.value, (tab) => {
                return openBlock(), createBlock(_component_el_tab_pane, {
                  key: tab.id,
                  label: tab.name,
                  name: tab.id
                }, {
                  label: withCtx(() => [
                    createBaseVNode("span", _hoisted_5$4, [
                      createBaseVNode("i", {
                        class: normalizeClass([tab.icon, "mr-2"])
                      }, null, 2),
                      createTextVNode(" " + toDisplayString(tab.name), 1)
                    ])
                  ]),
                  _: 2
                }, 1032, ["label", "name"]);
              }), 128))
            ]),
            _: 1
          }, 8, ["modelValue"]),
          createVNode(Transition, {
            name: "fade",
            mode: "out-in"
          }, {
            default: withCtx(() => [
              (openBlock(), createBlock(KeepAlive, null, [
                (openBlock(), createBlock(resolveDynamicComponent(currentTabComponent.value)))
              ], 1024))
            ]),
            _: 1
          })
        ]);
      };
    }
  };
  const _hoisted_1$3 = { class: "flex items-center justify-between" };
  const _hoisted_2$3 = { class: "flex items-center space-x-3" };
  const _hoisted_3$3 = { class: "w-12 h-12 rounded-lg flex items-center justify-center bg-gray-100" };
  const _hoisted_4$3 = { class: "font-semibold text-gray-800" };
  const _hoisted_5$3 = {
    key: 1,
    class: "flex items-center w-full"
  };
  const _hoisted_6$2 = { class: "flex space-x-2" };
  const _sfc_main$4 = {
    __name: "ConnectedModels",
    setup(__props) {
      const t = inject("t", (k) => k);
      const {
        providers: providers2,
        isLoading: isLoading2,
        testConnection,
        saveProvider,
        disconnectProvider,
        isProviderActionLoading
      } = useAIModels();
      const getGroupedChatModels = (provider) => getProviderChatModelGroups(provider.id, provider.chat_models);
      return (_ctx, _cache) => {
        const _component_el_tag = resolveComponent("el-tag");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_input = resolveComponent("el-input");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_form_item = resolveComponent("el-form-item");
        const _component_el_option = resolveComponent("el-option");
        const _component_el_option_group = resolveComponent("el-option-group");
        const _component_el_select = resolveComponent("el-select");
        const _component_el_card = resolveComponent("el-card");
        const _component_el_col = resolveComponent("el-col");
        const _component_el_row = resolveComponent("el-row");
        return openBlock(), createElementBlock("div", null, [
          unref(isLoading2) ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            "show-toolbar": false,
            cards: 3
          })) : (openBlock(), createBlock(_component_el_row, {
            key: 1,
            gutter: 24
          }, {
            default: withCtx(() => [
              (openBlock(true), createElementBlock(Fragment, null, renderList(unref(providers2), (provider) => {
                return openBlock(), createBlock(_component_el_col, {
                  xs: 24,
                  sm: 12,
                  lg: 8,
                  key: provider.id,
                  class: "mb-6"
                }, {
                  default: withCtx(() => [
                    createVNode(_component_el_card, {
                      shadow: "hover",
                      class: "h-full"
                    }, {
                      header: withCtx(() => [
                        createBaseVNode("div", _hoisted_1$3, [
                          createBaseVNode("div", _hoisted_2$3, [
                            createBaseVNode("div", _hoisted_3$3, [
                              createBaseVNode("i", {
                                class: normalizeClass([provider.icon, "text-2xl text-gray-700"])
                              }, null, 2)
                            ]),
                            createBaseVNode("div", null, [
                              createBaseVNode("h3", _hoisted_4$3, toDisplayString(provider.name), 1),
                              createVNode(_component_el_tag, {
                                type: provider.connected ? "success" : "info",
                                size: "small",
                                effect: "light"
                              }, {
                                default: withCtx(() => [
                                  createTextVNode(toDisplayString(provider.connected ? unref(t)("connected") : unref(t)("labelNotConnected")), 1)
                                ]),
                                _: 2
                              }, 1032, ["type"])
                            ])
                          ])
                        ])
                      ]),
                      default: withCtx(() => [
                        createVNode(_component_el_form_item, {
                          label: unref(t)("apiKey"),
                          class: "mb-4"
                        }, {
                          default: withCtx(() => [
                            !provider.config.api_key_masked || provider.isEditingKey ? (openBlock(), createBlock(_component_el_input, {
                              key: 0,
                              modelValue: provider.config.apiKey,
                              "onUpdate:modelValue": ($event) => provider.config.apiKey = $event,
                              type: provider.showKey ? "text" : "password",
                              placeholder: unref(t)("apiKey")
                            }, {
                              suffix: withCtx(() => [
                                createVNode(_component_el_button, {
                                  link: "",
                                  size: "small",
                                  onClick: ($event) => provider.showKey = !provider.showKey
                                }, {
                                  default: withCtx(() => [
                                    createTextVNode(toDisplayString(provider.showKey ? unref(t)("hideKey") : unref(t)("showKey")), 1)
                                  ]),
                                  _: 2
                                }, 1032, ["onClick"])
                              ]),
                              _: 2
                            }, 1032, ["modelValue", "onUpdate:modelValue", "type", "placeholder"])) : (openBlock(), createElementBlock("div", _hoisted_5$3, [
                              createVNode(_component_el_input, {
                                "model-value": provider.config.api_key_masked,
                                disabled: "",
                                class: "flex-1"
                              }, null, 8, ["model-value"]),
                              createVNode(_component_el_button, {
                                link: "",
                                type: "primary",
                                onClick: ($event) => {
                                  provider.isEditingKey = true;
                                  provider.config.apiKey = "";
                                },
                                class: "ml-2"
                              }, {
                                default: withCtx(() => [
                                  createVNode(_component_el_icon, { class: "mr-1" }, {
                                    default: withCtx(() => [
                                      createVNode(unref(edit_default))
                                    ]),
                                    _: 1
                                  }),
                                  createTextVNode(" " + toDisplayString(unref(t)("changeApiKey")), 1)
                                ]),
                                _: 1
                              }, 8, ["onClick"])
                            ]))
                          ]),
                          _: 2
                        }, 1032, ["label"]),
                        createVNode(_component_el_form_item, {
                          label: unref(t)("labelChatModels"),
                          class: "mb-4"
                        }, {
                          default: withCtx(() => [
                            createVNode(_component_el_select, {
                              modelValue: provider.selectedChatModels,
                              "onUpdate:modelValue": ($event) => provider.selectedChatModels = $event,
                              multiple: "",
                              "collapse-tags": "",
                              "collapse-tags-tooltip": "",
                              class: "w-full",
                              placeholder: unref(t)("labelChatModels")
                            }, {
                              default: withCtx(() => [
                                (openBlock(true), createElementBlock(Fragment, null, renderList(getGroupedChatModels(provider), (group) => {
                                  return openBlock(), createBlock(_component_el_option_group, {
                                    key: `${provider.id}-${group.key}`,
                                    label: group.label
                                  }, {
                                    default: withCtx(() => [
                                      (openBlock(true), createElementBlock(Fragment, null, renderList(group.models, (model) => {
                                        return openBlock(), createBlock(_component_el_option, {
                                          key: model.id,
                                          label: model.name,
                                          value: model.id
                                        }, null, 8, ["label", "value"]);
                                      }), 128))
                                    ]),
                                    _: 2
                                  }, 1032, ["label"]);
                                }), 128))
                              ]),
                              _: 2
                            }, 1032, ["modelValue", "onUpdate:modelValue", "placeholder"])
                          ]),
                          _: 2
                        }, 1032, ["label"]),
                        provider.embedding_models && Object.keys(provider.embedding_models).length > 0 ? (openBlock(), createBlock(_component_el_form_item, {
                          key: 0,
                          label: unref(t)("labelEmbeddingModels"),
                          class: "mb-4"
                        }, {
                          default: withCtx(() => [
                            createVNode(_component_el_select, {
                              modelValue: provider.selectedEmbeddingModels,
                              "onUpdate:modelValue": ($event) => provider.selectedEmbeddingModels = $event,
                              multiple: "",
                              "collapse-tags": "",
                              "collapse-tags-tooltip": "",
                              class: "w-full",
                              placeholder: unref(t)("labelEmbeddingModels"),
                              clearable: ""
                            }, {
                              default: withCtx(() => [
                                (openBlock(true), createElementBlock(Fragment, null, renderList(provider.embedding_models, (modelData, modelId) => {
                                  return openBlock(), createBlock(_component_el_option, {
                                    key: modelId,
                                    label: modelData.name,
                                    value: modelId
                                  }, null, 8, ["label", "value"]);
                                }), 128))
                              ]),
                              _: 2
                            }, 1032, ["modelValue", "onUpdate:modelValue", "placeholder"])
                          ]),
                          _: 2
                        }, 1032, ["label"])) : createCommentVNode("", true),
                        provider.image_models && Object.keys(provider.image_models).length > 0 ? (openBlock(), createBlock(_component_el_form_item, {
                          key: 1,
                          label: unref(t)("labelImageGenModels"),
                          class: "mb-4"
                        }, {
                          default: withCtx(() => [
                            createVNode(_component_el_select, {
                              modelValue: provider.selectedImageModels,
                              "onUpdate:modelValue": ($event) => provider.selectedImageModels = $event,
                              multiple: "",
                              "collapse-tags": "",
                              "collapse-tags-tooltip": "",
                              class: "w-full",
                              placeholder: unref(t)("labelImageGenModels"),
                              clearable: ""
                            }, {
                              default: withCtx(() => [
                                (openBlock(true), createElementBlock(Fragment, null, renderList(provider.image_models, (modelData, modelId) => {
                                  return openBlock(), createBlock(_component_el_option, {
                                    key: modelId,
                                    label: modelData.name,
                                    value: modelId
                                  }, null, 8, ["label", "value"]);
                                }), 128))
                              ]),
                              _: 2
                            }, 1032, ["modelValue", "onUpdate:modelValue", "placeholder"])
                          ]),
                          _: 2
                        }, 1032, ["label"])) : createCommentVNode("", true),
                        createBaseVNode("div", _hoisted_6$2, [
                          createVNode(_component_el_button, {
                            onClick: ($event) => unref(testConnection)(provider),
                            loading: unref(isProviderActionLoading)(provider.id, "test"),
                            disabled: !provider.config.apiKey || unref(isProviderActionLoading)(provider.id)
                          }, {
                            default: withCtx(() => [
                              createVNode(_component_el_icon, { class: "mr-1" }, {
                                default: withCtx(() => [
                                  createVNode(unref(connection_default))
                                ]),
                                _: 1
                              }),
                              createTextVNode(" " + toDisplayString(unref(t)("test")), 1)
                            ]),
                            _: 1
                          }, 8, ["onClick", "loading", "disabled"]),
                          createVNode(_component_el_button, {
                            type: "primary",
                            onClick: ($event) => unref(saveProvider)(provider),
                            class: "flex-1",
                            loading: unref(isProviderActionLoading)(provider.id, "save"),
                            disabled: unref(isProviderActionLoading)(provider.id)
                          }, {
                            default: withCtx(() => [
                              createVNode(_component_el_icon, { class: "mr-1" }, {
                                default: withCtx(() => [
                                  createVNode(unref(check_default))
                                ]),
                                _: 1
                              }),
                              createTextVNode(" " + toDisplayString(unref(t)("saveProvider")), 1)
                            ]),
                            _: 1
                          }, 8, ["onClick", "loading", "disabled"]),
                          provider.connected ? (openBlock(), createBlock(_component_el_button, {
                            key: 0,
                            type: "danger",
                            plain: "",
                            onClick: ($event) => unref(disconnectProvider)(provider),
                            loading: unref(isProviderActionLoading)(provider.id, "disconnect"),
                            disabled: unref(isProviderActionLoading)(provider.id)
                          }, {
                            default: withCtx(() => [
                              createVNode(_component_el_icon, { class: "mr-1" }, {
                                default: withCtx(() => [
                                  createVNode(unref(link_default))
                                ]),
                                _: 1
                              }),
                              createTextVNode(" " + toDisplayString(unref(t)("disconnect")), 1)
                            ]),
                            _: 1
                          }, 8, ["onClick", "loading", "disabled"])) : createCommentVNode("", true)
                        ])
                      ]),
                      _: 2
                    }, 1024)
                  ]),
                  _: 2
                }, 1024);
              }), 128))
            ]),
            _: 1
          }))
        ]);
      };
    }
  };
  const _hoisted_1$2 = { class: "w-full" };
  const _hoisted_2$2 = { class: "h-full p-4 bg-gray-50 rounded-lg border border-gray-100" };
  const _hoisted_3$2 = { class: "flex items-center gap-3 mb-4" };
  const _hoisted_4$2 = { class: "w-10 h-10 bg-blue-100 rounded-lg flex items-center justify-center" };
  const _hoisted_5$2 = { class: "font-medium text-gray-800" };
  const _hoisted_6$1 = { class: "h-full p-4 bg-gray-50 rounded-lg border border-gray-100" };
  const _hoisted_7$1 = { class: "flex items-center gap-3 mb-4" };
  const _hoisted_8$1 = { class: "w-10 h-10 bg-purple-100 rounded-lg flex items-center justify-center" };
  const _hoisted_9$1 = { class: "font-medium text-gray-800" };
  const _hoisted_10$1 = { class: "h-full p-4 bg-gray-50 rounded-lg border border-gray-100" };
  const _hoisted_11$1 = { class: "flex items-center gap-3 mb-4" };
  const _hoisted_12$1 = { class: "w-10 h-10 bg-green-100 rounded-lg flex items-center justify-center" };
  const _hoisted_13$1 = { class: "font-medium text-gray-800" };
  const _hoisted_14$1 = { class: "h-full p-4 bg-gray-50 rounded-lg border border-gray-100" };
  const _hoisted_15$1 = { class: "flex items-center gap-3 mb-4" };
  const _hoisted_16$1 = { class: "w-10 h-10 bg-orange-100 rounded-lg flex items-center justify-center" };
  const _hoisted_17$1 = { class: "font-medium text-gray-800" };
  const _hoisted_18$1 = { class: "h-full p-4 bg-gray-50 rounded-lg border border-gray-100" };
  const _hoisted_19$1 = { class: "flex items-center gap-3 mb-4" };
  const _hoisted_20$1 = { class: "w-10 h-10 bg-red-100 rounded-lg flex items-center justify-center" };
  const _hoisted_21$1 = { class: "font-medium text-gray-800" };
  const _hoisted_22$1 = { class: "mt-6 pt-6 border-t border-gray-200 flex justify-end" };
  const _sfc_main$3 = {
    __name: "DefaultSettings",
    setup(__props) {
      const {
        isLoading: isLoading2,
        defaultModels: defaultModels2,
        connectedChatModels,
        connectedEmbeddingModels,
        connectedImageModels,
        hasConnectedProviders,
        defaultSettingsSaving: defaultSettingsSaving2,
        saveDefaultSettings
      } = useAIModels();
      const { canChangeEmbeddingModel } = useKnowledgeBaseAPI();
      const { showNotification } = useNotifications();
      const t = inject("t", (k) => k);
      const embeddingsSelection = ref("");
      const groupModelsByProvider = (models) => {
        const grouped = {};
        models.forEach((model) => {
          const typeInfo = getChatModelTypeInfo(model.providerId, model.modelId);
          const groupKey = typeInfo ? `${model.providerId}:${typeInfo.key}` : `${model.providerId}:default`;
          if (!grouped[groupKey]) {
            grouped[groupKey] = {
              key: groupKey,
              provider: model.provider,
              label: typeInfo ? `${model.provider} - ${typeInfo.label}` : model.provider,
              models: []
            };
          }
          grouped[groupKey].models.push(model);
        });
        return Object.values(grouped);
      };
      const groupedChatModels = computed(() => groupModelsByProvider(connectedChatModels.value));
      const groupedImageModels = computed(() => groupModelsByProvider(connectedImageModels.value));
      const groupedEmbeddingModels = computed(() => groupModelsByProvider(connectedEmbeddingModels.value));
      watch(
        () => defaultModels2.value.embeddings,
        (value) => {
          embeddingsSelection.value = value || "";
        },
        { immediate: true }
      );
      const onEmbeddingsSelectionChange = async (value) => {
        if (!defaultModels2.value.embeddings || value === defaultModels2.value.embeddings) {
          defaultModels2.value.embeddings = value;
          return;
        }
        const check = await canChangeEmbeddingModel();
        if (!check.canChange) {
          showNotification("error", check.message || "Cannot change the embedding model while knowledge base sources are synced. Reset the knowledge base first.");
          embeddingsSelection.value = defaultModels2.value.embeddings;
          return;
        }
        try {
          await ElMessageBox.confirm(
            "Changing this model may affect existing knowledge bases and embeddings. Do you want to continue?",
            "Warning",
            {
              type: "error",
              confirmButtonText: "Continue",
              cancelButtonText: "Cancel",
              confirmButtonClass: "el-button--danger"
            }
          );
          defaultModels2.value.embeddings = value;
        } catch (error) {
          embeddingsSelection.value = defaultModels2.value.embeddings;
        }
      };
      return (_ctx, _cache) => {
        const _component_el_alert = resolveComponent("el-alert");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_option = resolveComponent("el-option");
        const _component_el_option_group = resolveComponent("el-option-group");
        const _component_el_select = resolveComponent("el-select");
        const _component_el_col = resolveComponent("el-col");
        const _component_el_row = resolveComponent("el-row");
        const _component_el_button = resolveComponent("el-button");
        const _component_el_card = resolveComponent("el-card");
        return openBlock(), createElementBlock("div", _hoisted_1$2, [
          unref(isLoading2) ? (openBlock(), createBlock(_sfc_main$P, {
            key: 0,
            rows: 10,
            "show-toolbar": false
          })) : (openBlock(), createBlock(_component_el_card, {
            key: 1,
            shadow: "never"
          }, {
            header: withCtx(() => [..._cache[5] || (_cache[5] = [
              createBaseVNode("p", { class: "text-sm text-gray-600" }, " Select which AI model to use for each feature by default. These can be overridden per instance. ", -1)
            ])]),
            default: withCtx(() => [
              !unref(hasConnectedProviders) ? (openBlock(), createBlock(_component_el_alert, {
                key: 0,
                title: unref(t)("noAIProvidersConnected"),
                type: "warning",
                "show-icon": "",
                closable: false,
                class: "mb-4"
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString(unref(t)("selectDefaultModelDesc")), 1)
                ]),
                _: 1
              }, 8, ["title"])) : createCommentVNode("", true),
              createVNode(_component_el_row, { gutter: 16 }, {
                default: withCtx(() => [
                  createVNode(_component_el_col, {
                    xs: 24,
                    md: 12
                  }, {
                    default: withCtx(() => [
                      createBaseVNode("div", _hoisted_2$2, [
                        createBaseVNode("div", _hoisted_3$2, [
                          createBaseVNode("div", _hoisted_4$2, [
                            createVNode(_component_el_icon, { class: "text-blue-600 text-xl" }, {
                              default: withCtx(() => [
                                createVNode(unref(chat_dot_round_default))
                              ]),
                              _: 1
                            })
                          ]),
                          createBaseVNode("div", null, [
                            createBaseVNode("h4", _hoisted_5$2, toDisplayString(unref(t)("navChatbots")), 1),
                            _cache[6] || (_cache[6] = createBaseVNode("p", { class: "text-sm text-gray-500" }, "Default model for chatbot conversations", -1))
                          ])
                        ]),
                        createVNode(_component_el_select, {
                          modelValue: unref(defaultModels2).chatbots,
                          "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => unref(defaultModels2).chatbots = $event),
                          class: "w-full",
                          placeholder: "Select model",
                          disabled: !unref(hasConnectedProviders)
                        }, {
                          default: withCtx(() => [
                            (openBlock(true), createElementBlock(Fragment, null, renderList(groupedChatModels.value, (group) => {
                              return openBlock(), createBlock(_component_el_option_group, {
                                key: `chat-${group.key}`,
                                label: group.label
                              }, {
                                default: withCtx(() => [
                                  (openBlock(true), createElementBlock(Fragment, null, renderList(group.models, (model) => {
                                    return openBlock(), createBlock(_component_el_option, {
                                      key: model.id,
                                      label: model.name,
                                      value: model.id
                                    }, null, 8, ["label", "value"]);
                                  }), 128))
                                ]),
                                _: 2
                              }, 1032, ["label"]);
                            }), 128))
                          ]),
                          _: 1
                        }, 8, ["modelValue", "disabled"])
                      ])
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_col, {
                    xs: 24,
                    md: 12
                  }, {
                    default: withCtx(() => [
                      createBaseVNode("div", _hoisted_6$1, [
                        createBaseVNode("div", _hoisted_7$1, [
                          createBaseVNode("div", _hoisted_8$1, [
                            createVNode(_component_el_icon, { class: "text-purple-600 text-xl" }, {
                              default: withCtx(() => [
                                createVNode(unref(edit_default))
                              ]),
                              _: 1
                            })
                          ]),
                          createBaseVNode("div", null, [
                            createBaseVNode("h4", _hoisted_9$1, toDisplayString(unref(t)("contentGeneration")), 1),
                            _cache[7] || (_cache[7] = createBaseVNode("p", { class: "text-sm text-gray-500" }, "Default model for creating content", -1))
                          ])
                        ]),
                        createVNode(_component_el_select, {
                          modelValue: unref(defaultModels2).content,
                          "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => unref(defaultModels2).content = $event),
                          class: "w-full",
                          placeholder: "Select model",
                          disabled: !unref(hasConnectedProviders)
                        }, {
                          default: withCtx(() => [
                            (openBlock(true), createElementBlock(Fragment, null, renderList(groupedChatModels.value, (group) => {
                              return openBlock(), createBlock(_component_el_option_group, {
                                key: `content-${group.key}`,
                                label: group.label
                              }, {
                                default: withCtx(() => [
                                  (openBlock(true), createElementBlock(Fragment, null, renderList(group.models, (model) => {
                                    return openBlock(), createBlock(_component_el_option, {
                                      key: model.id,
                                      label: model.name,
                                      value: model.id
                                    }, null, 8, ["label", "value"]);
                                  }), 128))
                                ]),
                                _: 2
                              }, 1032, ["label"]);
                            }), 128))
                          ]),
                          _: 1
                        }, 8, ["modelValue", "disabled"])
                      ])
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_col, {
                    xs: 24,
                    md: 12
                  }, {
                    default: withCtx(() => [
                      createBaseVNode("div", _hoisted_10$1, [
                        createBaseVNode("div", _hoisted_11$1, [
                          createBaseVNode("div", _hoisted_12$1, [
                            createVNode(_component_el_icon, { class: "text-green-600 text-xl" }, {
                              default: withCtx(() => [
                                createVNode(unref(picture_default))
                              ]),
                              _: 1
                            })
                          ]),
                          createBaseVNode("div", null, [
                            createBaseVNode("h4", _hoisted_13$1, toDisplayString(unref(t)("imageGeneration")), 1),
                            _cache[8] || (_cache[8] = createBaseVNode("p", { class: "text-sm text-gray-500" }, "Default model for generating images", -1))
                          ])
                        ]),
                        createVNode(_component_el_select, {
                          modelValue: unref(defaultModels2).imageGen,
                          "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => unref(defaultModels2).imageGen = $event),
                          class: "w-full",
                          placeholder: "Select model",
                          disabled: !unref(hasConnectedProviders)
                        }, {
                          default: withCtx(() => [
                            (openBlock(true), createElementBlock(Fragment, null, renderList(groupedImageModels.value, (group) => {
                              return openBlock(), createBlock(_component_el_option_group, {
                                key: `image-${group.provider}`,
                                label: group.provider
                              }, {
                                default: withCtx(() => [
                                  (openBlock(true), createElementBlock(Fragment, null, renderList(group.models, (model) => {
                                    return openBlock(), createBlock(_component_el_option, {
                                      key: model.id,
                                      label: model.name,
                                      value: model.id
                                    }, null, 8, ["label", "value"]);
                                  }), 128))
                                ]),
                                _: 2
                              }, 1032, ["label"]);
                            }), 128))
                          ]),
                          _: 1
                        }, 8, ["modelValue", "disabled"])
                      ])
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_col, {
                    xs: 24,
                    md: 12
                  }, {
                    default: withCtx(() => [
                      createBaseVNode("div", _hoisted_14$1, [
                        createBaseVNode("div", _hoisted_15$1, [
                          createBaseVNode("div", _hoisted_16$1, [
                            createVNode(_component_el_icon, { class: "text-orange-600 text-xl" }, {
                              default: withCtx(() => [
                                createVNode(unref(coin_default))
                              ]),
                              _: 1
                            })
                          ]),
                          createBaseVNode("div", null, [
                            createBaseVNode("h4", _hoisted_17$1, toDisplayString(unref(t)("embeddings")), 1),
                            _cache[9] || (_cache[9] = createBaseVNode("p", { class: "text-sm text-gray-500" }, "Default model for generating embeddings", -1))
                          ])
                        ]),
                        createVNode(_component_el_select, {
                          modelValue: embeddingsSelection.value,
                          "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => embeddingsSelection.value = $event),
                          class: "w-full",
                          placeholder: "Select model",
                          disabled: !unref(hasConnectedProviders),
                          onChange: onEmbeddingsSelectionChange
                        }, {
                          default: withCtx(() => [
                            (openBlock(true), createElementBlock(Fragment, null, renderList(groupedEmbeddingModels.value, (group) => {
                              return openBlock(), createBlock(_component_el_option_group, {
                                key: `embed-${group.provider}`,
                                label: group.provider
                              }, {
                                default: withCtx(() => [
                                  (openBlock(true), createElementBlock(Fragment, null, renderList(group.models, (model) => {
                                    return openBlock(), createBlock(_component_el_option, {
                                      key: model.id,
                                      label: model.name,
                                      value: model.id
                                    }, null, 8, ["label", "value"]);
                                  }), 128))
                                ]),
                                _: 2
                              }, 1032, ["label"]);
                            }), 128))
                          ]),
                          _: 1
                        }, 8, ["modelValue", "disabled"])
                      ])
                    ]),
                    _: 1
                  }),
                  createVNode(_component_el_col, {
                    xs: 24,
                    md: 12
                  }, {
                    default: withCtx(() => [
                      createBaseVNode("div", _hoisted_18$1, [
                        createBaseVNode("div", _hoisted_19$1, [
                          createBaseVNode("div", _hoisted_20$1, [
                            createVNode(_component_el_icon, { class: "text-red-600 text-xl" }, {
                              default: withCtx(() => [
                                createVNode(unref(warning_default))
                              ]),
                              _: 1
                            })
                          ]),
                          createBaseVNode("div", null, [
                            createBaseVNode("h4", _hoisted_21$1, toDisplayString(unref(t)("fallbackModel")), 1),
                            _cache[10] || (_cache[10] = createBaseVNode("p", { class: "text-sm text-gray-500" }, "Used when primary chat model fails or is unavailable", -1))
                          ])
                        ]),
                        createVNode(_component_el_select, {
                          modelValue: unref(defaultModels2).fallback,
                          "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => unref(defaultModels2).fallback = $event),
                          class: "w-full",
                          placeholder: "Select model",
                          disabled: !unref(hasConnectedProviders)
                        }, {
                          default: withCtx(() => [
                            (openBlock(true), createElementBlock(Fragment, null, renderList(groupedChatModels.value, (group) => {
                              return openBlock(), createBlock(_component_el_option_group, {
                                key: `fallback-${group.key}`,
                                label: group.label
                              }, {
                                default: withCtx(() => [
                                  (openBlock(true), createElementBlock(Fragment, null, renderList(group.models, (model) => {
                                    return openBlock(), createBlock(_component_el_option, {
                                      key: model.id,
                                      label: model.name,
                                      value: model.id
                                    }, null, 8, ["label", "value"]);
                                  }), 128))
                                ]),
                                _: 2
                              }, 1032, ["label"]);
                            }), 128))
                          ]),
                          _: 1
                        }, 8, ["modelValue", "disabled"])
                      ])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }),
              createBaseVNode("div", _hoisted_22$1, [
                createVNode(_component_el_button, {
                  type: "primary",
                  loading: unref(defaultSettingsSaving2),
                  disabled: unref(defaultSettingsSaving2),
                  onClick: unref(saveDefaultSettings)
                }, {
                  default: withCtx(() => [
                    createVNode(_component_el_icon, { class: "mr-1" }, {
                      default: withCtx(() => [
                        createVNode(unref(check_default))
                      ]),
                      _: 1
                    }),
                    createTextVNode(" " + toDisplayString(unref(t)("saveChanges")), 1)
                  ]),
                  _: 1
                }, 8, ["loading", "disabled", "onClick"])
              ])
            ]),
            _: 1
          }))
        ]);
      };
    }
  };
  const _hoisted_1$1 = { class: "px-6 py-4" };
  const _hoisted_2$1 = { class: "mb-2" };
  const _hoisted_3$1 = { class: "text-2xl font-bold text-gray-900" };
  const _hoisted_4$1 = { class: "text-gray-600 mt-1" };
  const _hoisted_5$1 = { class: "flex items-center" };
  const _sfc_main$2 = {
    __name: "AIModels",
    setup(__props) {
      const t = inject("t", (k) => k);
      const { currentSubView: currentSubView2 } = useNavigation();
      const activeTab = ref(currentSubView2.value || "connected");
      const tabs = computed(() => [
        { id: "connected", name: t("connectedModels"), icon: "fas fa-plug" },
        { id: "defaults", name: t("defaultSettings"), icon: "fas fa-cog" }
      ]);
      const currentTabComponent = computed(() => {
        const components = {
          connected: _sfc_main$4,
          defaults: _sfc_main$3
        };
        return components[activeTab.value] || _sfc_main$4;
      });
      return (_ctx, _cache) => {
        const _component_el_tab_pane = resolveComponent("el-tab-pane");
        const _component_el_tabs = resolveComponent("el-tabs");
        return openBlock(), createElementBlock("div", _hoisted_1$1, [
          createBaseVNode("div", _hoisted_2$1, [
            createBaseVNode("h1", _hoisted_3$1, toDisplayString(unref(t)("navModels")), 1),
            createBaseVNode("p", _hoisted_4$1, toDisplayString(unref(t)("modelsSubtitle")), 1)
          ]),
          createVNode(_component_el_tabs, {
            modelValue: activeTab.value,
            "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => activeTab.value = $event),
            class: "mb-4"
          }, {
            default: withCtx(() => [
              (openBlock(true), createElementBlock(Fragment, null, renderList(tabs.value, (tab) => {
                return openBlock(), createBlock(_component_el_tab_pane, {
                  key: tab.id,
                  label: tab.label,
                  name: tab.id
                }, {
                  label: withCtx(() => [
                    createBaseVNode("span", _hoisted_5$1, [
                      createBaseVNode("i", {
                        class: normalizeClass([tab.icon, "mr-2"])
                      }, null, 2),
                      createTextVNode(" " + toDisplayString(tab.name), 1)
                    ])
                  ]),
                  _: 2
                }, 1032, ["label", "name"]);
              }), 128))
            ]),
            _: 1
          }, 8, ["modelValue"]),
          createVNode(Transition, {
            name: "fade",
            mode: "out-in"
          }, {
            default: withCtx(() => [
              (openBlock(), createBlock(KeepAlive, null, [
                (openBlock(), createBlock(resolveDynamicComponent(currentTabComponent.value)))
              ], 1024))
            ]),
            _: 1
          })
        ]);
      };
    }
  };
  function useInboxAPI() {
    const getConversations = createApiAction({
      action: "kitsune_ai_platform_inbox_get_conversations",
      method: "GET",
      mapParams: (params = {}) => params,
      mapResult: (response) => ({ success: true, data: response }),
      errorMessage: "Error fetching conversations:"
    });
    const getMessages = createApiAction({
      action: "kitsune_ai_platform_inbox_get_messages",
      method: "GET",
      mapParams: (id, params = {}) => ({ id, ...params }),
      mapResult: (response) => ({ success: true, data: response }),
      errorMessage: "Error fetching messages:"
    });
    const deleteConversations = createApiAction({
      action: "kitsune_ai_platform_inbox_delete_conversations",
      mapParams: (ids = []) => ({ ids }),
      mapResult: (response) => ({ success: true, data: response }),
      errorMessage: "Error deleting conversations:"
    });
    return {
      getConversations,
      getMessages,
      deleteConversations
    };
  }
  const _hoisted_1 = { class: "px-6 py-4" };
  const _hoisted_2 = { class: "space-y-3" };
  const _hoisted_3 = { class: "flex items-center justify-between" };
  const _hoisted_4 = { class: "max-h-[500px] overflow-y-auto" };
  const _hoisted_5 = {
    key: 0,
    class: "p-6 text-center text-gray-500"
  };
  const _hoisted_6 = { key: 1 };
  const _hoisted_7 = ["onClick"];
  const _hoisted_8 = { class: "flex items-start gap-3" };
  const _hoisted_9 = { class: "flex-1 min-w-0" };
  const _hoisted_10 = { class: "flex items-center justify-between mb-1" };
  const _hoisted_11 = { class: "font-medium text-gray-900 truncate" };
  const _hoisted_12 = { class: "text-xs text-gray-400" };
  const _hoisted_13 = { class: "flex items-center gap-2 mb-1" };
  const _hoisted_14 = { class: "text-sm text-gray-500 truncate" };
  const _hoisted_15 = { class: "p-3 border-t bg-gray-50" };
  const _hoisted_16 = { class: "flex items-center justify-between" };
  const _hoisted_17 = { class: "flex items-center gap-3" };
  const _hoisted_18 = { class: "font-medium text-gray-900" };
  const _hoisted_19 = { class: "text-xs text-gray-500" };
  const _hoisted_20 = { class: "flex items-center gap-2" };
  const _hoisted_21 = {
    key: 0,
    class: "flex flex-col h-full"
  };
  const _hoisted_22 = { class: "flex-1 overflow-y-auto p-4 space-y-4 bg-gray-50" };
  const _hoisted_23 = { class: "text-sm" };
  const _hoisted_24 = { class: "p-3 border-t bg-white" };
  const _hoisted_25 = {
    key: 1,
    class: "flex-1 flex flex-col items-center justify-center text-gray-400 min-h-[400px]"
  };
  const _sfc_main$1 = {
    __name: "Inbox",
    setup(__props) {
      const { showNotification } = useNotifications();
      const { getConversations, getMessages, deleteConversations } = useInboxAPI();
      const loadingConversations = ref(true);
      const loadingMessages = ref(false);
      const searchQuery = ref("");
      const messageSearch = ref("");
      const selectAll = ref(false);
      const selectedConversations = ref([]);
      const selectedConversation = ref(null);
      const conversations = ref([]);
      const messages2 = ref([]);
      const currentPage = ref(1);
      const pageSize = ref(20);
      const totalConversations = ref(0);
      const messagesPage = ref(1);
      const messagesPageSize = ref(50);
      const totalMessages = ref(0);
      const isIndeterminate = computed(() => {
        return selectedConversations.value.length > 0 && selectedConversations.value.length < conversations.value.length;
      });
      const filteredConversations = computed(() => {
        if (!searchQuery.value) return conversations.value;
        const query = searchQuery.value.toLowerCase();
        return conversations.value.filter(
          (c2) => (c2.user_name || "").toLowerCase().includes(query) || (c2.chatbot_name || "").toLowerCase().includes(query) || (c2.last_message || "").toLowerCase().includes(query)
        );
      });
      const filteredMessages = computed(() => {
        if (!messageSearch.value) return messages2.value;
        const query = messageSearch.value.toLowerCase();
        return messages2.value.filter((m2) => m2.content.toLowerCase().includes(query));
      });
      const formatTime2 = (dateStr) => {
        if (!dateStr) return "";
        const date = new Date(dateStr);
        const now2 = /* @__PURE__ */ new Date();
        const diffMs = now2 - date;
        const diffMins = Math.floor(diffMs / 6e4);
        if (diffMins < 1) return "Just now";
        if (diffMins < 60) return `${diffMins}m ago`;
        if (diffMins < 1440) return `${Math.floor(diffMins / 60)}h ago`;
        return date.toLocaleDateString();
      };
      const toggleSelectAll = (val) => {
        selectedConversations.value = val ? conversations.value.map((c2) => c2.id) : [];
      };
      const loadConversations = async () => {
        loadingConversations.value = true;
        try {
          const response = await getConversations({
            page: currentPage.value,
            per_page: pageSize.value,
            search: searchQuery.value
          });
          if (response.success) {
            conversations.value = response.data.conversations || [];
            totalConversations.value = response.data.total || 0;
          }
        } catch (error) {
          showNotification("error", "Failed to load conversations");
        } finally {
          loadingConversations.value = false;
        }
      };
      const selectConversation = (conv) => {
        selectedConversation.value = conv;
        messagesPage.value = 1;
        loadMessages();
      };
      const loadMessages = async () => {
        if (!selectedConversation.value) return;
        loadingMessages.value = true;
        try {
          const response = await getMessages(selectedConversation.value.id, {
            page: messagesPage.value,
            per_page: messagesPageSize.value
          });
          if (response.success) {
            messages2.value = response.data.messages || [];
            totalMessages.value = response.data.total || 0;
          }
        } catch (error) {
          showNotification("error", "Failed to load messages");
        } finally {
          loadingMessages.value = false;
        }
      };
      const handleBulkAction = async (action) => {
        if (action === "delete") {
          try {
            await ElMessageBox.confirm(`Delete ${selectedConversations.value.length} conversation(s)?`, "Warning", {
              confirmButtonText: "Delete",
              cancelButtonText: "Cancel",
              type: "warning",
              confirmButtonClass: "el-button--danger"
            });
            await deleteConversations(selectedConversations.value);
            await loadConversations();
            selectedConversations.value = [];
            selectAll.value = false;
            if (selectedConversation.value && !conversations.value.find((c2) => c2.id === selectedConversation.value.id)) {
              selectedConversation.value = null;
              messages2.value = [];
            }
            showNotification("success", "Conversations deleted");
          } catch (e) {
          }
        }
      };
      const deleteConversation = async (id) => {
        try {
          await ElMessageBox.confirm("Delete this conversation?", "Warning", {
            confirmButtonText: "Delete",
            cancelButtonText: "Cancel",
            type: "warning",
            confirmButtonClass: "el-button--danger"
          });
          await deleteConversations([id]);
          await loadConversations();
          if (selectedConversation.value?.id === id) {
            selectedConversation.value = null;
            messages2.value = [];
          }
          showNotification("success", "Conversation deleted");
        } catch (e) {
        }
      };
      watch(selectedConversations, (val) => {
        selectAll.value = val.length === conversations.value.length && conversations.value.length > 0;
      });
      watch(searchQuery, () => {
        currentPage.value = 1;
        loadConversations();
      });
      onMounted(() => {
        loadConversations();
      });
      return (_ctx, _cache) => {
        const _component_Search = resolveComponent("Search");
        const _component_el_icon = resolveComponent("el-icon");
        const _component_el_input = resolveComponent("el-input");
        const _component_el_checkbox = resolveComponent("el-checkbox");
        const _component_ArrowDown = resolveComponent("ArrowDown");
        const _component_el_button = resolveComponent("el-button");
        const _component_Delete = resolveComponent("Delete");
        const _component_el_dropdown_item = resolveComponent("el-dropdown-item");
        const _component_el_dropdown_menu = resolveComponent("el-dropdown-menu");
        const _component_el_dropdown = resolveComponent("el-dropdown");
        const _component_ChatDotRound = resolveComponent("ChatDotRound");
        const _component_el_tag = resolveComponent("el-tag");
        const _component_el_pagination = resolveComponent("el-pagination");
        const _component_el_card = resolveComponent("el-card");
        const _component_el_col = resolveComponent("el-col");
        const _component_el_avatar = resolveComponent("el-avatar");
        const _component_el_row = resolveComponent("el-row");
        const _directive_loading = resolveDirective("loading");
        return openBlock(), createElementBlock("div", _hoisted_1, [
          _cache[16] || (_cache[16] = createBaseVNode("div", { class: "mb-6" }, [
            createBaseVNode("h1", { class: "text-2xl font-bold text-gray-900" }, "Inbox"),
            createBaseVNode("p", { class: "text-gray-600 mt-1" }, "View and manage chatbot conversations.")
          ], -1)),
          createVNode(_component_el_row, {
            gutter: 24,
            style: { "min-height": "600px" }
          }, {
            default: withCtx(() => [
              createVNode(_component_el_col, {
                span: 24,
                lg: 8
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_card, {
                    shadow: "never",
                    "body-style": { padding: "0" }
                  }, {
                    header: withCtx(() => [
                      createBaseVNode("div", _hoisted_2, [
                        createVNode(_component_el_input, {
                          modelValue: searchQuery.value,
                          "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchQuery.value = $event),
                          placeholder: "Search conversations...",
                          clearable: "",
                          size: "default"
                        }, {
                          prefix: withCtx(() => [
                            createVNode(_component_el_icon, null, {
                              default: withCtx(() => [
                                createVNode(_component_Search)
                              ]),
                              _: 1
                            })
                          ]),
                          _: 1
                        }, 8, ["modelValue"]),
                        createBaseVNode("div", _hoisted_3, [
                          createVNode(_component_el_checkbox, {
                            modelValue: selectAll.value,
                            "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => selectAll.value = $event),
                            onChange: toggleSelectAll,
                            indeterminate: isIndeterminate.value
                          }, {
                            default: withCtx(() => [..._cache[8] || (_cache[8] = [
                              createTextVNode(" Select All ", -1)
                            ])]),
                            _: 1
                          }, 8, ["modelValue", "indeterminate"]),
                          selectedConversations.value.length > 0 ? (openBlock(), createBlock(_component_el_dropdown, {
                            key: 0,
                            trigger: "click",
                            onCommand: handleBulkAction
                          }, {
                            dropdown: withCtx(() => [
                              createVNode(_component_el_dropdown_menu, null, {
                                default: withCtx(() => [
                                  createVNode(_component_el_dropdown_item, {
                                    command: "delete",
                                    class: "text-red-500"
                                  }, {
                                    default: withCtx(() => [
                                      createVNode(_component_el_icon, { class: "text-red-500" }, {
                                        default: withCtx(() => [
                                          createVNode(_component_Delete)
                                        ]),
                                        _: 1
                                      }),
                                      _cache[10] || (_cache[10] = createTextVNode(" Delete Selected ", -1))
                                    ]),
                                    _: 1
                                  })
                                ]),
                                _: 1
                              })
                            ]),
                            default: withCtx(() => [
                              createVNode(_component_el_button, { size: "small" }, {
                                default: withCtx(() => [
                                  _cache[9] || (_cache[9] = createTextVNode(" Actions ", -1)),
                                  createVNode(_component_el_icon, { class: "ml-1" }, {
                                    default: withCtx(() => [
                                      createVNode(_component_ArrowDown)
                                    ]),
                                    _: 1
                                  })
                                ]),
                                _: 1
                              })
                            ]),
                            _: 1
                          })) : createCommentVNode("", true)
                        ])
                      ])
                    ]),
                    default: withCtx(() => [
                      withDirectives((openBlock(), createElementBlock("div", _hoisted_4, [
                        filteredConversations.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_5, [
                          createVNode(_component_el_icon, {
                            size: 40,
                            class: "mb-2 text-gray-300"
                          }, {
                            default: withCtx(() => [
                              createVNode(_component_ChatDotRound)
                            ]),
                            _: 1
                          }),
                          _cache[11] || (_cache[11] = createBaseVNode("p", null, "No conversations found", -1))
                        ])) : (openBlock(), createElementBlock("div", _hoisted_6, [
                          (openBlock(true), createElementBlock(Fragment, null, renderList(filteredConversations.value, (conv) => {
                            return openBlock(), createElementBlock("div", {
                              key: conv.id,
                              class: normalizeClass(["p-4 border-b cursor-pointer hover:bg-gray-50 transition-colors", { "bg-blue-50 border-l-4 border-l-blue-500": selectedConversation.value?.id === conv.id }]),
                              onClick: ($event) => selectConversation(conv)
                            }, [
                              createBaseVNode("div", _hoisted_8, [
                                createVNode(_component_el_checkbox, {
                                  modelValue: selectedConversations.value,
                                  "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => selectedConversations.value = $event),
                                  label: conv.id,
                                  onClick: _cache[3] || (_cache[3] = withModifiers(() => {
                                  }, ["stop"]))
                                }, {
                                  default: withCtx(() => [..._cache[12] || (_cache[12] = [
                                    createTextVNode(" ", -1)
                                  ])]),
                                  _: 1
                                }, 8, ["modelValue", "label"]),
                                createBaseVNode("div", _hoisted_9, [
                                  createBaseVNode("div", _hoisted_10, [
                                    createBaseVNode("span", _hoisted_11, toDisplayString(conv.user_name || "Guest"), 1),
                                    createBaseVNode("span", _hoisted_12, toDisplayString(formatTime2(conv.last_message_at)), 1)
                                  ]),
                                  createBaseVNode("div", _hoisted_13, [
                                    createVNode(_component_el_tag, {
                                      size: "small",
                                      type: "info"
                                    }, {
                                      default: withCtx(() => [
                                        createTextVNode(toDisplayString(conv.chatbot_name), 1)
                                      ]),
                                      _: 2
                                    }, 1024)
                                  ]),
                                  createBaseVNode("p", _hoisted_14, toDisplayString(conv.last_message), 1)
                                ])
                              ])
                            ], 10, _hoisted_7);
                          }), 128))
                        ]))
                      ])), [
                        [_directive_loading, loadingConversations.value]
                      ]),
                      createBaseVNode("div", _hoisted_15, [
                        createVNode(_component_el_pagination, {
                          small: "",
                          background: "",
                          layout: "prev, pager, next",
                          total: totalConversations.value,
                          "page-size": pageSize.value,
                          "current-page": currentPage.value,
                          "onUpdate:currentPage": _cache[4] || (_cache[4] = ($event) => currentPage.value = $event),
                          onCurrentChange: loadConversations
                        }, null, 8, ["total", "page-size", "current-page"])
                      ])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }),
              createVNode(_component_el_col, {
                span: 24,
                lg: 16
              }, {
                default: withCtx(() => [
                  createVNode(_component_el_card, {
                    shadow: "never",
                    "body-style": { padding: "0", display: "flex", flexDirection: "column", height: "100%" }
                  }, createSlots({
                    default: withCtx(() => [
                      selectedConversation.value ? (openBlock(), createElementBlock("div", _hoisted_21, [
                        withDirectives((openBlock(), createElementBlock("div", _hoisted_22, [
                          (openBlock(true), createElementBlock(Fragment, null, renderList(filteredMessages.value, (msg) => {
                            return openBlock(), createElementBlock("div", {
                              key: msg.id,
                              class: normalizeClass(msg.role === "user" ? "flex justify-end" : "flex justify-start")
                            }, [
                              createBaseVNode("div", {
                                class: normalizeClass([
                                  msg.role === "user" ? "bg-blue-500 text-white rounded-2xl rounded-br-sm" : "bg-white border text-gray-700 rounded-2xl rounded-bl-sm",
                                  "max-w-[70%] px-4 py-2.5 shadow-sm"
                                ])
                              }, [
                                createBaseVNode("p", _hoisted_23, toDisplayString(msg.content), 1),
                                createBaseVNode("p", {
                                  class: normalizeClass([msg.role === "user" ? "text-blue-100" : "text-gray-400", "text-[10px] mt-1 text-right"])
                                }, toDisplayString(formatTime2(msg.created_at)), 3)
                              ], 2)
                            ], 2);
                          }), 128))
                        ])), [
                          [_directive_loading, loadingMessages.value]
                        ]),
                        createBaseVNode("div", _hoisted_24, [
                          createVNode(_component_el_pagination, {
                            small: "",
                            background: "",
                            layout: "prev, pager, next",
                            total: totalMessages.value,
                            "page-size": messagesPageSize.value,
                            "current-page": messagesPage.value,
                            "onUpdate:currentPage": _cache[7] || (_cache[7] = ($event) => messagesPage.value = $event),
                            onCurrentChange: loadMessages
                          }, null, 8, ["total", "page-size", "current-page"])
                        ])
                      ])) : (openBlock(), createElementBlock("div", _hoisted_25, [
                        createVNode(_component_el_icon, {
                          size: 60,
                          class: "mb-4"
                        }, {
                          default: withCtx(() => [
                            createVNode(_component_ChatDotRound)
                          ]),
                          _: 1
                        }),
                        _cache[14] || (_cache[14] = createBaseVNode("p", { class: "text-lg" }, "Select a conversation to view", -1)),
                        _cache[15] || (_cache[15] = createBaseVNode("p", { class: "text-sm mt-1" }, "Choose from the list on the left", -1))
                      ]))
                    ]),
                    _: 2
                  }, [
                    selectedConversation.value ? {
                      name: "header",
                      fn: withCtx(() => [
                        createBaseVNode("div", _hoisted_16, [
                          createBaseVNode("div", _hoisted_17, [
                            createVNode(_component_el_avatar, {
                              size: 40,
                              class: "text-lg bg-blue-100 text-blue-600"
                            }, {
                              default: withCtx(() => [
                                createTextVNode(toDisplayString((selectedConversation.value.user_name || "G").charAt(0).toUpperCase()), 1)
                              ]),
                              _: 1
                            }),
                            createBaseVNode("div", null, [
                              createBaseVNode("h3", _hoisted_18, toDisplayString(selectedConversation.value.user_name || "Guest"), 1),
                              createBaseVNode("p", _hoisted_19, toDisplayString(selectedConversation.value.chatbot_name) + " • " + toDisplayString(selectedConversation.value.message_count) + " messages", 1)
                            ])
                          ]),
                          createBaseVNode("div", _hoisted_20, [
                            createVNode(_component_el_input, {
                              modelValue: messageSearch.value,
                              "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => messageSearch.value = $event),
                              placeholder: "Search in conversation...",
                              size: "small",
                              clearable: "",
                              class: "w-48"
                            }, {
                              prefix: withCtx(() => [
                                createVNode(_component_el_icon, null, {
                                  default: withCtx(() => [
                                    createVNode(_component_Search)
                                  ]),
                                  _: 1
                                })
                              ]),
                              _: 1
                            }, 8, ["modelValue"]),
                            createVNode(_component_el_button, {
                              size: "small",
                              type: "danger",
                              plain: "",
                              onClick: _cache[6] || (_cache[6] = ($event) => deleteConversation(selectedConversation.value.id))
                            }, {
                              default: withCtx(() => [
                                createVNode(_component_el_icon, { class: "mr-1" }, {
                                  default: withCtx(() => [
                                    createVNode(_component_Delete)
                                  ]),
                                  _: 1
                                }),
                                _cache[13] || (_cache[13] = createTextVNode(" Delete ", -1))
                              ]),
                              _: 1
                            })
                          ])
                        ])
                      ]),
                      key: "0"
                    } : void 0
                  ]), 1024)
                ]),
                _: 1
              })
            ]),
            _: 1
          })
        ]);
      };
    }
  };
  const _sfc_main = {
    __name: "App",
    setup(__props) {
      const { currentView: currentView2, initFromUrl } = useNavigation();
      const { getDashboardStats } = useAnalyticsAPI();
      const { t } = useI18n();
      const elPlusLocales = { en: en$1, es_ES: es$2, de_DE: de, fr_FR: fr, pt_BR: ptBr, ja, it_IT: it$1, zh_CN: zhCn };
      const config = ref(window.kitsuneAiPlatformConfig || {
        currentUser: { name: "Admin" },
        settings: { token_limit: 1e5, budget_limit: 1e4 },
        i18n: { loading: "Loading..." }
      });
      const elementPlusLocale = computed(() => {
        const lang = config.value?.settings?.language ?? "en";
        return elPlusLocales[lang] ?? en$1;
      });
      const isNewUser = ref(!config.value.settings?.welcome_dismissed);
      const showOnboarding = ref(false);
      const handleOnboardingComplete = () => {
        if (config.value.onboarding) {
          config.value.onboarding.complete = true;
        }
        showOnboarding.value = false;
      };
      const startOnboarding = () => {
        showOnboarding.value = true;
      };
      provide("startOnboarding", startOnboarding);
      const stats = ref({
        requests: 0,
        tokens: 0,
        chatbots: 0,
        content: 0,
        chatbot_conversations: 0,
        storage_used: 0,
        storage_limit: 1e3
      });
      provide("config", config);
      provide("stats", stats);
      provide("isNewUser", isNewUser);
      provide("t", t);
      const viewComponents = {
        "dashboard": _sfc_main$R,
        "models": _sfc_main$2,
        "chatbots": _sfc_main$L,
        "inbox": _sfc_main$1,
        "content": _sfc_main$F,
        "forms": _sfc_main$y,
        "knowledge-base": _sfc_main$s,
        "automation": _sfc_main$l,
        "analytics": _sfc_main$h,
        "integrations": _sfc_main$e,
        "settings": _sfc_main$9,
        "help": _sfc_main$5
      };
      const currentViewComponent = computed(() => {
        return viewComponents[currentView2.value] || _sfc_main$R;
      });
      onMounted(async () => {
        initFromUrl();
        if (config.value.onboarding && !config.value.onboarding.complete && !window.location.search.includes("page=ai-platform-settings")) {
          showOnboarding.value = true;
        }
        try {
          const response = await getDashboardStats();
          if (response.success) {
            stats.value = {
              requests: response.data.total_requests ?? 0,
              tokens: response.data.total_tokens_used ?? 0,
              chatbots: response.data.total_chatbots ?? 0,
              content: response.data.total_content ?? 0,
              chatbot_conversations: response.data.chatbot_conversations ?? 0,
              storage_used: 250,
              storage_limit: 1e3
            };
          }
        } catch (e) {
          console.error("Failed to load stats", e);
        }
      });
      return (_ctx, _cache) => {
        const _component_el_main = resolveComponent("el-main");
        const _component_el_container = resolveComponent("el-container");
        const _component_el_config_provider = resolveComponent("el-config-provider");
        return openBlock(), createBlock(_component_el_config_provider, {
          locale: elementPlusLocale.value,
          size: "default",
          "z-index": 3e3
        }, {
          default: withCtx(() => [
            createVNode(_component_el_container, { class: "ai-platform-admin min-h-screen bg-gray-50" }, {
              default: withCtx(() => [
                createVNode(_component_el_main, { class: "ai-platform-admin__main" }, {
                  default: withCtx(() => [
                    createVNode(Transition, {
                      name: "el-fade-in-linear",
                      mode: "out-in"
                    }, {
                      default: withCtx(() => [
                        (openBlock(), createBlock(resolveDynamicComponent(currentViewComponent.value)))
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                }),
                createVNode(_sfc_main$3p),
                showOnboarding.value ? (openBlock(), createBlock(OnboardingWizard, {
                  key: 0,
                  onComplete: handleOnboardingComplete
                })) : createCommentVNode("", true)
              ]),
              _: 1
            })
          ]),
          _: 1
        }, 8, ["locale"]);
      };
    }
  };
  const app = createApp(_sfc_main);
  app.use(installer, {
    locale: en$1,
    size: "default",
    zIndex: 3e3
  });
  for (const [key, component2] of Object.entries(ElementPlusIconsVue)) {
    app.component(key, component2);
  }
  app.mount("#ai-platform-app");
})();
