@daiyu-5577/buildsystem 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/queue.js CHANGED
@@ -115,18 +115,11 @@ export class BuildTaskQueue {
115
115
  }
116
116
  /** 检查指定 packagePath 是否与任何运行中任务冲突(同项目或 monorepo 父子) */
117
117
  hasConflictWithRunning(pkg) {
118
- // 规范化:去掉 ./ 前缀
119
- const a = pkg.replace(/^\.\//, '');
118
+ const pendingPkgFirstPath = pkg.split('/')[0];
120
119
  return this.runningTasks.map((t) => t.packagePath).some((runningPkg) => {
121
- const b = runningPkg.replace(/^\.\//, '');
122
- // 完全相同
123
- if (a === b)
120
+ const runningPkgFirstPath = runningPkg.split('/')[0];
121
+ if (pendingPkgFirstPath === runningPkgFirstPath)
124
122
  return true;
125
- // . 代表根目录,与所有项目冲突
126
- if (a === '' || b === '')
127
- return true;
128
- // monorepo 父子关系
129
- return a.startsWith(b + '/') || b.startsWith(a + '/');
130
123
  });
131
124
  }
132
125
  /** 触发下一个任务(支持并行,排除与运行中任务冲突的项目) */
package/dist/queue.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ ._modalRoot_1nlw0_1{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--bg-overlay);-webkit-backdrop-filter:blur(24px) saturate(180%);backdrop-filter:blur(24px) saturate(180%);transition:background .3s ease}@keyframes _modal-show_naiks_1{0%{opacity:0;transform:translateY(24px) scale(.94)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes _modal-hide_naiks_1{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(16px) scale(.96)}}._modalContainerShow_naiks_21{animation:_modal-show_naiks_1 .4s var(--ease-spring)}._modalContainerHide_naiks_24{pointer-events:none;animation:_modal-hide_naiks_1 .28s var(--ease-smooth) forwards}._closing_naiks_28{animation:_modal-hide_naiks_1 .28s var(--ease-smooth) forwards}.modal-container{background:var(--bg-card);border:1px solid var(--glass-border);border-radius:var(--radius-lg);max-height:85vh;display:flex;flex-direction:column;overflow:hidden;-webkit-backdrop-filter:blur(40px) saturate(180%);backdrop-filter:blur(40px) saturate(180%);box-shadow:0 1px 0 var(--glass-highlight) inset,0 12px 40px #00000073,0 0 0 .5px #ffffff0f}.modal-close-bar{display:flex;justify-content:flex-end;padding:12px 16px 0}.modal-close-bar .close-btn{background:none;padding:4px 10px;font-size:18px;color:var(--text-dim);border-radius:var(--radius-sm);border:none;cursor:pointer;transition:color .2s ease,background .2s ease;font-family:var(--font)}.modal-close-bar .close-btn:hover{color:var(--text);background:var(--glass)}.modal-body{flex:1;overflow:auto;padding:0 24px 24px}._confirmWrap_1b2fb_1{display:flex;flex-direction:column;align-items:center;padding:20px 0}._confirmWrap_1b2fb_1 .confirm-title{font-size:16px;color:var(--text);text-align:center;word-break:break-word;line-height:1.6}._confirmWrap_1b2fb_1 .confirm-desc{font-size:13px;color:var(--text-dim);text-align:center;word-break:break-word;line-height:1.5;margin-top:8px}._confirmWrap_1b2fb_1 .confirm-actions{width:100%;display:flex;justify-content:center;gap:12px;margin-top:28px}._confirmWrap_1b2fb_1 .confirm-actions button{flex:1;min-width:100px}._confirmWrap_1b2fb_1 .confirm-actions .btn-cancel{background:var(--glass);color:var(--text);border:1px solid var(--glass-border);box-shadow:0 1px 0 var(--glass-highlight) inset,0 1px 3px #0003;text-shadow:none}._confirmWrap_1b2fb_1 .confirm-actions .btn-cancel:hover{background:var(--bg-card-hover);transform:translateY(-1px)}._confirmWrap_1b2fb_1 .confirm-actions .btn-ok{background:linear-gradient(180deg,var(--primary-light) 0%,var(--primary) 100%);color:var(--text-bright);box-shadow:0 1px #fff3 inset,0 2px 6px #0000004d;text-shadow:0 1px 2px rgba(0,0,0,.15)}@keyframes _toast-show_sls7c_1{0%{opacity:0;transform:translateY(-16px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes _toast-hide_sls7c_1{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-12px) scale(.94)}}._toastShow_sls7c_21{animation:_toast-show_sls7c_1 .4s var(--ease-spring)}._toastHide_sls7c_24{animation:_toast-hide_sls7c_1 .28s var(--ease-smooth) forwards}._toastRoot_sls7c_27{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99999;pointer-events:none}.toast-container{position:fixed;top:80px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast-item{padding:10px 24px;border-radius:var(--radius);font-size:14px;color:#fff;white-space:nowrap;-webkit-backdrop-filter:blur(40px) saturate(180%);backdrop-filter:blur(40px) saturate(180%);box-shadow:0 1px #ffffff26 inset,0 4px 16px #00000059;text-shadow:0 1px 2px rgba(0,0,0,.2)}.toast-item.toast-success{background:linear-gradient(180deg,#4ADE80 0%,var(--success) 100%)}.toast-item.toast-error{background:linear-gradient(180deg,#FF6B63 0%,var(--danger) 100%)}._userModal_bfbaq_1{padding:32px;text-align:center}._userModal_bfbaq_1 h3{margin-bottom:16px;font-size:18px;color:var(--text)}._userModal_bfbaq_1 .user-avatar-large{width:80px;height:80px;margin:0 auto 16px;border-radius:50%;background:linear-gradient(135deg,var(--primary) 0%,var(--accent) 100%);display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:700;color:#fff;box-shadow:0 4px 12px #0000004d}._userModal_bfbaq_1 .user-info{margin-bottom:16px;text-align:left}._userModal_bfbaq_1 .info-row{display:flex;align-items:center;padding:8px 0;border-bottom:1px solid var(--glass-border)}._userModal_bfbaq_1 .info-row:last-child{border-bottom:none}._userModal_bfbaq_1 .info-row .label{width:80px;color:var(--text-dim);font-size:13px;flex-shrink:0}._userModal_bfbaq_1 .info-row .value{flex:1;color:var(--text);font-size:13px;font-weight:500;display:flex;align-items:center;gap:6px}._userModal_bfbaq_1 .info-row .value.code-id{font-family:var(--font-mono);font-size:12px;word-break:break-all}._userModal_bfbaq_1 .info-row .value.code-id .copy-icon{background:transparent;border:none;cursor:pointer;font-size:14px;padding:2px;opacity:.5;transition:opacity .2s ease;flex-shrink:0}._userModal_bfbaq_1 .info-row .value.code-id .copy-icon:hover{opacity:1}._userModal_bfbaq_1 .info-row .value.role-tag{display:inline-flex;padding:2px 10px;border-radius:6px;font-size:11px;font-weight:700;letter-spacing:.5px}._userModal_bfbaq_1 .info-row .value.role-tag.super{background:#ff453a33;color:var(--danger)}._userModal_bfbaq_1 .info-row .value.role-tag.admin{background:#64d2ff33;color:var(--info)}._userModal_bfbaq_1 .info-row .value.role-tag.user{background:#8e8ea833;color:var(--text-dim)}._userModal_bfbaq_1 .btn-close{width:100%;max-width:200px;margin:0 auto;padding:10px 14px;background:var(--primary);border-radius:var(--radius-sm);font-size:13px;color:#fff;border:none;cursor:pointer}._userModal_bfbaq_1 .btn-close:hover{background:var(--primary-dark)}._select_f48hn_1{position:relative;display:inline-block}@keyframes _select-show_f48hn_1{0%{opacity:0;transform:translateY(-6px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.select-trigger{display:flex;align-items:center;justify-content:space-between;gap:6px;width:100%;min-width:140px;padding:6px 12px;font-size:12px;font-family:var(--font);color:var(--text);background:var(--glass);border:1px solid var(--glass-border);border-radius:14px;cursor:pointer;transition:all .25s ease;box-shadow:0 1px 0 var(--glass-highlight) inset,0 1px 3px #0003;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.select-trigger:hover{background:var(--bg-card-hover);transform:translateY(-1px);box-shadow:0 1px 0 var(--glass-highlight) inset,0 2px 6px #00000040}.select-trigger:active{transform:translateY(0)}.select-trigger-open{background:var(--bg-card-hover);box-shadow:0 1px 0 var(--glass-highlight) inset,0 0 0 2px var(--primary)}.select-trigger-text{flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-placeholder{color:var(--text-dim)}.select-arrow{font-size:18px;line-height:1;color:var(--text-dim);transition:transform .25s ease;transform:rotate(-90deg)}.select-arrow-open{transform:rotate(-90deg) rotate(180deg)}.select-dropdown{max-height:240px;overflow-y:auto;border-radius:var(--radius);background:var(--bg-card);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(40px) saturate(180%);backdrop-filter:blur(40px) saturate(180%);box-shadow:0 1px 0 var(--glass-highlight) inset,0 8px 32px #0006;animation:select-show .25s var(--ease-smooth)}.select-option{padding:8px 14px;font-size:12px;color:var(--text);cursor:pointer;transition:all .2s ease}.select-option:not(.select-option-active):hover{background:var(--glass)}.select-option:first-child{border-radius:var(--radius) var(--radius) 0 0}.select-option:last-child{border-radius:0 0 var(--radius) var(--radius)}.select-option-active{background:linear-gradient(180deg,var(--primary-light) 0%,var(--primary) 100%);color:var(--text-bright);font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.15)}._permissionModal_lkmtn_1{padding:32px;max-height:80vh;overflow:hidden;display:flex;flex-direction:column}._permissionModal_lkmtn_1 h3{color:var(--text);margin-bottom:16px;font-size:17px;font-weight:700;display:flex;align-items:center;gap:8px}._permissionModal_lkmtn_1 h3 .user-count{font-size:12px;font-weight:500;color:var(--text-dim)}._permissionModal_lkmtn_1 .search-bar{margin-bottom:16px}._permissionModal_lkmtn_1 .search-bar input{width:100%;padding:8px 12px;border:1px solid var(--glass-border);border-radius:var(--radius-sm);font-size:13px;background:var(--bg-card);color:var(--text)}._permissionModal_lkmtn_1 .search-bar input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--border-focus)}._permissionModal_lkmtn_1 .user-list{flex:1;overflow-y:auto}._permissionModal_lkmtn_1 .user-list table{width:100%;border-collapse:collapse}._permissionModal_lkmtn_1 .user-list table thead{position:sticky;top:0;background:var(--bg-card);z-index:1}._permissionModal_lkmtn_1 .user-list table thead th{padding:8px 12px;text-align:left;font-size:13px;color:var(--text-dim);font-weight:600;border-bottom:1px solid var(--glass-border)}._permissionModal_lkmtn_1 .user-list table tbody tr{border-bottom:1px solid var(--glass-border);transition:background .2s ease}._permissionModal_lkmtn_1 .user-list table tbody tr.is-current{opacity:.5}._permissionModal_lkmtn_1 .user-list table tbody tr:hover{background:var(--bg-card-hover)}._permissionModal_lkmtn_1 .user-list table tbody tr td{padding:8px 12px;font-size:13px;color:var(--text);vertical-align:middle}._permissionModal_lkmtn_1 .user-list table tbody tr td .user-name{display:block;font-weight:600;font-size:13px;color:var(--text-bright)}._permissionModal_lkmtn_1 .user-list table tbody tr td .user-id{display:block;font-size:11px;color:var(--text-dim);font-family:var(--font-mono);margin-top:2px}._permissionModal_lkmtn_1 .user-list table tbody tr td .role-badge{display:inline-flex;padding:2px 10px;border-radius:6px;font-size:11px;font-weight:700;letter-spacing:.5px}._permissionModal_lkmtn_1 .user-list table tbody tr td .role-badge.super{background:#ff453a33;color:var(--danger)}._permissionModal_lkmtn_1 .user-list table tbody tr td .role-badge.admin{background:#64d2ff33;color:var(--info)}._permissionModal_lkmtn_1 .user-list table tbody tr td .role-badge.user{background:#8e8ea833;color:var(--text-dim)}._permissionModal_lkmtn_1 .user-list .empty{padding:32px;text-align:center;color:var(--text-dim);font-size:13px}._permissionModal_lkmtn_1 .footer{display:flex;justify-content:center;padding-top:30px}._permissionModal_lkmtn_1 .btn-close{padding:10px 32px;width:100%;background:var(--primary);border-radius:var(--radius-sm);font-size:13px;font-weight:600;color:#fff;border:none;cursor:pointer;transition:all .2s ease}._permissionModal_lkmtn_1 .btn-close:hover{opacity:.9}._inviteModal_1gxli_1{padding:32px;max-height:80vh;overflow:hidden;display:flex;flex-direction:column}._inviteModal_1gxli_1 h3{color:var(--text);margin-bottom:12px;font-size:17px;font-weight:700}._inviteModal_1gxli_1 .empty-state{display:flex;flex-direction:column;align-items:center;padding:48px 20px}._inviteModal_1gxli_1 .empty-state .deco{font-size:48px;margin-bottom:16px}._inviteModal_1gxli_1 .empty-state p{color:var(--text-dim);font-size:14px;margin:0 0 16px}._inviteModal_1gxli_1 .empty-state .btn-generate{padding:10px 24px;border-radius:var(--radius-sm);font-size:13px;font-weight:600;background:var(--success);color:#fff;border:none;cursor:pointer;transition:all .25s ease}._inviteModal_1gxli_1 .empty-state .btn-generate:hover:not(:disabled){opacity:.9}._inviteModal_1gxli_1 .empty-state .btn-generate:disabled{opacity:.6;cursor:not-allowed}._inviteModal_1gxli_1 .empty-state .tip{display:block;margin-top:10px;font-size:12px;color:var(--text-dim)}._inviteModal_1gxli_1 .latest-code{display:flex;align-items:center;gap:10px;padding:10px 14px;margin-bottom:4px;border-radius:var(--radius-sm);background:var(--bg-card-hover);border:1px solid var(--success);transition:all .25s ease}._inviteModal_1gxli_1 .latest-code .badge{padding:2px 8px;border-radius:6px;font-size:10px;font-weight:700;color:#fff;background:var(--danger);letter-spacing:.5px;flex-shrink:0}._inviteModal_1gxli_1 .latest-code .status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}._inviteModal_1gxli_1 .latest-code .status-dot.status-0{background:var(--success)}._inviteModal_1gxli_1 .latest-code .status-dot.status-1{background:var(--text-dim)}._inviteModal_1gxli_1 .latest-code .status-dot.status-2{background:var(--danger)}._inviteModal_1gxli_1 .latest-code .status-text{font-size:12px;color:var(--text-dim);flex-shrink:0}._inviteModal_1gxli_1 .latest-code .code-text{flex:1;font-family:var(--font-mono);font-size:14px;font-weight:700;color:var(--primary);word-break:break-all}._inviteModal_1gxli_1 .latest-code .code-time{font-size:11px;color:var(--text-dim);white-space:nowrap}._inviteModal_1gxli_1 .latest-code .copy-btn{padding:4px 10px;border-radius:8px;font-size:11px;font-weight:600;background:var(--success);color:#fff;border:none;cursor:pointer;transition:all .2s ease;flex-shrink:0}._inviteModal_1gxli_1 .latest-code .copy-btn:hover{opacity:.9}._inviteModal_1gxli_1 .code-list{display:flex;flex-direction:column;gap:8px;max-height:360px;overflow-y:auto;margin-bottom:12px}._inviteModal_1gxli_1 .code-item{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:var(--radius-sm);background:var(--glass);border:1px solid var(--glass-border);transition:all .25s ease}._inviteModal_1gxli_1 .code-item:hover{border-color:var(--primary);background:var(--bg-card-hover)}._inviteModal_1gxli_1 .code-item .status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}._inviteModal_1gxli_1 .code-item .status-dot.status-0{background:var(--success)}._inviteModal_1gxli_1 .code-item .status-dot.status-1{background:var(--text-dim)}._inviteModal_1gxli_1 .code-item .status-dot.status-2{background:var(--danger)}._inviteModal_1gxli_1 .code-item .status-text{font-size:12px;color:var(--text-dim);flex-shrink:0}._inviteModal_1gxli_1 .code-item .code-text{flex:1;font-family:var(--font-mono);font-size:14px;font-weight:600;color:var(--text);word-break:break-all}._inviteModal_1gxli_1 .code-item .code-time{font-size:11px;color:var(--text-dim);white-space:nowrap}._inviteModal_1gxli_1 .code-item .copy-btn{padding:4px 10px;border-radius:8px;font-size:11px;font-weight:600;background:transparent;color:var(--primary);border:1px solid var(--glass-border);cursor:pointer;transition:all .2s ease;flex-shrink:0}._inviteModal_1gxli_1 .code-item .copy-btn:hover{background:var(--primary);color:#fff;border-color:var(--primary)}._inviteModal_1gxli_1 .actions{display:flex;gap:12px}._inviteModal_1gxli_1 .actions button{flex:1;padding:10px 14px;border-radius:var(--radius-sm);font-size:13px;font-weight:600;border:none;cursor:pointer;transition:all .25s ease}._inviteModal_1gxli_1 .actions button:disabled{opacity:.6;cursor:not-allowed}._inviteModal_1gxli_1 .actions .btn-generate{background:var(--success);color:#fff}._inviteModal_1gxli_1 .actions .btn-generate:hover:not(:disabled){opacity:.9}._inviteModal_1gxli_1 .actions .btn-close{background:var(--primary);color:#fff}._inviteModal_1gxli_1 .actions .btn-close:hover{opacity:.9}._userAvatar_9xyff_1{position:relative;display:flex;align-items:center}._userAvatar_9xyff_1 .avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--primary) 0%,var(--accent) 100%);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;cursor:pointer;transition:all .25s ease;box-shadow:0 2px 8px #0000004d,0 1px #fff3 inset;-webkit-user-select:none;user-select:none}._userAvatar_9xyff_1 .avatar:hover{transform:scale(1.08);box-shadow:0 4px 12px #0006,0 1px #ffffff40 inset}._userAvatar_9xyff_1 .avatar:active{transform:scale(1.02)}._userAvatar_9xyff_1 .user-dropdown{background:var(--bg-card);border:1px solid var(--glass-border);border-radius:var(--radius);box-shadow:0 8px 24px #0006;-webkit-backdrop-filter:blur(40px) saturate(180%);backdrop-filter:blur(40px) saturate(180%);overflow:hidden;animation:fadeIn .2s var(--ease-smooth);padding:8px}._userAvatar_9xyff_1 .user-dropdown-item{padding:8px 14px;font-size:13px;color:var(--text);cursor:pointer;transition:all .2s ease;border-radius:var(--radius-sm);font-weight:600;margin-bottom:4px}._userAvatar_9xyff_1 .user-dropdown-item:last-child{margin-bottom:0}._userAvatar_9xyff_1 .user-dropdown-item:hover{background:var(--bg-card-hover);transform:translate(2px)}._userAvatar_9xyff_1 .user-dropdown-item.logout{color:var(--danger);margin-top:4px;border-top:1px solid var(--glass-border);padding-top:12px}._home_8h37b_1{height:100vh;display:flex;flex-direction:column;padding:12px;gap:8px;box-sizing:border-box}._home_8h37b_1 .toolbar{width:100%;position:relative;display:flex;align-items:center;justify-content:center;padding:0 60px 0 10px;border-radius:var(--radius);background:var(--bg-card);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(40px) saturate(180%);backdrop-filter:blur(40px) saturate(180%);flex-shrink:0;box-shadow:0 1px 0 var(--glass-highlight) inset;transition:background .3s ease}._home_8h37b_1 .toolbar .opts{max-width:100%;padding:6px 0;gap:8px;border-radius:var(--radius);display:flex;align-items:center;overflow:auto hidden}._home_8h37b_1 .toolbar-user{position:absolute;top:50%;transform:translateY(-50%);right:12px}._home_8h37b_1 .pending-tasks-bar{width:100%;border-radius:var(--radius);background:var(--bg-card);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(40px) saturate(180%);backdrop-filter:blur(40px) saturate(180%);box-shadow:0 1px 0 var(--glass-highlight) inset;flex-shrink:0;padding:6px 10px;display:flex;align-items:center;gap:10px}._home_8h37b_1 .pending-label{font-size:12px;color:var(--text-dim);font-weight:600;white-space:nowrap;flex-shrink:0}._home_8h37b_1 .pending-scroll{display:flex;gap:8px;overflow-x:auto;flex:1;scrollbar-width:thin}._home_8h37b_1 .pending-scroll::-webkit-scrollbar{height:4px}._home_8h37b_1 .pending-scroll::-webkit-scrollbar-thumb{background:var(--glass-border);border-radius:2px}._home_8h37b_1 .pending-item{display:flex;align-items:center;gap:6px;padding:4px 10px;border-radius:12px;background:var(--glass);border:1px solid var(--glass-border);font-size:11px;white-space:nowrap;flex-shrink:0;transition:all .2s ease}._home_8h37b_1 .pending-item:hover{background:var(--bg-card-hover)}._home_8h37b_1 .pending-taskid{color:var(--primary-light);font-family:var(--font-mono);max-width:120px;overflow:hidden;text-overflow:ellipsis}._home_8h37b_1 .pending-path{color:var(--accent);font-weight:500}._home_8h37b_1 .pending-branch{color:var(--success)}._home_8h37b_1 .pending-cancel-btn{padding:2px 8px;font-size:10px;border-radius:8px;background:linear-gradient(180deg,#FF6B63 0%,var(--danger) 100%);color:#fff;border:none;cursor:pointer;font-family:var(--font);transition:all .2s ease}._home_8h37b_1 .pending-cancel-btn:hover{opacity:.9;transform:scale(1.05)}._home_8h37b_1 .pending-cancel-btn:active{transform:scale(.98)}._home_8h37b_1 .tool-btn{padding:6px 18px;font-size:12px;border-radius:20px;white-space:nowrap;font-weight:600;letter-spacing:.3px;background:linear-gradient(180deg,var(--primary-light) 0%,var(--primary) 100%);color:var(--text-bright);border:none;cursor:pointer;transition:all .25s ease;font-family:var(--font);box-shadow:0 1px #ffffff26 inset,0 2px 4px #0000004d;text-shadow:0 1px 2px rgba(0,0,0,.15)}._home_8h37b_1 .tool-btn:hover{opacity:.92;transform:translateY(-1px);box-shadow:0 1px #fff3 inset,0 4px 10px #00000059}._home_8h37b_1 .tool-btn:active{transform:translateY(0);box-shadow:0 0 #fff0 inset,0 1px 2px #0000004d}._home_8h37b_1 .build-panel{flex:2;display:flex;flex-direction:column;overflow:hidden;border-radius:var(--radius);background:var(--bg-card);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(40px) saturate(180%);backdrop-filter:blur(40px) saturate(180%);box-shadow:0 1px 0 var(--glass-highlight) inset,var(--shadow-sm)}._home_8h37b_1 .panel-title{padding:10px 14px 6px;font-size:13px;font-weight:700;color:var(--text-dim);letter-spacing:.8px;flex-shrink:0}._home_8h37b_1 .panel-body{flex:1;position:relative;overflow:hidden}._home_8h37b_1 .scroll-area{height:100%;overflow-y:auto;padding:6px 10px;display:flex;flex-direction:column;gap:4px}._home_8h37b_1 .unread-badge{position:absolute;bottom:10px;right:10px;padding:4px 10px;border-radius:12px;font-size:12px;background:var(--success);color:#fff;cursor:pointer;font-weight:600;box-shadow:0 1px #fff3 inset,var(--shadow-sm);z-index:5;transition:transform .2s ease}._home_8h37b_1 .unread-badge:hover{transform:scale(1.05)}._home_8h37b_1 .build-card{flex-shrink:0;width:100%;margin-bottom:8px;border-radius:var(--radius-sm);background:var(--glass);border:1px solid var(--glass-border);overflow:hidden;animation:fadeIn .35s var(--ease-smooth);transition:background .25s ease,box-shadow .25s ease}._home_8h37b_1 .build-card:hover{background:var(--bg-card-hover)}._home_8h37b_1 .build-card-header{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid var(--glass-border);background:#ffffff05;font-size:12px}._home_8h37b_1 .build-card-header .name{color:var(--success);font-weight:600}._home_8h37b_1 .build-card-header .branch{color:var(--primary-light);font-weight:600}._home_8h37b_1 .build-card-header .sep{margin:0 4px;color:var(--text-dim)}._home_8h37b_1 .build-card-header .time{font-size:11px;color:var(--text-dim)}._home_8h37b_1 .build-card-body{padding:8px 12px}._home_8h37b_1 .build-card-body .info-row{display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--text-dim)}._home_8h37b_1 .build-card-body .info-row a{color:var(--info)}._home_8h37b_1 .build-card-body .btn-cancel{margin-top:6px;padding:3px 10px;font-size:11px;border-radius:8px;background:linear-gradient(180deg,#FF6B63 0%,var(--danger) 100%);color:#fff;border:none;cursor:pointer;font-family:var(--font);transition:all .2s ease;box-shadow:0 1px #ffffff1f inset,0 1px 3px #00000040}._home_8h37b_1 .build-card-body .btn-cancel:hover{opacity:.92;transform:translateY(-1px)}._home_8h37b_1 .build-card-body .btn-cancel:active{transform:translateY(0)}._home_8h37b_1 .build-card-body .build-log{width:100%;padding:8px 10px;margin-top:8px;background:#00000059;color:#ccc;border-radius:8px;font-size:11px;white-space:break-spaces;max-height:250px;overflow-y:auto;word-break:break-all;line-height:1.5;border:1px solid rgba(255,255,255,.04);margin-bottom:0;font-family:var(--font-mono)}._home_8h37b_1 .build-card-body .status-tag{display:inline-block;margin-top:6px;padding:3px 10px;border-radius:8px;font-size:11px;font-weight:600}._home_8h37b_1 .build-card-body .status-tag.status-1{background:var(--info);color:#000;box-shadow:0 1px #ffffff26 inset}._home_8h37b_1 .build-card-body .status-tag.status-2{background:var(--success);color:#fff;box-shadow:0 1px #ffffff26 inset}._home_8h37b_1 .build-card-body .status-tag.status-3{background:var(--danger);color:#fff;box-shadow:0 1px #ffffff26 inset}._home_8h37b_1 .chat-panel{flex:3;display:flex;flex-direction:column;overflow:hidden;border-radius:var(--radius);background:var(--bg-card);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(40px) saturate(180%);backdrop-filter:blur(40px) saturate(180%);box-shadow:0 1px 0 var(--glass-highlight) inset,var(--shadow-sm)}._home_8h37b_1 .chat-scroll{height:100%;overflow-y:auto;padding:6px 10px;display:flex;flex-direction:column;align-items:flex-start}._home_8h37b_1 .chat-bubble{display:flex;flex-direction:column;margin-bottom:10px;max-width:75%;animation:fadeIn .3s var(--ease-smooth)}._home_8h37b_1 .chat-bubble.self{align-self:flex-end;align-items:flex-end}._home_8h37b_1 .chat-bubble .bubble-header{display:flex;align-items:center;gap:6px;margin-bottom:3px}._home_8h37b_1 .chat-bubble .bubble-header .name{font-size:12px;font-weight:600}._home_8h37b_1 .chat-bubble .bubble-header .name-other{color:var(--primary-light)}._home_8h37b_1 .chat-bubble .bubble-header .name-self{color:var(--accent)}._home_8h37b_1 .chat-bubble .bubble-header .time{font-size:10px;color:var(--text-dim)}._home_8h37b_1 .chat-bubble .bubble-text{padding:8px 14px;white-space:break-spaces;word-break:break-word;font-size:13px;line-height:1.5;margin:0;font-family:var(--font)}._home_8h37b_1 .chat-bubble .bubble-text-other{border-radius:18px 18px 18px 4px;background:var(--glass);color:var(--text);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:0 1px 0 var(--glass-highlight) inset}._home_8h37b_1 .chat-bubble .bubble-text-self{border-radius:18px 18px 4px;background:linear-gradient(180deg,var(--primary-light) 0%,var(--primary) 100%);color:#fff;border:none;box-shadow:0 1px #ffffff26 inset,0 2px 6px #00000040;text-shadow:0 1px 2px rgba(0,0,0,.15)}._home_8h37b_1 .chat-bubble .bubble-files{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}._home_8h37b_1 .chat-bubble .bubble-files img,._home_8h37b_1 .chat-bubble .bubble-files video{width:100px;height:100px;border-radius:10px;object-fit:cover;background:var(--bg-card);cursor:pointer;object-fit:contain;transition:transform .25s ease,box-shadow .25s ease}._home_8h37b_1 .chat-bubble .bubble-files img:hover,._home_8h37b_1 .chat-bubble .bubble-files video:hover{transform:scale(1.04);box-shadow:0 4px 16px #0006}._home_8h37b_1 .command-bar{display:flex;align-items:center;gap:6px;padding:6px 10px;border-top:1px solid var(--glass-border);flex-shrink:0}._home_8h37b_1 .command-bar .cmd-btn{padding:4px 12px;font-size:11px;border-radius:14px;border:none;color:var(--text-bright);cursor:pointer;font-family:var(--font);font-weight:500;transition:all .25s ease;box-shadow:0 1px #ffffff1f inset,0 1px 3px #00000040}._home_8h37b_1 .command-bar .cmd-btn:hover{opacity:.92;transform:translateY(-1px)}._home_8h37b_1 .command-bar .cmd-btn:active{transform:translateY(0)}._home_8h37b_1 .command-bar .cmd-build{background:linear-gradient(180deg,var(--primary-light) 0%,var(--primary-dark) 100%)}._home_8h37b_1 .command-bar .cmd-img{background:linear-gradient(180deg,#4ADE80 0%,var(--success) 100%);position:relative}._home_8h37b_1 .command-bar .file-input-hidden{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}._home_8h37b_1 .input-area{display:flex;align-items:center;gap:8px;padding:6px 10px 10px;border-top:1px solid var(--glass-border);flex-shrink:0}._home_8h37b_1 .input-area textarea{flex:1;resize:none;min-height:40px;max-height:100px;padding:8px 12px;border-radius:var(--radius-sm);background:var(--bg-input);border:1px solid var(--border);color:var(--text);font-size:13px;line-height:1.5;outline:none;font-family:var(--font);transition:border-color .25s ease,box-shadow .25s ease}._home_8h37b_1 .input-area textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--border-focus)}._home_8h37b_1 .input-area .btn-send{width:80px;height:40px;display:flex;align-items:center;justify-content:center;font-size:12px;text-align:center;line-height:1.3}@media screen and (min-width:1000px){._home_8h37b_1{flex-direction:row;flex-wrap:wrap;padding:20px 60px 100px;align-content:flex-start}._home_8h37b_1 .toolbar{width:100%;margin-bottom:8px}._home_8h37b_1 .build-panel{flex:2;height:100%;margin-right:20px}._home_8h37b_1 .chat-panel{flex:3;height:100%}}._buildModal_1ngfz_1 h3{color:var(--text);margin-bottom:16px;font-size:17px;font-weight:700}._buildModal_1ngfz_1 label{display:block;font-size:13px;color:var(--text-dim);margin-bottom:6px}._buildModal_1ngfz_1 label .select-count{float:right;font-size:12px;color:var(--primary-light);font-weight:600}._buildModal_1ngfz_1 .branch-input,._buildModal_1ngfz_1 .pkg-search-input{width:100%;margin-bottom:12px;padding:8px 12px;border:1px solid var(--glass-border);border-radius:var(--radius-sm);font-size:13px;background:var(--bg-card);color:var(--text)}._buildModal_1ngfz_1 .branch-input:focus,._buildModal_1ngfz_1 .pkg-search-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--border-focus)}._buildModal_1ngfz_1 .header-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}._buildModal_1ngfz_1 .select-all-btn,._buildModal_1ngfz_1 .refresh-pkg-btn{padding:4px 12px;border-radius:8px;font-size:12px;font-weight:600;color:var(--primary-light);cursor:pointer;transition:all .2s ease;background:transparent;border:1px solid var(--glass-border)}._buildModal_1ngfz_1 .select-all-btn:hover:not(.is-refreshing),._buildModal_1ngfz_1 .refresh-pkg-btn:hover:not(.is-refreshing){background:var(--primary);color:#fff;border-color:var(--primary)}._buildModal_1ngfz_1 .refresh-pkg-btn.is-refreshing{opacity:.6;cursor:not-allowed}._buildModal_1ngfz_1 .pkg-grid{display:flex;flex-wrap:wrap;gap:8px;max-height:300px;overflow-y:auto;margin-bottom:20px}._buildModal_1ngfz_1 .pkg-item{padding:6px 16px;border-radius:20px;font-size:13px;cursor:pointer;font-weight:600;transition:all .25s ease;border:1px solid var(--glass-border);background:var(--glass);color:var(--text)}._buildModal_1ngfz_1 .pkg-item.active{background:linear-gradient(180deg,var(--primary-light) 0%,var(--primary) 100%);color:#fff;border-color:transparent;box-shadow:0 1px #fff3 inset,0 2px 4px #00000040;text-shadow:0 1px 2px rgba(0,0,0,.15)}._buildModal_1ngfz_1 .pkg-item:hover:not(.active){background:var(--bg-card-hover)}._buildModal_1ngfz_1 .empty-pkg{font-size:13px;color:var(--text-dim);text-align:center;padding:12px 0;margin-bottom:20px}._buildModal_1ngfz_1 .btn-build{width:100%;padding:10px;font-size:15px;font-weight:700;border-radius:var(--radius-sm)}._logModal_eochr_1 h3{color:var(--text);margin-bottom:12px;font-size:17px;font-weight:700}._logModal_eochr_1 .tabs{display:flex;gap:4px;padding:3px;border-radius:var(--radius-sm);background:var(--glass);border:1px solid var(--glass-border);margin-bottom:12px}._logModal_eochr_1 .tab-item{flex:1;padding:8px 16px;border-radius:8px;text-align:center;font-size:13px;cursor:pointer;font-weight:600;background:transparent;color:var(--text-dim);transition:all .25s ease}._logModal_eochr_1 .tab-item.active{background:linear-gradient(180deg,var(--primary-light) 0%,var(--primary) 100%);color:#fff;box-shadow:0 1px #fff3 inset,0 1px 3px #00000040;text-shadow:0 1px 2px rgba(0,0,0,.15)}._logModal_eochr_1 .log-list{display:flex;flex-direction:column;gap:6px;max-height:400px;overflow-y:auto}._logModal_eochr_1 .log-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 14px;border-radius:var(--radius-sm);background:var(--glass);color:var(--text);font-size:13px;word-break:break-all;text-decoration:none;border:1px solid var(--glass-border);transition:all .25s ease}._logModal_eochr_1 .log-item .log-name{flex:1;min-width:0}._logModal_eochr_1 .log-item .log-link-icon{flex-shrink:0;font-size:12px;color:var(--text-dim);opacity:0;transition:opacity .2s ease}._logModal_eochr_1 .log-item:hover{border-color:var(--primary);background:var(--bg-card-hover)}._logModal_eochr_1 .log-item:hover .log-link-icon{opacity:1}._logModal_eochr_1 .empty{color:var(--text-dim);text-align:center;padding:20px}._listModal_1td0z_1 h3{color:var(--text);margin-bottom:12px;font-size:17px;font-weight:700}._listModal_1td0z_1 .list-items{display:flex;flex-direction:column;gap:6px}._listModal_1td0z_1 .list-item{padding:10px 14px;border-radius:var(--radius-sm);background:var(--glass);border:1px solid var(--glass-border);cursor:pointer;font-size:13px;font-weight:600;word-break:break-all;color:var(--text);transition:all .25s ease;display:flex;align-items:center;gap:8px}._listModal_1td0z_1 .list-item:hover{border-color:var(--primary);background:var(--bg-card-hover);transform:translate(2px)}._listModal_1td0z_1 .list-item .folder-icon{font-size:14px;flex-shrink:0}._listModal_1td0z_1 .list-item .branch-master{padding:2px 8px;border-radius:6px;font-size:11px;font-weight:700;color:#fff;background:var(--danger);letter-spacing:.5px;flex-shrink:0}._listModal_1td0z_1 .list-item .branch-other{padding:2px 8px;border-radius:6px;font-size:11px;font-weight:700;color:#fff;background:var(--success);letter-spacing:.5px;flex-shrink:0}._listModal_1td0z_1 .list-item .sep{margin:0 6px;color:var(--text-dim);flex-shrink:0}._listModal_1td0z_1 .empty{color:var(--text-dim);text-align:center;padding:20px}._login_qbk6z_1{height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);position:relative;overflow:hidden}._login_qbk6z_1:before{content:"";position:absolute;top:45%;left:50%;width:600px;height:600px;transform:translate(-50%,-50%);background:radial-gradient(circle,rgba(10,132,255,.06) 0%,rgba(94,92,230,.03) 40%,transparent 70%);pointer-events:none}@keyframes _gradientShift_qbk6z_1{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}._login_qbk6z_1 .login-card{width:min(400px,90vw);padding:32px 28px;border-radius:var(--radius-lg);background:var(--bg-card);border:1px solid var(--glass-border);box-shadow:0 1px 0 var(--glass-highlight) inset,var(--shadow);-webkit-backdrop-filter:blur(40px) saturate(180%);backdrop-filter:blur(40px) saturate(180%);animation:slideUp .45s var(--ease-smooth);position:relative;z-index:1}._login_qbk6z_1 .login-logo{text-align:center;margin-bottom:24px}._login_qbk6z_1 .login-logo .icon{width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,var(--primary),var(--accent));display:inline-flex;align-items:center;justify-content:center;font-size:22px;font-weight:900;color:#fff;margin-bottom:12px;box-shadow:0 1px #fff3 inset,0 4px 12px #0a84ff40}._login_qbk6z_1 .login-logo h1{font-size:20px;font-weight:700;color:var(--text-bright);margin:0}._login_qbk6z_1 .login-logo p{font-size:13px;color:var(--text-dim);margin-top:4px}._login_qbk6z_1 .tab-bar{display:flex;gap:4px;padding:3px;border-radius:24px;background:var(--glass);border:1px solid var(--glass-border);margin-bottom:20px}._login_qbk6z_1 .tab-item{flex:1;padding:8px 0;text-align:center;border-radius:20px;cursor:pointer;font-weight:600;font-size:14px;transition:all .3s var(--ease-smooth);color:var(--text-dim)}._login_qbk6z_1 .tab-item.active{background:linear-gradient(180deg,var(--primary-light) 0%,var(--primary) 100%);color:#fff;box-shadow:0 1px #fff3 inset,0 2px 6px #00000040;text-shadow:0 1px 2px rgba(0,0,0,.15)}._login_qbk6z_1 .form{display:flex;flex-direction:column;gap:14px}._login_qbk6z_1 .form .field label{display:block;font-size:13px;color:var(--text-dim);margin-bottom:4px}._login_qbk6z_1 .form .field input{width:100%}._login_qbk6z_1 .form .btn-submit{width:100%;padding:10px;font-size:15px;font-weight:700;border-radius:24px;background:linear-gradient(180deg,var(--primary-light) 0%,var(--primary) 100%);margin-top:8px;color:var(--text-bright);border:none;cursor:pointer;font-family:var(--font);transition:all .25s ease;box-shadow:0 1px #fff3 inset,0 2px 8px #0000004d;text-shadow:0 1px 2px rgba(0,0,0,.15)}._login_qbk6z_1 .form .btn-submit:hover{opacity:.92;transform:translateY(-1px);box-shadow:0 1px #ffffff40 inset,0 4px 14px #00000059}._login_qbk6z_1 .form .btn-submit:active{transform:translateY(0);box-shadow:0 0 #fff0 inset,0 1px 3px #0000004d}._login_qbk6z_1 .form .switch-hint{text-align:center;font-size:13px;color:var(--text-dim)}._login_qbk6z_1 .form .switch-hint a{color:var(--primary-light);cursor:pointer;font-weight:600;text-decoration:none;transition:color .2s ease}._login_qbk6z_1 .form .switch-hint a:hover{text-decoration:underline}:root{--primary: #0A84FF;--primary-light: #409CFF;--primary-dark: #0070E0;--accent: #5E5CE6;--danger: #FF453A;--success: #30D158;--warning: #FFD60A;--info: #64D2FF;--bg: #0a0a12;--bg-card: rgba(30, 30, 50, .45);--bg-card-hover: rgba(40, 40, 65, .55);--bg-input: rgba(255, 255, 255, .05);--bg-overlay: rgba(0, 0, 0, .45);--glass: rgba(255, 255, 255, .06);--glass-border: rgba(255, 255, 255, .12);--glass-highlight: rgba(255, 255, 255, .08);--border: rgba(255, 255, 255, .1);--border-focus: rgba(10, 132, 255, .45);--text: #f0f0f8;--text-dim: #8e8ea8;--text-bright: #ffffff;--radius: 14px;--radius-sm: 10px;--radius-lg: 20px;--shadow: 0 8px 32px rgba(0, 0, 0, .4), 0 0 0 .5px rgba(255,255,255,.06);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .3);--transition: all .25s cubic-bezier(.4, 0, .2, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--ease-smooth: cubic-bezier(.4, 0, .2, 1);--font: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Helvetica Neue", sans-serif;--font-mono: "SF Mono", "Menlo", "Consolas", monospace}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.5;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#ffffff14;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#ffffff29}a{color:var(--primary-light);text-decoration:none}a:hover{text-decoration:underline}input,textarea,select{background:var(--bg-input);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);padding:8px 12px;font-family:var(--font);font-size:13px;outline:none;transition:border-color .25s ease,box-shadow .25s ease}input:focus,textarea:focus,select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--border-focus)}button{background:linear-gradient(180deg,var(--primary-light) 0%,var(--primary) 100%);color:var(--text-bright);border:none;border-radius:var(--radius-sm);padding:8px 20px;font-family:var(--font);font-size:13px;cursor:pointer;transition:all .2s ease;font-weight:500;box-shadow:0 1px #ffffff26 inset,0 2px 4px #0000004d;text-shadow:0 1px 2px rgba(0,0,0,.2)}button:hover{background:linear-gradient(180deg,lighten(#409CFF,4%) 0%,lighten(#0A84FF,4%) 100%);transform:translateY(-1px);box-shadow:0 1px #fff3 inset,0 4px 12px #00000059}button:active{transform:translateY(0);box-shadow:0 0 #fff0 inset,0 1px 2px #0000004d}button:disabled{opacity:.4;cursor:not-allowed;transform:none}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(24px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}
@@ -73,4 +73,4 @@ Error generating stack: `+l.message+`
73
73
  * LICENSE.md file in the root directory of this source tree.
74
74
  *
75
75
  * @license MIT
76
- */const ig="6";try{window.__reactRouterVersion=ig}catch{}const ug="startTransition",Bd=dp[ug];function sg(s){let{basename:i,children:c,future:r,window:o}=s,m=N.useRef();m.current==null&&(m.current=mp({window:o,v5Compat:!0}));let g=m.current,[E,p]=N.useState({action:g.action,location:g.location}),{v7_startTransition:S}=r||{},R=N.useCallback(C=>{S&&Bd?Bd(()=>p(C)):p(C)},[p,S]);return N.useLayoutEffect(()=>g.listen(R),[g,R]),N.useEffect(()=>ng(r),[r]),N.createElement(lg,{basename:i,children:c,location:E.location,navigationType:E.action,navigator:g,future:r})}var wd;(function(s){s.UseScrollRestoration="useScrollRestoration",s.UseSubmit="useSubmit",s.UseSubmitFetcher="useSubmitFetcher",s.UseFetcher="useFetcher",s.useViewTransitionState="useViewTransitionState"})(wd||(wd={}));var Ld;(function(s){s.UseFetcher="useFetcher",s.UseFetchers="useFetchers",s.UseScrollRestoration="useScrollRestoration"})(Ld||(Ld={}));const $e=Object.create(null);$e.open="0";$e.close="1";$e.ping="2";$e.pong="3";$e.message="4";$e.upgrade="5";$e.noop="6";const vu=Object.create(null);Object.keys($e).forEach(s=>{vu[$e[s]]=s});const Pc={type:"error",data:"parser error"},mm=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",ym=typeof ArrayBuffer=="function",vm=s=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(s):s&&s.buffer instanceof ArrayBuffer,hr=({type:s,data:i},c,r)=>mm&&i instanceof Blob?c?r(i):Hd(i,r):ym&&(i instanceof ArrayBuffer||vm(i))?c?r(i):Hd(new Blob([i]),r):r($e[s]+(i||"")),Hd=(s,i)=>{const c=new FileReader;return c.onload=function(){const r=c.result.split(",")[1];i("b"+(r||""))},c.readAsDataURL(s)};function qd(s){return s instanceof Uint8Array?s:s instanceof ArrayBuffer?new Uint8Array(s):new Uint8Array(s.buffer,s.byteOffset,s.byteLength)}let Kc;function cg(s,i){if(mm&&s.data instanceof Blob)return s.data.arrayBuffer().then(qd).then(i);if(ym&&(s.data instanceof ArrayBuffer||vm(s.data)))return i(qd(s.data));hr(s,!1,c=>{Kc||(Kc=new TextEncoder),i(Kc.encode(c))})}const Yd="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ka=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let s=0;s<Yd.length;s++)ka[Yd.charCodeAt(s)]=s;const rg=s=>{let i=s.length*.75,c=s.length,r,o=0,m,g,E,p;s[s.length-1]==="="&&(i--,s[s.length-2]==="="&&i--);const S=new ArrayBuffer(i),R=new Uint8Array(S);for(r=0;r<c;r+=4)m=ka[s.charCodeAt(r)],g=ka[s.charCodeAt(r+1)],E=ka[s.charCodeAt(r+2)],p=ka[s.charCodeAt(r+3)],R[o++]=m<<2|g>>4,R[o++]=(g&15)<<4|E>>2,R[o++]=(E&3)<<6|p&63;return S},fg=typeof ArrayBuffer=="function",dr=(s,i)=>{if(typeof s!="string")return{type:"message",data:pm(s,i)};const c=s.charAt(0);return c==="b"?{type:"message",data:og(s.substring(1),i)}:vu[c]?s.length>1?{type:vu[c],data:s.substring(1)}:{type:vu[c]}:Pc},og=(s,i)=>{if(fg){const c=rg(s);return pm(c,i)}else return{base64:!0,data:s}},pm=(s,i)=>{switch(i){case"blob":return s instanceof Blob?s:new Blob([s]);case"arraybuffer":default:return s instanceof ArrayBuffer?s:s.buffer}},gm="",hg=(s,i)=>{const c=s.length,r=new Array(c);let o=0;s.forEach((m,g)=>{hr(m,!1,E=>{r[g]=E,++o===c&&i(r.join(gm))})})},dg=(s,i)=>{const c=s.split(gm),r=[];for(let o=0;o<c.length;o++){const m=dr(c[o],i);if(r.push(m),m.type==="error")break}return r};function mg(){return new TransformStream({transform(s,i){cg(s,c=>{const r=c.length;let o;if(r<126)o=new Uint8Array(1),new DataView(o.buffer).setUint8(0,r);else if(r<65536){o=new Uint8Array(3);const m=new DataView(o.buffer);m.setUint8(0,126),m.setUint16(1,r)}else{o=new Uint8Array(9);const m=new DataView(o.buffer);m.setUint8(0,127),m.setBigUint64(1,BigInt(r))}s.data&&typeof s.data!="string"&&(o[0]|=128),i.enqueue(o),i.enqueue(c)})}})}let Jc;function du(s){return s.reduce((i,c)=>i+c.length,0)}function mu(s,i){if(s[0].length===i)return s.shift();const c=new Uint8Array(i);let r=0;for(let o=0;o<i;o++)c[o]=s[0][r++],r===s[0].length&&(s.shift(),r=0);return s.length&&r<s[0].length&&(s[0]=s[0].slice(r)),c}function yg(s,i){Jc||(Jc=new TextDecoder);const c=[];let r=0,o=-1,m=!1;return new TransformStream({transform(g,E){for(c.push(g);;){if(r===0){if(du(c)<1)break;const p=mu(c,1);m=(p[0]&128)===128,o=p[0]&127,o<126?r=3:o===126?r=1:r=2}else if(r===1){if(du(c)<2)break;const p=mu(c,2);o=new DataView(p.buffer,p.byteOffset,p.length).getUint16(0),r=3}else if(r===2){if(du(c)<8)break;const p=mu(c,8),S=new DataView(p.buffer,p.byteOffset,p.length),R=S.getUint32(0);if(R>Math.pow(2,21)-1){E.enqueue(Pc);break}o=R*Math.pow(2,32)+S.getUint32(4),r=3}else{if(du(c)<o)break;const p=mu(c,o);E.enqueue(dr(m?p:Jc.decode(p),i)),r=0}if(o===0||o>s){E.enqueue(Pc);break}}}})}const bm=4;function Zt(s){if(s)return vg(s)}function vg(s){for(var i in Zt.prototype)s[i]=Zt.prototype[i];return s}Zt.prototype.on=Zt.prototype.addEventListener=function(s,i){return this._callbacks=this._callbacks||{},(this._callbacks["$"+s]=this._callbacks["$"+s]||[]).push(i),this};Zt.prototype.once=function(s,i){function c(){this.off(s,c),i.apply(this,arguments)}return c.fn=i,this.on(s,c),this};Zt.prototype.off=Zt.prototype.removeListener=Zt.prototype.removeAllListeners=Zt.prototype.removeEventListener=function(s,i){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var c=this._callbacks["$"+s];if(!c)return this;if(arguments.length==1)return delete this._callbacks["$"+s],this;for(var r,o=0;o<c.length;o++)if(r=c[o],r===i||r.fn===i){c.splice(o,1);break}return c.length===0&&delete this._callbacks["$"+s],this};Zt.prototype.emit=function(s){this._callbacks=this._callbacks||{};for(var i=new Array(arguments.length-1),c=this._callbacks["$"+s],r=1;r<arguments.length;r++)i[r-1]=arguments[r];if(c){c=c.slice(0);for(var r=0,o=c.length;r<o;++r)c[r].apply(this,i)}return this};Zt.prototype.emitReserved=Zt.prototype.emit;Zt.prototype.listeners=function(s){return this._callbacks=this._callbacks||{},this._callbacks["$"+s]||[]};Zt.prototype.hasListeners=function(s){return!!this.listeners(s).length};const Eu=typeof Promise=="function"&&typeof Promise.resolve=="function"?i=>Promise.resolve().then(i):(i,c)=>c(i,0),Le=typeof self<"u"?self:typeof window<"u"?window:Function("return this")(),pg="arraybuffer";function Sm(s,...i){return i.reduce((c,r)=>(s.hasOwnProperty(r)&&(c[r]=s[r]),c),{})}const gg=Le.setTimeout,bg=Le.clearTimeout;function Tu(s,i){i.useNativeTimers?(s.setTimeoutFn=gg.bind(Le),s.clearTimeoutFn=bg.bind(Le)):(s.setTimeoutFn=Le.setTimeout.bind(Le),s.clearTimeoutFn=Le.clearTimeout.bind(Le))}const Sg=1.33;function _g(s){return typeof s=="string"?Eg(s):Math.ceil((s.byteLength||s.size)*Sg)}function Eg(s){let i=0,c=0;for(let r=0,o=s.length;r<o;r++)i=s.charCodeAt(r),i<128?c+=1:i<2048?c+=2:i<55296||i>=57344?c+=3:(r++,c+=4);return c}function _m(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function Tg(s){let i="";for(let c in s)s.hasOwnProperty(c)&&(i.length&&(i+="&"),i+=encodeURIComponent(c)+"="+encodeURIComponent(s[c]));return i}function xg(s){let i={},c=s.split("&");for(let r=0,o=c.length;r<o;r++){let m=c[r].split("=");i[decodeURIComponent(m[0])]=decodeURIComponent(m[1])}return i}class Ag extends Error{constructor(i,c,r){super(i),this.description=c,this.context=r,this.type="TransportError"}}class mr extends Zt{constructor(i){super(),this.writable=!1,Tu(this,i),this.opts=i,this.query=i.query,this.socket=i.socket,this.supportsBinary=!i.forceBase64}onError(i,c,r){return super.emitReserved("error",new Ag(i,c,r)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return(this.readyState==="opening"||this.readyState==="open")&&(this.doClose(),this.onClose()),this}send(i){this.readyState==="open"&&this.write(i)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(i){const c=dr(i,this.socket.binaryType);this.onPacket(c)}onPacket(i){super.emitReserved("packet",i)}onClose(i){this.readyState="closed",super.emitReserved("close",i)}pause(i){}createUri(i,c={}){return i+"://"+this._hostname()+this._port()+this.opts.path+this._query(c)}_hostname(){const i=this.opts.hostname;return i.indexOf(":")===-1?i:"["+i+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(this.opts.port)!==443||!this.opts.secure&&Number(this.opts.port)!==80)?":"+this.opts.port:""}_query(i){const c=Tg(i);return c.length?"?"+c:""}}class Cg extends mr{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(i){this.readyState="pausing";const c=()=>{this.readyState="paused",i()};if(this._polling||!this.writable){let r=0;this._polling&&(r++,this.once("pollComplete",function(){--r||c()})),this.writable||(r++,this.once("drain",function(){--r||c()}))}else c()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(i){const c=r=>{if(this.readyState==="opening"&&r.type==="open"&&this.onOpen(),r.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(r)};dg(i,this.socket.binaryType).forEach(c),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this._poll())}doClose(){const i=()=>{this.write([{type:"close"}])};this.readyState==="open"?i():this.once("open",i)}write(i){this.writable=!1,hg(i,c=>{this.doWrite(c,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const i=this.opts.secure?"https":"http",c=this.query||{};return this.opts.timestampRequests!==!1&&(c[this.opts.timestampParam]=_m()),!this.supportsBinary&&!c.sid&&(c.b64=1),this.createUri(i,c)}}let Em=!1;try{Em=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}const Ng=Em;function Og(){}class zg extends Cg{constructor(i){if(super(i),typeof location<"u"){const c=location.protocol==="https:";let r=location.port;r||(r=c?"443":"80"),this.xd=typeof location<"u"&&i.hostname!==location.hostname||r!==i.port}}doWrite(i,c){const r=this.request({method:"POST",data:i});r.on("success",c),r.on("error",(o,m)=>{this.onError("xhr post error",o,m)})}doPoll(){const i=this.request();i.on("data",this.onData.bind(this)),i.on("error",(c,r)=>{this.onError("xhr poll error",c,r)}),this.pollXhr=i}}class Je extends Zt{constructor(i,c,r){super(),this.createRequest=i,Tu(this,r),this._opts=r,this._method=r.method||"GET",this._uri=c,this._data=r.data!==void 0?r.data:null,this._create()}_create(){var i;const c=Sm(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");c.xdomain=!!this._opts.xd;const r=this._xhr=this.createRequest(c);try{r.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let o in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(o)&&r.setRequestHeader(o,this._opts.extraHeaders[o])}}catch{}if(this._method==="POST")try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{r.setRequestHeader("Accept","*/*")}catch{}(i=this._opts.cookieJar)===null||i===void 0||i.addCookies(r),"withCredentials"in r&&(r.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(r.timeout=this._opts.requestTimeout),r.onreadystatechange=()=>{var o;r.readyState===3&&((o=this._opts.cookieJar)===null||o===void 0||o.parseCookies(r.getResponseHeader("set-cookie"))),r.readyState===4&&(r.status===200||r.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof r.status=="number"?r.status:0)},0))},r.send(this._data)}catch(o){this.setTimeoutFn(()=>{this._onError(o)},0);return}typeof document<"u"&&(this._index=Je.requestsCount++,Je.requests[this._index]=this)}_onError(i){this.emitReserved("error",i,this._xhr),this._cleanup(!0)}_cleanup(i){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=Og,i)try{this._xhr.abort()}catch{}typeof document<"u"&&delete Je.requests[this._index],this._xhr=null}}_onLoad(){const i=this._xhr.responseText;i!==null&&(this.emitReserved("data",i),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}}Je.requestsCount=0;Je.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",Gd);else if(typeof addEventListener=="function"){const s="onpagehide"in Le?"pagehide":"unload";addEventListener(s,Gd,!1)}}function Gd(){for(let s in Je.requests)Je.requests.hasOwnProperty(s)&&Je.requests[s].abort()}const Mg=(function(){const s=Tm({xdomain:!1});return s&&s.responseType!==null})();class Rg extends zg{constructor(i){super(i);const c=i&&i.forceBase64;this.supportsBinary=Mg&&!c}request(i={}){return Object.assign(i,{xd:this.xd},this.opts),new Je(Tm,this.uri(),i)}}function Tm(s){const i=s.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!i||Ng))return new XMLHttpRequest}catch{}if(!i)try{return new Le[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}const xm=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class jg extends mr{get name(){return"websocket"}doOpen(){const i=this.uri(),c=this.opts.protocols,r=xm?{}:Sm(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(i,c,r)}catch(o){return this.emitReserved("error",o)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=i=>this.onClose({description:"websocket connection closed",context:i}),this.ws.onmessage=i=>this.onData(i.data),this.ws.onerror=i=>this.onError("websocket error",i)}write(i){this.writable=!1;for(let c=0;c<i.length;c++){const r=i[c],o=c===i.length-1;hr(r,this.supportsBinary,m=>{try{this.doWrite(r,m)}catch{}o&&Eu(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const i=this.opts.secure?"wss":"ws",c=this.query||{};return this.opts.timestampRequests&&(c[this.opts.timestampParam]=_m()),this.supportsBinary||(c.b64=1),this.createUri(i,c)}}const $c=Le.WebSocket||Le.MozWebSocket;class Dg extends jg{createSocket(i,c,r){return xm?new $c(i,c,r):c?new $c(i,c):new $c(i)}doWrite(i,c){this.ws.send(c)}}class Ug extends mr{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(i){return this.emitReserved("error",i)}this._transport.closed.then(()=>{this.onClose()}).catch(i=>{this.onError("webtransport error",i)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(i=>{const c=yg(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=i.readable.pipeThrough(c).getReader(),o=mg();o.readable.pipeTo(i.writable),this._writer=o.writable.getWriter();const m=()=>{r.read().then(({done:E,value:p})=>{E||(this.onPacket(p),m())}).catch(E=>{})};m();const g={type:"open"};this.query.sid&&(g.data=`{"sid":"${this.query.sid}"}`),this._writer.write(g).then(()=>this.onOpen())})})}write(i){this.writable=!1;for(let c=0;c<i.length;c++){const r=i[c],o=c===i.length-1;this._writer.write(r).then(()=>{o&&Eu(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var i;(i=this._transport)===null||i===void 0||i.close()}}const Bg={websocket:Dg,webtransport:Ug,polling:Rg},wg=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Lg=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function tr(s){if(s.length>8e3)throw"URI too long";const i=s,c=s.indexOf("["),r=s.indexOf("]");c!=-1&&r!=-1&&(s=s.substring(0,c)+s.substring(c,r).replace(/:/g,";")+s.substring(r,s.length));let o=wg.exec(s||""),m={},g=14;for(;g--;)m[Lg[g]]=o[g]||"";return c!=-1&&r!=-1&&(m.source=i,m.host=m.host.substring(1,m.host.length-1).replace(/;/g,":"),m.authority=m.authority.replace("[","").replace("]","").replace(/;/g,":"),m.ipv6uri=!0),m.pathNames=Hg(m,m.path),m.queryKey=qg(m,m.query),m}function Hg(s,i){const c=/\/{2,9}/g,r=i.replace(c,"/").split("/");return(i.slice(0,1)=="/"||i.length===0)&&r.splice(0,1),i.slice(-1)=="/"&&r.splice(r.length-1,1),r}function qg(s,i){const c={};return i.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(r,o,m){o&&(c[o]=m)}),c}const er=typeof addEventListener=="function"&&typeof removeEventListener=="function",pu=[];er&&addEventListener("offline",()=>{pu.forEach(s=>s())},!1);class Xn extends Zt{constructor(i,c){if(super(),this.binaryType=pg,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,i&&typeof i=="object"&&(c=i,i=null),i){const r=tr(i);c.hostname=r.host,c.secure=r.protocol==="https"||r.protocol==="wss",c.port=r.port,r.query&&(c.query=r.query)}else c.host&&(c.hostname=tr(c.host).host);Tu(this,c),this.secure=c.secure!=null?c.secure:typeof location<"u"&&location.protocol==="https:",c.hostname&&!c.port&&(c.port=this.secure?"443":"80"),this.hostname=c.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=c.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},c.transports.forEach(r=>{const o=r.prototype.name;this.transports.push(o),this._transportsByName[o]=r}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},c),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=xg(this.opts.query)),er&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},pu.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(i){const c=Object.assign({},this.opts.query);c.EIO=bm,c.transport=i,this.id&&(c.sid=this.id);const r=Object.assign({},this.opts,{query:c,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[i]);return new this._transportsByName[i](r)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}const i=this.opts.rememberUpgrade&&Xn.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";const c=this.createTransport(i);c.open(),this.setTransport(c)}setTransport(i){this.transport&&this.transport.removeAllListeners(),this.transport=i,i.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",c=>this._onClose("transport close",c))}onOpen(){this.readyState="open",Xn.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(i){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",i),this.emitReserved("heartbeat"),i.type){case"open":this.onHandshake(JSON.parse(i.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const c=new Error("server error");c.code=i.data,this._onError(c);break;case"message":this.emitReserved("data",i.data),this.emitReserved("message",i.data);break}}onHandshake(i){this.emitReserved("handshake",i),this.id=i.sid,this.transport.query.sid=i.sid,this._pingInterval=i.pingInterval,this._pingTimeout=i.pingTimeout,this._maxPayload=i.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const i=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+i,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},i),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const i=this._getWritablePackets();this.transport.send(i),this._prevBufferLen=i.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let c=1;for(let r=0;r<this.writeBuffer.length;r++){const o=this.writeBuffer[r].data;if(o&&(c+=_g(o)),r>0&&c>this._maxPayload)return this.writeBuffer.slice(0,r);c+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const i=Date.now()>this._pingTimeoutTime;return i&&(this._pingTimeoutTime=0,Eu(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),i}write(i,c,r){return this._sendPacket("message",i,c,r),this}send(i,c,r){return this._sendPacket("message",i,c,r),this}_sendPacket(i,c,r,o){if(typeof c=="function"&&(o=c,c=void 0),typeof r=="function"&&(o=r,r=null),this.readyState==="closing"||this.readyState==="closed")return;r=r||{},r.compress=r.compress!==!1;const m={type:i,data:c,options:r};this.emitReserved("packetCreate",m),this.writeBuffer.push(m),o&&this.once("flush",o),this.flush()}close(){const i=()=>{this._onClose("forced close"),this.transport.close()},c=()=>{this.off("upgrade",c),this.off("upgradeError",c),i()},r=()=>{this.once("upgrade",c),this.once("upgradeError",c)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?r():i()}):this.upgrading?r():i()),this}_onError(i){if(Xn.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return this.transports.shift(),this._open();this.emitReserved("error",i),this._onClose("transport error",i)}_onClose(i,c){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),er&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const r=pu.indexOf(this._offlineEventListener);r!==-1&&pu.splice(r,1)}this.readyState="closed",this.id=null,this.emitReserved("close",i,c),this.writeBuffer=[],this._prevBufferLen=0}}}Xn.protocol=bm;class Yg extends Xn{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade)for(let i=0;i<this._upgrades.length;i++)this._probe(this._upgrades[i])}_probe(i){let c=this.createTransport(i),r=!1;Xn.priorWebsocketSuccess=!1;const o=()=>{r||(c.send([{type:"ping",data:"probe"}]),c.once("packet",C=>{if(!r)if(C.type==="pong"&&C.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",c),!c)return;Xn.priorWebsocketSuccess=c.name==="websocket",this.transport.pause(()=>{r||this.readyState!=="closed"&&(R(),this.setTransport(c),c.send([{type:"upgrade"}]),this.emitReserved("upgrade",c),c=null,this.upgrading=!1,this.flush())})}else{const X=new Error("probe error");X.transport=c.name,this.emitReserved("upgradeError",X)}}))};function m(){r||(r=!0,R(),c.close(),c=null)}const g=C=>{const X=new Error("probe error: "+C);X.transport=c.name,m(),this.emitReserved("upgradeError",X)};function E(){g("transport closed")}function p(){g("socket closed")}function S(C){c&&C.name!==c.name&&m()}const R=()=>{c.removeListener("open",o),c.removeListener("error",g),c.removeListener("close",E),this.off("close",p),this.off("upgrading",S)};c.once("open",o),c.once("error",g),c.once("close",E),this.once("close",p),this.once("upgrading",S),this._upgrades.indexOf("webtransport")!==-1&&i!=="webtransport"?this.setTimeoutFn(()=>{r||c.open()},200):c.open()}onHandshake(i){this._upgrades=this._filterUpgrades(i.upgrades),super.onHandshake(i)}_filterUpgrades(i){const c=[];for(let r=0;r<i.length;r++)~this.transports.indexOf(i[r])&&c.push(i[r]);return c}}let Gg=class extends Yg{constructor(i,c={}){const r=typeof i=="object"?i:c;(!r.transports||r.transports&&typeof r.transports[0]=="string")&&(r.transports=(r.transports||["polling","websocket","webtransport"]).map(o=>Bg[o]).filter(o=>!!o)),super(i,r)}};function Xg(s,i="",c){let r=s;c=c||typeof location<"u"&&location,s==null&&(s=c.protocol+"//"+c.host),typeof s=="string"&&(s.charAt(0)==="/"&&(s.charAt(1)==="/"?s=c.protocol+s:s=c.host+s),/^(https?|wss?):\/\//.test(s)||(typeof c<"u"?s=c.protocol+"//"+s:s="https://"+s),r=tr(s)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";const m=r.host.indexOf(":")!==-1?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+m+":"+r.port+i,r.href=r.protocol+"://"+m+(c&&c.port===r.port?"":":"+r.port),r}const Qg=typeof ArrayBuffer=="function",Vg=s=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(s):s.buffer instanceof ArrayBuffer,Am=Object.prototype.toString,kg=typeof Blob=="function"||typeof Blob<"u"&&Am.call(Blob)==="[object BlobConstructor]",Zg=typeof File=="function"||typeof File<"u"&&Am.call(File)==="[object FileConstructor]";function yr(s){return Qg&&(s instanceof ArrayBuffer||Vg(s))||kg&&s instanceof Blob||Zg&&s instanceof File}function gu(s,i){if(!s||typeof s!="object")return!1;if(Array.isArray(s)){for(let c=0,r=s.length;c<r;c++)if(gu(s[c]))return!0;return!1}if(yr(s))return!0;if(s.toJSON&&typeof s.toJSON=="function"&&arguments.length===1)return gu(s.toJSON(),!0);for(const c in s)if(Object.prototype.hasOwnProperty.call(s,c)&&gu(s[c]))return!0;return!1}function Kg(s){const i=[],c=s.data,r=s;return r.data=nr(c,i),r.attachments=i.length,{packet:r,buffers:i}}function nr(s,i){if(!s)return s;if(yr(s)){const c={_placeholder:!0,num:i.length};return i.push(s),c}else if(Array.isArray(s)){const c=new Array(s.length);for(let r=0;r<s.length;r++)c[r]=nr(s[r],i);return c}else if(typeof s=="object"&&!(s instanceof Date)){const c={};for(const r in s)Object.prototype.hasOwnProperty.call(s,r)&&(c[r]=nr(s[r],i));return c}return s}function Jg(s,i){return s.data=lr(s.data,i),delete s.attachments,s}function lr(s,i){if(!s)return s;if(s&&s._placeholder===!0){if(typeof s.num=="number"&&s.num>=0&&s.num<i.length)return i[s.num];throw new Error("illegal attachments")}else if(Array.isArray(s))for(let c=0;c<s.length;c++)s[c]=lr(s[c],i);else if(typeof s=="object")for(const c in s)Object.prototype.hasOwnProperty.call(s,c)&&(s[c]=lr(s[c],i));return s}const $g=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var vt;(function(s){s[s.CONNECT=0]="CONNECT",s[s.DISCONNECT=1]="DISCONNECT",s[s.EVENT=2]="EVENT",s[s.ACK=3]="ACK",s[s.CONNECT_ERROR=4]="CONNECT_ERROR",s[s.BINARY_EVENT=5]="BINARY_EVENT",s[s.BINARY_ACK=6]="BINARY_ACK"})(vt||(vt={}));class Wg{constructor(i){this.replacer=i}encode(i){return(i.type===vt.EVENT||i.type===vt.ACK)&&gu(i)?this.encodeAsBinary({type:i.type===vt.EVENT?vt.BINARY_EVENT:vt.BINARY_ACK,nsp:i.nsp,data:i.data,id:i.id}):[this.encodeAsString(i)]}encodeAsString(i){let c=""+i.type;return(i.type===vt.BINARY_EVENT||i.type===vt.BINARY_ACK)&&(c+=i.attachments+"-"),i.nsp&&i.nsp!=="/"&&(c+=i.nsp+","),i.id!=null&&(c+=i.id),i.data!=null&&(c+=JSON.stringify(i.data,this.replacer)),c}encodeAsBinary(i){const c=Kg(i),r=this.encodeAsString(c.packet),o=c.buffers;return o.unshift(r),o}}class vr extends Zt{constructor(i){super(),this.opts=Object.assign({reviver:void 0,maxAttachments:10},typeof i=="function"?{reviver:i}:i)}add(i){let c;if(typeof i=="string"){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");c=this.decodeString(i);const r=c.type===vt.BINARY_EVENT;r||c.type===vt.BINARY_ACK?(c.type=r?vt.EVENT:vt.ACK,this.reconstructor=new Fg(c),c.attachments===0&&super.emitReserved("decoded",c)):super.emitReserved("decoded",c)}else if(yr(i)||i.base64)if(this.reconstructor)c=this.reconstructor.takeBinaryData(i),c&&(this.reconstructor=null,super.emitReserved("decoded",c));else throw new Error("got binary data when not reconstructing a packet");else throw new Error("Unknown type: "+i)}decodeString(i){let c=0;const r={type:Number(i.charAt(0))};if(vt[r.type]===void 0)throw new Error("unknown packet type "+r.type);if(r.type===vt.BINARY_EVENT||r.type===vt.BINARY_ACK){const m=c+1;for(;i.charAt(++c)!=="-"&&c!=i.length;);const g=i.substring(m,c);if(g!=Number(g)||i.charAt(c)!=="-")throw new Error("Illegal attachments");const E=Number(g);if(!Ig(E)||E<0)throw new Error("Illegal attachments");if(E>this.opts.maxAttachments)throw new Error("too many attachments");r.attachments=E}if(i.charAt(c+1)==="/"){const m=c+1;for(;++c&&!(i.charAt(c)===","||c===i.length););r.nsp=i.substring(m,c)}else r.nsp="/";const o=i.charAt(c+1);if(o!==""&&Number(o)==o){const m=c+1;for(;++c;){const g=i.charAt(c);if(g==null||Number(g)!=g){--c;break}if(c===i.length)break}r.id=Number(i.substring(m,c+1))}if(i.charAt(++c)){const m=this.tryParse(i.substr(c));if(vr.isPayloadValid(r.type,m))r.data=m;else throw new Error("invalid payload")}return r}tryParse(i){try{return JSON.parse(i,this.opts.reviver)}catch{return!1}}static isPayloadValid(i,c){switch(i){case vt.CONNECT:return Xd(c);case vt.DISCONNECT:return c===void 0;case vt.CONNECT_ERROR:return typeof c=="string"||Xd(c);case vt.EVENT:case vt.BINARY_EVENT:return Array.isArray(c)&&(typeof c[0]=="number"||typeof c[0]=="string"&&$g.indexOf(c[0])===-1);case vt.ACK:case vt.BINARY_ACK:return Array.isArray(c)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class Fg{constructor(i){this.packet=i,this.buffers=[],this.reconPack=i}takeBinaryData(i){if(this.buffers.push(i),this.buffers.length===this.reconPack.attachments){const c=Jg(this.reconPack,this.buffers);return this.finishedReconstruction(),c}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}const Ig=Number.isInteger||function(s){return typeof s=="number"&&isFinite(s)&&Math.floor(s)===s};function Xd(s){return Object.prototype.toString.call(s)==="[object Object]"}const Pg=Object.freeze(Object.defineProperty({__proto__:null,Decoder:vr,Encoder:Wg,get PacketType(){return vt}},Symbol.toStringTag,{value:"Module"}));function Xe(s,i,c){return s.on(i,c),function(){s.off(i,c)}}const t0=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Cm extends Zt{constructor(i,c,r){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=i,this.nsp=c,r&&r.auth&&(this.auth=r.auth),this._opts=Object.assign({},r),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const i=this.io;this.subs=[Xe(i,"open",this.onopen.bind(this)),Xe(i,"packet",this.onpacket.bind(this)),Xe(i,"error",this.onerror.bind(this)),Xe(i,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected?this:(this.subEvents(),this.io._reconnecting||this.io.open(),this.io._readyState==="open"&&this.onopen(),this)}open(){return this.connect()}send(...i){return i.unshift("message"),this.emit.apply(this,i),this}emit(i,...c){var r,o,m;if(t0.hasOwnProperty(i))throw new Error('"'+i.toString()+'" is a reserved event name');if(c.unshift(i),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(c),this;const g={type:vt.EVENT,data:c};if(g.options={},g.options.compress=this.flags.compress!==!1,typeof c[c.length-1]=="function"){const R=this.ids++,C=c.pop();this._registerAckCallback(R,C),g.id=R}const E=(o=(r=this.io.engine)===null||r===void 0?void 0:r.transport)===null||o===void 0?void 0:o.writable,p=this.connected&&!(!((m=this.io.engine)===null||m===void 0)&&m._hasPingExpired());return this.flags.volatile&&!E||(p?(this.notifyOutgoingListeners(g),this.packet(g)):this.sendBuffer.push(g)),this.flags={},this}_registerAckCallback(i,c){var r;const o=(r=this.flags.timeout)!==null&&r!==void 0?r:this._opts.ackTimeout;if(o===void 0){this.acks[i]=c;return}const m=this.io.setTimeoutFn(()=>{delete this.acks[i];for(let E=0;E<this.sendBuffer.length;E++)this.sendBuffer[E].id===i&&this.sendBuffer.splice(E,1);c.call(this,new Error("operation has timed out"))},o),g=(...E)=>{this.io.clearTimeoutFn(m),c.apply(this,E)};g.withError=!0,this.acks[i]=g}emitWithAck(i,...c){return new Promise((r,o)=>{const m=(g,E)=>g?o(g):r(E);m.withError=!0,c.push(m),this.emit(i,...c)})}_addToQueue(i){let c;typeof i[i.length-1]=="function"&&(c=i.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:i,flags:Object.assign({fromQueue:!0},this.flags)};i.push((o,...m)=>(this._queue[0],o!==null?r.tryCount>this._opts.retries&&(this._queue.shift(),c&&c(o)):(this._queue.shift(),c&&c(null,...m)),r.pending=!1,this._drainQueue())),this._queue.push(r),this._drainQueue()}_drainQueue(i=!1){if(!this.connected||this._queue.length===0)return;const c=this._queue[0];c.pending&&!i||(c.pending=!0,c.tryCount++,this.flags=c.flags,this.emit.apply(this,c.args))}packet(i){i.nsp=this.nsp,this.io._packet(i)}onopen(){typeof this.auth=="function"?this.auth(i=>{this._sendConnectPacket(i)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(i){this.packet({type:vt.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},i):i})}onerror(i){this.connected||this.emitReserved("connect_error",i)}onclose(i,c){this.connected=!1,delete this.id,this.emitReserved("disconnect",i,c),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(i=>{if(!this.sendBuffer.some(r=>String(r.id)===i)){const r=this.acks[i];delete this.acks[i],r.withError&&r.call(this,new Error("socket has been disconnected"))}})}onpacket(i){if(i.nsp===this.nsp)switch(i.type){case vt.CONNECT:i.data&&i.data.sid?this.onconnect(i.data.sid,i.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case vt.EVENT:case vt.BINARY_EVENT:this.onevent(i);break;case vt.ACK:case vt.BINARY_ACK:this.onack(i);break;case vt.DISCONNECT:this.ondisconnect();break;case vt.CONNECT_ERROR:this.destroy();const r=new Error(i.data.message);r.data=i.data.data,this.emitReserved("connect_error",r);break}}onevent(i){const c=i.data||[];i.id!=null&&c.push(this.ack(i.id)),this.connected?this.emitEvent(c):this.receiveBuffer.push(Object.freeze(c))}emitEvent(i){if(this._anyListeners&&this._anyListeners.length){const c=this._anyListeners.slice();for(const r of c)r.apply(this,i)}super.emit.apply(this,i),this._pid&&i.length&&typeof i[i.length-1]=="string"&&(this._lastOffset=i[i.length-1])}ack(i){const c=this;let r=!1;return function(...o){r||(r=!0,c.packet({type:vt.ACK,id:i,data:o}))}}onack(i){const c=this.acks[i.id];typeof c=="function"&&(delete this.acks[i.id],c.withError&&i.data.unshift(null),c.apply(this,i.data))}onconnect(i,c){this.id=i,this.recovered=c&&this._pid===c,this._pid=c,this.connected=!0,this.emitBuffered(),this._drainQueue(!0),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach(i=>this.emitEvent(i)),this.receiveBuffer=[],this.sendBuffer.forEach(i=>{this.notifyOutgoingListeners(i),this.packet(i)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(i=>i()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:vt.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(i){return this.flags.compress=i,this}get volatile(){return this.flags.volatile=!0,this}timeout(i){return this.flags.timeout=i,this}onAny(i){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(i),this}prependAny(i){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(i),this}offAny(i){if(!this._anyListeners)return this;if(i){const c=this._anyListeners;for(let r=0;r<c.length;r++)if(i===c[r])return c.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(i){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(i),this}prependAnyOutgoing(i){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(i),this}offAnyOutgoing(i){if(!this._anyOutgoingListeners)return this;if(i){const c=this._anyOutgoingListeners;for(let r=0;r<c.length;r++)if(i===c[r])return c.splice(r,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(i){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const c=this._anyOutgoingListeners.slice();for(const r of c)r.apply(this,i.data)}}}function $l(s){s=s||{},this.ms=s.min||100,this.max=s.max||1e4,this.factor=s.factor||2,this.jitter=s.jitter>0&&s.jitter<=1?s.jitter:0,this.attempts=0}$l.prototype.duration=function(){var s=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var i=Math.random(),c=Math.floor(i*this.jitter*s);s=(Math.floor(i*10)&1)==0?s-c:s+c}return Math.min(s,this.max)|0};$l.prototype.reset=function(){this.attempts=0};$l.prototype.setMin=function(s){this.ms=s};$l.prototype.setMax=function(s){this.max=s};$l.prototype.setJitter=function(s){this.jitter=s};class ar extends Zt{constructor(i,c){var r;super(),this.nsps={},this.subs=[],i&&typeof i=="object"&&(c=i,i=void 0),c=c||{},c.path=c.path||"/socket.io",this.opts=c,Tu(this,c),this.reconnection(c.reconnection!==!1),this.reconnectionAttempts(c.reconnectionAttempts||1/0),this.reconnectionDelay(c.reconnectionDelay||1e3),this.reconnectionDelayMax(c.reconnectionDelayMax||5e3),this.randomizationFactor((r=c.randomizationFactor)!==null&&r!==void 0?r:.5),this.backoff=new $l({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(c.timeout==null?2e4:c.timeout),this._readyState="closed",this.uri=i;const o=c.parser||Pg;this.encoder=new o.Encoder,this.decoder=new o.Decoder,this._autoConnect=c.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(i){return arguments.length?(this._reconnection=!!i,i||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(i){return i===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=i,this)}reconnectionDelay(i){var c;return i===void 0?this._reconnectionDelay:(this._reconnectionDelay=i,(c=this.backoff)===null||c===void 0||c.setMin(i),this)}randomizationFactor(i){var c;return i===void 0?this._randomizationFactor:(this._randomizationFactor=i,(c=this.backoff)===null||c===void 0||c.setJitter(i),this)}reconnectionDelayMax(i){var c;return i===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=i,(c=this.backoff)===null||c===void 0||c.setMax(i),this)}timeout(i){return arguments.length?(this._timeout=i,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(i){if(~this._readyState.indexOf("open"))return this;this.engine=new Gg(this.uri,this.opts);const c=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const o=Xe(c,"open",function(){r.onopen(),i&&i()}),m=E=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",E),i?i(E):this.maybeReconnectOnOpen()},g=Xe(c,"error",m);if(this._timeout!==!1){const E=this._timeout,p=this.setTimeoutFn(()=>{o(),m(new Error("timeout")),c.close()},E);this.opts.autoUnref&&p.unref(),this.subs.push(()=>{this.clearTimeoutFn(p)})}return this.subs.push(o),this.subs.push(g),this}connect(i){return this.open(i)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const i=this.engine;this.subs.push(Xe(i,"ping",this.onping.bind(this)),Xe(i,"data",this.ondata.bind(this)),Xe(i,"error",this.onerror.bind(this)),Xe(i,"close",this.onclose.bind(this)),Xe(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(i){try{this.decoder.add(i)}catch(c){this.onclose("parse error",c)}}ondecoded(i){Eu(()=>{this.emitReserved("packet",i)},this.setTimeoutFn)}onerror(i){this.emitReserved("error",i)}socket(i,c){let r=this.nsps[i];return r?this._autoConnect&&!r.active&&r.connect():(r=new Cm(this,i,c),this.nsps[i]=r),r}_destroy(i){const c=Object.keys(this.nsps);for(const r of c)if(this.nsps[r].active)return;this._close()}_packet(i){const c=this.encoder.encode(i);for(let r=0;r<c.length;r++)this.engine.write(c[r],i.options)}cleanup(){this.subs.forEach(i=>i()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(i,c){var r;this.cleanup(),(r=this.engine)===null||r===void 0||r.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",i,c),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const i=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const c=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn(()=>{i.skipReconnect||(this.emitReserved("reconnect_attempt",i.backoff.attempts),!i.skipReconnect&&i.open(o=>{o?(i._reconnecting=!1,i.reconnect(),this.emitReserved("reconnect_error",o)):i.onreconnect()}))},c);this.opts.autoUnref&&r.unref(),this.subs.push(()=>{this.clearTimeoutFn(r)})}}onreconnect(){const i=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",i)}}const Va={};function bu(s,i){typeof s=="object"&&(i=s,s=void 0),i=i||{};const c=Xg(s,i.path||"/socket.io"),r=c.source,o=c.id,m=c.path,g=Va[o]&&m in Va[o].nsps,E=i.forceNew||i["force new connection"]||i.multiplex===!1||g;let p;return E?p=new ar(r,i):(Va[o]||(Va[o]=new ar(r,i)),p=Va[o]),c.query&&!i.query&&(i.query=c.queryKey),p.socket(c.path,i)}Object.assign(bu,{Manager:ar,Socket:Cm,io:bu,connect:bu});var Su={exports:{}},e0=Su.exports,Qd;function n0(){return Qd||(Qd=1,(function(s,i){(function(c,r){s.exports=r()})(e0,(function(){var c=1e3,r=6e4,o=36e5,m="millisecond",g="second",E="minute",p="hour",S="day",R="week",C="month",X="quarter",F="year",U="date",q="Invalid Date",V=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,et=/\[([^\]]+)]|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,$={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(P){var Q=["th","st","nd","rd"],_=P%100;return"["+P+(Q[(_-20)%10]||Q[_]||Q[0])+"]"}},lt=function(P,Q,_){var j=String(P);return!j||j.length>=Q?P:""+Array(Q+1-j.length).join(_)+P},pt={s:lt,z:function(P){var Q=-P.utcOffset(),_=Math.abs(Q),j=Math.floor(_/60),w=_%60;return(Q<=0?"+":"-")+lt(j,2,"0")+":"+lt(w,2,"0")},m:function P(Q,_){if(Q.date()<_.date())return-P(_,Q);var j=12*(_.year()-Q.year())+(_.month()-Q.month()),w=Q.clone().add(j,C),k=_-w<0,Z=Q.clone().add(j+(k?-1:1),C);return+(-(j+(_-w)/(k?w-Z:Z-w))||0)},a:function(P){return P<0?Math.ceil(P)||0:Math.floor(P)},p:function(P){return{M:C,y:F,w:R,d:S,D:U,h:p,m:E,s:g,ms:m,Q:X}[P]||String(P||"").toLowerCase().replace(/s$/,"")},u:function(P){return P===void 0}},Ct="en",gt={};gt[Ct]=$;var at="$isDayjsObject",Gt=function(P){return P instanceof Ht||!(!P||!P[at])},It=function P(Q,_,j){var w;if(!Q)return Ct;if(typeof Q=="string"){var k=Q.toLowerCase();gt[k]&&(w=k),_&&(gt[k]=_,w=k);var Z=Q.split("-");if(!w&&Z.length>1)return P(Z[0])}else{var v=Q.name;gt[v]=Q,w=v}return!j&&w&&(Ct=w),w||!j&&Ct},bt=function(P,Q){if(Gt(P))return P.clone();var _=typeof Q=="object"?Q:{};return _.date=P,_.args=arguments,new Ht(_)},st=pt;st.l=It,st.i=Gt,st.w=function(P,Q){return bt(P,{locale:Q.$L,utc:Q.$u,x:Q.$x,$offset:Q.$offset})};var Ht=(function(){function P(_){this.$L=It(_.locale,null,!0),this.parse(_),this.$x=this.$x||_.x||{},this[at]=!0}var Q=P.prototype;return Q.parse=function(_){this.$d=(function(j){var w=j.date,k=j.utc;if(w===null)return new Date(NaN);if(st.u(w))return new Date;if(w instanceof Date)return new Date(w);if(typeof w=="string"&&!/Z$/i.test(w)){var Z=w.match(V);if(Z){var v=Z[2]-1||0,M=(Z[7]||"0").substring(0,3);return k?new Date(Date.UTC(Z[1],v,Z[3]||1,Z[4]||0,Z[5]||0,Z[6]||0,M)):new Date(Z[1],v,Z[3]||1,Z[4]||0,Z[5]||0,Z[6]||0,M)}}return new Date(w)})(_),this.init()},Q.init=function(){var _=this.$d;this.$y=_.getFullYear(),this.$M=_.getMonth(),this.$D=_.getDate(),this.$W=_.getDay(),this.$H=_.getHours(),this.$m=_.getMinutes(),this.$s=_.getSeconds(),this.$ms=_.getMilliseconds()},Q.$utils=function(){return st},Q.isValid=function(){return this.$d.toString()!==q},Q.isSame=function(_,j){var w=bt(_);return this.startOf(j)<=w&&w<=this.endOf(j)},Q.isAfter=function(_,j){return bt(_)<this.startOf(j)},Q.isBefore=function(_,j){return this.endOf(j)<bt(_)},Q.$g=function(_,j,w){return st.u(_)?this[j]:this.set(w,_)},Q.unix=function(){return Math.floor(this.valueOf()/1e3)},Q.valueOf=function(){return this.$d.getTime()},Q.startOf=function(_,j){var w=this,k=!!st.u(j)||j,Z=st.p(_),v=function(H,K){var Rt=st.w(w.$u?Date.UTC(w.$y,K,H):new Date(w.$y,K,H),w);return k?Rt:Rt.endOf(S)},M=function(H,K){return st.w(w.toDate()[H].apply(w.toDate("s"),(k?[0,0,0,0]:[23,59,59,999]).slice(K)),w)},Y=this.$W,G=this.$M,I=this.$D,it="set"+(this.$u?"UTC":"");switch(Z){case F:return k?v(1,0):v(31,11);case C:return k?v(1,G):v(0,G+1);case R:var ft=this.$locale().weekStart||0,Bt=(Y<ft?Y+7:Y)-ft;return v(k?I-Bt:I+(6-Bt),G);case S:case U:return M(it+"Hours",0);case p:return M(it+"Minutes",1);case E:return M(it+"Seconds",2);case g:return M(it+"Milliseconds",3);default:return this.clone()}},Q.endOf=function(_){return this.startOf(_,!1)},Q.$set=function(_,j){var w,k=st.p(_),Z="set"+(this.$u?"UTC":""),v=(w={},w[S]=Z+"Date",w[U]=Z+"Date",w[C]=Z+"Month",w[F]=Z+"FullYear",w[p]=Z+"Hours",w[E]=Z+"Minutes",w[g]=Z+"Seconds",w[m]=Z+"Milliseconds",w)[k],M=k===S?this.$D+(j-this.$W):j;if(k===C||k===F){var Y=this.clone().set(U,1);Y.$d[v](M),Y.init(),this.$d=Y.set(U,Math.min(this.$D,Y.daysInMonth())).$d}else v&&this.$d[v](M);return this.init(),this},Q.set=function(_,j){return this.clone().$set(_,j)},Q.get=function(_){return this[st.p(_)]()},Q.add=function(_,j){var w,k=this;_=Number(_);var Z=st.p(j),v=function(G){var I=bt(k);return st.w(I.date(I.date()+Math.round(G*_)),k)};if(Z===C)return this.set(C,this.$M+_);if(Z===F)return this.set(F,this.$y+_);if(Z===S)return v(1);if(Z===R)return v(7);var M=(w={},w[E]=r,w[p]=o,w[g]=c,w)[Z]||1,Y=this.$d.getTime()+_*M;return st.w(Y,this)},Q.subtract=function(_,j){return this.add(-1*_,j)},Q.format=function(_){var j=this,w=this.$locale();if(!this.isValid())return w.invalidDate||q;var k=_||"YYYY-MM-DDTHH:mm:ssZ",Z=st.z(this),v=this.$H,M=this.$m,Y=this.$M,G=w.weekdays,I=w.months,it=w.meridiem,ft=function(K,Rt,ae,Qe){return K&&(K[Rt]||K(j,k))||ae[Rt].slice(0,Qe)},Bt=function(K){return st.s(v%12||12,K,"0")},H=it||function(K,Rt,ae){var Qe=K<12?"AM":"PM";return ae?Qe.toLowerCase():Qe};return k.replace(et,(function(K,Rt){return Rt||(function(ae){switch(ae){case"YY":return String(j.$y).slice(-2);case"YYYY":return st.s(j.$y,4,"0");case"M":return Y+1;case"MM":return st.s(Y+1,2,"0");case"MMM":return ft(w.monthsShort,Y,I,3);case"MMMM":return ft(I,Y);case"D":return j.$D;case"DD":return st.s(j.$D,2,"0");case"d":return String(j.$W);case"dd":return ft(w.weekdaysMin,j.$W,G,2);case"ddd":return ft(w.weekdaysShort,j.$W,G,3);case"dddd":return G[j.$W];case"H":return String(v);case"HH":return st.s(v,2,"0");case"h":return Bt(1);case"hh":return Bt(2);case"a":return H(v,M,!0);case"A":return H(v,M,!1);case"m":return String(M);case"mm":return st.s(M,2,"0");case"s":return String(j.$s);case"ss":return st.s(j.$s,2,"0");case"SSS":return st.s(j.$ms,3,"0");case"Z":return Z}return null})(K)||Z.replace(":","")}))},Q.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},Q.diff=function(_,j,w){var k,Z=this,v=st.p(j),M=bt(_),Y=(M.utcOffset()-this.utcOffset())*r,G=this-M,I=function(){return st.m(Z,M)};switch(v){case F:k=I()/12;break;case C:k=I();break;case X:k=I()/3;break;case R:k=(G-Y)/6048e5;break;case S:k=(G-Y)/864e5;break;case p:k=G/o;break;case E:k=G/r;break;case g:k=G/c;break;default:k=G}return w?k:st.a(k)},Q.daysInMonth=function(){return this.endOf(C).$D},Q.$locale=function(){return gt[this.$L]},Q.locale=function(_,j){if(!_)return this.$L;var w=this.clone(),k=It(_,j,!0);return k&&(w.$L=k),w},Q.clone=function(){return st.w(this.$d,this)},Q.toDate=function(){return new Date(this.valueOf())},Q.toJSON=function(){return this.isValid()?this.toISOString():null},Q.toISOString=function(){return this.$d.toISOString()},Q.toString=function(){return this.$d.toUTCString()},P})(),me=Ht.prototype;return bt.prototype=me,[["$ms",m],["$s",g],["$m",E],["$H",p],["$W",S],["$M",C],["$y",F],["$D",U]].forEach((function(P){me[P[1]]=function(Q){return this.$g(Q,P[0],P[1])}})),bt.extend=function(P,Q){return P.$i||(P(Q,Ht,bt),P.$i=!0),bt},bt.locale=It,bt.isDayjs=Gt,bt.unix=function(P){return bt(1e3*P)},bt.en=gt[Ct],bt.Ls=gt,bt.p={},bt}))})(Su)),Su.exports}var l0=n0();const a0=ur(l0);let Nm="/api";Nm="/api";async function Ft(s,i){const c=localStorage.getItem("token"),r={"Content-Type":"application/json",...c?{"user-token":c}:{},...(i==null?void 0:i.headers)||{}},m=await(await fetch(`${Nm}${s}`,{...i,headers:r})).json();return m!=null&&m.success?m:Promise.reject(m)}async function i0(s,i){return Ft("/login",{method:"POST",body:JSON.stringify({username:s,password:i})})}async function u0(s,i,c){return Ft("/register",{method:"POST",body:JSON.stringify({username:s,password:i,inviteCode:c})})}async function s0(s,i=["."],c="",r=void 0){return Ft("/addTask",{method:"POST",body:JSON.stringify({branch:s,packagePaths:i,commit:c,notify:r})})}async function Vd(){return Ft("/getAllPackage")}async function c0(){return Ft("/refreshPackages")}async function r0(){return Ft("/getAllLog")}async function f0(){return Ft("/getAllBackup")}async function kd(s){return Ft("/cancelTask",{method:"POST",body:JSON.stringify({taskId:s})})}async function o0(s){return Ft("/restore",{method:"POST",body:JSON.stringify({fileName:s})})}async function h0(){return Ft("/getAllCommand")}async function d0(){return Ft("/getNoticeList")}async function m0(s,i){return Ft("/manualTriggerNotice",{method:"POST",body:JSON.stringify({httpsOrigin:s,branch:i})})}async function y0(s){return Ft("/getUserInfo")}async function Om(){return Ft("/getAllUsers")}async function v0(s,i){return Ft("/updateUserRole",{method:"POST",body:JSON.stringify({userId:s,newRole:i})})}async function zm(){return Ft("/inviteCodes")}async function p0(){return Ft("/generateInviteCode",{method:"POST"})}async function Zd(){return Ft("/getPendingTasks")}const g0=(s=+Date.now())=>a0(s).format("YYYY-MM-DD HH:mm:ss");function b0(){const s=N.useRef(null),i=N.useRef(""),c=N.useRef(""),r=N.useRef(""),[o,m]=N.useState([]),[g,E]=N.useState([]),[p,S]=N.useState([]),[R,C]=N.useState([]);N.useEffect(()=>{const U=localStorage.getItem("token")||"";i.current=localStorage.getItem("userId")||"";const q=bu({path:"/ws/",auth:{token:U,lastChatId:c.current,lastBuildId:r.current},reconnectionDelayMax:1e4});s.current=q,q.on("connect_error",$=>{$.message==="invalid token"&&(localStorage.removeItem("token"),localStorage.removeItem("userId"),window.location.href="/login")}),q.on("on:msg-getAllChat",$=>{m(lt=>{const pt=new Set(lt.map(at=>at.id)),Ct=$.filter(at=>!pt.has(at.id)),gt=[...lt,...Ct];return gt.length&&(c.current=gt[gt.length-1].id),gt})}),q.on("on:msg-getAllBuild",$=>{E(lt=>{const pt=new Set(lt.map(at=>at.id)),Ct=$.filter(at=>!pt.has(at.id)),gt=[...lt,...Ct];return gt.length&&(r.current=gt[gt.length-1].id),gt})}),q.on("on:msg-chat",$=>{m(lt=>[...lt,$]),c.current=$.id}),q.on("on:msg-build",$=>{E(lt=>{const pt=lt.find(Ct=>Ct.taskId===$.taskId);return pt?(pt.msg=pt.msg+$.msg,pt.task=$.task,[...lt]):[...lt,$]}),r.current=$.id}),q.io.on("reconnect",()=>{q.auth={...q.auth,lastChatId:c.current,lastBuildId:r.current}});const V=()=>{Zd().then($=>C($.list||[])).catch(()=>{})};q.on("on:pending-tasks-update",V),Zd().then($=>C($.list||[])).catch(()=>{}),h0().then($=>S($.list||[])).catch(()=>{});const et=setInterval(V,1e4);return()=>{q.disconnect(),clearInterval(et)}},[]);const X=N.useCallback(U=>{var q;!((q=s.current)!=null&&q.id)||!U||s.current.emit("on:msg-chat",{ctxType:"ctx:txt",msg:U})},[]),F=N.useCallback(U=>{var V;if(!((V=s.current)!=null&&V.id)||!U.length)return;const q=Array.from(U).map(et=>({file:et,name:et.name,size:et.size,type:et.type}));s.current.emit("on:msg-chat",{ctxType:"ctx:imgs",files:q})},[]);return{chatMessages:o,buildMessages:g,commandList:p,pendingTasks:R,sendMessage:X,sendImages:F,userIdRef:i,formatTime:g0}}function Kd(s){const i=N.useRef(null),c=N.useRef(!0),r=(o=!1)=>{i.current&&(c.current||o)&&setTimeout(()=>{var m;(m=i.current)==null||m.scrollTo({top:i.current.scrollHeight,behavior:"smooth"})},50)};return N.useEffect(()=>{const o=i.current;if(!o)return;const m=()=>{c.current=o.scrollHeight-o.offsetHeight-o.scrollTop<80,c.current&&(s==null||s())};return o.addEventListener("scroll",m),()=>o.removeEventListener("scroll",m)},[s]),[i,r,c]}const S0="_modalRoot_1nlw0_1",_0={modalRoot:S0},E0="_modalContainerShow_naiks_21",T0="_modalContainerHide_naiks_24",x0="_closing_naiks_28",Wc={modalContainerShow:E0,modalContainerHide:T0,closing:x0},A0=(s="modal")=>`${s}_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;function C0({modalId:s,children:i,width:c="520px",isClickMaskClose:r=!0,onClose:o,isShow:m,zIndex:g,onHide:E,onRemove:p,getTopId:S}){const R=()=>{o==null||o(),E(s)};return N.useEffect(()=>{const C=X=>{X.key==="Escape"&&S()===s&&R()};return document.addEventListener("keydown",C),()=>document.removeEventListener("keydown",C)},[s]),d.jsx("div",{className:`${_0.modalRoot} ${m?"":Wc.closing}`,style:{zIndex:g},onClick:()=>r&&R(),children:d.jsxs("div",{className:`modal-container ${m?Wc.modalContainerShow:Wc.modalContainerHide}`,style:{width:`min(90vw, ${c})`},onClick:C=>C.stopPropagation(),onAnimationEnd:()=>{m||p(s)},children:[d.jsx("div",{className:"modal-close-bar",children:d.jsx("button",{className:"close-btn",onClick:R,children:"✕"})}),d.jsx("div",{className:"modal-body",children:i})]})})}class N0{constructor(){Ge(this,"setList",null);Ge(this,"getList",null);Ge(this,"count",1);Ge(this,"containerRoot",null);Ge(this,"pendingItems",[])}inject(i,c){var r;this.setList=i,this.getList=c,this.pendingItems.length>0&&((r=this.setList)==null||r.call(this,o=>[...o,...this.pendingItems]),this.pendingItems=[])}show(i,c={}){var E,p;this.ensureContainer();const r=A0(`modal_${this.count++}`),o=((E=this.getList)==null?void 0:E.call(this))||[],m=()=>this.hide(r),g={modalId:r,children:i,width:c.width,isClickMaskClose:c.isClickMaskClose,onClose:c.onClose,isShow:!0,zIndex:1e3+o.length};return this.setList?(p=this.setList)==null||p.call(this,S=>[...S,g]):this.pendingItems.push(g),{modalId:r,close:m}}hide(i){var c;(c=this.setList)==null||c.call(this,r=>r.map(o=>o.modalId===i?{...o,isShow:!1}:o))}hideTop(){var c;const i=((c=this.getList)==null?void 0:c.call(this))||[];i.length!==0&&this.hide(i[i.length-1].modalId)}hideAll(){var i;(i=this.setList)==null||i.call(this,[])}remove(i){var c;(c=this.setList)==null||c.call(this,r=>r.filter(o=>o.modalId!==i))}getTopId(){var c;const i=((c=this.getList)==null?void 0:c.call(this))||[];return i.length>0?i[i.length-1].modalId:void 0}ensureContainer(){if(this.containerRoot)return;const i=document.createElement("div");i.id="__stack_modal_container__",document.body.appendChild(i),this.containerRoot=cr.createRoot(i),this.containerRoot.render(d.jsx(O0,{manager:this}))}}const Ce=new N0;function O0({manager:s}){const[i,c]=N.useState([]);return N.useEffect(()=>{s.inject(c,()=>i)}),N.useEffect(()=>{document.body.style.overflow=i.length>0?"hidden":""},[i.length]),d.jsx(d.Fragment,{children:i.map(r=>d.jsx(C0,{...r,onHide:o=>s.hide(o),onRemove:o=>s.remove(o),getTopId:()=>s.getTopId()},r.modalId))})}function z0({title:s,desc:i,onOk:c,onCancel:r}){return d.jsxs("div",{className:"confirm-wrap",children:[d.jsx("div",{className:"confirm-title",children:s}),i&&d.jsx("div",{className:"confirm-desc",children:i}),d.jsxs("div",{className:"confirm-actions",children:[d.jsx("button",{className:"btn-cancel",onClick:r,children:"取消"}),d.jsx("button",{className:"btn-ok",onClick:c,children:"确认"})]})]})}function Kl(s){const{close:i}=Ce.show(d.jsx(z0,{title:s.title,desc:s.desc,onOk:()=>{var c;(c=s.onOk)==null||c.call(s),i()},onCancel:()=>{var c;(c=s.onCancel)==null||c.call(s),i()}}),{width:"400px",isClickMaskClose:!1})}const M0="_toastShow_sls7c_21",R0="_toastHide_sls7c_24",j0="_toastRoot_sls7c_27",ir={toastShow:M0,toastHide:R0,toastRoot:j0};function D0({item:s,onHide:i,onRemove:c}){return N.useEffect(()=>{const r=setTimeout(()=>i(s.id),2e3);return()=>clearTimeout(r)},[s.id]),d.jsx("div",{className:`toast-item ${s.type==="error"?"toast-error":"toast-success"} ${s.isShow?ir.toastShow:ir.toastHide}`,onAnimationEnd:()=>{s.isShow||c(s.id)},children:s.msg})}class U0{constructor(){Ge(this,"setList",null);Ge(this,"getList",null);Ge(this,"uid",0);Ge(this,"containerRoot",null);Ge(this,"pendingItems",[])}inject(i,c){var r;this.setList=i,this.getList=c,this.pendingItems.length>0&&((r=this.setList)==null||r.call(this,o=>[...o,...this.pendingItems]),this.pendingItems=[])}add(i,c="success"){var m;this.ensureContainer();const o={id:++this.uid,msg:i,type:c,isShow:!0};this.setList?(m=this.setList)==null||m.call(this,g=>[...g,o]):this.pendingItems.push(o)}hide(i){var c;(c=this.setList)==null||c.call(this,r=>r.map(o=>o.id===i?{...o,isShow:!1}:o))}remove(i){var c;(c=this.setList)==null||c.call(this,r=>r.filter(o=>o.id!==i))}ensureContainer(){if(this.containerRoot)return;const i=document.createElement("div");i.id="__toast_container__",document.body.appendChild(i),this.containerRoot=cr.createRoot(i),this.containerRoot.render(d.jsx(B0,{manager:this}))}}const Jd=new U0;function B0({manager:s}){const[i,c]=N.useState([]);return N.useEffect(()=>{s.inject(c,()=>i)}),d.jsx("div",{className:ir.toastRoot,children:d.jsx("div",{className:"toast-container",children:i.map(r=>d.jsx(D0,{item:r,onHide:o=>s.hide(o),onRemove:o=>s.remove(o)},r.id))})})}const Tt={msg:s=>Jd.add(s,"success"),err:s=>Jd.add(s,"error")};function w0({urls:s,initialIndex:i=0}){const[c,r]=N.useState(i),o=s[c],m=L0(o),g=s.length,E=N.useCallback(()=>r(S=>Math.max(0,S-1)),[]),p=N.useCallback(()=>r(S=>Math.min(g-1,S+1)),[g]);return N.useEffect(()=>{const S=R=>{R.key==="ArrowLeft"?E():R.key==="ArrowRight"&&p()};return document.addEventListener("keydown",S),()=>document.removeEventListener("keydown",S)},[E,p]),d.jsxs("div",{className:"preview-wrap",children:[d.jsx("div",{className:"preview-media",children:m?d.jsx("video",{loop:!0,autoPlay:!0,playsInline:!0,src:o,className:"preview-video"},o):d.jsx("img",{src:o,alt:"",className:"preview-img"},o)}),g>1&&d.jsxs(d.Fragment,{children:[d.jsx("button",{className:"preview-arrow preview-prev",onClick:E,disabled:c===0,children:"‹"}),d.jsx("button",{className:"preview-arrow preview-next",onClick:p,disabled:c===g-1,children:"›"}),d.jsxs("div",{className:"preview-indicator",children:[c+1," / ",g]})]})]})}function L0(s){return[".mp4",".avi",".mov",".mkv",".flv",".wmv"].some(i=>s.toLowerCase().endsWith(i))}function H0(s,i=0){s.length&&Ce.show(d.jsx(w0,{urls:s,initialIndex:i}),{width:"90vw",isClickMaskClose:!0})}const q0="_userModal_bfbaq_1",Y0={userModal:q0};function G0({user:s}){const i=s.name.charAt(0).toUpperCase(),c=async()=>{try{await navigator.clipboard.writeText(s.id),Tt.msg("ID 已复制")}catch{const r=document.createElement("textarea");r.value=s.id,document.body.appendChild(r),r.select(),document.execCommand("copy"),document.body.removeChild(r),Tt.msg("ID 已复制")}};return d.jsxs("div",{className:Y0.userModal,children:[d.jsx("h3",{children:"用户信息"}),d.jsx("div",{className:"user-avatar-large",children:i}),d.jsxs("div",{className:"user-info",children:[d.jsxs("div",{className:"info-row",children:[d.jsx("span",{className:"label",children:"用户名:"}),d.jsx("span",{className:"value",children:s.name})]}),d.jsxs("div",{className:"info-row",children:[d.jsx("span",{className:"label",children:"用户ID:"}),d.jsxs("span",{className:"value code-id",children:[s.id,d.jsx("button",{className:"copy-icon",onClick:c,title:"复制",children:"📋"})]})]}),d.jsxs("div",{className:"info-row",children:[d.jsx("span",{className:"label",children:"角色:"}),d.jsx("span",{className:`value role-tag ${s.role}`,children:s.role})]})]}),d.jsx("button",{className:"btn-close",onClick:()=>Ce.hideTop(),children:"关闭"})]})}const X0="_select_f48hn_1",Q0={select:X0};function Mm({options:s,value:i="",placeholder:c="请选择",onChange:r,disabled:o=!1}){const[m,g]=N.useState(!1),E=N.useRef(null),p=N.useRef(null),[S,R]=N.useState({}),C=N.useCallback(()=>{var lt;if(!E.current)return;const q=E.current.getBoundingClientRect(),V=window.innerHeight-q.bottom-4,et=((lt=p.current)==null?void 0:lt.offsetHeight)??0,$=et>0&&V<et&&q.top>V;R({position:"fixed",top:$?void 0:q.bottom+4,bottom:$?window.innerHeight-q.top+4:void 0,left:q.left,width:q.width,zIndex:99999})},[]),X=N.useCallback(q=>{q.key==="Escape"&&g(!1)},[]);N.useEffect(()=>{if(m)return C(),window.addEventListener("scroll",C,!0),window.addEventListener("resize",C),window.addEventListener("keydown",X),()=>{window.removeEventListener("scroll",C,!0),window.removeEventListener("resize",C),window.removeEventListener("keydown",X)}},[m,C,X]),N.useEffect(()=>{if(!m)return;const q=V=>{const et=V.target;E.current&&E.current.contains(et)||p.current&&p.current.contains(et)||g(!1)};return document.addEventListener("mousedown",q),()=>document.removeEventListener("mousedown",q)},[m]);const F=s.find(q=>q.value===i),U=F?F.label:c;return d.jsxs("div",{ref:E,className:Q0.select,children:[d.jsxs("button",{className:`select-trigger ${m?"select-trigger-open":""} ${o?"select-trigger-disabled":""}`,onClick:()=>!o&&g(q=>!q),type:"button",disabled:o,children:[d.jsx("span",{className:`select-trigger-text ${F?"":"select-placeholder"}`,children:U}),d.jsx("span",{className:`select-arrow ${m?"select-arrow-open":""}`,children:"‹"})]}),m&&!o&&Pd.createPortal(d.jsx("div",{ref:p,className:"select-dropdown",style:S,children:s.map(q=>d.jsx("div",{className:`select-option ${q.value===i?"select-option-active":""}`,onClick:()=>{r==null||r(q.value),g(!1)},children:q.label},q.value))}),document.body)]})}const V0="_permissionModal_lkmtn_1",k0={permissionModal:V0};function Z0({currentUser:s,initialUsers:i}){const[c,r]=N.useState(i),[o,m]=N.useState(""),[g,E]=N.useState(null),p=N.useRef(new Map);N.useEffect(()=>{r(i)},[i]);const S=o?c.filter(U=>U.id.includes(o)||U.name.includes(o)):c,R=()=>s.role==="super"?[{value:"super",label:"Super"},{value:"admin",label:"Admin"},{value:"user",label:"User"}]:s.role==="admin"?[{value:"admin",label:"Admin"},{value:"user",label:"User"}]:[],C=async(U,q)=>{E(U);try{if((await v0(U,q)).success){Tt.msg("角色更新成功");const et=await Om();et.success&&et.data&&(r(et.data),p.current.clear())}}catch(V){Tt.err((V==null?void 0:V.message)||"角色更新失败")}finally{E(null)}},X=N.useCallback((U,q)=>{p.current.set(U,q),C(U,q)},[]),F=N.useCallback(U=>p.current.get(U.id)??U.role,[]);return d.jsxs("div",{className:k0.permissionModal,children:[d.jsxs("h3",{children:["权限管理",d.jsxs("span",{className:"user-count",children:[c.length," 位用户"]})]}),d.jsx("div",{className:"search-bar",children:d.jsx("input",{type:"text",placeholder:"搜索用户ID或用户名",value:o,onChange:U=>m(U.target.value),autoFocus:!0})}),d.jsxs("div",{className:"user-list",children:[d.jsxs("table",{children:[d.jsx("thead",{children:d.jsxs("tr",{children:[d.jsx("th",{children:"用户名"}),d.jsx("th",{children:"角色"}),d.jsx("th",{style:{width:120},children:"操作"})]})}),d.jsx("tbody",{children:S.map(U=>d.jsxs("tr",{className:U.id===s.id?"is-current":"",children:[d.jsxs("td",{children:[d.jsx("span",{className:"user-name",children:U.name}),d.jsx("span",{className:"user-id",children:U.id})]}),d.jsx("td",{children:d.jsx("span",{className:`role-badge ${F(U)}`,children:F(U)})}),d.jsx("td",{children:d.jsx(Mm,{options:R(),value:F(U),onChange:q=>X(U.id,q),disabled:U.id===s.id||g===U.id})})]},U.id))})]}),S.length===0&&d.jsx("div",{className:"empty",children:"暂无匹配用户"})]}),d.jsx("div",{className:"footer",children:d.jsx("button",{className:"btn-close",onClick:()=>Ce.hideTop(),children:"关闭"})})]})}const K0="_inviteModal_1gxli_1",J0={inviteModal:K0};function $0({inviteCodes:s,onCodesUpdate:i}){const[c,r]=N.useState(s),[o,m]=N.useState(!1),g=N.useRef(null),E=[...c].sort((U,q)=>U.timestamp-q.timestamp),p=E.length>0?E[E.length-1]:null,S=E.slice(0,-1);N.useEffect(()=>{g.current&&(g.current.scrollTop=g.current.scrollHeight)},[c]);const R=U=>{switch(U){case 0:return{text:"未使用",cls:"status-0"};case 1:return{text:"已使用",cls:"status-1"};case 2:return{text:"已过期",cls:"status-2"};default:return{text:"未知",cls:""}}},C=U=>new Date(U).toLocaleString("zh-CN"),X=async U=>{try{await navigator.clipboard.writeText(U),Tt.msg("已复制到剪贴板")}catch{Tt.err("复制失败")}},F=async()=>{if(!o){m(!0);try{if((await p0()).success){Tt.msg("邀请码生成成功");const q=await zm();q.success&&q.data&&(r(q.data),i(q.data))}}catch(U){Tt.err((U==null?void 0:U.message)||"邀请码生成失败")}finally{m(!1)}}};return d.jsxs("div",{className:J0.inviteModal,children:[d.jsx("h3",{children:"邀请码管理"}),c.length===0?d.jsxs("div",{className:"empty-state",children:[d.jsx("div",{className:"deco",children:"🎉"}),d.jsx("p",{children:"暂无邀请码"}),d.jsx("button",{className:"btn-generate",onClick:F,disabled:o,children:o?"生成中...":"生成邀请码"}),d.jsx("span",{className:"tip",children:"点击上方按钮即可生成新的邀请码"})]}):d.jsxs(d.Fragment,{children:[p&&d.jsxs("div",{className:"latest-code",children:[d.jsx("span",{className:"badge",children:"最新"}),d.jsx("span",{className:`status-dot ${R(p.state).cls}`}),d.jsx("span",{className:"status-text",children:R(p.state).text}),d.jsx("span",{className:"code-text",children:p.code}),d.jsx("span",{className:"code-time",children:C(p.timestamp)}),d.jsx("button",{className:"copy-btn",onClick:()=>X(p.code),children:"复制"})]}),S.length>0&&d.jsx("div",{ref:g,className:"code-list",children:S.map(U=>{const q=R(U.state);return d.jsxs("div",{className:"code-item",children:[d.jsx("span",{className:`status-dot ${q.cls}`}),d.jsx("span",{className:"status-text",children:q.text}),d.jsx("span",{className:"code-text",children:U.code}),d.jsx("span",{className:"code-time",children:C(U.timestamp)}),d.jsx("button",{className:"copy-btn",onClick:()=>X(U.code),children:"复制"})]},U.code)})}),d.jsxs("div",{className:"actions",children:[d.jsx("button",{className:"btn-generate",onClick:F,disabled:o,children:o?"生成中...":"生成新的邀请码"}),d.jsx("button",{className:"btn-close",onClick:()=>Ce.hideTop(),children:"关闭"})]})]})]})}const W0="_userAvatar_9xyff_1",$d={userAvatar:W0};function F0({user:s,onUserInfo:i,onPermission:c,onInvite:r,onLogout:o}){const[m,g]=N.useState(!1),E=N.useRef(null),p=N.useRef(null),[S,R]=N.useState({}),C=N.useCallback(()=>{if(!E.current)return;const $=E.current.getBoundingClientRect();R({position:"fixed",top:$.bottom+8,right:window.innerWidth-$.right,zIndex:99999})},[]),X=N.useCallback($=>{$.key==="Escape"&&g(!1)},[]);N.useEffect(()=>{if(m)return C(),window.addEventListener("scroll",C,!0),window.addEventListener("resize",C),window.addEventListener("keydown",X),()=>{window.removeEventListener("scroll",C,!0),window.removeEventListener("resize",C),window.removeEventListener("keydown",X)}},[m,C,X]),N.useEffect(()=>{if(!m)return;const $=lt=>{const pt=lt.target;E.current&&E.current.contains(pt)||p.current&&p.current.contains(pt)||g(!1)};return document.addEventListener("mousedown",$),()=>document.removeEventListener("mousedown",$)},[m]);const F=()=>{g(!1),i()},U=()=>{g(!1),c()},q=()=>{g(!1),r()},V=()=>{g(!1),Kl({title:"确认退出登录吗?",onOk:()=>{o()}})},et=s.name.charAt(0).toUpperCase();return d.jsxs("div",{ref:E,className:$d.userAvatar,children:[d.jsx("div",{className:"avatar",onClick:()=>g($=>!$),children:et}),m&&Pd.createPortal(d.jsx("div",{ref:p,className:$d.userAvatar,style:S,children:d.jsxs("div",{className:"user-dropdown",children:[d.jsx("div",{className:"user-dropdown-item",onClick:F,children:"用户信息"}),(s.role==="admin"||s.role==="super")&&d.jsx("div",{className:"user-dropdown-item",onClick:U,children:"权限管理"}),s.role==="super"&&d.jsx("div",{className:"user-dropdown-item",onClick:q,children:"邀请码"}),d.jsx("div",{className:"user-dropdown-item logout",onClick:V,children:"退出登录"})]})}),document.body)]})}const I0="_home_8h37b_1",P0={home:I0},t1="_buildModal_1mpfv_1",e1={buildModal:t1},n1="_logModal_eochr_1",l1={logModal:n1},a1="_listModal_1td0z_1",i1={listModal:a1};function u1(s){return s.replace(/warn/ig,'<b style="color: #fdcb6e;">Warn</b>').replace(/error/ig,'<b style="color: #e17055;">Error</b>')}function s1(s){return[".mp4",".avi",".mov",".mkv",".flv",".wmv"].some(i=>s.toLowerCase().endsWith(i))}function Wd({count:s,onClick:i}){return s<=0?null:d.jsxs("div",{className:"unread-badge",onClick:i,children:["未读消息 x",s]})}function c1({msg:s,onCancel:i}){const c={1:{text:"构建中...",cls:"status-1"},2:{text:"构建成功",cls:"status-2"},3:{text:"构建失败",cls:"status-3"}},r=c[s.task.status]||c[1];return d.jsxs("div",{className:"build-card",children:[d.jsxs("div",{className:"build-card-header",children:[d.jsxs("div",{children:[d.jsx("span",{className:"name",children:s.name}),d.jsx("span",{className:"sep",children:"-"}),d.jsxs("span",{className:"branch",children:[s.task.branch," 分支"]})]}),d.jsx("div",{className:"time",children:new Date(s.timestamp).toLocaleString("zh-CN")})]}),d.jsxs("div",{className:"build-card-body",children:[d.jsxs("div",{className:"info-row",children:[d.jsxs("div",{children:["分支:",s.task.branch]}),d.jsxs("div",{children:["taskId:",s.taskId]}),d.jsxs("div",{children:["packagePath:",s.task.packagePath]}),s.task.commit&&d.jsxs("div",{children:["commit:",s.task.commit]}),d.jsxs("div",{children:["创建时间:",s.task.time]}),s.task.buildLogPath&&d.jsxs("div",{children:["构建日志:",d.jsx("a",{href:s.task.buildLogPath,target:"_blank",rel:"noreferrer",children:"查看日志"})]})]}),s.task.status===1&&s.task.buildSourceType==="buildServer"&&d.jsx("button",{className:"btn-cancel",onClick:()=>i(s.taskId),children:"取消构建"}),d.jsx("pre",{className:"build-log",dangerouslySetInnerHTML:{__html:u1(s.msg)}}),d.jsx("div",{className:`status-tag ${r.cls}`,children:r.text})]})]})}function r1({msg:s,isSelf:i,onPreview:c}){return d.jsxs("div",{className:`chat-bubble ${i?"self":""}`,children:[d.jsxs("div",{className:"bubble-header",children:[d.jsx("span",{className:`name ${i?"name-self":"name-other"}`,children:s.name||s.id}),d.jsx("span",{className:"time",children:new Date(s.timestamp).toLocaleString("zh-CN")})]}),s.msg&&d.jsx("pre",{className:`bubble-text ${i?"bubble-text-self":"bubble-text-other"}`,children:s.msg}),s.files&&s.files.length>0&&s.ctxType==="ctx:imgs"&&d.jsx("div",{className:"bubble-files",children:s.files.map((r,o)=>s1(r)?d.jsx("video",{loop:!0,muted:!0,autoPlay:!0,playsInline:!0,src:r,onClick:()=>c(s.id,o)},o):d.jsx("img",{src:r,alt:"",onClick:()=>c(s.id,o)},o))})]})}function f1(){const[s,i]=N.useState([]),[c,r]=N.useState("master"),[o,m]=N.useState(new Set),[g,E]=N.useState(""),[p,S]=N.useState(!1);N.useEffect(()=>{Vd().then(U=>i((U.list||[]).sort())).catch(()=>{})},[]);const R=g?s.filter(U=>U.toLowerCase().includes(g.toLowerCase())):s,C=()=>{m(U=>U.size>=s.length?new Set:new Set(s))},X=()=>{if(o.size===0){Tt.err("请选择仓库");return}if(!c){Tt.err("请输入分支名");return}s0(c,Array.from(o)).then(()=>{Ce.hideTop(),Tt.msg("任务添加成功")}).catch(U=>Tt.err((U==null?void 0:U.message)||"任务添加失败"))},F=async()=>{p||Kl({title:"是否确认重新扫描当前目录下的所有可构建项目?",onOk:async()=>{S(!0);try{await c0();const U=await Vd();i((U.list||[]).sort()),Tt.msg("刷新完成")}catch{Tt.err("刷新失败")}finally{S(!1)}}})};return d.jsxs("div",{className:e1.buildModal,children:[d.jsx("h3",{children:"构建项目"}),d.jsx("label",{children:"分支"}),d.jsx("input",{className:"branch-input",value:c,onChange:U=>r(U.target.value.trim()),placeholder:"输入分支名",spellCheck:!1}),d.jsxs("label",{children:["仓库",d.jsxs("span",{className:"select-count",children:["已选 ",o.size,"/",s.length]})]}),d.jsx("input",{className:"pkg-search-input",value:g,onChange:U=>E(U.target.value),placeholder:"搜索仓库名称…",spellCheck:!1}),d.jsxs("div",{className:"header-bar",children:[d.jsx("div",{className:"select-all-btn",onClick:C,children:o.size>=s.length?"取消全部":"全选"}),d.jsx("button",{className:`refresh-pkg-btn ${p?"is-refreshing":""}`,onClick:F,children:p?"刷新中...":"🔄 刷新仓库"})]}),d.jsx("div",{className:"pkg-grid",children:R.map(U=>d.jsx("div",{className:`pkg-item ${o.has(U)?"active":""}`,onClick:()=>{const q=new Set(o);q.has(U)?q.delete(U):q.add(U),m(q)},children:U},U))}),R.length===0&&d.jsx("div",{className:"empty-pkg",children:"无匹配仓库"}),d.jsx("button",{className:"btn-build",onClick:X,children:"开始构建"})]})}function o1(){var o,m,g,E;const[s,i]=N.useState([]),[c,r]=N.useState(0);return N.useEffect(()=>{r0().then(p=>{i(p.tabs||[]),r(0)})},[]),d.jsxs("div",{className:l1.logModal,children:[d.jsx("h3",{children:"Logs"}),d.jsx("div",{className:"tabs",children:s.map((p,S)=>d.jsx("div",{className:`tab-item ${c===S?"active":""}`,onClick:()=>r(S),children:p.title},S))}),d.jsxs("div",{className:"log-list",children:[(m=(o=s[c])==null?void 0:o.list)==null?void 0:m.map((p,S)=>d.jsxs("a",{href:p.path,target:"_blank",rel:"noreferrer",className:"log-item",children:[d.jsx("span",{className:"log-name",children:p.name}),d.jsx("span",{className:"log-link-icon",children:"↗"})]},S)),!((E=(g=s[c])==null?void 0:g.list)!=null&&E.length)&&d.jsx("div",{className:"empty",children:"暂无日志"})]})]})}function Fd({title:s,items:i,renderItem:c}){return d.jsxs("div",{className:i1.listModal,children:[d.jsx("h3",{children:s}),d.jsxs("div",{className:"list-items",children:[i.map((r,o)=>c(r,o)),!i.length&&d.jsx("div",{className:"empty",children:"暂无数据"})]})]})}function h1(){const{chatMessages:s,buildMessages:i,commandList:c,pendingTasks:r,sendMessage:o,sendImages:m,userIdRef:g}=b0(),[E,p]=N.useState(null),[S,R]=N.useState([]),[C,X]=N.useState([]),[F,U]=N.useState(0),[q,V]=N.useState(0),et=N.useRef(new Set),$=N.useRef(new Set);N.useEffect(()=>{y0().then(H=>{H.success&&H.data&&p(H.data)}).catch(H=>{console.error("Failed to load current user:",H)})},[]);const[lt,pt,Ct]=Kd(()=>U(0)),[gt,at,Gt]=Kd(()=>V(0)),It=[...c.map(H=>({value:H.command,label:`${H.command} - ${H.desc}`}))],[bt,st]=N.useState(""),Ht=N.useRef(null);N.useEffect(()=>{if(!s.length)return;const H=s.filter(K=>!$.current.has(K.id));if(H.forEach(K=>$.current.add(K.id)),H.length&&!Ct.current){U(K=>K+H.length);return}pt()},[s]),N.useEffect(()=>{if(!i.length)return;const H=i.filter(K=>!et.current.has(K.taskId));if(H.forEach(K=>et.current.add(K.taskId)),H.length&&!Gt.current){V(K=>K+H.length);return}at()},[i]),N.useEffect(()=>{const H=K=>{K.key==="Enter"&&K.ctrlKey&&me()};return window.addEventListener("keydown",H),()=>window.removeEventListener("keydown",H)},[bt]);const me=N.useCallback(()=>{bt.trim()&&(o(bt),st(""))},[bt,o]),P=N.useCallback(H=>{H&&o(H)},[o]),Q=N.useCallback(H=>{const K=H.target.files;K!=null&&K.length&&(m(K),H.target.value="")},[m]),_=N.useCallback(H=>{Kl({title:"是否确认取消任务?",onOk:()=>{kd(H).then(()=>Tt.msg("任务取消成功")).catch(K=>Tt.err((K==null?void 0:K.message)||"任务取消失败"))}})},[]),j=N.useCallback(H=>{Kl({title:`是否确认从队列中移除任务 ${H}?`,onOk:()=>{kd(H).then(()=>Tt.msg("已移除排队任务")).catch(K=>Tt.err((K==null?void 0:K.message)||"操作失败"))}})},[]),w=N.useCallback(H=>{H&&Kl({title:`是否确认回退 ${H} 的构建产物?回退后本次构建产物将被还原,请谨慎操作!`,onOk:()=>{o0(H).then(()=>Tt.msg("操作成功")).catch(K=>Tt.err((K==null?void 0:K.message)||"操作失败"))}})},[]),k=N.useCallback(H=>{H&&Kl({title:`是否确认通知${H.basename}项目的${H.branch}分支?`,onOk:()=>{m0(H.httpsOrigin,H.branch).then(()=>Tt.msg("操作成功")).catch(K=>Tt.err((K==null?void 0:K.message)||"操作失败"))}})},[]),Z=N.useCallback(()=>{Ce.show(d.jsx(f1,{}))},[]),v=N.useCallback(()=>{Ce.show(d.jsx(o1,{}),{width:"700px"})},[]),M=N.useCallback(()=>{f0().then(H=>{const K=H.list||[];Ce.show(d.jsx(Fd,{title:"版本回退",items:K,renderItem:(Rt,ae)=>d.jsxs("div",{className:"list-item",onClick:()=>w(Rt),children:[d.jsx("span",{className:"folder-icon",children:"📁"}),d.jsx("span",{children:Rt})]},ae)}),{width:"600px"})})},[w]),Y=N.useCallback(()=>{d0().then(H=>{const K=H.list||[];Ce.show(d.jsx(Fd,{title:"Notice Webhook",items:K,renderItem:(Rt,ae)=>d.jsxs("div",{className:"list-item",onClick:()=>k(Rt),children:[d.jsx("span",{className:Rt.branch==="master"?"branch-master":"branch-other",children:Rt.branch}),d.jsx("span",{className:"sep",children:"-"}),d.jsx("span",{children:Rt.basename})]},ae)}),{width:"600px"})})},[k]),G=N.useCallback((H,K)=>{var Qe;const Rt=[];let ae=0;for(const ye of s)if((Qe=ye.files)!=null&&Qe.length&&ye.ctxType==="ctx:imgs")for(let yn=0;yn<ye.files.length;yn++)ye.id===H&&yn===K&&(ae=Rt.length),Rt.push(ye.files[yn]);H0(Rt,ae)},[s]),I=N.useCallback(()=>{E&&Ce.show(d.jsx(G0,{user:E}),{width:"500px"})},[E]),it=N.useCallback(async()=>{if(E)try{const H=await Om();H.success&&H.data&&(R(H.data),Ce.show(d.jsx(Z0,{currentUser:E,initialUsers:H.data}),{width:"800px"}))}catch(H){console.error("Failed to load users:",H)}},[E]),ft=N.useCallback(async()=>{if(E)try{const H=await zm();H.success&&H.data&&(X(H.data),Ce.show(d.jsx($0,{inviteCodes:H.data,onCodesUpdate:X}),{width:"700px"}))}catch(H){console.error("Failed to load invite codes:",H)}},[E]),Bt=N.useCallback(()=>{localStorage.removeItem("token"),localStorage.removeItem("userId"),window.location.href="/login"},[]);return d.jsxs("div",{className:P0.home,children:[d.jsxs("div",{className:"toolbar",children:[d.jsxs("div",{className:"opts",children:[d.jsx("button",{className:"tool-btn",onClick:()=>location.reload(),children:"刷新"}),d.jsx("button",{className:"tool-btn",onClick:Z,children:"构建"}),(E==null?void 0:E.role)==="super"&&d.jsx("button",{className:"tool-btn",style:{background:"var(--info)"},onClick:v,children:"Logs"}),d.jsx("button",{className:"tool-btn",style:{background:"var(--accent)"},onClick:Y,children:"Notice Webhook"}),E&&["super","admin"].includes(E.role)&&d.jsx("button",{className:"tool-btn",style:{background:"var(--warning)",color:"#000"},onClick:M,children:"版本回退"})]}),E&&d.jsx("div",{className:"toolbar-user",children:d.jsx(F0,{user:E,onUserInfo:I,onPermission:it,onInvite:ft,onLogout:Bt})})]}),r.length>0&&d.jsxs("div",{className:"pending-tasks-bar",children:[d.jsxs("div",{className:"pending-label",children:["排队中 (",r.length,"):"]}),d.jsx("div",{className:"pending-scroll",children:r.map(H=>d.jsxs("div",{className:"pending-item",children:[d.jsx("span",{className:"pending-taskid",children:H.taskId}),d.jsx("span",{className:"pending-path",children:H.packagePath}),d.jsx("span",{className:"pending-branch",children:H.branch}),d.jsx("button",{className:"pending-cancel-btn",onClick:()=>j(H.taskId),children:"取消"})]},H.taskId))})]}),d.jsxs("div",{className:"build-panel",children:[d.jsx("div",{className:"panel-title",children:"Build Notice"}),d.jsxs("div",{className:"panel-body",children:[d.jsx(Wd,{count:q,onClick:()=>{V(0),at(!0)}}),d.jsx("div",{ref:gt,className:"scroll-area",children:i.map((H,K)=>d.jsx(c1,{msg:H,onCancel:_},H.taskId+K))})]})]}),d.jsxs("div",{className:"chat-panel",children:[d.jsx("div",{className:"panel-title",children:"Chat Room"}),d.jsxs("div",{className:"panel-body",children:[d.jsx(Wd,{count:F,onClick:()=>{U(0),pt(!0)}}),d.jsx("div",{ref:lt,className:"chat-scroll",children:s.map((H,K)=>d.jsx(r1,{msg:H,isSelf:H.userId===g.current,onPreview:G},H.id+K))})]}),d.jsxs("div",{className:"command-bar",children:[d.jsx(Mm,{options:It,value:"",placeholder:"快捷命令",onChange:H=>{P(H)}}),d.jsx("button",{className:"cmd-btn cmd-build",onClick:Z,children:"选择构建"}),d.jsxs("div",{className:"cmd-btn cmd-img",children:["选择图片",d.jsx("input",{ref:Ht,type:"file",accept:"image/*, video/*",multiple:!0,onChange:Q,className:"file-input-hidden"})]})]}),d.jsxs("div",{className:"input-area",children:[d.jsx("textarea",{value:bt,onChange:H=>st(H.currentTarget.value),placeholder:"输入消息... (Ctrl+Enter 发送)"}),d.jsxs("button",{className:"btn-send",onClick:me,disabled:!bt.trim(),children:["发送",d.jsx("br",{}),"Ctrl+Enter"]})]})]})]})}const d1="_login_qbk6z_1",m1={login:d1};function y1({onSwitch:s}){const[i,c]=N.useState(""),[r,o]=N.useState(""),m=rm(),g=async()=>{var E;if(!i||!r){Tt.err("请输入用户名和密码");return}try{const p=await i0(i,r);p.success&&((E=p.data)!=null&&E.token)?(localStorage.setItem("token",p.data.token),localStorage.setItem("userId",p.data.id),Tt.msg("登录成功"),m("/")):Tt.err(p.message||"登录失败")}catch(p){Tt.err((p==null?void 0:p.message)||"网络错误")}};return d.jsxs("div",{className:"form",children:[d.jsxs("div",{className:"field",children:[d.jsx("label",{children:"用户名"}),d.jsx("input",{value:i,onChange:E=>c(E.target.value.trim()),maxLength:12})]}),d.jsxs("div",{className:"field",children:[d.jsx("label",{children:"密码"}),d.jsx("input",{type:"password",value:r,onChange:E=>o(E.target.value.trim()),maxLength:30,onKeyDown:E=>E.key==="Enter"&&g()})]}),d.jsx("button",{className:"btn-submit",onClick:g,children:"登录"}),d.jsxs("div",{className:"switch-hint",children:["还没有账号?",d.jsx("a",{onClick:s,children:"立即注册"})]})]})}function v1({onSwitch:s}){const[i,c]=N.useState(""),[r,o]=N.useState(""),[m,g]=N.useState(""),[E,p]=N.useState(""),S=async()=>{if(!i||!m||!E||!r){Tt.err("请输入用户名、密码和邀请密码");return}if(m!==E){Tt.err("两次密码不一致");return}try{const R=await u0(i,m,r);R.success?(Tt.msg("注册成功,请登录"),s()):Tt.err(R.message||"注册失败")}catch(R){Tt.err((R==null?void 0:R.message)||"网络错误")}};return d.jsxs("div",{className:"form",children:[d.jsxs("div",{className:"field",children:[d.jsx("label",{children:"用户名"}),d.jsx("input",{value:i,onChange:R=>c(R.target.value.trim()),maxLength:12})]}),d.jsxs("div",{className:"field",children:[d.jsx("label",{children:"密码"}),d.jsx("input",{type:"password",value:m,onChange:R=>g(R.target.value.trim()),maxLength:30})]}),d.jsxs("div",{className:"field",children:[d.jsx("label",{children:"确认密码"}),d.jsx("input",{type:"password",value:E,onChange:R=>p(R.target.value.trim()),maxLength:30,onKeyDown:R=>R.key==="Enter"&&S()})]}),d.jsxs("div",{className:"field",children:[d.jsx("label",{children:"邀请码"}),d.jsx("input",{value:r,onChange:R=>o(R.target.value.trim())})]}),d.jsx("button",{className:"btn-submit",onClick:S,children:"注册"}),d.jsxs("div",{className:"switch-hint",children:["已有账号?",d.jsx("a",{onClick:s,children:"去登录"})]})]})}function p1(){const[s,i]=N.useState("login");return d.jsx("div",{className:m1.login,children:d.jsxs("div",{className:"login-card",children:[d.jsxs("div",{className:"login-logo",children:[d.jsx("div",{className:"icon",children:"B"}),d.jsx("h1",{children:"Build System"}),d.jsx("p",{children:"构建管理系统"})]}),d.jsxs("div",{className:"tab-bar",children:[d.jsx("div",{className:`tab-item ${s==="login"?"active":""}`,onClick:()=>i("login"),children:"登录"}),d.jsx("div",{className:`tab-item ${s==="register"?"active":""}`,onClick:()=>i("register"),children:"注册"})]}),s==="login"?d.jsx(y1,{onSwitch:()=>i("register")}):d.jsx(v1,{onSwitch:()=>i("login")})]})})}function g1({children:s}){return localStorage.getItem("token")?d.jsx(d.Fragment,{children:s}):d.jsx(dm,{to:"/login",replace:!0})}op.createRoot(document.getElementById("root")).render(d.jsx(sg,{basename:"/buildsystem",children:d.jsxs(ag,{children:[d.jsx(yu,{path:"/login",element:d.jsx(p1,{})}),d.jsx(yu,{path:"/",element:d.jsx(g1,{children:d.jsx(h1,{})})}),d.jsx(yu,{path:"*",element:d.jsx(dm,{to:"/",replace:!0})})]})}));
76
+ */const ig="6";try{window.__reactRouterVersion=ig}catch{}const ug="startTransition",Bd=dp[ug];function sg(s){let{basename:i,children:c,future:r,window:o}=s,m=N.useRef();m.current==null&&(m.current=mp({window:o,v5Compat:!0}));let g=m.current,[E,p]=N.useState({action:g.action,location:g.location}),{v7_startTransition:S}=r||{},R=N.useCallback(C=>{S&&Bd?Bd(()=>p(C)):p(C)},[p,S]);return N.useLayoutEffect(()=>g.listen(R),[g,R]),N.useEffect(()=>ng(r),[r]),N.createElement(lg,{basename:i,children:c,location:E.location,navigationType:E.action,navigator:g,future:r})}var wd;(function(s){s.UseScrollRestoration="useScrollRestoration",s.UseSubmit="useSubmit",s.UseSubmitFetcher="useSubmitFetcher",s.UseFetcher="useFetcher",s.useViewTransitionState="useViewTransitionState"})(wd||(wd={}));var Ld;(function(s){s.UseFetcher="useFetcher",s.UseFetchers="useFetchers",s.UseScrollRestoration="useScrollRestoration"})(Ld||(Ld={}));const $e=Object.create(null);$e.open="0";$e.close="1";$e.ping="2";$e.pong="3";$e.message="4";$e.upgrade="5";$e.noop="6";const vu=Object.create(null);Object.keys($e).forEach(s=>{vu[$e[s]]=s});const Pc={type:"error",data:"parser error"},mm=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",ym=typeof ArrayBuffer=="function",vm=s=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(s):s&&s.buffer instanceof ArrayBuffer,hr=({type:s,data:i},c,r)=>mm&&i instanceof Blob?c?r(i):Hd(i,r):ym&&(i instanceof ArrayBuffer||vm(i))?c?r(i):Hd(new Blob([i]),r):r($e[s]+(i||"")),Hd=(s,i)=>{const c=new FileReader;return c.onload=function(){const r=c.result.split(",")[1];i("b"+(r||""))},c.readAsDataURL(s)};function qd(s){return s instanceof Uint8Array?s:s instanceof ArrayBuffer?new Uint8Array(s):new Uint8Array(s.buffer,s.byteOffset,s.byteLength)}let Kc;function cg(s,i){if(mm&&s.data instanceof Blob)return s.data.arrayBuffer().then(qd).then(i);if(ym&&(s.data instanceof ArrayBuffer||vm(s.data)))return i(qd(s.data));hr(s,!1,c=>{Kc||(Kc=new TextEncoder),i(Kc.encode(c))})}const Yd="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ka=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let s=0;s<Yd.length;s++)ka[Yd.charCodeAt(s)]=s;const rg=s=>{let i=s.length*.75,c=s.length,r,o=0,m,g,E,p;s[s.length-1]==="="&&(i--,s[s.length-2]==="="&&i--);const S=new ArrayBuffer(i),R=new Uint8Array(S);for(r=0;r<c;r+=4)m=ka[s.charCodeAt(r)],g=ka[s.charCodeAt(r+1)],E=ka[s.charCodeAt(r+2)],p=ka[s.charCodeAt(r+3)],R[o++]=m<<2|g>>4,R[o++]=(g&15)<<4|E>>2,R[o++]=(E&3)<<6|p&63;return S},fg=typeof ArrayBuffer=="function",dr=(s,i)=>{if(typeof s!="string")return{type:"message",data:pm(s,i)};const c=s.charAt(0);return c==="b"?{type:"message",data:og(s.substring(1),i)}:vu[c]?s.length>1?{type:vu[c],data:s.substring(1)}:{type:vu[c]}:Pc},og=(s,i)=>{if(fg){const c=rg(s);return pm(c,i)}else return{base64:!0,data:s}},pm=(s,i)=>{switch(i){case"blob":return s instanceof Blob?s:new Blob([s]);case"arraybuffer":default:return s instanceof ArrayBuffer?s:s.buffer}},gm="",hg=(s,i)=>{const c=s.length,r=new Array(c);let o=0;s.forEach((m,g)=>{hr(m,!1,E=>{r[g]=E,++o===c&&i(r.join(gm))})})},dg=(s,i)=>{const c=s.split(gm),r=[];for(let o=0;o<c.length;o++){const m=dr(c[o],i);if(r.push(m),m.type==="error")break}return r};function mg(){return new TransformStream({transform(s,i){cg(s,c=>{const r=c.length;let o;if(r<126)o=new Uint8Array(1),new DataView(o.buffer).setUint8(0,r);else if(r<65536){o=new Uint8Array(3);const m=new DataView(o.buffer);m.setUint8(0,126),m.setUint16(1,r)}else{o=new Uint8Array(9);const m=new DataView(o.buffer);m.setUint8(0,127),m.setBigUint64(1,BigInt(r))}s.data&&typeof s.data!="string"&&(o[0]|=128),i.enqueue(o),i.enqueue(c)})}})}let Jc;function du(s){return s.reduce((i,c)=>i+c.length,0)}function mu(s,i){if(s[0].length===i)return s.shift();const c=new Uint8Array(i);let r=0;for(let o=0;o<i;o++)c[o]=s[0][r++],r===s[0].length&&(s.shift(),r=0);return s.length&&r<s[0].length&&(s[0]=s[0].slice(r)),c}function yg(s,i){Jc||(Jc=new TextDecoder);const c=[];let r=0,o=-1,m=!1;return new TransformStream({transform(g,E){for(c.push(g);;){if(r===0){if(du(c)<1)break;const p=mu(c,1);m=(p[0]&128)===128,o=p[0]&127,o<126?r=3:o===126?r=1:r=2}else if(r===1){if(du(c)<2)break;const p=mu(c,2);o=new DataView(p.buffer,p.byteOffset,p.length).getUint16(0),r=3}else if(r===2){if(du(c)<8)break;const p=mu(c,8),S=new DataView(p.buffer,p.byteOffset,p.length),R=S.getUint32(0);if(R>Math.pow(2,21)-1){E.enqueue(Pc);break}o=R*Math.pow(2,32)+S.getUint32(4),r=3}else{if(du(c)<o)break;const p=mu(c,o);E.enqueue(dr(m?p:Jc.decode(p),i)),r=0}if(o===0||o>s){E.enqueue(Pc);break}}}})}const bm=4;function Zt(s){if(s)return vg(s)}function vg(s){for(var i in Zt.prototype)s[i]=Zt.prototype[i];return s}Zt.prototype.on=Zt.prototype.addEventListener=function(s,i){return this._callbacks=this._callbacks||{},(this._callbacks["$"+s]=this._callbacks["$"+s]||[]).push(i),this};Zt.prototype.once=function(s,i){function c(){this.off(s,c),i.apply(this,arguments)}return c.fn=i,this.on(s,c),this};Zt.prototype.off=Zt.prototype.removeListener=Zt.prototype.removeAllListeners=Zt.prototype.removeEventListener=function(s,i){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var c=this._callbacks["$"+s];if(!c)return this;if(arguments.length==1)return delete this._callbacks["$"+s],this;for(var r,o=0;o<c.length;o++)if(r=c[o],r===i||r.fn===i){c.splice(o,1);break}return c.length===0&&delete this._callbacks["$"+s],this};Zt.prototype.emit=function(s){this._callbacks=this._callbacks||{};for(var i=new Array(arguments.length-1),c=this._callbacks["$"+s],r=1;r<arguments.length;r++)i[r-1]=arguments[r];if(c){c=c.slice(0);for(var r=0,o=c.length;r<o;++r)c[r].apply(this,i)}return this};Zt.prototype.emitReserved=Zt.prototype.emit;Zt.prototype.listeners=function(s){return this._callbacks=this._callbacks||{},this._callbacks["$"+s]||[]};Zt.prototype.hasListeners=function(s){return!!this.listeners(s).length};const Eu=typeof Promise=="function"&&typeof Promise.resolve=="function"?i=>Promise.resolve().then(i):(i,c)=>c(i,0),Le=typeof self<"u"?self:typeof window<"u"?window:Function("return this")(),pg="arraybuffer";function Sm(s,...i){return i.reduce((c,r)=>(s.hasOwnProperty(r)&&(c[r]=s[r]),c),{})}const gg=Le.setTimeout,bg=Le.clearTimeout;function Tu(s,i){i.useNativeTimers?(s.setTimeoutFn=gg.bind(Le),s.clearTimeoutFn=bg.bind(Le)):(s.setTimeoutFn=Le.setTimeout.bind(Le),s.clearTimeoutFn=Le.clearTimeout.bind(Le))}const Sg=1.33;function _g(s){return typeof s=="string"?Eg(s):Math.ceil((s.byteLength||s.size)*Sg)}function Eg(s){let i=0,c=0;for(let r=0,o=s.length;r<o;r++)i=s.charCodeAt(r),i<128?c+=1:i<2048?c+=2:i<55296||i>=57344?c+=3:(r++,c+=4);return c}function _m(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function Tg(s){let i="";for(let c in s)s.hasOwnProperty(c)&&(i.length&&(i+="&"),i+=encodeURIComponent(c)+"="+encodeURIComponent(s[c]));return i}function xg(s){let i={},c=s.split("&");for(let r=0,o=c.length;r<o;r++){let m=c[r].split("=");i[decodeURIComponent(m[0])]=decodeURIComponent(m[1])}return i}class Ag extends Error{constructor(i,c,r){super(i),this.description=c,this.context=r,this.type="TransportError"}}class mr extends Zt{constructor(i){super(),this.writable=!1,Tu(this,i),this.opts=i,this.query=i.query,this.socket=i.socket,this.supportsBinary=!i.forceBase64}onError(i,c,r){return super.emitReserved("error",new Ag(i,c,r)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return(this.readyState==="opening"||this.readyState==="open")&&(this.doClose(),this.onClose()),this}send(i){this.readyState==="open"&&this.write(i)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(i){const c=dr(i,this.socket.binaryType);this.onPacket(c)}onPacket(i){super.emitReserved("packet",i)}onClose(i){this.readyState="closed",super.emitReserved("close",i)}pause(i){}createUri(i,c={}){return i+"://"+this._hostname()+this._port()+this.opts.path+this._query(c)}_hostname(){const i=this.opts.hostname;return i.indexOf(":")===-1?i:"["+i+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(this.opts.port)!==443||!this.opts.secure&&Number(this.opts.port)!==80)?":"+this.opts.port:""}_query(i){const c=Tg(i);return c.length?"?"+c:""}}class Cg extends mr{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(i){this.readyState="pausing";const c=()=>{this.readyState="paused",i()};if(this._polling||!this.writable){let r=0;this._polling&&(r++,this.once("pollComplete",function(){--r||c()})),this.writable||(r++,this.once("drain",function(){--r||c()}))}else c()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(i){const c=r=>{if(this.readyState==="opening"&&r.type==="open"&&this.onOpen(),r.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(r)};dg(i,this.socket.binaryType).forEach(c),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this._poll())}doClose(){const i=()=>{this.write([{type:"close"}])};this.readyState==="open"?i():this.once("open",i)}write(i){this.writable=!1,hg(i,c=>{this.doWrite(c,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const i=this.opts.secure?"https":"http",c=this.query||{};return this.opts.timestampRequests!==!1&&(c[this.opts.timestampParam]=_m()),!this.supportsBinary&&!c.sid&&(c.b64=1),this.createUri(i,c)}}let Em=!1;try{Em=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}const Ng=Em;function Og(){}class zg extends Cg{constructor(i){if(super(i),typeof location<"u"){const c=location.protocol==="https:";let r=location.port;r||(r=c?"443":"80"),this.xd=typeof location<"u"&&i.hostname!==location.hostname||r!==i.port}}doWrite(i,c){const r=this.request({method:"POST",data:i});r.on("success",c),r.on("error",(o,m)=>{this.onError("xhr post error",o,m)})}doPoll(){const i=this.request();i.on("data",this.onData.bind(this)),i.on("error",(c,r)=>{this.onError("xhr poll error",c,r)}),this.pollXhr=i}}class Je extends Zt{constructor(i,c,r){super(),this.createRequest=i,Tu(this,r),this._opts=r,this._method=r.method||"GET",this._uri=c,this._data=r.data!==void 0?r.data:null,this._create()}_create(){var i;const c=Sm(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");c.xdomain=!!this._opts.xd;const r=this._xhr=this.createRequest(c);try{r.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let o in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(o)&&r.setRequestHeader(o,this._opts.extraHeaders[o])}}catch{}if(this._method==="POST")try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{r.setRequestHeader("Accept","*/*")}catch{}(i=this._opts.cookieJar)===null||i===void 0||i.addCookies(r),"withCredentials"in r&&(r.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(r.timeout=this._opts.requestTimeout),r.onreadystatechange=()=>{var o;r.readyState===3&&((o=this._opts.cookieJar)===null||o===void 0||o.parseCookies(r.getResponseHeader("set-cookie"))),r.readyState===4&&(r.status===200||r.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof r.status=="number"?r.status:0)},0))},r.send(this._data)}catch(o){this.setTimeoutFn(()=>{this._onError(o)},0);return}typeof document<"u"&&(this._index=Je.requestsCount++,Je.requests[this._index]=this)}_onError(i){this.emitReserved("error",i,this._xhr),this._cleanup(!0)}_cleanup(i){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=Og,i)try{this._xhr.abort()}catch{}typeof document<"u"&&delete Je.requests[this._index],this._xhr=null}}_onLoad(){const i=this._xhr.responseText;i!==null&&(this.emitReserved("data",i),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}}Je.requestsCount=0;Je.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",Gd);else if(typeof addEventListener=="function"){const s="onpagehide"in Le?"pagehide":"unload";addEventListener(s,Gd,!1)}}function Gd(){for(let s in Je.requests)Je.requests.hasOwnProperty(s)&&Je.requests[s].abort()}const Mg=(function(){const s=Tm({xdomain:!1});return s&&s.responseType!==null})();class Rg extends zg{constructor(i){super(i);const c=i&&i.forceBase64;this.supportsBinary=Mg&&!c}request(i={}){return Object.assign(i,{xd:this.xd},this.opts),new Je(Tm,this.uri(),i)}}function Tm(s){const i=s.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!i||Ng))return new XMLHttpRequest}catch{}if(!i)try{return new Le[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}const xm=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class jg extends mr{get name(){return"websocket"}doOpen(){const i=this.uri(),c=this.opts.protocols,r=xm?{}:Sm(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(i,c,r)}catch(o){return this.emitReserved("error",o)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=i=>this.onClose({description:"websocket connection closed",context:i}),this.ws.onmessage=i=>this.onData(i.data),this.ws.onerror=i=>this.onError("websocket error",i)}write(i){this.writable=!1;for(let c=0;c<i.length;c++){const r=i[c],o=c===i.length-1;hr(r,this.supportsBinary,m=>{try{this.doWrite(r,m)}catch{}o&&Eu(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const i=this.opts.secure?"wss":"ws",c=this.query||{};return this.opts.timestampRequests&&(c[this.opts.timestampParam]=_m()),this.supportsBinary||(c.b64=1),this.createUri(i,c)}}const $c=Le.WebSocket||Le.MozWebSocket;class Dg extends jg{createSocket(i,c,r){return xm?new $c(i,c,r):c?new $c(i,c):new $c(i)}doWrite(i,c){this.ws.send(c)}}class Ug extends mr{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(i){return this.emitReserved("error",i)}this._transport.closed.then(()=>{this.onClose()}).catch(i=>{this.onError("webtransport error",i)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(i=>{const c=yg(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=i.readable.pipeThrough(c).getReader(),o=mg();o.readable.pipeTo(i.writable),this._writer=o.writable.getWriter();const m=()=>{r.read().then(({done:E,value:p})=>{E||(this.onPacket(p),m())}).catch(E=>{})};m();const g={type:"open"};this.query.sid&&(g.data=`{"sid":"${this.query.sid}"}`),this._writer.write(g).then(()=>this.onOpen())})})}write(i){this.writable=!1;for(let c=0;c<i.length;c++){const r=i[c],o=c===i.length-1;this._writer.write(r).then(()=>{o&&Eu(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var i;(i=this._transport)===null||i===void 0||i.close()}}const Bg={websocket:Dg,webtransport:Ug,polling:Rg},wg=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Lg=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function tr(s){if(s.length>8e3)throw"URI too long";const i=s,c=s.indexOf("["),r=s.indexOf("]");c!=-1&&r!=-1&&(s=s.substring(0,c)+s.substring(c,r).replace(/:/g,";")+s.substring(r,s.length));let o=wg.exec(s||""),m={},g=14;for(;g--;)m[Lg[g]]=o[g]||"";return c!=-1&&r!=-1&&(m.source=i,m.host=m.host.substring(1,m.host.length-1).replace(/;/g,":"),m.authority=m.authority.replace("[","").replace("]","").replace(/;/g,":"),m.ipv6uri=!0),m.pathNames=Hg(m,m.path),m.queryKey=qg(m,m.query),m}function Hg(s,i){const c=/\/{2,9}/g,r=i.replace(c,"/").split("/");return(i.slice(0,1)=="/"||i.length===0)&&r.splice(0,1),i.slice(-1)=="/"&&r.splice(r.length-1,1),r}function qg(s,i){const c={};return i.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(r,o,m){o&&(c[o]=m)}),c}const er=typeof addEventListener=="function"&&typeof removeEventListener=="function",pu=[];er&&addEventListener("offline",()=>{pu.forEach(s=>s())},!1);class Xn extends Zt{constructor(i,c){if(super(),this.binaryType=pg,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,i&&typeof i=="object"&&(c=i,i=null),i){const r=tr(i);c.hostname=r.host,c.secure=r.protocol==="https"||r.protocol==="wss",c.port=r.port,r.query&&(c.query=r.query)}else c.host&&(c.hostname=tr(c.host).host);Tu(this,c),this.secure=c.secure!=null?c.secure:typeof location<"u"&&location.protocol==="https:",c.hostname&&!c.port&&(c.port=this.secure?"443":"80"),this.hostname=c.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=c.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},c.transports.forEach(r=>{const o=r.prototype.name;this.transports.push(o),this._transportsByName[o]=r}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},c),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=xg(this.opts.query)),er&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},pu.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(i){const c=Object.assign({},this.opts.query);c.EIO=bm,c.transport=i,this.id&&(c.sid=this.id);const r=Object.assign({},this.opts,{query:c,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[i]);return new this._transportsByName[i](r)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}const i=this.opts.rememberUpgrade&&Xn.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";const c=this.createTransport(i);c.open(),this.setTransport(c)}setTransport(i){this.transport&&this.transport.removeAllListeners(),this.transport=i,i.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",c=>this._onClose("transport close",c))}onOpen(){this.readyState="open",Xn.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(i){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",i),this.emitReserved("heartbeat"),i.type){case"open":this.onHandshake(JSON.parse(i.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const c=new Error("server error");c.code=i.data,this._onError(c);break;case"message":this.emitReserved("data",i.data),this.emitReserved("message",i.data);break}}onHandshake(i){this.emitReserved("handshake",i),this.id=i.sid,this.transport.query.sid=i.sid,this._pingInterval=i.pingInterval,this._pingTimeout=i.pingTimeout,this._maxPayload=i.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const i=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+i,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},i),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const i=this._getWritablePackets();this.transport.send(i),this._prevBufferLen=i.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let c=1;for(let r=0;r<this.writeBuffer.length;r++){const o=this.writeBuffer[r].data;if(o&&(c+=_g(o)),r>0&&c>this._maxPayload)return this.writeBuffer.slice(0,r);c+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const i=Date.now()>this._pingTimeoutTime;return i&&(this._pingTimeoutTime=0,Eu(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),i}write(i,c,r){return this._sendPacket("message",i,c,r),this}send(i,c,r){return this._sendPacket("message",i,c,r),this}_sendPacket(i,c,r,o){if(typeof c=="function"&&(o=c,c=void 0),typeof r=="function"&&(o=r,r=null),this.readyState==="closing"||this.readyState==="closed")return;r=r||{},r.compress=r.compress!==!1;const m={type:i,data:c,options:r};this.emitReserved("packetCreate",m),this.writeBuffer.push(m),o&&this.once("flush",o),this.flush()}close(){const i=()=>{this._onClose("forced close"),this.transport.close()},c=()=>{this.off("upgrade",c),this.off("upgradeError",c),i()},r=()=>{this.once("upgrade",c),this.once("upgradeError",c)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?r():i()}):this.upgrading?r():i()),this}_onError(i){if(Xn.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return this.transports.shift(),this._open();this.emitReserved("error",i),this._onClose("transport error",i)}_onClose(i,c){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),er&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const r=pu.indexOf(this._offlineEventListener);r!==-1&&pu.splice(r,1)}this.readyState="closed",this.id=null,this.emitReserved("close",i,c),this.writeBuffer=[],this._prevBufferLen=0}}}Xn.protocol=bm;class Yg extends Xn{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade)for(let i=0;i<this._upgrades.length;i++)this._probe(this._upgrades[i])}_probe(i){let c=this.createTransport(i),r=!1;Xn.priorWebsocketSuccess=!1;const o=()=>{r||(c.send([{type:"ping",data:"probe"}]),c.once("packet",C=>{if(!r)if(C.type==="pong"&&C.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",c),!c)return;Xn.priorWebsocketSuccess=c.name==="websocket",this.transport.pause(()=>{r||this.readyState!=="closed"&&(R(),this.setTransport(c),c.send([{type:"upgrade"}]),this.emitReserved("upgrade",c),c=null,this.upgrading=!1,this.flush())})}else{const X=new Error("probe error");X.transport=c.name,this.emitReserved("upgradeError",X)}}))};function m(){r||(r=!0,R(),c.close(),c=null)}const g=C=>{const X=new Error("probe error: "+C);X.transport=c.name,m(),this.emitReserved("upgradeError",X)};function E(){g("transport closed")}function p(){g("socket closed")}function S(C){c&&C.name!==c.name&&m()}const R=()=>{c.removeListener("open",o),c.removeListener("error",g),c.removeListener("close",E),this.off("close",p),this.off("upgrading",S)};c.once("open",o),c.once("error",g),c.once("close",E),this.once("close",p),this.once("upgrading",S),this._upgrades.indexOf("webtransport")!==-1&&i!=="webtransport"?this.setTimeoutFn(()=>{r||c.open()},200):c.open()}onHandshake(i){this._upgrades=this._filterUpgrades(i.upgrades),super.onHandshake(i)}_filterUpgrades(i){const c=[];for(let r=0;r<i.length;r++)~this.transports.indexOf(i[r])&&c.push(i[r]);return c}}let Gg=class extends Yg{constructor(i,c={}){const r=typeof i=="object"?i:c;(!r.transports||r.transports&&typeof r.transports[0]=="string")&&(r.transports=(r.transports||["polling","websocket","webtransport"]).map(o=>Bg[o]).filter(o=>!!o)),super(i,r)}};function Xg(s,i="",c){let r=s;c=c||typeof location<"u"&&location,s==null&&(s=c.protocol+"//"+c.host),typeof s=="string"&&(s.charAt(0)==="/"&&(s.charAt(1)==="/"?s=c.protocol+s:s=c.host+s),/^(https?|wss?):\/\//.test(s)||(typeof c<"u"?s=c.protocol+"//"+s:s="https://"+s),r=tr(s)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";const m=r.host.indexOf(":")!==-1?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+m+":"+r.port+i,r.href=r.protocol+"://"+m+(c&&c.port===r.port?"":":"+r.port),r}const Qg=typeof ArrayBuffer=="function",Vg=s=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(s):s.buffer instanceof ArrayBuffer,Am=Object.prototype.toString,kg=typeof Blob=="function"||typeof Blob<"u"&&Am.call(Blob)==="[object BlobConstructor]",Zg=typeof File=="function"||typeof File<"u"&&Am.call(File)==="[object FileConstructor]";function yr(s){return Qg&&(s instanceof ArrayBuffer||Vg(s))||kg&&s instanceof Blob||Zg&&s instanceof File}function gu(s,i){if(!s||typeof s!="object")return!1;if(Array.isArray(s)){for(let c=0,r=s.length;c<r;c++)if(gu(s[c]))return!0;return!1}if(yr(s))return!0;if(s.toJSON&&typeof s.toJSON=="function"&&arguments.length===1)return gu(s.toJSON(),!0);for(const c in s)if(Object.prototype.hasOwnProperty.call(s,c)&&gu(s[c]))return!0;return!1}function Kg(s){const i=[],c=s.data,r=s;return r.data=nr(c,i),r.attachments=i.length,{packet:r,buffers:i}}function nr(s,i){if(!s)return s;if(yr(s)){const c={_placeholder:!0,num:i.length};return i.push(s),c}else if(Array.isArray(s)){const c=new Array(s.length);for(let r=0;r<s.length;r++)c[r]=nr(s[r],i);return c}else if(typeof s=="object"&&!(s instanceof Date)){const c={};for(const r in s)Object.prototype.hasOwnProperty.call(s,r)&&(c[r]=nr(s[r],i));return c}return s}function Jg(s,i){return s.data=lr(s.data,i),delete s.attachments,s}function lr(s,i){if(!s)return s;if(s&&s._placeholder===!0){if(typeof s.num=="number"&&s.num>=0&&s.num<i.length)return i[s.num];throw new Error("illegal attachments")}else if(Array.isArray(s))for(let c=0;c<s.length;c++)s[c]=lr(s[c],i);else if(typeof s=="object")for(const c in s)Object.prototype.hasOwnProperty.call(s,c)&&(s[c]=lr(s[c],i));return s}const $g=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var vt;(function(s){s[s.CONNECT=0]="CONNECT",s[s.DISCONNECT=1]="DISCONNECT",s[s.EVENT=2]="EVENT",s[s.ACK=3]="ACK",s[s.CONNECT_ERROR=4]="CONNECT_ERROR",s[s.BINARY_EVENT=5]="BINARY_EVENT",s[s.BINARY_ACK=6]="BINARY_ACK"})(vt||(vt={}));class Wg{constructor(i){this.replacer=i}encode(i){return(i.type===vt.EVENT||i.type===vt.ACK)&&gu(i)?this.encodeAsBinary({type:i.type===vt.EVENT?vt.BINARY_EVENT:vt.BINARY_ACK,nsp:i.nsp,data:i.data,id:i.id}):[this.encodeAsString(i)]}encodeAsString(i){let c=""+i.type;return(i.type===vt.BINARY_EVENT||i.type===vt.BINARY_ACK)&&(c+=i.attachments+"-"),i.nsp&&i.nsp!=="/"&&(c+=i.nsp+","),i.id!=null&&(c+=i.id),i.data!=null&&(c+=JSON.stringify(i.data,this.replacer)),c}encodeAsBinary(i){const c=Kg(i),r=this.encodeAsString(c.packet),o=c.buffers;return o.unshift(r),o}}class vr extends Zt{constructor(i){super(),this.opts=Object.assign({reviver:void 0,maxAttachments:10},typeof i=="function"?{reviver:i}:i)}add(i){let c;if(typeof i=="string"){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");c=this.decodeString(i);const r=c.type===vt.BINARY_EVENT;r||c.type===vt.BINARY_ACK?(c.type=r?vt.EVENT:vt.ACK,this.reconstructor=new Fg(c),c.attachments===0&&super.emitReserved("decoded",c)):super.emitReserved("decoded",c)}else if(yr(i)||i.base64)if(this.reconstructor)c=this.reconstructor.takeBinaryData(i),c&&(this.reconstructor=null,super.emitReserved("decoded",c));else throw new Error("got binary data when not reconstructing a packet");else throw new Error("Unknown type: "+i)}decodeString(i){let c=0;const r={type:Number(i.charAt(0))};if(vt[r.type]===void 0)throw new Error("unknown packet type "+r.type);if(r.type===vt.BINARY_EVENT||r.type===vt.BINARY_ACK){const m=c+1;for(;i.charAt(++c)!=="-"&&c!=i.length;);const g=i.substring(m,c);if(g!=Number(g)||i.charAt(c)!=="-")throw new Error("Illegal attachments");const E=Number(g);if(!Ig(E)||E<0)throw new Error("Illegal attachments");if(E>this.opts.maxAttachments)throw new Error("too many attachments");r.attachments=E}if(i.charAt(c+1)==="/"){const m=c+1;for(;++c&&!(i.charAt(c)===","||c===i.length););r.nsp=i.substring(m,c)}else r.nsp="/";const o=i.charAt(c+1);if(o!==""&&Number(o)==o){const m=c+1;for(;++c;){const g=i.charAt(c);if(g==null||Number(g)!=g){--c;break}if(c===i.length)break}r.id=Number(i.substring(m,c+1))}if(i.charAt(++c)){const m=this.tryParse(i.substr(c));if(vr.isPayloadValid(r.type,m))r.data=m;else throw new Error("invalid payload")}return r}tryParse(i){try{return JSON.parse(i,this.opts.reviver)}catch{return!1}}static isPayloadValid(i,c){switch(i){case vt.CONNECT:return Xd(c);case vt.DISCONNECT:return c===void 0;case vt.CONNECT_ERROR:return typeof c=="string"||Xd(c);case vt.EVENT:case vt.BINARY_EVENT:return Array.isArray(c)&&(typeof c[0]=="number"||typeof c[0]=="string"&&$g.indexOf(c[0])===-1);case vt.ACK:case vt.BINARY_ACK:return Array.isArray(c)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class Fg{constructor(i){this.packet=i,this.buffers=[],this.reconPack=i}takeBinaryData(i){if(this.buffers.push(i),this.buffers.length===this.reconPack.attachments){const c=Jg(this.reconPack,this.buffers);return this.finishedReconstruction(),c}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}const Ig=Number.isInteger||function(s){return typeof s=="number"&&isFinite(s)&&Math.floor(s)===s};function Xd(s){return Object.prototype.toString.call(s)==="[object Object]"}const Pg=Object.freeze(Object.defineProperty({__proto__:null,Decoder:vr,Encoder:Wg,get PacketType(){return vt}},Symbol.toStringTag,{value:"Module"}));function Xe(s,i,c){return s.on(i,c),function(){s.off(i,c)}}const t0=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Cm extends Zt{constructor(i,c,r){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=i,this.nsp=c,r&&r.auth&&(this.auth=r.auth),this._opts=Object.assign({},r),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const i=this.io;this.subs=[Xe(i,"open",this.onopen.bind(this)),Xe(i,"packet",this.onpacket.bind(this)),Xe(i,"error",this.onerror.bind(this)),Xe(i,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected?this:(this.subEvents(),this.io._reconnecting||this.io.open(),this.io._readyState==="open"&&this.onopen(),this)}open(){return this.connect()}send(...i){return i.unshift("message"),this.emit.apply(this,i),this}emit(i,...c){var r,o,m;if(t0.hasOwnProperty(i))throw new Error('"'+i.toString()+'" is a reserved event name');if(c.unshift(i),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(c),this;const g={type:vt.EVENT,data:c};if(g.options={},g.options.compress=this.flags.compress!==!1,typeof c[c.length-1]=="function"){const R=this.ids++,C=c.pop();this._registerAckCallback(R,C),g.id=R}const E=(o=(r=this.io.engine)===null||r===void 0?void 0:r.transport)===null||o===void 0?void 0:o.writable,p=this.connected&&!(!((m=this.io.engine)===null||m===void 0)&&m._hasPingExpired());return this.flags.volatile&&!E||(p?(this.notifyOutgoingListeners(g),this.packet(g)):this.sendBuffer.push(g)),this.flags={},this}_registerAckCallback(i,c){var r;const o=(r=this.flags.timeout)!==null&&r!==void 0?r:this._opts.ackTimeout;if(o===void 0){this.acks[i]=c;return}const m=this.io.setTimeoutFn(()=>{delete this.acks[i];for(let E=0;E<this.sendBuffer.length;E++)this.sendBuffer[E].id===i&&this.sendBuffer.splice(E,1);c.call(this,new Error("operation has timed out"))},o),g=(...E)=>{this.io.clearTimeoutFn(m),c.apply(this,E)};g.withError=!0,this.acks[i]=g}emitWithAck(i,...c){return new Promise((r,o)=>{const m=(g,E)=>g?o(g):r(E);m.withError=!0,c.push(m),this.emit(i,...c)})}_addToQueue(i){let c;typeof i[i.length-1]=="function"&&(c=i.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:i,flags:Object.assign({fromQueue:!0},this.flags)};i.push((o,...m)=>(this._queue[0],o!==null?r.tryCount>this._opts.retries&&(this._queue.shift(),c&&c(o)):(this._queue.shift(),c&&c(null,...m)),r.pending=!1,this._drainQueue())),this._queue.push(r),this._drainQueue()}_drainQueue(i=!1){if(!this.connected||this._queue.length===0)return;const c=this._queue[0];c.pending&&!i||(c.pending=!0,c.tryCount++,this.flags=c.flags,this.emit.apply(this,c.args))}packet(i){i.nsp=this.nsp,this.io._packet(i)}onopen(){typeof this.auth=="function"?this.auth(i=>{this._sendConnectPacket(i)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(i){this.packet({type:vt.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},i):i})}onerror(i){this.connected||this.emitReserved("connect_error",i)}onclose(i,c){this.connected=!1,delete this.id,this.emitReserved("disconnect",i,c),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(i=>{if(!this.sendBuffer.some(r=>String(r.id)===i)){const r=this.acks[i];delete this.acks[i],r.withError&&r.call(this,new Error("socket has been disconnected"))}})}onpacket(i){if(i.nsp===this.nsp)switch(i.type){case vt.CONNECT:i.data&&i.data.sid?this.onconnect(i.data.sid,i.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case vt.EVENT:case vt.BINARY_EVENT:this.onevent(i);break;case vt.ACK:case vt.BINARY_ACK:this.onack(i);break;case vt.DISCONNECT:this.ondisconnect();break;case vt.CONNECT_ERROR:this.destroy();const r=new Error(i.data.message);r.data=i.data.data,this.emitReserved("connect_error",r);break}}onevent(i){const c=i.data||[];i.id!=null&&c.push(this.ack(i.id)),this.connected?this.emitEvent(c):this.receiveBuffer.push(Object.freeze(c))}emitEvent(i){if(this._anyListeners&&this._anyListeners.length){const c=this._anyListeners.slice();for(const r of c)r.apply(this,i)}super.emit.apply(this,i),this._pid&&i.length&&typeof i[i.length-1]=="string"&&(this._lastOffset=i[i.length-1])}ack(i){const c=this;let r=!1;return function(...o){r||(r=!0,c.packet({type:vt.ACK,id:i,data:o}))}}onack(i){const c=this.acks[i.id];typeof c=="function"&&(delete this.acks[i.id],c.withError&&i.data.unshift(null),c.apply(this,i.data))}onconnect(i,c){this.id=i,this.recovered=c&&this._pid===c,this._pid=c,this.connected=!0,this.emitBuffered(),this._drainQueue(!0),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach(i=>this.emitEvent(i)),this.receiveBuffer=[],this.sendBuffer.forEach(i=>{this.notifyOutgoingListeners(i),this.packet(i)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(i=>i()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:vt.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(i){return this.flags.compress=i,this}get volatile(){return this.flags.volatile=!0,this}timeout(i){return this.flags.timeout=i,this}onAny(i){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(i),this}prependAny(i){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(i),this}offAny(i){if(!this._anyListeners)return this;if(i){const c=this._anyListeners;for(let r=0;r<c.length;r++)if(i===c[r])return c.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(i){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(i),this}prependAnyOutgoing(i){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(i),this}offAnyOutgoing(i){if(!this._anyOutgoingListeners)return this;if(i){const c=this._anyOutgoingListeners;for(let r=0;r<c.length;r++)if(i===c[r])return c.splice(r,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(i){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const c=this._anyOutgoingListeners.slice();for(const r of c)r.apply(this,i.data)}}}function $l(s){s=s||{},this.ms=s.min||100,this.max=s.max||1e4,this.factor=s.factor||2,this.jitter=s.jitter>0&&s.jitter<=1?s.jitter:0,this.attempts=0}$l.prototype.duration=function(){var s=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var i=Math.random(),c=Math.floor(i*this.jitter*s);s=(Math.floor(i*10)&1)==0?s-c:s+c}return Math.min(s,this.max)|0};$l.prototype.reset=function(){this.attempts=0};$l.prototype.setMin=function(s){this.ms=s};$l.prototype.setMax=function(s){this.max=s};$l.prototype.setJitter=function(s){this.jitter=s};class ar extends Zt{constructor(i,c){var r;super(),this.nsps={},this.subs=[],i&&typeof i=="object"&&(c=i,i=void 0),c=c||{},c.path=c.path||"/socket.io",this.opts=c,Tu(this,c),this.reconnection(c.reconnection!==!1),this.reconnectionAttempts(c.reconnectionAttempts||1/0),this.reconnectionDelay(c.reconnectionDelay||1e3),this.reconnectionDelayMax(c.reconnectionDelayMax||5e3),this.randomizationFactor((r=c.randomizationFactor)!==null&&r!==void 0?r:.5),this.backoff=new $l({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(c.timeout==null?2e4:c.timeout),this._readyState="closed",this.uri=i;const o=c.parser||Pg;this.encoder=new o.Encoder,this.decoder=new o.Decoder,this._autoConnect=c.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(i){return arguments.length?(this._reconnection=!!i,i||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(i){return i===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=i,this)}reconnectionDelay(i){var c;return i===void 0?this._reconnectionDelay:(this._reconnectionDelay=i,(c=this.backoff)===null||c===void 0||c.setMin(i),this)}randomizationFactor(i){var c;return i===void 0?this._randomizationFactor:(this._randomizationFactor=i,(c=this.backoff)===null||c===void 0||c.setJitter(i),this)}reconnectionDelayMax(i){var c;return i===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=i,(c=this.backoff)===null||c===void 0||c.setMax(i),this)}timeout(i){return arguments.length?(this._timeout=i,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(i){if(~this._readyState.indexOf("open"))return this;this.engine=new Gg(this.uri,this.opts);const c=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const o=Xe(c,"open",function(){r.onopen(),i&&i()}),m=E=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",E),i?i(E):this.maybeReconnectOnOpen()},g=Xe(c,"error",m);if(this._timeout!==!1){const E=this._timeout,p=this.setTimeoutFn(()=>{o(),m(new Error("timeout")),c.close()},E);this.opts.autoUnref&&p.unref(),this.subs.push(()=>{this.clearTimeoutFn(p)})}return this.subs.push(o),this.subs.push(g),this}connect(i){return this.open(i)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const i=this.engine;this.subs.push(Xe(i,"ping",this.onping.bind(this)),Xe(i,"data",this.ondata.bind(this)),Xe(i,"error",this.onerror.bind(this)),Xe(i,"close",this.onclose.bind(this)),Xe(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(i){try{this.decoder.add(i)}catch(c){this.onclose("parse error",c)}}ondecoded(i){Eu(()=>{this.emitReserved("packet",i)},this.setTimeoutFn)}onerror(i){this.emitReserved("error",i)}socket(i,c){let r=this.nsps[i];return r?this._autoConnect&&!r.active&&r.connect():(r=new Cm(this,i,c),this.nsps[i]=r),r}_destroy(i){const c=Object.keys(this.nsps);for(const r of c)if(this.nsps[r].active)return;this._close()}_packet(i){const c=this.encoder.encode(i);for(let r=0;r<c.length;r++)this.engine.write(c[r],i.options)}cleanup(){this.subs.forEach(i=>i()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(i,c){var r;this.cleanup(),(r=this.engine)===null||r===void 0||r.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",i,c),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const i=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const c=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn(()=>{i.skipReconnect||(this.emitReserved("reconnect_attempt",i.backoff.attempts),!i.skipReconnect&&i.open(o=>{o?(i._reconnecting=!1,i.reconnect(),this.emitReserved("reconnect_error",o)):i.onreconnect()}))},c);this.opts.autoUnref&&r.unref(),this.subs.push(()=>{this.clearTimeoutFn(r)})}}onreconnect(){const i=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",i)}}const Va={};function bu(s,i){typeof s=="object"&&(i=s,s=void 0),i=i||{};const c=Xg(s,i.path||"/socket.io"),r=c.source,o=c.id,m=c.path,g=Va[o]&&m in Va[o].nsps,E=i.forceNew||i["force new connection"]||i.multiplex===!1||g;let p;return E?p=new ar(r,i):(Va[o]||(Va[o]=new ar(r,i)),p=Va[o]),c.query&&!i.query&&(i.query=c.queryKey),p.socket(c.path,i)}Object.assign(bu,{Manager:ar,Socket:Cm,io:bu,connect:bu});var Su={exports:{}},e0=Su.exports,Qd;function n0(){return Qd||(Qd=1,(function(s,i){(function(c,r){s.exports=r()})(e0,(function(){var c=1e3,r=6e4,o=36e5,m="millisecond",g="second",E="minute",p="hour",S="day",R="week",C="month",X="quarter",F="year",U="date",q="Invalid Date",V=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,et=/\[([^\]]+)]|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,$={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(P){var Q=["th","st","nd","rd"],_=P%100;return"["+P+(Q[(_-20)%10]||Q[_]||Q[0])+"]"}},lt=function(P,Q,_){var j=String(P);return!j||j.length>=Q?P:""+Array(Q+1-j.length).join(_)+P},pt={s:lt,z:function(P){var Q=-P.utcOffset(),_=Math.abs(Q),j=Math.floor(_/60),w=_%60;return(Q<=0?"+":"-")+lt(j,2,"0")+":"+lt(w,2,"0")},m:function P(Q,_){if(Q.date()<_.date())return-P(_,Q);var j=12*(_.year()-Q.year())+(_.month()-Q.month()),w=Q.clone().add(j,C),k=_-w<0,Z=Q.clone().add(j+(k?-1:1),C);return+(-(j+(_-w)/(k?w-Z:Z-w))||0)},a:function(P){return P<0?Math.ceil(P)||0:Math.floor(P)},p:function(P){return{M:C,y:F,w:R,d:S,D:U,h:p,m:E,s:g,ms:m,Q:X}[P]||String(P||"").toLowerCase().replace(/s$/,"")},u:function(P){return P===void 0}},Ct="en",gt={};gt[Ct]=$;var at="$isDayjsObject",Gt=function(P){return P instanceof Ht||!(!P||!P[at])},It=function P(Q,_,j){var w;if(!Q)return Ct;if(typeof Q=="string"){var k=Q.toLowerCase();gt[k]&&(w=k),_&&(gt[k]=_,w=k);var Z=Q.split("-");if(!w&&Z.length>1)return P(Z[0])}else{var v=Q.name;gt[v]=Q,w=v}return!j&&w&&(Ct=w),w||!j&&Ct},bt=function(P,Q){if(Gt(P))return P.clone();var _=typeof Q=="object"?Q:{};return _.date=P,_.args=arguments,new Ht(_)},st=pt;st.l=It,st.i=Gt,st.w=function(P,Q){return bt(P,{locale:Q.$L,utc:Q.$u,x:Q.$x,$offset:Q.$offset})};var Ht=(function(){function P(_){this.$L=It(_.locale,null,!0),this.parse(_),this.$x=this.$x||_.x||{},this[at]=!0}var Q=P.prototype;return Q.parse=function(_){this.$d=(function(j){var w=j.date,k=j.utc;if(w===null)return new Date(NaN);if(st.u(w))return new Date;if(w instanceof Date)return new Date(w);if(typeof w=="string"&&!/Z$/i.test(w)){var Z=w.match(V);if(Z){var v=Z[2]-1||0,M=(Z[7]||"0").substring(0,3);return k?new Date(Date.UTC(Z[1],v,Z[3]||1,Z[4]||0,Z[5]||0,Z[6]||0,M)):new Date(Z[1],v,Z[3]||1,Z[4]||0,Z[5]||0,Z[6]||0,M)}}return new Date(w)})(_),this.init()},Q.init=function(){var _=this.$d;this.$y=_.getFullYear(),this.$M=_.getMonth(),this.$D=_.getDate(),this.$W=_.getDay(),this.$H=_.getHours(),this.$m=_.getMinutes(),this.$s=_.getSeconds(),this.$ms=_.getMilliseconds()},Q.$utils=function(){return st},Q.isValid=function(){return this.$d.toString()!==q},Q.isSame=function(_,j){var w=bt(_);return this.startOf(j)<=w&&w<=this.endOf(j)},Q.isAfter=function(_,j){return bt(_)<this.startOf(j)},Q.isBefore=function(_,j){return this.endOf(j)<bt(_)},Q.$g=function(_,j,w){return st.u(_)?this[j]:this.set(w,_)},Q.unix=function(){return Math.floor(this.valueOf()/1e3)},Q.valueOf=function(){return this.$d.getTime()},Q.startOf=function(_,j){var w=this,k=!!st.u(j)||j,Z=st.p(_),v=function(H,K){var Rt=st.w(w.$u?Date.UTC(w.$y,K,H):new Date(w.$y,K,H),w);return k?Rt:Rt.endOf(S)},M=function(H,K){return st.w(w.toDate()[H].apply(w.toDate("s"),(k?[0,0,0,0]:[23,59,59,999]).slice(K)),w)},Y=this.$W,G=this.$M,I=this.$D,it="set"+(this.$u?"UTC":"");switch(Z){case F:return k?v(1,0):v(31,11);case C:return k?v(1,G):v(0,G+1);case R:var ft=this.$locale().weekStart||0,Bt=(Y<ft?Y+7:Y)-ft;return v(k?I-Bt:I+(6-Bt),G);case S:case U:return M(it+"Hours",0);case p:return M(it+"Minutes",1);case E:return M(it+"Seconds",2);case g:return M(it+"Milliseconds",3);default:return this.clone()}},Q.endOf=function(_){return this.startOf(_,!1)},Q.$set=function(_,j){var w,k=st.p(_),Z="set"+(this.$u?"UTC":""),v=(w={},w[S]=Z+"Date",w[U]=Z+"Date",w[C]=Z+"Month",w[F]=Z+"FullYear",w[p]=Z+"Hours",w[E]=Z+"Minutes",w[g]=Z+"Seconds",w[m]=Z+"Milliseconds",w)[k],M=k===S?this.$D+(j-this.$W):j;if(k===C||k===F){var Y=this.clone().set(U,1);Y.$d[v](M),Y.init(),this.$d=Y.set(U,Math.min(this.$D,Y.daysInMonth())).$d}else v&&this.$d[v](M);return this.init(),this},Q.set=function(_,j){return this.clone().$set(_,j)},Q.get=function(_){return this[st.p(_)]()},Q.add=function(_,j){var w,k=this;_=Number(_);var Z=st.p(j),v=function(G){var I=bt(k);return st.w(I.date(I.date()+Math.round(G*_)),k)};if(Z===C)return this.set(C,this.$M+_);if(Z===F)return this.set(F,this.$y+_);if(Z===S)return v(1);if(Z===R)return v(7);var M=(w={},w[E]=r,w[p]=o,w[g]=c,w)[Z]||1,Y=this.$d.getTime()+_*M;return st.w(Y,this)},Q.subtract=function(_,j){return this.add(-1*_,j)},Q.format=function(_){var j=this,w=this.$locale();if(!this.isValid())return w.invalidDate||q;var k=_||"YYYY-MM-DDTHH:mm:ssZ",Z=st.z(this),v=this.$H,M=this.$m,Y=this.$M,G=w.weekdays,I=w.months,it=w.meridiem,ft=function(K,Rt,ae,Qe){return K&&(K[Rt]||K(j,k))||ae[Rt].slice(0,Qe)},Bt=function(K){return st.s(v%12||12,K,"0")},H=it||function(K,Rt,ae){var Qe=K<12?"AM":"PM";return ae?Qe.toLowerCase():Qe};return k.replace(et,(function(K,Rt){return Rt||(function(ae){switch(ae){case"YY":return String(j.$y).slice(-2);case"YYYY":return st.s(j.$y,4,"0");case"M":return Y+1;case"MM":return st.s(Y+1,2,"0");case"MMM":return ft(w.monthsShort,Y,I,3);case"MMMM":return ft(I,Y);case"D":return j.$D;case"DD":return st.s(j.$D,2,"0");case"d":return String(j.$W);case"dd":return ft(w.weekdaysMin,j.$W,G,2);case"ddd":return ft(w.weekdaysShort,j.$W,G,3);case"dddd":return G[j.$W];case"H":return String(v);case"HH":return st.s(v,2,"0");case"h":return Bt(1);case"hh":return Bt(2);case"a":return H(v,M,!0);case"A":return H(v,M,!1);case"m":return String(M);case"mm":return st.s(M,2,"0");case"s":return String(j.$s);case"ss":return st.s(j.$s,2,"0");case"SSS":return st.s(j.$ms,3,"0");case"Z":return Z}return null})(K)||Z.replace(":","")}))},Q.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},Q.diff=function(_,j,w){var k,Z=this,v=st.p(j),M=bt(_),Y=(M.utcOffset()-this.utcOffset())*r,G=this-M,I=function(){return st.m(Z,M)};switch(v){case F:k=I()/12;break;case C:k=I();break;case X:k=I()/3;break;case R:k=(G-Y)/6048e5;break;case S:k=(G-Y)/864e5;break;case p:k=G/o;break;case E:k=G/r;break;case g:k=G/c;break;default:k=G}return w?k:st.a(k)},Q.daysInMonth=function(){return this.endOf(C).$D},Q.$locale=function(){return gt[this.$L]},Q.locale=function(_,j){if(!_)return this.$L;var w=this.clone(),k=It(_,j,!0);return k&&(w.$L=k),w},Q.clone=function(){return st.w(this.$d,this)},Q.toDate=function(){return new Date(this.valueOf())},Q.toJSON=function(){return this.isValid()?this.toISOString():null},Q.toISOString=function(){return this.$d.toISOString()},Q.toString=function(){return this.$d.toUTCString()},P})(),me=Ht.prototype;return bt.prototype=me,[["$ms",m],["$s",g],["$m",E],["$H",p],["$W",S],["$M",C],["$y",F],["$D",U]].forEach((function(P){me[P[1]]=function(Q){return this.$g(Q,P[0],P[1])}})),bt.extend=function(P,Q){return P.$i||(P(Q,Ht,bt),P.$i=!0),bt},bt.locale=It,bt.isDayjs=Gt,bt.unix=function(P){return bt(1e3*P)},bt.en=gt[Ct],bt.Ls=gt,bt.p={},bt}))})(Su)),Su.exports}var l0=n0();const a0=ur(l0);let Nm="/api";Nm="/api";async function Ft(s,i){const c=localStorage.getItem("token"),r={"Content-Type":"application/json",...c?{"user-token":c}:{},...(i==null?void 0:i.headers)||{}},m=await(await fetch(`${Nm}${s}`,{...i,headers:r})).json();return m!=null&&m.success?m:Promise.reject(m)}async function i0(s,i){return Ft("/login",{method:"POST",body:JSON.stringify({username:s,password:i})})}async function u0(s,i,c){return Ft("/register",{method:"POST",body:JSON.stringify({username:s,password:i,inviteCode:c})})}async function s0(s,i=["."],c="",r=void 0){return Ft("/addTask",{method:"POST",body:JSON.stringify({branch:s,packagePaths:i,commit:c,notify:r})})}async function Vd(){return Ft("/getAllPackage")}async function c0(){return Ft("/refreshPackages")}async function r0(){return Ft("/getAllLog")}async function f0(){return Ft("/getAllBackup")}async function kd(s){return Ft("/cancelTask",{method:"POST",body:JSON.stringify({taskId:s})})}async function o0(s){return Ft("/restore",{method:"POST",body:JSON.stringify({fileName:s})})}async function h0(){return Ft("/getAllCommand")}async function d0(){return Ft("/getNoticeList")}async function m0(s,i){return Ft("/manualTriggerNotice",{method:"POST",body:JSON.stringify({httpsOrigin:s,branch:i})})}async function y0(s){return Ft("/getUserInfo")}async function Om(){return Ft("/getAllUsers")}async function v0(s,i){return Ft("/updateUserRole",{method:"POST",body:JSON.stringify({userId:s,newRole:i})})}async function zm(){return Ft("/inviteCodes")}async function p0(){return Ft("/generateInviteCode",{method:"POST"})}async function Zd(){return Ft("/getPendingTasks")}const g0=(s=+Date.now())=>a0(s).format("YYYY-MM-DD HH:mm:ss");function b0(){const s=N.useRef(null),i=N.useRef(""),c=N.useRef(""),r=N.useRef(""),[o,m]=N.useState([]),[g,E]=N.useState([]),[p,S]=N.useState([]),[R,C]=N.useState([]);N.useEffect(()=>{const U=localStorage.getItem("token")||"";i.current=localStorage.getItem("userId")||"";const q=bu({path:"/ws/",auth:{token:U,lastChatId:c.current,lastBuildId:r.current},reconnectionDelayMax:1e4});s.current=q,q.on("connect_error",$=>{$.message==="invalid token"&&(localStorage.removeItem("token"),localStorage.removeItem("userId"),window.location.href="/login")}),q.on("on:msg-getAllChat",$=>{m(lt=>{const pt=new Set(lt.map(at=>at.id)),Ct=$.filter(at=>!pt.has(at.id)),gt=[...lt,...Ct];return gt.length&&(c.current=gt[gt.length-1].id),gt})}),q.on("on:msg-getAllBuild",$=>{E(lt=>{const pt=new Set(lt.map(at=>at.id)),Ct=$.filter(at=>!pt.has(at.id)),gt=[...lt,...Ct];return gt.length&&(r.current=gt[gt.length-1].id),gt})}),q.on("on:msg-chat",$=>{m(lt=>[...lt,$]),c.current=$.id}),q.on("on:msg-build",$=>{E(lt=>{const pt=lt.find(Ct=>Ct.taskId===$.taskId);return pt?(pt.msg=pt.msg+$.msg,pt.task=$.task,[...lt]):[...lt,$]}),r.current=$.id}),q.io.on("reconnect",()=>{q.auth={...q.auth,lastChatId:c.current,lastBuildId:r.current}});const V=()=>{Zd().then($=>C($.list||[])).catch(()=>{})};q.on("on:pending-tasks-update",V),Zd().then($=>C($.list||[])).catch(()=>{}),h0().then($=>S($.list||[])).catch(()=>{});const et=setInterval(V,1e4);return()=>{q.disconnect(),clearInterval(et)}},[]);const X=N.useCallback(U=>{var q;!((q=s.current)!=null&&q.id)||!U||s.current.emit("on:msg-chat",{ctxType:"ctx:txt",msg:U})},[]),F=N.useCallback(U=>{var V;if(!((V=s.current)!=null&&V.id)||!U.length)return;const q=Array.from(U).map(et=>({file:et,name:et.name,size:et.size,type:et.type}));s.current.emit("on:msg-chat",{ctxType:"ctx:imgs",files:q})},[]);return{chatMessages:o,buildMessages:g,commandList:p,pendingTasks:R,sendMessage:X,sendImages:F,userIdRef:i,formatTime:g0}}function Kd(s){const i=N.useRef(null),c=N.useRef(!0),r=(o=!1)=>{i.current&&(c.current||o)&&setTimeout(()=>{var m;(m=i.current)==null||m.scrollTo({top:i.current.scrollHeight,behavior:"smooth"})},50)};return N.useEffect(()=>{const o=i.current;if(!o)return;const m=()=>{c.current=o.scrollHeight-o.offsetHeight-o.scrollTop<80,c.current&&(s==null||s())};return o.addEventListener("scroll",m),()=>o.removeEventListener("scroll",m)},[s]),[i,r,c]}const S0="_modalRoot_1nlw0_1",_0={modalRoot:S0},E0="_modalContainerShow_naiks_21",T0="_modalContainerHide_naiks_24",x0="_closing_naiks_28",Wc={modalContainerShow:E0,modalContainerHide:T0,closing:x0},A0=(s="modal")=>`${s}_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;function C0({modalId:s,children:i,width:c="520px",isClickMaskClose:r=!0,onClose:o,isShow:m,zIndex:g,onHide:E,onRemove:p,getTopId:S}){const R=()=>{o==null||o(),E(s)};return N.useEffect(()=>{const C=X=>{X.key==="Escape"&&S()===s&&R()};return document.addEventListener("keydown",C),()=>document.removeEventListener("keydown",C)},[s]),d.jsx("div",{className:`${_0.modalRoot} ${m?"":Wc.closing}`,style:{zIndex:g},onClick:()=>r&&R(),children:d.jsxs("div",{className:`modal-container ${m?Wc.modalContainerShow:Wc.modalContainerHide}`,style:{width:`min(90vw, ${c})`},onClick:C=>C.stopPropagation(),onAnimationEnd:()=>{m||p(s)},children:[d.jsx("div",{className:"modal-close-bar",children:d.jsx("button",{className:"close-btn",onClick:R,children:"✕"})}),d.jsx("div",{className:"modal-body",children:i})]})})}class N0{constructor(){Ge(this,"setList",null);Ge(this,"getList",null);Ge(this,"count",1);Ge(this,"containerRoot",null);Ge(this,"pendingItems",[])}inject(i,c){var r;this.setList=i,this.getList=c,this.pendingItems.length>0&&((r=this.setList)==null||r.call(this,o=>[...o,...this.pendingItems]),this.pendingItems=[])}show(i,c={}){var E,p;this.ensureContainer();const r=A0(`modal_${this.count++}`),o=((E=this.getList)==null?void 0:E.call(this))||[],m=()=>this.hide(r),g={modalId:r,children:i,width:c.width,isClickMaskClose:c.isClickMaskClose,onClose:c.onClose,isShow:!0,zIndex:1e3+o.length};return this.setList?(p=this.setList)==null||p.call(this,S=>[...S,g]):this.pendingItems.push(g),{modalId:r,close:m}}hide(i){var c;(c=this.setList)==null||c.call(this,r=>r.map(o=>o.modalId===i?{...o,isShow:!1}:o))}hideTop(){var c;const i=((c=this.getList)==null?void 0:c.call(this))||[];i.length!==0&&this.hide(i[i.length-1].modalId)}hideAll(){var i;(i=this.setList)==null||i.call(this,[])}remove(i){var c;(c=this.setList)==null||c.call(this,r=>r.filter(o=>o.modalId!==i))}getTopId(){var c;const i=((c=this.getList)==null?void 0:c.call(this))||[];return i.length>0?i[i.length-1].modalId:void 0}ensureContainer(){if(this.containerRoot)return;const i=document.createElement("div");i.id="__stack_modal_container__",document.body.appendChild(i),this.containerRoot=cr.createRoot(i),this.containerRoot.render(d.jsx(O0,{manager:this}))}}const Ce=new N0;function O0({manager:s}){const[i,c]=N.useState([]);return N.useEffect(()=>{s.inject(c,()=>i)}),N.useEffect(()=>{document.body.style.overflow=i.length>0?"hidden":""},[i.length]),d.jsx(d.Fragment,{children:i.map(r=>d.jsx(C0,{...r,onHide:o=>s.hide(o),onRemove:o=>s.remove(o),getTopId:()=>s.getTopId()},r.modalId))})}const z0="_confirmWrap_1b2fb_1",M0={confirmWrap:z0};function R0({title:s,desc:i,onOk:c,onCancel:r}){return d.jsxs("div",{className:M0.confirmWrap,children:[d.jsx("div",{className:"confirm-title",children:s}),i&&d.jsx("div",{className:"confirm-desc",children:i}),d.jsxs("div",{className:"confirm-actions",children:[d.jsx("button",{className:"btn-cancel",onClick:r,children:"取消"}),d.jsx("button",{className:"btn-ok",onClick:c,children:"确认"})]})]})}function Kl(s){const{close:i}=Ce.show(d.jsx(R0,{title:s.title,desc:s.desc,onOk:()=>{var c;(c=s.onOk)==null||c.call(s),i()},onCancel:()=>{var c;(c=s.onCancel)==null||c.call(s),i()}}),{width:"400px",isClickMaskClose:!1})}const j0="_toastShow_sls7c_21",D0="_toastHide_sls7c_24",U0="_toastRoot_sls7c_27",ir={toastShow:j0,toastHide:D0,toastRoot:U0};function B0({item:s,onHide:i,onRemove:c}){return N.useEffect(()=>{const r=setTimeout(()=>i(s.id),2e3);return()=>clearTimeout(r)},[s.id]),d.jsx("div",{className:`toast-item ${s.type==="error"?"toast-error":"toast-success"} ${s.isShow?ir.toastShow:ir.toastHide}`,onAnimationEnd:()=>{s.isShow||c(s.id)},children:s.msg})}class w0{constructor(){Ge(this,"setList",null);Ge(this,"getList",null);Ge(this,"uid",0);Ge(this,"containerRoot",null);Ge(this,"pendingItems",[])}inject(i,c){var r;this.setList=i,this.getList=c,this.pendingItems.length>0&&((r=this.setList)==null||r.call(this,o=>[...o,...this.pendingItems]),this.pendingItems=[])}add(i,c="success"){var m;this.ensureContainer();const o={id:++this.uid,msg:i,type:c,isShow:!0};this.setList?(m=this.setList)==null||m.call(this,g=>[...g,o]):this.pendingItems.push(o)}hide(i){var c;(c=this.setList)==null||c.call(this,r=>r.map(o=>o.id===i?{...o,isShow:!1}:o))}remove(i){var c;(c=this.setList)==null||c.call(this,r=>r.filter(o=>o.id!==i))}ensureContainer(){if(this.containerRoot)return;const i=document.createElement("div");i.id="__toast_container__",document.body.appendChild(i),this.containerRoot=cr.createRoot(i),this.containerRoot.render(d.jsx(L0,{manager:this}))}}const Jd=new w0;function L0({manager:s}){const[i,c]=N.useState([]);return N.useEffect(()=>{s.inject(c,()=>i)}),d.jsx("div",{className:ir.toastRoot,children:d.jsx("div",{className:"toast-container",children:i.map(r=>d.jsx(B0,{item:r,onHide:o=>s.hide(o),onRemove:o=>s.remove(o)},r.id))})})}const Tt={msg:s=>Jd.add(s,"success"),err:s=>Jd.add(s,"error")};function H0({urls:s,initialIndex:i=0}){const[c,r]=N.useState(i),o=s[c],m=q0(o),g=s.length,E=N.useCallback(()=>r(S=>Math.max(0,S-1)),[]),p=N.useCallback(()=>r(S=>Math.min(g-1,S+1)),[g]);return N.useEffect(()=>{const S=R=>{R.key==="ArrowLeft"?E():R.key==="ArrowRight"&&p()};return document.addEventListener("keydown",S),()=>document.removeEventListener("keydown",S)},[E,p]),d.jsxs("div",{className:"preview-wrap",children:[d.jsx("div",{className:"preview-media",children:m?d.jsx("video",{loop:!0,autoPlay:!0,playsInline:!0,src:o,className:"preview-video"},o):d.jsx("img",{src:o,alt:"",className:"preview-img"},o)}),g>1&&d.jsxs(d.Fragment,{children:[d.jsx("button",{className:"preview-arrow preview-prev",onClick:E,disabled:c===0,children:"‹"}),d.jsx("button",{className:"preview-arrow preview-next",onClick:p,disabled:c===g-1,children:"›"}),d.jsxs("div",{className:"preview-indicator",children:[c+1," / ",g]})]})]})}function q0(s){return[".mp4",".avi",".mov",".mkv",".flv",".wmv"].some(i=>s.toLowerCase().endsWith(i))}function Y0(s,i=0){s.length&&Ce.show(d.jsx(H0,{urls:s,initialIndex:i}),{width:"90vw",isClickMaskClose:!0})}const G0="_userModal_bfbaq_1",X0={userModal:G0};function Q0({user:s}){const i=s.name.charAt(0).toUpperCase(),c=async()=>{try{await navigator.clipboard.writeText(s.id),Tt.msg("ID 已复制")}catch{const r=document.createElement("textarea");r.value=s.id,document.body.appendChild(r),r.select(),document.execCommand("copy"),document.body.removeChild(r),Tt.msg("ID 已复制")}};return d.jsxs("div",{className:X0.userModal,children:[d.jsx("h3",{children:"用户信息"}),d.jsx("div",{className:"user-avatar-large",children:i}),d.jsxs("div",{className:"user-info",children:[d.jsxs("div",{className:"info-row",children:[d.jsx("span",{className:"label",children:"用户名:"}),d.jsx("span",{className:"value",children:s.name})]}),d.jsxs("div",{className:"info-row",children:[d.jsx("span",{className:"label",children:"用户ID:"}),d.jsxs("span",{className:"value code-id",children:[s.id,d.jsx("button",{className:"copy-icon",onClick:c,title:"复制",children:"📋"})]})]}),d.jsxs("div",{className:"info-row",children:[d.jsx("span",{className:"label",children:"角色:"}),d.jsx("span",{className:`value role-tag ${s.role}`,children:s.role})]})]}),d.jsx("button",{className:"btn-close",onClick:()=>Ce.hideTop(),children:"关闭"})]})}const V0="_select_f48hn_1",k0={select:V0};function Mm({options:s,value:i="",placeholder:c="请选择",onChange:r,disabled:o=!1}){const[m,g]=N.useState(!1),E=N.useRef(null),p=N.useRef(null),[S,R]=N.useState({}),C=N.useCallback(()=>{var lt;if(!E.current)return;const q=E.current.getBoundingClientRect(),V=window.innerHeight-q.bottom-4,et=((lt=p.current)==null?void 0:lt.offsetHeight)??0,$=et>0&&V<et&&q.top>V;R({position:"fixed",top:$?void 0:q.bottom+4,bottom:$?window.innerHeight-q.top+4:void 0,left:q.left,width:q.width,zIndex:99999})},[]),X=N.useCallback(q=>{q.key==="Escape"&&g(!1)},[]);N.useEffect(()=>{if(m)return C(),window.addEventListener("scroll",C,!0),window.addEventListener("resize",C),window.addEventListener("keydown",X),()=>{window.removeEventListener("scroll",C,!0),window.removeEventListener("resize",C),window.removeEventListener("keydown",X)}},[m,C,X]),N.useEffect(()=>{if(!m)return;const q=V=>{const et=V.target;E.current&&E.current.contains(et)||p.current&&p.current.contains(et)||g(!1)};return document.addEventListener("mousedown",q),()=>document.removeEventListener("mousedown",q)},[m]);const F=s.find(q=>q.value===i),U=F?F.label:c;return d.jsxs("div",{ref:E,className:k0.select,children:[d.jsxs("button",{className:`select-trigger ${m?"select-trigger-open":""} ${o?"select-trigger-disabled":""}`,onClick:()=>!o&&g(q=>!q),type:"button",disabled:o,children:[d.jsx("span",{className:`select-trigger-text ${F?"":"select-placeholder"}`,children:U}),d.jsx("span",{className:`select-arrow ${m?"select-arrow-open":""}`,children:"‹"})]}),m&&!o&&Pd.createPortal(d.jsx("div",{ref:p,className:"select-dropdown",style:S,children:s.map(q=>d.jsx("div",{className:`select-option ${q.value===i?"select-option-active":""}`,onClick:()=>{r==null||r(q.value),g(!1)},children:q.label},q.value))}),document.body)]})}const Z0="_permissionModal_lkmtn_1",K0={permissionModal:Z0};function J0({currentUser:s,initialUsers:i}){const[c,r]=N.useState(i),[o,m]=N.useState(""),[g,E]=N.useState(null),p=N.useRef(new Map);N.useEffect(()=>{r(i)},[i]);const S=o?c.filter(U=>U.id.includes(o)||U.name.includes(o)):c,R=()=>s.role==="super"?[{value:"super",label:"Super"},{value:"admin",label:"Admin"},{value:"user",label:"User"}]:s.role==="admin"?[{value:"admin",label:"Admin"},{value:"user",label:"User"}]:[],C=async(U,q)=>{E(U);try{if((await v0(U,q)).success){Tt.msg("角色更新成功");const et=await Om();et.success&&et.data&&(r(et.data),p.current.clear())}}catch(V){Tt.err((V==null?void 0:V.message)||"角色更新失败")}finally{E(null)}},X=N.useCallback((U,q)=>{p.current.set(U,q),C(U,q)},[]),F=N.useCallback(U=>p.current.get(U.id)??U.role,[]);return d.jsxs("div",{className:K0.permissionModal,children:[d.jsxs("h3",{children:["权限管理",d.jsxs("span",{className:"user-count",children:[c.length," 位用户"]})]}),d.jsx("div",{className:"search-bar",children:d.jsx("input",{type:"text",placeholder:"搜索用户ID或用户名",value:o,onChange:U=>m(U.target.value),autoFocus:!0})}),d.jsxs("div",{className:"user-list",children:[d.jsxs("table",{children:[d.jsx("thead",{children:d.jsxs("tr",{children:[d.jsx("th",{children:"用户名"}),d.jsx("th",{children:"角色"}),d.jsx("th",{style:{width:120},children:"操作"})]})}),d.jsx("tbody",{children:S.map(U=>d.jsxs("tr",{className:U.id===s.id?"is-current":"",children:[d.jsxs("td",{children:[d.jsx("span",{className:"user-name",children:U.name}),d.jsx("span",{className:"user-id",children:U.id})]}),d.jsx("td",{children:d.jsx("span",{className:`role-badge ${F(U)}`,children:F(U)})}),d.jsx("td",{children:d.jsx(Mm,{options:R(),value:F(U),onChange:q=>X(U.id,q),disabled:U.id===s.id||g===U.id})})]},U.id))})]}),S.length===0&&d.jsx("div",{className:"empty",children:"暂无匹配用户"})]}),d.jsx("div",{className:"footer",children:d.jsx("button",{className:"btn-close",onClick:()=>Ce.hideTop(),children:"关闭"})})]})}const $0="_inviteModal_1gxli_1",W0={inviteModal:$0};function F0({inviteCodes:s,onCodesUpdate:i}){const[c,r]=N.useState(s),[o,m]=N.useState(!1),g=N.useRef(null),E=[...c].sort((U,q)=>U.timestamp-q.timestamp),p=E.length>0?E[E.length-1]:null,S=E.slice(0,-1);N.useEffect(()=>{g.current&&(g.current.scrollTop=g.current.scrollHeight)},[c]);const R=U=>{switch(U){case 0:return{text:"未使用",cls:"status-0"};case 1:return{text:"已使用",cls:"status-1"};case 2:return{text:"已过期",cls:"status-2"};default:return{text:"未知",cls:""}}},C=U=>new Date(U).toLocaleString("zh-CN"),X=async U=>{try{await navigator.clipboard.writeText(U),Tt.msg("已复制到剪贴板")}catch{Tt.err("复制失败")}},F=async()=>{if(!o){m(!0);try{if((await p0()).success){Tt.msg("邀请码生成成功");const q=await zm();q.success&&q.data&&(r(q.data),i(q.data))}}catch(U){Tt.err((U==null?void 0:U.message)||"邀请码生成失败")}finally{m(!1)}}};return d.jsxs("div",{className:W0.inviteModal,children:[d.jsx("h3",{children:"邀请码管理"}),c.length===0?d.jsxs("div",{className:"empty-state",children:[d.jsx("div",{className:"deco",children:"🎉"}),d.jsx("p",{children:"暂无邀请码"}),d.jsx("button",{className:"btn-generate",onClick:F,disabled:o,children:o?"生成中...":"生成邀请码"}),d.jsx("span",{className:"tip",children:"点击上方按钮即可生成新的邀请码"})]}):d.jsxs(d.Fragment,{children:[p&&d.jsxs("div",{className:"latest-code",children:[d.jsx("span",{className:"badge",children:"最新"}),d.jsx("span",{className:`status-dot ${R(p.state).cls}`}),d.jsx("span",{className:"status-text",children:R(p.state).text}),d.jsx("span",{className:"code-text",children:p.code}),d.jsx("span",{className:"code-time",children:C(p.timestamp)}),d.jsx("button",{className:"copy-btn",onClick:()=>X(p.code),children:"复制"})]}),S.length>0&&d.jsx("div",{ref:g,className:"code-list",children:S.map(U=>{const q=R(U.state);return d.jsxs("div",{className:"code-item",children:[d.jsx("span",{className:`status-dot ${q.cls}`}),d.jsx("span",{className:"status-text",children:q.text}),d.jsx("span",{className:"code-text",children:U.code}),d.jsx("span",{className:"code-time",children:C(U.timestamp)}),d.jsx("button",{className:"copy-btn",onClick:()=>X(U.code),children:"复制"})]},U.code)})}),d.jsxs("div",{className:"actions",children:[d.jsx("button",{className:"btn-generate",onClick:F,disabled:o,children:o?"生成中...":"生成新的邀请码"}),d.jsx("button",{className:"btn-close",onClick:()=>Ce.hideTop(),children:"关闭"})]})]})]})}const I0="_userAvatar_9xyff_1",$d={userAvatar:I0};function P0({user:s,onUserInfo:i,onPermission:c,onInvite:r,onLogout:o}){const[m,g]=N.useState(!1),E=N.useRef(null),p=N.useRef(null),[S,R]=N.useState({}),C=N.useCallback(()=>{if(!E.current)return;const $=E.current.getBoundingClientRect();R({position:"fixed",top:$.bottom+8,right:window.innerWidth-$.right,zIndex:99999})},[]),X=N.useCallback($=>{$.key==="Escape"&&g(!1)},[]);N.useEffect(()=>{if(m)return C(),window.addEventListener("scroll",C,!0),window.addEventListener("resize",C),window.addEventListener("keydown",X),()=>{window.removeEventListener("scroll",C,!0),window.removeEventListener("resize",C),window.removeEventListener("keydown",X)}},[m,C,X]),N.useEffect(()=>{if(!m)return;const $=lt=>{const pt=lt.target;E.current&&E.current.contains(pt)||p.current&&p.current.contains(pt)||g(!1)};return document.addEventListener("mousedown",$),()=>document.removeEventListener("mousedown",$)},[m]);const F=()=>{g(!1),i()},U=()=>{g(!1),c()},q=()=>{g(!1),r()},V=()=>{g(!1),Kl({title:"确认退出登录吗?",onOk:()=>{o()}})},et=s.name.charAt(0).toUpperCase();return d.jsxs("div",{ref:E,className:$d.userAvatar,children:[d.jsx("div",{className:"avatar",onClick:()=>g($=>!$),children:et}),m&&Pd.createPortal(d.jsx("div",{ref:p,className:$d.userAvatar,style:S,children:d.jsxs("div",{className:"user-dropdown",children:[d.jsx("div",{className:"user-dropdown-item",onClick:F,children:"用户信息"}),(s.role==="admin"||s.role==="super")&&d.jsx("div",{className:"user-dropdown-item",onClick:U,children:"权限管理"}),s.role==="super"&&d.jsx("div",{className:"user-dropdown-item",onClick:q,children:"邀请码"}),d.jsx("div",{className:"user-dropdown-item logout",onClick:V,children:"退出登录"})]})}),document.body)]})}const t1="_home_8h37b_1",e1={home:t1},n1="_buildModal_1ngfz_1",l1={buildModal:n1},a1="_logModal_eochr_1",i1={logModal:a1},u1="_listModal_1td0z_1",s1={listModal:u1};function c1(s){return s.replace(/warn/ig,'<b style="color: #fdcb6e;">Warn</b>').replace(/error/ig,'<b style="color: #e17055;">Error</b>')}function r1(s){return[".mp4",".avi",".mov",".mkv",".flv",".wmv"].some(i=>s.toLowerCase().endsWith(i))}function Wd({count:s,onClick:i}){return s<=0?null:d.jsxs("div",{className:"unread-badge",onClick:i,children:["未读消息 x",s]})}function f1({msg:s,onCancel:i}){const c={1:{text:"构建中...",cls:"status-1"},2:{text:"构建成功",cls:"status-2"},3:{text:"构建失败",cls:"status-3"}},r=c[s.task.status]||c[1];return d.jsxs("div",{className:"build-card",children:[d.jsxs("div",{className:"build-card-header",children:[d.jsxs("div",{children:[d.jsx("span",{className:"name",children:s.name}),d.jsx("span",{className:"sep",children:"-"}),d.jsxs("span",{className:"branch",children:[s.task.branch," 分支"]})]}),d.jsx("div",{className:"time",children:new Date(s.timestamp).toLocaleString("zh-CN")})]}),d.jsxs("div",{className:"build-card-body",children:[d.jsxs("div",{className:"info-row",children:[d.jsxs("div",{children:["分支:",s.task.branch]}),d.jsxs("div",{children:["taskId:",s.taskId]}),d.jsxs("div",{children:["packagePath:",s.task.packagePath]}),s.task.commit&&d.jsxs("div",{children:["commit:",s.task.commit]}),d.jsxs("div",{children:["创建时间:",s.task.time]}),s.task.buildLogPath&&d.jsxs("div",{children:["构建日志:",d.jsx("a",{href:s.task.buildLogPath,target:"_blank",rel:"noreferrer",children:"查看日志"})]})]}),s.task.status===1&&s.task.buildSourceType==="buildServer"&&d.jsx("button",{className:"btn-cancel",onClick:()=>i(s.taskId),children:"取消构建"}),d.jsx("pre",{className:"build-log",dangerouslySetInnerHTML:{__html:c1(s.msg)}}),d.jsx("div",{className:`status-tag ${r.cls}`,children:r.text})]})]})}function o1({msg:s,isSelf:i,onPreview:c}){return d.jsxs("div",{className:`chat-bubble ${i?"self":""}`,children:[d.jsxs("div",{className:"bubble-header",children:[d.jsx("span",{className:`name ${i?"name-self":"name-other"}`,children:s.name||s.id}),d.jsx("span",{className:"time",children:new Date(s.timestamp).toLocaleString("zh-CN")})]}),s.msg&&d.jsx("pre",{className:`bubble-text ${i?"bubble-text-self":"bubble-text-other"}`,children:s.msg}),s.files&&s.files.length>0&&s.ctxType==="ctx:imgs"&&d.jsx("div",{className:"bubble-files",children:s.files.map((r,o)=>r1(r)?d.jsx("video",{loop:!0,muted:!0,autoPlay:!0,playsInline:!0,src:r,onClick:()=>c(s.id,o)},o):d.jsx("img",{src:r,alt:"",onClick:()=>c(s.id,o)},o))})]})}function h1(){const[s,i]=N.useState([]),[c,r]=N.useState("master"),[o,m]=N.useState(new Set),[g,E]=N.useState(""),[p,S]=N.useState(!1);N.useEffect(()=>{Vd().then(U=>i((U.list||[]).sort())).catch(()=>{})},[]);const R=g?s.filter(U=>U.toLowerCase().includes(g.toLowerCase())):s,C=()=>{m(U=>U.size>=s.length?new Set:new Set(s))},X=()=>{if(o.size===0){Tt.err("请选择仓库");return}if(!c){Tt.err("请输入分支名");return}s0(c,Array.from(o)).then(()=>{Ce.hideTop(),Tt.msg("任务添加成功")}).catch(U=>Tt.err((U==null?void 0:U.message)||"任务添加失败"))},F=async()=>{p||Kl({title:"是否确认重新扫描当前目录下的所有可构建项目?",onOk:async()=>{S(!0);try{await c0();const U=await Vd();i((U.list||[]).sort()),Tt.msg("刷新完成")}catch{Tt.err("刷新失败")}finally{S(!1)}}})};return d.jsxs("div",{className:l1.buildModal,children:[d.jsx("h3",{children:"构建项目"}),d.jsx("label",{children:"分支"}),d.jsx("input",{className:"branch-input",value:c,onChange:U=>r(U.target.value.trim()),placeholder:"输入分支名",spellCheck:!1}),d.jsxs("label",{children:["仓库",d.jsxs("span",{className:"select-count",children:["已选 ",o.size,"/",s.length]})]}),d.jsx("input",{className:"pkg-search-input",value:g,onChange:U=>E(U.target.value),placeholder:"搜索仓库名称…",spellCheck:!1}),d.jsxs("div",{className:"header-bar",children:[d.jsx("div",{className:"select-all-btn",onClick:C,children:o.size>=s.length?"取消全部":"全选"}),d.jsx("button",{className:`refresh-pkg-btn ${p?"is-refreshing":""}`,onClick:F,children:p?"刷新中...":"🔄 刷新仓库"})]}),d.jsx("div",{className:"pkg-grid",children:R.map(U=>d.jsx("div",{className:`pkg-item ${o.has(U)?"active":""}`,onClick:()=>{const q=new Set(o);q.has(U)?q.delete(U):q.add(U),m(q)},children:U},U))}),R.length===0&&d.jsx("div",{className:"empty-pkg",children:"无匹配仓库"}),d.jsx("button",{className:"btn-build",onClick:X,children:"开始构建"})]})}function d1(){var o,m,g,E;const[s,i]=N.useState([]),[c,r]=N.useState(0);return N.useEffect(()=>{r0().then(p=>{i(p.tabs||[]),r(0)})},[]),d.jsxs("div",{className:i1.logModal,children:[d.jsx("h3",{children:"Logs"}),d.jsx("div",{className:"tabs",children:s.map((p,S)=>d.jsx("div",{className:`tab-item ${c===S?"active":""}`,onClick:()=>r(S),children:p.title},S))}),d.jsxs("div",{className:"log-list",children:[(m=(o=s[c])==null?void 0:o.list)==null?void 0:m.map((p,S)=>d.jsxs("a",{href:p.path,target:"_blank",rel:"noreferrer",className:"log-item",children:[d.jsx("span",{className:"log-name",children:p.name}),d.jsx("span",{className:"log-link-icon",children:"↗"})]},S)),!((E=(g=s[c])==null?void 0:g.list)!=null&&E.length)&&d.jsx("div",{className:"empty",children:"暂无日志"})]})]})}function Fd({title:s,items:i,renderItem:c}){return d.jsxs("div",{className:s1.listModal,children:[d.jsx("h3",{children:s}),d.jsxs("div",{className:"list-items",children:[i.map((r,o)=>c(r,o)),!i.length&&d.jsx("div",{className:"empty",children:"暂无数据"})]})]})}function m1(){const{chatMessages:s,buildMessages:i,commandList:c,pendingTasks:r,sendMessage:o,sendImages:m,userIdRef:g}=b0(),[E,p]=N.useState(null),[S,R]=N.useState([]),[C,X]=N.useState([]),[F,U]=N.useState(0),[q,V]=N.useState(0),et=N.useRef(new Set),$=N.useRef(new Set);N.useEffect(()=>{y0().then(H=>{H.success&&H.data&&p(H.data)}).catch(H=>{console.error("Failed to load current user:",H)})},[]);const[lt,pt,Ct]=Kd(()=>U(0)),[gt,at,Gt]=Kd(()=>V(0)),It=[...c.map(H=>({value:H.command,label:`${H.command} - ${H.desc}`}))],[bt,st]=N.useState(""),Ht=N.useRef(null);N.useEffect(()=>{if(!s.length)return;const H=s.filter(K=>!$.current.has(K.id));if(H.forEach(K=>$.current.add(K.id)),H.length&&!Ct.current){U(K=>K+H.length);return}pt()},[s]),N.useEffect(()=>{if(!i.length)return;const H=i.filter(K=>!et.current.has(K.taskId));if(H.forEach(K=>et.current.add(K.taskId)),H.length&&!Gt.current){V(K=>K+H.length);return}at()},[i]),N.useEffect(()=>{const H=K=>{K.key==="Enter"&&K.ctrlKey&&me()};return window.addEventListener("keydown",H),()=>window.removeEventListener("keydown",H)},[bt]);const me=N.useCallback(()=>{bt.trim()&&(o(bt),st(""))},[bt,o]),P=N.useCallback(H=>{H&&o(H)},[o]),Q=N.useCallback(H=>{const K=H.target.files;K!=null&&K.length&&(m(K),H.target.value="")},[m]),_=N.useCallback(H=>{Kl({title:"是否确认取消任务?",onOk:()=>{kd(H).then(()=>Tt.msg("任务取消成功")).catch(K=>Tt.err((K==null?void 0:K.message)||"任务取消失败"))}})},[]),j=N.useCallback(H=>{Kl({title:`是否确认从队列中移除任务 ${H}?`,onOk:()=>{kd(H).then(()=>Tt.msg("已移除排队任务")).catch(K=>Tt.err((K==null?void 0:K.message)||"操作失败"))}})},[]),w=N.useCallback(H=>{H&&Kl({title:`是否确认回退 ${H} 的构建产物?回退后本次构建产物将被还原,请谨慎操作!`,onOk:()=>{o0(H).then(()=>Tt.msg("操作成功")).catch(K=>Tt.err((K==null?void 0:K.message)||"操作失败"))}})},[]),k=N.useCallback(H=>{H&&Kl({title:`是否确认通知${H.basename}项目的${H.branch}分支?`,onOk:()=>{m0(H.httpsOrigin,H.branch).then(()=>Tt.msg("操作成功")).catch(K=>Tt.err((K==null?void 0:K.message)||"操作失败"))}})},[]),Z=N.useCallback(()=>{Ce.show(d.jsx(h1,{}))},[]),v=N.useCallback(()=>{Ce.show(d.jsx(d1,{}),{width:"700px"})},[]),M=N.useCallback(()=>{f0().then(H=>{const K=H.list||[];Ce.show(d.jsx(Fd,{title:"版本回退",items:K,renderItem:(Rt,ae)=>d.jsxs("div",{className:"list-item",onClick:()=>w(Rt),children:[d.jsx("span",{className:"folder-icon",children:"📁"}),d.jsx("span",{children:Rt})]},ae)}),{width:"600px"})})},[w]),Y=N.useCallback(()=>{d0().then(H=>{const K=H.list||[];Ce.show(d.jsx(Fd,{title:"Notice Webhook",items:K,renderItem:(Rt,ae)=>d.jsxs("div",{className:"list-item",onClick:()=>k(Rt),children:[d.jsx("span",{className:Rt.branch==="master"?"branch-master":"branch-other",children:Rt.branch}),d.jsx("span",{className:"sep",children:"-"}),d.jsx("span",{children:Rt.basename})]},ae)}),{width:"600px"})})},[k]),G=N.useCallback((H,K)=>{var Qe;const Rt=[];let ae=0;for(const ye of s)if((Qe=ye.files)!=null&&Qe.length&&ye.ctxType==="ctx:imgs")for(let yn=0;yn<ye.files.length;yn++)ye.id===H&&yn===K&&(ae=Rt.length),Rt.push(ye.files[yn]);Y0(Rt,ae)},[s]),I=N.useCallback(()=>{E&&Ce.show(d.jsx(Q0,{user:E}),{width:"500px"})},[E]),it=N.useCallback(async()=>{if(E)try{const H=await Om();H.success&&H.data&&(R(H.data),Ce.show(d.jsx(J0,{currentUser:E,initialUsers:H.data}),{width:"800px"}))}catch(H){console.error("Failed to load users:",H)}},[E]),ft=N.useCallback(async()=>{if(E)try{const H=await zm();H.success&&H.data&&(X(H.data),Ce.show(d.jsx(F0,{inviteCodes:H.data,onCodesUpdate:X}),{width:"700px"}))}catch(H){console.error("Failed to load invite codes:",H)}},[E]),Bt=N.useCallback(()=>{localStorage.removeItem("token"),localStorage.removeItem("userId"),window.location.href="/login"},[]);return d.jsxs("div",{className:e1.home,children:[d.jsxs("div",{className:"toolbar",children:[d.jsxs("div",{className:"opts",children:[d.jsx("button",{className:"tool-btn",onClick:()=>location.reload(),children:"刷新"}),d.jsx("button",{className:"tool-btn",onClick:Z,children:"构建"}),(E==null?void 0:E.role)==="super"&&d.jsx("button",{className:"tool-btn",style:{background:"var(--info)"},onClick:v,children:"Logs"}),d.jsx("button",{className:"tool-btn",style:{background:"var(--accent)"},onClick:Y,children:"Notice Webhook"}),E&&["super","admin"].includes(E.role)&&d.jsx("button",{className:"tool-btn",style:{background:"var(--warning)",color:"#000"},onClick:M,children:"版本回退"})]}),E&&d.jsx("div",{className:"toolbar-user",children:d.jsx(P0,{user:E,onUserInfo:I,onPermission:it,onInvite:ft,onLogout:Bt})})]}),r.length>0&&d.jsxs("div",{className:"pending-tasks-bar",children:[d.jsxs("div",{className:"pending-label",children:["排队中 (",r.length,"):"]}),d.jsx("div",{className:"pending-scroll",children:r.map(H=>d.jsxs("div",{className:"pending-item",children:[d.jsx("span",{className:"pending-taskid",children:H.taskId}),d.jsx("span",{className:"pending-path",children:H.packagePath}),d.jsx("span",{className:"pending-branch",children:H.branch}),d.jsx("button",{className:"pending-cancel-btn",onClick:()=>j(H.taskId),children:"取消"})]},H.taskId))})]}),d.jsxs("div",{className:"build-panel",children:[d.jsx("div",{className:"panel-title",children:"Build Notice"}),d.jsxs("div",{className:"panel-body",children:[d.jsx(Wd,{count:q,onClick:()=>{V(0),at(!0)}}),d.jsx("div",{ref:gt,className:"scroll-area",children:i.map((H,K)=>d.jsx(f1,{msg:H,onCancel:_},H.taskId+K))})]})]}),d.jsxs("div",{className:"chat-panel",children:[d.jsx("div",{className:"panel-title",children:"Chat Room"}),d.jsxs("div",{className:"panel-body",children:[d.jsx(Wd,{count:F,onClick:()=>{U(0),pt(!0)}}),d.jsx("div",{ref:lt,className:"chat-scroll",children:s.map((H,K)=>d.jsx(o1,{msg:H,isSelf:H.userId===g.current,onPreview:G},H.id+K))})]}),d.jsxs("div",{className:"command-bar",children:[d.jsx(Mm,{options:It,value:"",placeholder:"快捷命令",onChange:H=>{P(H)}}),d.jsx("button",{className:"cmd-btn cmd-build",onClick:Z,children:"选择构建"}),d.jsxs("div",{className:"cmd-btn cmd-img",children:["选择图片",d.jsx("input",{ref:Ht,type:"file",accept:"image/*, video/*",multiple:!0,onChange:Q,className:"file-input-hidden"})]})]}),d.jsxs("div",{className:"input-area",children:[d.jsx("textarea",{value:bt,onChange:H=>st(H.currentTarget.value),placeholder:"输入消息... (Ctrl+Enter 发送)"}),d.jsxs("button",{className:"btn-send",onClick:me,disabled:!bt.trim(),children:["发送",d.jsx("br",{}),"Ctrl+Enter"]})]})]})]})}const y1="_login_qbk6z_1",v1={login:y1};function p1({onSwitch:s}){const[i,c]=N.useState(""),[r,o]=N.useState(""),m=rm(),g=async()=>{var E;if(!i||!r){Tt.err("请输入用户名和密码");return}try{const p=await i0(i,r);p.success&&((E=p.data)!=null&&E.token)?(localStorage.setItem("token",p.data.token),localStorage.setItem("userId",p.data.id),Tt.msg("登录成功"),m("/")):Tt.err(p.message||"登录失败")}catch(p){Tt.err((p==null?void 0:p.message)||"网络错误")}};return d.jsxs("div",{className:"form",children:[d.jsxs("div",{className:"field",children:[d.jsx("label",{children:"用户名"}),d.jsx("input",{value:i,onChange:E=>c(E.target.value.trim()),maxLength:12})]}),d.jsxs("div",{className:"field",children:[d.jsx("label",{children:"密码"}),d.jsx("input",{type:"password",value:r,onChange:E=>o(E.target.value.trim()),maxLength:30,onKeyDown:E=>E.key==="Enter"&&g()})]}),d.jsx("button",{className:"btn-submit",onClick:g,children:"登录"}),d.jsxs("div",{className:"switch-hint",children:["还没有账号?",d.jsx("a",{onClick:s,children:"立即注册"})]})]})}function g1({onSwitch:s}){const[i,c]=N.useState(""),[r,o]=N.useState(""),[m,g]=N.useState(""),[E,p]=N.useState(""),S=async()=>{if(!i||!m||!E||!r){Tt.err("请输入用户名、密码和邀请密码");return}if(m!==E){Tt.err("两次密码不一致");return}try{const R=await u0(i,m,r);R.success?(Tt.msg("注册成功,请登录"),s()):Tt.err(R.message||"注册失败")}catch(R){Tt.err((R==null?void 0:R.message)||"网络错误")}};return d.jsxs("div",{className:"form",children:[d.jsxs("div",{className:"field",children:[d.jsx("label",{children:"用户名"}),d.jsx("input",{value:i,onChange:R=>c(R.target.value.trim()),maxLength:12})]}),d.jsxs("div",{className:"field",children:[d.jsx("label",{children:"密码"}),d.jsx("input",{type:"password",value:m,onChange:R=>g(R.target.value.trim()),maxLength:30})]}),d.jsxs("div",{className:"field",children:[d.jsx("label",{children:"确认密码"}),d.jsx("input",{type:"password",value:E,onChange:R=>p(R.target.value.trim()),maxLength:30,onKeyDown:R=>R.key==="Enter"&&S()})]}),d.jsxs("div",{className:"field",children:[d.jsx("label",{children:"邀请码"}),d.jsx("input",{value:r,onChange:R=>o(R.target.value.trim())})]}),d.jsx("button",{className:"btn-submit",onClick:S,children:"注册"}),d.jsxs("div",{className:"switch-hint",children:["已有账号?",d.jsx("a",{onClick:s,children:"去登录"})]})]})}function b1(){const[s,i]=N.useState("login");return d.jsx("div",{className:v1.login,children:d.jsxs("div",{className:"login-card",children:[d.jsxs("div",{className:"login-logo",children:[d.jsx("div",{className:"icon",children:"B"}),d.jsx("h1",{children:"Build System"}),d.jsx("p",{children:"构建管理系统"})]}),d.jsxs("div",{className:"tab-bar",children:[d.jsx("div",{className:`tab-item ${s==="login"?"active":""}`,onClick:()=>i("login"),children:"登录"}),d.jsx("div",{className:`tab-item ${s==="register"?"active":""}`,onClick:()=>i("register"),children:"注册"})]}),s==="login"?d.jsx(p1,{onSwitch:()=>i("register")}):d.jsx(g1,{onSwitch:()=>i("login")})]})})}function S1({children:s}){return localStorage.getItem("token")?d.jsx(d.Fragment,{children:s}):d.jsx(dm,{to:"/login",replace:!0})}op.createRoot(document.getElementById("root")).render(d.jsx(sg,{basename:"/buildsystem",children:d.jsxs(ag,{children:[d.jsx(yu,{path:"/login",element:d.jsx(b1,{})}),d.jsx(yu,{path:"/",element:d.jsx(S1,{children:d.jsx(m1,{})})}),d.jsx(yu,{path:"*",element:d.jsx(dm,{to:"/",replace:!0})})]})}));
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Build System</title>
7
- <script type="module" crossorigin src="/buildsystem/assets/index-Ds-OtVY9.js"></script>
8
- <link rel="stylesheet" crossorigin href="/buildsystem/assets/index-F5jE8yX9.css">
7
+ <script type="module" crossorigin src="/buildsystem/assets/index-DsCnOGcj.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/buildsystem/assets/index-Dlm5u8WF.css">
9
9
  </head>
10
10
  <body>
11
11
  <div id="root"></div>
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@daiyu-5577/buildsystem",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "CLI tool to build projects based on git changes",
5
5
  "main": "dist/cli.js",
6
6
  "type": "module",
7
7
  "bin": {
8
- "buildSystem": "dist/cli.js"
8
+ "buildsystem": "dist/cli.js"
9
9
  },
10
10
  "scripts": {
11
11
  "build": "tsc && cd web && npm run build",
@@ -21,7 +21,7 @@
21
21
  "author": "daiyu",
22
22
  "license": "MIT",
23
23
  "engines": {
24
- "node": ">=18"
24
+ "node": ">=23.5.0"
25
25
  },
26
26
  "files": [
27
27
  "dist/**/*",
@@ -58,4 +58,4 @@
58
58
  "ts-node": "^10.9.2",
59
59
  "typescript": "^5.7.3"
60
60
  }
61
- }
61
+ }
@@ -1 +0,0 @@
1
- ._modalRoot_1nlw0_1{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--bg-overlay);-webkit-backdrop-filter:blur(24px) saturate(180%);backdrop-filter:blur(24px) saturate(180%);transition:background .3s ease}@keyframes _modal-show_naiks_1{0%{opacity:0;transform:translateY(24px) scale(.94)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes _modal-hide_naiks_1{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(16px) scale(.96)}}._modalContainerShow_naiks_21{animation:_modal-show_naiks_1 .4s var(--ease-spring)}._modalContainerHide_naiks_24{pointer-events:none;animation:_modal-hide_naiks_1 .28s var(--ease-smooth) forwards}._closing_naiks_28{animation:_modal-hide_naiks_1 .28s var(--ease-smooth) forwards}.modal-container{background:var(--bg-card);border:1px solid var(--glass-border);border-radius:var(--radius-lg);max-height:85vh;display:flex;flex-direction:column;overflow:hidden;-webkit-backdrop-filter:blur(40px) saturate(180%);backdrop-filter:blur(40px) saturate(180%);box-shadow:0 1px 0 var(--glass-highlight) inset,0 12px 40px #00000073,0 0 0 .5px #ffffff0f}.modal-close-bar{display:flex;justify-content:flex-end;padding:12px 16px 0}.modal-close-bar .close-btn{background:none;padding:4px 10px;font-size:18px;color:var(--text-dim);border-radius:var(--radius-sm);border:none;cursor:pointer;transition:color .2s ease,background .2s ease;font-family:var(--font)}.modal-close-bar .close-btn:hover{color:var(--text);background:var(--glass)}.modal-body{flex:1;overflow:auto;padding:0 24px 24px}@keyframes _toast-show_sls7c_1{0%{opacity:0;transform:translateY(-16px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes _toast-hide_sls7c_1{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-12px) scale(.94)}}._toastShow_sls7c_21{animation:_toast-show_sls7c_1 .4s var(--ease-spring)}._toastHide_sls7c_24{animation:_toast-hide_sls7c_1 .28s var(--ease-smooth) forwards}._toastRoot_sls7c_27{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99999;pointer-events:none}.toast-container{position:fixed;top:80px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast-item{padding:10px 24px;border-radius:var(--radius);font-size:14px;color:#fff;white-space:nowrap;-webkit-backdrop-filter:blur(40px) saturate(180%);backdrop-filter:blur(40px) saturate(180%);box-shadow:0 1px #ffffff26 inset,0 4px 16px #00000059;text-shadow:0 1px 2px rgba(0,0,0,.2)}.toast-item.toast-success{background:linear-gradient(180deg,#4ADE80 0%,var(--success) 100%)}.toast-item.toast-error{background:linear-gradient(180deg,#FF6B63 0%,var(--danger) 100%)}._userModal_bfbaq_1{padding:32px;text-align:center}._userModal_bfbaq_1 h3{margin-bottom:16px;font-size:18px;color:var(--text)}._userModal_bfbaq_1 .user-avatar-large{width:80px;height:80px;margin:0 auto 16px;border-radius:50%;background:linear-gradient(135deg,var(--primary) 0%,var(--accent) 100%);display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:700;color:#fff;box-shadow:0 4px 12px #0000004d}._userModal_bfbaq_1 .user-info{margin-bottom:16px;text-align:left}._userModal_bfbaq_1 .info-row{display:flex;align-items:center;padding:8px 0;border-bottom:1px solid var(--glass-border)}._userModal_bfbaq_1 .info-row:last-child{border-bottom:none}._userModal_bfbaq_1 .info-row .label{width:80px;color:var(--text-dim);font-size:13px;flex-shrink:0}._userModal_bfbaq_1 .info-row .value{flex:1;color:var(--text);font-size:13px;font-weight:500;display:flex;align-items:center;gap:6px}._userModal_bfbaq_1 .info-row .value.code-id{font-family:var(--font-mono);font-size:12px;word-break:break-all}._userModal_bfbaq_1 .info-row .value.code-id .copy-icon{background:transparent;border:none;cursor:pointer;font-size:14px;padding:2px;opacity:.5;transition:opacity .2s ease;flex-shrink:0}._userModal_bfbaq_1 .info-row .value.code-id .copy-icon:hover{opacity:1}._userModal_bfbaq_1 .info-row .value.role-tag{display:inline-flex;padding:2px 10px;border-radius:6px;font-size:11px;font-weight:700;letter-spacing:.5px}._userModal_bfbaq_1 .info-row .value.role-tag.super{background:#ff453a33;color:var(--danger)}._userModal_bfbaq_1 .info-row .value.role-tag.admin{background:#64d2ff33;color:var(--info)}._userModal_bfbaq_1 .info-row .value.role-tag.user{background:#8e8ea833;color:var(--text-dim)}._userModal_bfbaq_1 .btn-close{width:100%;max-width:200px;margin:0 auto;padding:10px 14px;background:var(--primary);border-radius:var(--radius-sm);font-size:13px;color:#fff;border:none;cursor:pointer}._userModal_bfbaq_1 .btn-close:hover{background:var(--primary-dark)}._select_f48hn_1{position:relative;display:inline-block}@keyframes _select-show_f48hn_1{0%{opacity:0;transform:translateY(-6px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.select-trigger{display:flex;align-items:center;justify-content:space-between;gap:6px;width:100%;min-width:140px;padding:6px 12px;font-size:12px;font-family:var(--font);color:var(--text);background:var(--glass);border:1px solid var(--glass-border);border-radius:14px;cursor:pointer;transition:all .25s ease;box-shadow:0 1px 0 var(--glass-highlight) inset,0 1px 3px #0003;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.select-trigger:hover{background:var(--bg-card-hover);transform:translateY(-1px);box-shadow:0 1px 0 var(--glass-highlight) inset,0 2px 6px #00000040}.select-trigger:active{transform:translateY(0)}.select-trigger-open{background:var(--bg-card-hover);box-shadow:0 1px 0 var(--glass-highlight) inset,0 0 0 2px var(--primary)}.select-trigger-text{flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-placeholder{color:var(--text-dim)}.select-arrow{font-size:18px;line-height:1;color:var(--text-dim);transition:transform .25s ease;transform:rotate(-90deg)}.select-arrow-open{transform:rotate(-90deg) rotate(180deg)}.select-dropdown{max-height:240px;overflow-y:auto;border-radius:var(--radius);background:var(--bg-card);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(40px) saturate(180%);backdrop-filter:blur(40px) saturate(180%);box-shadow:0 1px 0 var(--glass-highlight) inset,0 8px 32px #0006;animation:select-show .25s var(--ease-smooth)}.select-option{padding:8px 14px;font-size:12px;color:var(--text);cursor:pointer;transition:all .2s ease}.select-option:not(.select-option-active):hover{background:var(--glass)}.select-option:first-child{border-radius:var(--radius) var(--radius) 0 0}.select-option:last-child{border-radius:0 0 var(--radius) var(--radius)}.select-option-active{background:linear-gradient(180deg,var(--primary-light) 0%,var(--primary) 100%);color:var(--text-bright);font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.15)}._permissionModal_lkmtn_1{padding:32px;max-height:80vh;overflow:hidden;display:flex;flex-direction:column}._permissionModal_lkmtn_1 h3{color:var(--text);margin-bottom:16px;font-size:17px;font-weight:700;display:flex;align-items:center;gap:8px}._permissionModal_lkmtn_1 h3 .user-count{font-size:12px;font-weight:500;color:var(--text-dim)}._permissionModal_lkmtn_1 .search-bar{margin-bottom:16px}._permissionModal_lkmtn_1 .search-bar input{width:100%;padding:8px 12px;border:1px solid var(--glass-border);border-radius:var(--radius-sm);font-size:13px;background:var(--bg-card);color:var(--text)}._permissionModal_lkmtn_1 .search-bar input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--border-focus)}._permissionModal_lkmtn_1 .user-list{flex:1;overflow-y:auto}._permissionModal_lkmtn_1 .user-list table{width:100%;border-collapse:collapse}._permissionModal_lkmtn_1 .user-list table thead{position:sticky;top:0;background:var(--bg-card);z-index:1}._permissionModal_lkmtn_1 .user-list table thead th{padding:8px 12px;text-align:left;font-size:13px;color:var(--text-dim);font-weight:600;border-bottom:1px solid var(--glass-border)}._permissionModal_lkmtn_1 .user-list table tbody tr{border-bottom:1px solid var(--glass-border);transition:background .2s ease}._permissionModal_lkmtn_1 .user-list table tbody tr.is-current{opacity:.5}._permissionModal_lkmtn_1 .user-list table tbody tr:hover{background:var(--bg-card-hover)}._permissionModal_lkmtn_1 .user-list table tbody tr td{padding:8px 12px;font-size:13px;color:var(--text);vertical-align:middle}._permissionModal_lkmtn_1 .user-list table tbody tr td .user-name{display:block;font-weight:600;font-size:13px;color:var(--text-bright)}._permissionModal_lkmtn_1 .user-list table tbody tr td .user-id{display:block;font-size:11px;color:var(--text-dim);font-family:var(--font-mono);margin-top:2px}._permissionModal_lkmtn_1 .user-list table tbody tr td .role-badge{display:inline-flex;padding:2px 10px;border-radius:6px;font-size:11px;font-weight:700;letter-spacing:.5px}._permissionModal_lkmtn_1 .user-list table tbody tr td .role-badge.super{background:#ff453a33;color:var(--danger)}._permissionModal_lkmtn_1 .user-list table tbody tr td .role-badge.admin{background:#64d2ff33;color:var(--info)}._permissionModal_lkmtn_1 .user-list table tbody tr td .role-badge.user{background:#8e8ea833;color:var(--text-dim)}._permissionModal_lkmtn_1 .user-list .empty{padding:32px;text-align:center;color:var(--text-dim);font-size:13px}._permissionModal_lkmtn_1 .footer{display:flex;justify-content:center;padding-top:30px}._permissionModal_lkmtn_1 .btn-close{padding:10px 32px;width:100%;background:var(--primary);border-radius:var(--radius-sm);font-size:13px;font-weight:600;color:#fff;border:none;cursor:pointer;transition:all .2s ease}._permissionModal_lkmtn_1 .btn-close:hover{opacity:.9}._inviteModal_1gxli_1{padding:32px;max-height:80vh;overflow:hidden;display:flex;flex-direction:column}._inviteModal_1gxli_1 h3{color:var(--text);margin-bottom:12px;font-size:17px;font-weight:700}._inviteModal_1gxli_1 .empty-state{display:flex;flex-direction:column;align-items:center;padding:48px 20px}._inviteModal_1gxli_1 .empty-state .deco{font-size:48px;margin-bottom:16px}._inviteModal_1gxli_1 .empty-state p{color:var(--text-dim);font-size:14px;margin:0 0 16px}._inviteModal_1gxli_1 .empty-state .btn-generate{padding:10px 24px;border-radius:var(--radius-sm);font-size:13px;font-weight:600;background:var(--success);color:#fff;border:none;cursor:pointer;transition:all .25s ease}._inviteModal_1gxli_1 .empty-state .btn-generate:hover:not(:disabled){opacity:.9}._inviteModal_1gxli_1 .empty-state .btn-generate:disabled{opacity:.6;cursor:not-allowed}._inviteModal_1gxli_1 .empty-state .tip{display:block;margin-top:10px;font-size:12px;color:var(--text-dim)}._inviteModal_1gxli_1 .latest-code{display:flex;align-items:center;gap:10px;padding:10px 14px;margin-bottom:4px;border-radius:var(--radius-sm);background:var(--bg-card-hover);border:1px solid var(--success);transition:all .25s ease}._inviteModal_1gxli_1 .latest-code .badge{padding:2px 8px;border-radius:6px;font-size:10px;font-weight:700;color:#fff;background:var(--danger);letter-spacing:.5px;flex-shrink:0}._inviteModal_1gxli_1 .latest-code .status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}._inviteModal_1gxli_1 .latest-code .status-dot.status-0{background:var(--success)}._inviteModal_1gxli_1 .latest-code .status-dot.status-1{background:var(--text-dim)}._inviteModal_1gxli_1 .latest-code .status-dot.status-2{background:var(--danger)}._inviteModal_1gxli_1 .latest-code .status-text{font-size:12px;color:var(--text-dim);flex-shrink:0}._inviteModal_1gxli_1 .latest-code .code-text{flex:1;font-family:var(--font-mono);font-size:14px;font-weight:700;color:var(--primary);word-break:break-all}._inviteModal_1gxli_1 .latest-code .code-time{font-size:11px;color:var(--text-dim);white-space:nowrap}._inviteModal_1gxli_1 .latest-code .copy-btn{padding:4px 10px;border-radius:8px;font-size:11px;font-weight:600;background:var(--success);color:#fff;border:none;cursor:pointer;transition:all .2s ease;flex-shrink:0}._inviteModal_1gxli_1 .latest-code .copy-btn:hover{opacity:.9}._inviteModal_1gxli_1 .code-list{display:flex;flex-direction:column;gap:8px;max-height:360px;overflow-y:auto;margin-bottom:12px}._inviteModal_1gxli_1 .code-item{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:var(--radius-sm);background:var(--glass);border:1px solid var(--glass-border);transition:all .25s ease}._inviteModal_1gxli_1 .code-item:hover{border-color:var(--primary);background:var(--bg-card-hover)}._inviteModal_1gxli_1 .code-item .status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}._inviteModal_1gxli_1 .code-item .status-dot.status-0{background:var(--success)}._inviteModal_1gxli_1 .code-item .status-dot.status-1{background:var(--text-dim)}._inviteModal_1gxli_1 .code-item .status-dot.status-2{background:var(--danger)}._inviteModal_1gxli_1 .code-item .status-text{font-size:12px;color:var(--text-dim);flex-shrink:0}._inviteModal_1gxli_1 .code-item .code-text{flex:1;font-family:var(--font-mono);font-size:14px;font-weight:600;color:var(--text);word-break:break-all}._inviteModal_1gxli_1 .code-item .code-time{font-size:11px;color:var(--text-dim);white-space:nowrap}._inviteModal_1gxli_1 .code-item .copy-btn{padding:4px 10px;border-radius:8px;font-size:11px;font-weight:600;background:transparent;color:var(--primary);border:1px solid var(--glass-border);cursor:pointer;transition:all .2s ease;flex-shrink:0}._inviteModal_1gxli_1 .code-item .copy-btn:hover{background:var(--primary);color:#fff;border-color:var(--primary)}._inviteModal_1gxli_1 .actions{display:flex;gap:12px}._inviteModal_1gxli_1 .actions button{flex:1;padding:10px 14px;border-radius:var(--radius-sm);font-size:13px;font-weight:600;border:none;cursor:pointer;transition:all .25s ease}._inviteModal_1gxli_1 .actions button:disabled{opacity:.6;cursor:not-allowed}._inviteModal_1gxli_1 .actions .btn-generate{background:var(--success);color:#fff}._inviteModal_1gxli_1 .actions .btn-generate:hover:not(:disabled){opacity:.9}._inviteModal_1gxli_1 .actions .btn-close{background:var(--primary);color:#fff}._inviteModal_1gxli_1 .actions .btn-close:hover{opacity:.9}._userAvatar_9xyff_1{position:relative;display:flex;align-items:center}._userAvatar_9xyff_1 .avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--primary) 0%,var(--accent) 100%);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;cursor:pointer;transition:all .25s ease;box-shadow:0 2px 8px #0000004d,0 1px #fff3 inset;-webkit-user-select:none;user-select:none}._userAvatar_9xyff_1 .avatar:hover{transform:scale(1.08);box-shadow:0 4px 12px #0006,0 1px #ffffff40 inset}._userAvatar_9xyff_1 .avatar:active{transform:scale(1.02)}._userAvatar_9xyff_1 .user-dropdown{background:var(--bg-card);border:1px solid var(--glass-border);border-radius:var(--radius);box-shadow:0 8px 24px #0006;-webkit-backdrop-filter:blur(40px) saturate(180%);backdrop-filter:blur(40px) saturate(180%);overflow:hidden;animation:fadeIn .2s var(--ease-smooth);padding:8px}._userAvatar_9xyff_1 .user-dropdown-item{padding:8px 14px;font-size:13px;color:var(--text);cursor:pointer;transition:all .2s ease;border-radius:var(--radius-sm);font-weight:600;margin-bottom:4px}._userAvatar_9xyff_1 .user-dropdown-item:last-child{margin-bottom:0}._userAvatar_9xyff_1 .user-dropdown-item:hover{background:var(--bg-card-hover);transform:translate(2px)}._userAvatar_9xyff_1 .user-dropdown-item.logout{color:var(--danger);margin-top:4px;border-top:1px solid var(--glass-border);padding-top:12px}._home_8h37b_1{height:100vh;display:flex;flex-direction:column;padding:12px;gap:8px;box-sizing:border-box}._home_8h37b_1 .toolbar{width:100%;position:relative;display:flex;align-items:center;justify-content:center;padding:0 60px 0 10px;border-radius:var(--radius);background:var(--bg-card);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(40px) saturate(180%);backdrop-filter:blur(40px) saturate(180%);flex-shrink:0;box-shadow:0 1px 0 var(--glass-highlight) inset;transition:background .3s ease}._home_8h37b_1 .toolbar .opts{max-width:100%;padding:6px 0;gap:8px;border-radius:var(--radius);display:flex;align-items:center;overflow:auto hidden}._home_8h37b_1 .toolbar-user{position:absolute;top:50%;transform:translateY(-50%);right:12px}._home_8h37b_1 .pending-tasks-bar{width:100%;border-radius:var(--radius);background:var(--bg-card);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(40px) saturate(180%);backdrop-filter:blur(40px) saturate(180%);box-shadow:0 1px 0 var(--glass-highlight) inset;flex-shrink:0;padding:6px 10px;display:flex;align-items:center;gap:10px}._home_8h37b_1 .pending-label{font-size:12px;color:var(--text-dim);font-weight:600;white-space:nowrap;flex-shrink:0}._home_8h37b_1 .pending-scroll{display:flex;gap:8px;overflow-x:auto;flex:1;scrollbar-width:thin}._home_8h37b_1 .pending-scroll::-webkit-scrollbar{height:4px}._home_8h37b_1 .pending-scroll::-webkit-scrollbar-thumb{background:var(--glass-border);border-radius:2px}._home_8h37b_1 .pending-item{display:flex;align-items:center;gap:6px;padding:4px 10px;border-radius:12px;background:var(--glass);border:1px solid var(--glass-border);font-size:11px;white-space:nowrap;flex-shrink:0;transition:all .2s ease}._home_8h37b_1 .pending-item:hover{background:var(--bg-card-hover)}._home_8h37b_1 .pending-taskid{color:var(--primary-light);font-family:var(--font-mono);max-width:120px;overflow:hidden;text-overflow:ellipsis}._home_8h37b_1 .pending-path{color:var(--accent);font-weight:500}._home_8h37b_1 .pending-branch{color:var(--success)}._home_8h37b_1 .pending-cancel-btn{padding:2px 8px;font-size:10px;border-radius:8px;background:linear-gradient(180deg,#FF6B63 0%,var(--danger) 100%);color:#fff;border:none;cursor:pointer;font-family:var(--font);transition:all .2s ease}._home_8h37b_1 .pending-cancel-btn:hover{opacity:.9;transform:scale(1.05)}._home_8h37b_1 .pending-cancel-btn:active{transform:scale(.98)}._home_8h37b_1 .tool-btn{padding:6px 18px;font-size:12px;border-radius:20px;white-space:nowrap;font-weight:600;letter-spacing:.3px;background:linear-gradient(180deg,var(--primary-light) 0%,var(--primary) 100%);color:var(--text-bright);border:none;cursor:pointer;transition:all .25s ease;font-family:var(--font);box-shadow:0 1px #ffffff26 inset,0 2px 4px #0000004d;text-shadow:0 1px 2px rgba(0,0,0,.15)}._home_8h37b_1 .tool-btn:hover{opacity:.92;transform:translateY(-1px);box-shadow:0 1px #fff3 inset,0 4px 10px #00000059}._home_8h37b_1 .tool-btn:active{transform:translateY(0);box-shadow:0 0 #fff0 inset,0 1px 2px #0000004d}._home_8h37b_1 .build-panel{flex:2;display:flex;flex-direction:column;overflow:hidden;border-radius:var(--radius);background:var(--bg-card);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(40px) saturate(180%);backdrop-filter:blur(40px) saturate(180%);box-shadow:0 1px 0 var(--glass-highlight) inset,var(--shadow-sm)}._home_8h37b_1 .panel-title{padding:10px 14px 6px;font-size:13px;font-weight:700;color:var(--text-dim);letter-spacing:.8px;flex-shrink:0}._home_8h37b_1 .panel-body{flex:1;position:relative;overflow:hidden}._home_8h37b_1 .scroll-area{height:100%;overflow-y:auto;padding:6px 10px;display:flex;flex-direction:column;gap:4px}._home_8h37b_1 .unread-badge{position:absolute;bottom:10px;right:10px;padding:4px 10px;border-radius:12px;font-size:12px;background:var(--success);color:#fff;cursor:pointer;font-weight:600;box-shadow:0 1px #fff3 inset,var(--shadow-sm);z-index:5;transition:transform .2s ease}._home_8h37b_1 .unread-badge:hover{transform:scale(1.05)}._home_8h37b_1 .build-card{flex-shrink:0;width:100%;margin-bottom:8px;border-radius:var(--radius-sm);background:var(--glass);border:1px solid var(--glass-border);overflow:hidden;animation:fadeIn .35s var(--ease-smooth);transition:background .25s ease,box-shadow .25s ease}._home_8h37b_1 .build-card:hover{background:var(--bg-card-hover)}._home_8h37b_1 .build-card-header{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid var(--glass-border);background:#ffffff05;font-size:12px}._home_8h37b_1 .build-card-header .name{color:var(--success);font-weight:600}._home_8h37b_1 .build-card-header .branch{color:var(--primary-light);font-weight:600}._home_8h37b_1 .build-card-header .sep{margin:0 4px;color:var(--text-dim)}._home_8h37b_1 .build-card-header .time{font-size:11px;color:var(--text-dim)}._home_8h37b_1 .build-card-body{padding:8px 12px}._home_8h37b_1 .build-card-body .info-row{display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--text-dim)}._home_8h37b_1 .build-card-body .info-row a{color:var(--info)}._home_8h37b_1 .build-card-body .btn-cancel{margin-top:6px;padding:3px 10px;font-size:11px;border-radius:8px;background:linear-gradient(180deg,#FF6B63 0%,var(--danger) 100%);color:#fff;border:none;cursor:pointer;font-family:var(--font);transition:all .2s ease;box-shadow:0 1px #ffffff1f inset,0 1px 3px #00000040}._home_8h37b_1 .build-card-body .btn-cancel:hover{opacity:.92;transform:translateY(-1px)}._home_8h37b_1 .build-card-body .btn-cancel:active{transform:translateY(0)}._home_8h37b_1 .build-card-body .build-log{width:100%;padding:8px 10px;margin-top:8px;background:#00000059;color:#ccc;border-radius:8px;font-size:11px;white-space:break-spaces;max-height:250px;overflow-y:auto;word-break:break-all;line-height:1.5;border:1px solid rgba(255,255,255,.04);margin-bottom:0;font-family:var(--font-mono)}._home_8h37b_1 .build-card-body .status-tag{display:inline-block;margin-top:6px;padding:3px 10px;border-radius:8px;font-size:11px;font-weight:600}._home_8h37b_1 .build-card-body .status-tag.status-1{background:var(--info);color:#000;box-shadow:0 1px #ffffff26 inset}._home_8h37b_1 .build-card-body .status-tag.status-2{background:var(--success);color:#fff;box-shadow:0 1px #ffffff26 inset}._home_8h37b_1 .build-card-body .status-tag.status-3{background:var(--danger);color:#fff;box-shadow:0 1px #ffffff26 inset}._home_8h37b_1 .chat-panel{flex:3;display:flex;flex-direction:column;overflow:hidden;border-radius:var(--radius);background:var(--bg-card);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(40px) saturate(180%);backdrop-filter:blur(40px) saturate(180%);box-shadow:0 1px 0 var(--glass-highlight) inset,var(--shadow-sm)}._home_8h37b_1 .chat-scroll{height:100%;overflow-y:auto;padding:6px 10px;display:flex;flex-direction:column;align-items:flex-start}._home_8h37b_1 .chat-bubble{display:flex;flex-direction:column;margin-bottom:10px;max-width:75%;animation:fadeIn .3s var(--ease-smooth)}._home_8h37b_1 .chat-bubble.self{align-self:flex-end;align-items:flex-end}._home_8h37b_1 .chat-bubble .bubble-header{display:flex;align-items:center;gap:6px;margin-bottom:3px}._home_8h37b_1 .chat-bubble .bubble-header .name{font-size:12px;font-weight:600}._home_8h37b_1 .chat-bubble .bubble-header .name-other{color:var(--primary-light)}._home_8h37b_1 .chat-bubble .bubble-header .name-self{color:var(--accent)}._home_8h37b_1 .chat-bubble .bubble-header .time{font-size:10px;color:var(--text-dim)}._home_8h37b_1 .chat-bubble .bubble-text{padding:8px 14px;white-space:break-spaces;word-break:break-word;font-size:13px;line-height:1.5;margin:0;font-family:var(--font)}._home_8h37b_1 .chat-bubble .bubble-text-other{border-radius:18px 18px 18px 4px;background:var(--glass);color:var(--text);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:0 1px 0 var(--glass-highlight) inset}._home_8h37b_1 .chat-bubble .bubble-text-self{border-radius:18px 18px 4px;background:linear-gradient(180deg,var(--primary-light) 0%,var(--primary) 100%);color:#fff;border:none;box-shadow:0 1px #ffffff26 inset,0 2px 6px #00000040;text-shadow:0 1px 2px rgba(0,0,0,.15)}._home_8h37b_1 .chat-bubble .bubble-files{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}._home_8h37b_1 .chat-bubble .bubble-files img,._home_8h37b_1 .chat-bubble .bubble-files video{width:100px;height:100px;border-radius:10px;object-fit:cover;background:var(--bg-card);cursor:pointer;object-fit:contain;transition:transform .25s ease,box-shadow .25s ease}._home_8h37b_1 .chat-bubble .bubble-files img:hover,._home_8h37b_1 .chat-bubble .bubble-files video:hover{transform:scale(1.04);box-shadow:0 4px 16px #0006}._home_8h37b_1 .command-bar{display:flex;align-items:center;gap:6px;padding:6px 10px;border-top:1px solid var(--glass-border);flex-shrink:0}._home_8h37b_1 .command-bar .cmd-btn{padding:4px 12px;font-size:11px;border-radius:14px;border:none;color:var(--text-bright);cursor:pointer;font-family:var(--font);font-weight:500;transition:all .25s ease;box-shadow:0 1px #ffffff1f inset,0 1px 3px #00000040}._home_8h37b_1 .command-bar .cmd-btn:hover{opacity:.92;transform:translateY(-1px)}._home_8h37b_1 .command-bar .cmd-btn:active{transform:translateY(0)}._home_8h37b_1 .command-bar .cmd-build{background:linear-gradient(180deg,var(--primary-light) 0%,var(--primary-dark) 100%)}._home_8h37b_1 .command-bar .cmd-img{background:linear-gradient(180deg,#4ADE80 0%,var(--success) 100%);position:relative}._home_8h37b_1 .command-bar .file-input-hidden{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}._home_8h37b_1 .input-area{display:flex;align-items:center;gap:8px;padding:6px 10px 10px;border-top:1px solid var(--glass-border);flex-shrink:0}._home_8h37b_1 .input-area textarea{flex:1;resize:none;min-height:40px;max-height:100px;padding:8px 12px;border-radius:var(--radius-sm);background:var(--bg-input);border:1px solid var(--border);color:var(--text);font-size:13px;line-height:1.5;outline:none;font-family:var(--font);transition:border-color .25s ease,box-shadow .25s ease}._home_8h37b_1 .input-area textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--border-focus)}._home_8h37b_1 .input-area .btn-send{width:80px;height:40px;display:flex;align-items:center;justify-content:center;font-size:12px;text-align:center;line-height:1.3}@media screen and (min-width:1000px){._home_8h37b_1{flex-direction:row;flex-wrap:wrap;padding:20px 60px 100px;align-content:flex-start}._home_8h37b_1 .toolbar{width:100%;margin-bottom:8px}._home_8h37b_1 .build-panel{flex:2;height:100%;margin-right:20px}._home_8h37b_1 .chat-panel{flex:3;height:100%}}._buildModal_1mpfv_1 h3{color:var(--text);margin-bottom:16px;font-size:17px;font-weight:700}._buildModal_1mpfv_1 label{display:block;font-size:13px;color:var(--text-dim);margin-bottom:6px}._buildModal_1mpfv_1 label .select-count{float:right;font-size:12px;color:var(--primary-light);font-weight:600}._buildModal_1mpfv_1 .branch-input,._buildModal_1mpfv_1 .pkg-search-input{width:100%;margin-bottom:12px;padding:8px 12px;border:1px solid var(--glass-border);border-radius:var(--radius-sm);font-size:13px;background:var(--bg-card);color:var(--text)}._buildModal_1mpfv_1 .branch-input:focus,._buildModal_1mpfv_1 .pkg-search-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--border-focus)}._buildModal_1mpfv_1 .header-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}._buildModal_1mpfv_1 .select-all-btn,._buildModal_1mpfv_1 .refresh-pkg-btn{padding:4px 12px;border-radius:8px;font-size:12px;font-weight:600;color:var(--primary-light);cursor:pointer;transition:all .2s ease;background:transparent;border:1px solid var(--glass-border)}._buildModal_1mpfv_1 .select-all-btn:hover:not(.is-refreshing),._buildModal_1mpfv_1 .refresh-pkg-btn:hover:not(.is-refreshing){background:var(--primary);color:#fff;border-color:var(--primary)}._buildModal_1mpfv_1 .refresh-pkg-btn.is-refreshing{opacity:.6;cursor:not-allowed}._buildModal_1mpfv_1 .pkg-grid{display:flex;flex-wrap:wrap;gap:8px;max-height:300px;overflow-y:auto;margin-bottom:20px}._buildModal_1mpfv_1 .pkg-item{padding:6px 16px;border-radius:20px;font-size:13px;cursor:pointer;font-weight:600;transition:all .25s ease;border:1px solid var(--glass-border);background:var(--glass);color:var(--text)}._buildModal_1mpfv_1 .pkg-item.active{background:linear-gradient(180deg,var(--primary-light) 0%,var(--primary) 100%);color:#fff;border-color:transparent;box-shadow:0 1px #fff3 inset,0 2px 4px #00000040;text-shadow:0 1px 2px rgba(0,0,0,.15)}._buildModal_1mpfv_1 .pkg-item:hover:not(.active){background:var(--bg-card-hover)}._buildModal_1mpfv_1 .btn-build{width:100%;padding:10px;font-size:15px;font-weight:700;border-radius:var(--radius-sm)}._logModal_eochr_1 h3{color:var(--text);margin-bottom:12px;font-size:17px;font-weight:700}._logModal_eochr_1 .tabs{display:flex;gap:4px;padding:3px;border-radius:var(--radius-sm);background:var(--glass);border:1px solid var(--glass-border);margin-bottom:12px}._logModal_eochr_1 .tab-item{flex:1;padding:8px 16px;border-radius:8px;text-align:center;font-size:13px;cursor:pointer;font-weight:600;background:transparent;color:var(--text-dim);transition:all .25s ease}._logModal_eochr_1 .tab-item.active{background:linear-gradient(180deg,var(--primary-light) 0%,var(--primary) 100%);color:#fff;box-shadow:0 1px #fff3 inset,0 1px 3px #00000040;text-shadow:0 1px 2px rgba(0,0,0,.15)}._logModal_eochr_1 .log-list{display:flex;flex-direction:column;gap:6px;max-height:400px;overflow-y:auto}._logModal_eochr_1 .log-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 14px;border-radius:var(--radius-sm);background:var(--glass);color:var(--text);font-size:13px;word-break:break-all;text-decoration:none;border:1px solid var(--glass-border);transition:all .25s ease}._logModal_eochr_1 .log-item .log-name{flex:1;min-width:0}._logModal_eochr_1 .log-item .log-link-icon{flex-shrink:0;font-size:12px;color:var(--text-dim);opacity:0;transition:opacity .2s ease}._logModal_eochr_1 .log-item:hover{border-color:var(--primary);background:var(--bg-card-hover)}._logModal_eochr_1 .log-item:hover .log-link-icon{opacity:1}._logModal_eochr_1 .empty{color:var(--text-dim);text-align:center;padding:20px}._listModal_1td0z_1 h3{color:var(--text);margin-bottom:12px;font-size:17px;font-weight:700}._listModal_1td0z_1 .list-items{display:flex;flex-direction:column;gap:6px}._listModal_1td0z_1 .list-item{padding:10px 14px;border-radius:var(--radius-sm);background:var(--glass);border:1px solid var(--glass-border);cursor:pointer;font-size:13px;font-weight:600;word-break:break-all;color:var(--text);transition:all .25s ease;display:flex;align-items:center;gap:8px}._listModal_1td0z_1 .list-item:hover{border-color:var(--primary);background:var(--bg-card-hover);transform:translate(2px)}._listModal_1td0z_1 .list-item .folder-icon{font-size:14px;flex-shrink:0}._listModal_1td0z_1 .list-item .branch-master{padding:2px 8px;border-radius:6px;font-size:11px;font-weight:700;color:#fff;background:var(--danger);letter-spacing:.5px;flex-shrink:0}._listModal_1td0z_1 .list-item .branch-other{padding:2px 8px;border-radius:6px;font-size:11px;font-weight:700;color:#fff;background:var(--success);letter-spacing:.5px;flex-shrink:0}._listModal_1td0z_1 .list-item .sep{margin:0 6px;color:var(--text-dim);flex-shrink:0}._listModal_1td0z_1 .empty{color:var(--text-dim);text-align:center;padding:20px}._login_qbk6z_1{height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);position:relative;overflow:hidden}._login_qbk6z_1:before{content:"";position:absolute;top:45%;left:50%;width:600px;height:600px;transform:translate(-50%,-50%);background:radial-gradient(circle,rgba(10,132,255,.06) 0%,rgba(94,92,230,.03) 40%,transparent 70%);pointer-events:none}@keyframes _gradientShift_qbk6z_1{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}._login_qbk6z_1 .login-card{width:min(400px,90vw);padding:32px 28px;border-radius:var(--radius-lg);background:var(--bg-card);border:1px solid var(--glass-border);box-shadow:0 1px 0 var(--glass-highlight) inset,var(--shadow);-webkit-backdrop-filter:blur(40px) saturate(180%);backdrop-filter:blur(40px) saturate(180%);animation:slideUp .45s var(--ease-smooth);position:relative;z-index:1}._login_qbk6z_1 .login-logo{text-align:center;margin-bottom:24px}._login_qbk6z_1 .login-logo .icon{width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,var(--primary),var(--accent));display:inline-flex;align-items:center;justify-content:center;font-size:22px;font-weight:900;color:#fff;margin-bottom:12px;box-shadow:0 1px #fff3 inset,0 4px 12px #0a84ff40}._login_qbk6z_1 .login-logo h1{font-size:20px;font-weight:700;color:var(--text-bright);margin:0}._login_qbk6z_1 .login-logo p{font-size:13px;color:var(--text-dim);margin-top:4px}._login_qbk6z_1 .tab-bar{display:flex;gap:4px;padding:3px;border-radius:24px;background:var(--glass);border:1px solid var(--glass-border);margin-bottom:20px}._login_qbk6z_1 .tab-item{flex:1;padding:8px 0;text-align:center;border-radius:20px;cursor:pointer;font-weight:600;font-size:14px;transition:all .3s var(--ease-smooth);color:var(--text-dim)}._login_qbk6z_1 .tab-item.active{background:linear-gradient(180deg,var(--primary-light) 0%,var(--primary) 100%);color:#fff;box-shadow:0 1px #fff3 inset,0 2px 6px #00000040;text-shadow:0 1px 2px rgba(0,0,0,.15)}._login_qbk6z_1 .form{display:flex;flex-direction:column;gap:14px}._login_qbk6z_1 .form .field label{display:block;font-size:13px;color:var(--text-dim);margin-bottom:4px}._login_qbk6z_1 .form .field input{width:100%}._login_qbk6z_1 .form .btn-submit{width:100%;padding:10px;font-size:15px;font-weight:700;border-radius:24px;background:linear-gradient(180deg,var(--primary-light) 0%,var(--primary) 100%);margin-top:8px;color:var(--text-bright);border:none;cursor:pointer;font-family:var(--font);transition:all .25s ease;box-shadow:0 1px #fff3 inset,0 2px 8px #0000004d;text-shadow:0 1px 2px rgba(0,0,0,.15)}._login_qbk6z_1 .form .btn-submit:hover{opacity:.92;transform:translateY(-1px);box-shadow:0 1px #ffffff40 inset,0 4px 14px #00000059}._login_qbk6z_1 .form .btn-submit:active{transform:translateY(0);box-shadow:0 0 #fff0 inset,0 1px 3px #0000004d}._login_qbk6z_1 .form .switch-hint{text-align:center;font-size:13px;color:var(--text-dim)}._login_qbk6z_1 .form .switch-hint a{color:var(--primary-light);cursor:pointer;font-weight:600;text-decoration:none;transition:color .2s ease}._login_qbk6z_1 .form .switch-hint a:hover{text-decoration:underline}:root{--primary: #0A84FF;--primary-light: #409CFF;--primary-dark: #0070E0;--accent: #5E5CE6;--danger: #FF453A;--success: #30D158;--warning: #FFD60A;--info: #64D2FF;--bg: #0a0a12;--bg-card: rgba(30, 30, 50, .45);--bg-card-hover: rgba(40, 40, 65, .55);--bg-input: rgba(255, 255, 255, .05);--bg-overlay: rgba(0, 0, 0, .45);--glass: rgba(255, 255, 255, .06);--glass-border: rgba(255, 255, 255, .12);--glass-highlight: rgba(255, 255, 255, .08);--border: rgba(255, 255, 255, .1);--border-focus: rgba(10, 132, 255, .45);--text: #f0f0f8;--text-dim: #8e8ea8;--text-bright: #ffffff;--radius: 14px;--radius-sm: 10px;--radius-lg: 20px;--shadow: 0 8px 32px rgba(0, 0, 0, .4), 0 0 0 .5px rgba(255,255,255,.06);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .3);--transition: all .25s cubic-bezier(.4, 0, .2, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--ease-smooth: cubic-bezier(.4, 0, .2, 1);--font: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Helvetica Neue", sans-serif;--font-mono: "SF Mono", "Menlo", "Consolas", monospace}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.5;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#ffffff14;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#ffffff29}a{color:var(--primary-light);text-decoration:none}a:hover{text-decoration:underline}input,textarea,select{background:var(--bg-input);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);padding:8px 12px;font-family:var(--font);font-size:13px;outline:none;transition:border-color .25s ease,box-shadow .25s ease}input:focus,textarea:focus,select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--border-focus)}button{background:linear-gradient(180deg,var(--primary-light) 0%,var(--primary) 100%);color:var(--text-bright);border:none;border-radius:var(--radius-sm);padding:8px 20px;font-family:var(--font);font-size:13px;cursor:pointer;transition:all .2s ease;font-weight:500;box-shadow:0 1px #ffffff26 inset,0 2px 4px #0000004d;text-shadow:0 1px 2px rgba(0,0,0,.2)}button:hover{background:linear-gradient(180deg,lighten(#409CFF,4%) 0%,lighten(#0A84FF,4%) 100%);transform:translateY(-1px);box-shadow:0 1px #fff3 inset,0 4px 12px #00000059}button:active{transform:translateY(0);box-shadow:0 0 #fff0 inset,0 1px 2px #0000004d}button:disabled{opacity:.4;cursor:not-allowed;transform:none}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(24px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}