From 73d07c77ca16d4d8a1947204f4364f7937701a52 Mon Sep 17 00:00:00 2001 From: "LINING-PC\\lining" Date: Sun, 11 Jan 2026 17:31:20 +0800 Subject: [PATCH] v1.7.1 - style update --- dist/assets/index-CgrbviJ4.css | 1 - dist/assets/{index-0sGHotAG.js => index-DBfszOX9.js} | 4 ++-- dist/assets/index-fLZHpLpo.css | 1 + dist/assets/{index.es-DBXQb5D8.js => index.es-jljh7oB8.js} | 2 +- dist/index.html | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) delete mode 100644 dist/assets/index-CgrbviJ4.css rename dist/assets/{index-0sGHotAG.js => index-DBfszOX9.js} (99%) create mode 100644 dist/assets/index-fLZHpLpo.css rename dist/assets/{index.es-DBXQb5D8.js => index.es-jljh7oB8.js} (99%) diff --git a/dist/assets/index-CgrbviJ4.css b/dist/assets/index-CgrbviJ4.css deleted file mode 100644 index eb87efe..0000000 --- a/dist/assets/index-CgrbviJ4.css +++ /dev/null @@ -1 +0,0 @@ -:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;min-width:320px;height:100vh;box-sizing:border-box;display:flex;align-items:center;justify-content:center}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.card{padding:2em}#app{width:100%;height:100%;max-width:100vw;max-height:100vh;min-width:0;min-height:0;box-sizing:border-box;display:flex;flex-direction:column;align-items:stretch;justify-content:center;padding:0;text-align:left}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}[data-v-d5380db5]:root{--gantt-bg-primary: #ffffff;--gantt-bg-secondary: #f5f7fa;--gantt-bg-tertiary: #f9f9f9;--gantt-bg-hover: rgba(225, 228, 231, .2);--gantt-bg-hover-parent: rgba(245, 247, 250, .8);--gantt-bg-toolbar: #f8f9fa;--gantt-text-primary: #333333;--gantt-text-secondary: #8d9095;--gantt-text-muted: #909399;--gantt-text-white: #ffffff;--gantt-text-header: #333333;--gantt-border-light: #ebeef5;--gantt-border-medium: #dcdfe6;--gantt-border-dark: #c0c4cc;--gantt-border-color: #dcdfe6;--gantt-primary: #409eff;--gantt-primary-light: #ecf5ff;--gantt-success: #67c23a;--gantt-warning: #e6a23c;--gantt-warning-light: #f5dab1;--gantt-danger: #f56c6c;--gantt-danger-light: #fab6b6;--gantt-scrollbar-thumb: #c1c1c1;--gantt-scrollbar-thumb-hover: #a8a8a8}html[data-theme=dark][data-v-d5380db5]{--gantt-bg-primary: #6b6b6b;--gantt-bg-secondary: #4b4b4b;--gantt-bg-tertiary: #7b7b7b;--gantt-bg-hover: rgba(180, 180, 180, .35);--gantt-bg-hover-parent: rgba(140, 140, 140, .8);--gantt-bg-toolbar: #5b5b5b;--gantt-text-primary: #ffffff;--gantt-text-secondary: #f8f8f8;--gantt-text-muted: #e0e0e0;--gantt-text-white: #ffffff;--gantt-text-parent: #ffffff;--gantt-text-header: #ffffff;--gantt-border-light: #888888;--gantt-border-medium: #666666;--gantt-border-dark: #999999;--gantt-border-color: #808080;--gantt-primary: #3399ff;--gantt-primary-light: #4d6699;--gantt-success: #66cc33;--gantt-warning: #ff9933;--gantt-warning-light: #cc7722;--gantt-danger: #ff4444;--gantt-danger-light: #cc3333;--gantt-scrollbar-thumb: #888888;--gantt-scrollbar-thumb-hover: #999999}.el-date-picker[data-v-d5380db5]{position:relative;display:inline-block;width:100%;font-size:14px;line-height:1.5}.el-input[data-v-d5380db5]{position:relative;font-size:14px;display:inline-flex;width:100%;line-height:32px;box-sizing:border-box;vertical-align:middle;height:44px}.el-input__wrapper[data-v-d5380db5]{display:flex;flex-grow:1;align-items:center;justify-content:center;padding:1px 11px;background-color:var(--gantt-bg-primary, #ffffff);background-image:none;border-radius:4px;cursor:text;transition:all .2s cubic-bezier(.645,.045,.355,1);transform:translateZ(0);box-shadow:0 0 0 1px var(--gantt-border-color, #dcdfe6) inset}.el-input__inner[data-v-d5380db5]{width:100%;flex-grow:1;-moz-appearance:none;appearance:none;-webkit-appearance:none;color:var(--gantt-text-primary, #606266);font-size:inherit;height:32px;line-height:32px;padding:0;outline:none;border:none;background:none;box-sizing:border-box}.el-input__inner-input[data-v-d5380db5]{width:100%;height:100%;border:none;outline:none;background:transparent;color:inherit;font-size:inherit;line-height:inherit;padding:0;margin:0}.el-input__inner-input[data-v-d5380db5]::-webkit-calendar-picker-indicator{display:none}.el-input__inner-input[data-v-d5380db5]::placeholder{color:var(--gantt-text-placeholder, #c0c4cc)}.el-input__suffix[data-v-d5380db5]{display:flex;flex-shrink:0;flex-wrap:nowrap;align-items:center;justify-content:center;color:var(--gantt-text-placeholder, #c0c4cc);text-align:center;transition:all .2s;pointer-events:none}.el-input__suffix-inner[data-v-d5380db5]{pointer-events:all;display:flex;align-items:center;justify-content:center}.el-input__icon[data-v-d5380db5]{height:inherit;line-height:inherit;display:flex;justify-content:center;align-items:center;transition:all .2s;color:var(--gantt-text-placeholder, #c0c4cc)}.el-input__clear[data-v-d5380db5]{height:inherit;line-height:inherit;display:flex;justify-content:center;align-items:center;cursor:pointer;color:var(--gantt-text-placeholder, #c0c4cc);transition:all .2s;background:transparent;border:none;outline:none;padding:0;margin:0}.el-input__clear[data-v-d5380db5]:hover{color:var(--gantt-text-regular, #909399)}.el-icon[data-v-d5380db5]{width:14px;height:14px;font-size:14px;fill:currentColor;overflow:hidden}.el-range-input[data-v-d5380db5]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:none;display:inline-flex;position:relative;font-size:inherit;line-height:inherit;width:100%}.el-range-input__inner[data-v-d5380db5]{display:flex;align-items:center;justify-content:center;min-width:0;width:100%;flex-grow:1}.el-range-input__start[data-v-d5380db5],.el-range-input__end[data-v-d5380db5]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:none;display:inline-block;height:100%;margin:0;padding:0;width:0;flex-grow:1;box-sizing:border-box;font-size:inherit;color:var(--gantt-text-primary, #606266);background:transparent;text-align:center;border-radius:0;min-width:0}.el-range-input__start[data-v-d5380db5]::-webkit-calendar-picker-indicator,.el-range-input__end[data-v-d5380db5]::-webkit-calendar-picker-indicator{display:none}.el-range-input__start[data-v-d5380db5]::placeholder,.el-range-input__end[data-v-d5380db5]::placeholder{color:var(--gantt-text-placeholder, #c0c4cc)}.el-range-separator[data-v-d5380db5]{flex-shrink:0;line-height:32px;padding:0 5px;color:var(--gantt-text-primary, #606266);text-align:center;font-size:14px}.el-date-picker--small .el-input[data-v-d5380db5]{line-height:24px}.el-date-picker--small .el-input__wrapper[data-v-d5380db5]{padding:1px 7px}.el-date-picker--small .el-input__inner[data-v-d5380db5]{height:24px;line-height:24px;font-size:12px}.el-date-picker--small .el-range-separator[data-v-d5380db5]{line-height:24px;font-size:12px}.el-date-picker--small .el-icon[data-v-d5380db5]{width:12px;height:12px;font-size:12px}.el-date-picker--large .el-input[data-v-d5380db5]{line-height:40px}.el-date-picker--large .el-input__wrapper[data-v-d5380db5]{padding:1px 15px}.el-date-picker--large .el-input__inner[data-v-d5380db5]{height:40px;line-height:40px;font-size:16px}.el-date-picker--large .el-range-separator[data-v-d5380db5]{line-height:40px;font-size:16px}.el-date-picker--large .el-icon[data-v-d5380db5]{width:16px;height:16px;font-size:16px}.el-date-picker.is-focused .el-input__wrapper[data-v-d5380db5]{box-shadow:0 0 0 1px var(--gantt-primary, #409eff) inset}.el-date-picker:hover .el-input__wrapper[data-v-d5380db5]{box-shadow:0 0 0 1px var(--gantt-border-hover, #c0c4cc) inset}.el-date-picker.is-focused:hover .el-input__wrapper[data-v-d5380db5]{box-shadow:0 0 0 1px var(--gantt-primary, #409eff) inset}.el-date-picker.is-disabled .el-input__wrapper[data-v-d5380db5]{background-color:var(--gantt-bg-disabled, #f5f7fa);box-shadow:0 0 0 1px var(--gantt-border-light, #e4e7ed) inset;color:var(--gantt-text-placeholder, #c0c4cc);cursor:not-allowed}.el-date-picker.is-disabled .el-input__inner[data-v-d5380db5],.el-date-picker.is-disabled .el-range-input__start[data-v-d5380db5],.el-date-picker.is-disabled .el-range-input__end[data-v-d5380db5]{color:var(--gantt-text-placeholder, #c0c4cc);cursor:not-allowed}.el-date-picker.is-error .el-input__wrapper[data-v-d5380db5],.el-date-picker.is-error.is-focused .el-input__wrapper[data-v-d5380db5]{box-shadow:0 0 0 1px var(--gantt-danger, #f56c6c) inset}html[data-theme=dark]{background-color:var(--gantt-bg-secondary, #2c2c2c);box-shadow:0 0 0 1px var(--gantt-border-dark, #414243) inset}html[data-theme=dark]{color:var(--gantt-text-muted, #9e9e9e)}html[data-theme=dark]{box-shadow:0 0 0 1px var(--gantt-border-hover, #606266) inset}html[data-theme=dark]{box-shadow:0 0 0 1px var(--gantt-primary, #409eff) inset}html[data-theme=dark]{background-color:var(--gantt-bg-disabled, #3c3e40);box-shadow:0 0 0 1px var(--gantt-border-disabled, #4c4d4f) inset}html[data-theme=dark]{color:var(--gantt-text-disabled, #73767a)}.el-picker-panel[data-v-d5380db5]{position:fixed;background:var(--gantt-bg-primary, #ffffff);border:1px solid var(--gantt-border-color, #e4e7ed);border-radius:4px;box-shadow:0 4px 12px #00000026;margin-top:4px;min-width:280px;padding:8px;-webkit-user-select:none;user-select:none;z-index:10000}.el-date-picker__header[data-v-d5380db5]{display:flex;justify-content:space-between;align-items:center;padding:0 8px 8px;border-bottom:1px solid var(--gantt-border-light, #ebeef5);margin-bottom:8px}.el-date-picker__header-label[data-v-d5380db5]{font-size:14px;font-weight:500;color:var(--gantt-text-primary, #303133);flex:1;text-align:center;display:flex;align-items:center;justify-content:center;gap:4px}.el-date-picker__header-year[data-v-d5380db5],.el-date-picker__header-month[data-v-d5380db5]{cursor:pointer;padding:4px 8px;border-radius:4px;transition:all .2s}.el-date-picker__header-year[data-v-d5380db5]:hover,.el-date-picker__header-month[data-v-d5380db5]:hover{background:var(--gantt-bg-hover, #f5f7fa);color:var(--gantt-primary, #409eff)}.el-year-picker[data-v-d5380db5]{min-width:280px;animation:fadeIn-d5380db5 .2s ease-in-out}.el-year-picker__header[data-v-d5380db5]{display:flex;justify-content:space-between;align-items:center;padding:0 8px 8px;border-bottom:1px solid var(--gantt-border-light, #ebeef5);margin-bottom:8px}.el-year-picker__header-label[data-v-d5380db5]{font-size:14px;font-weight:500;color:var(--gantt-text-primary, #303133);flex:1;text-align:center}.el-year-picker__content[data-v-d5380db5]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:8px}.el-year-picker__item[data-v-d5380db5]{display:flex;align-items:center;justify-content:center;height:40px;cursor:pointer;border-radius:4px;font-size:14px;color:var(--gantt-text-primary, #606266);transition:all .2s}.el-year-picker__item[data-v-d5380db5]:hover{background:var(--gantt-bg-hover, #f5f7fa);color:var(--gantt-primary, #409eff);transform:scale(1.05)}.el-year-picker__item.is-current[data-v-d5380db5]{background:var(--gantt-primary, #409eff);color:#fff;font-weight:500;box-shadow:0 2px 4px #409eff4d}.el-month-picker[data-v-d5380db5]{min-width:280px;animation:fadeIn-d5380db5 .2s ease-in-out}.el-month-picker__header[data-v-d5380db5]{display:flex;justify-content:space-between;align-items:center;padding:0 8px 8px;border-bottom:1px solid var(--gantt-border-light, #ebeef5);margin-bottom:8px}.el-month-picker__header-label[data-v-d5380db5]{font-size:14px;font-weight:500;color:var(--gantt-text-primary, #303133);flex:1;text-align:center;cursor:pointer;padding:4px 8px;border-radius:4px;transition:all .2s}.el-month-picker__header-label[data-v-d5380db5]:hover{background:var(--gantt-bg-hover, #f5f7fa);color:var(--gantt-primary, #409eff)}.el-month-picker__content[data-v-d5380db5]{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:8px}.el-month-picker__item[data-v-d5380db5]{display:flex;align-items:center;justify-content:center;height:40px;cursor:pointer;border-radius:4px;font-size:14px;color:var(--gantt-text-primary, #606266);transition:all .2s}.el-month-picker__item[data-v-d5380db5]:hover{background:var(--gantt-bg-hover, #f5f7fa);color:var(--gantt-primary, #409eff);transform:scale(1.05)}.el-month-picker__item.is-current[data-v-d5380db5]{background:var(--gantt-primary, #409eff);color:#fff;font-weight:500;box-shadow:0 2px 4px #409eff4d}.el-picker-panel__icon-btn[data-v-d5380db5]{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:transparent;border:none;cursor:pointer;border-radius:4px;color:var(--gantt-text-regular, #909399);transition:all .2s;outline:none;font-size:14px;font-weight:700;font-family:monospace}.el-picker-panel__icon-btn[data-v-d5380db5]:hover{background:var(--gantt-bg-hover, #f5f7fa);color:var(--gantt-text-primary, #303133)}.el-date-picker__content[data-v-d5380db5]{padding:0}.el-date-table__header[data-v-d5380db5]{display:grid;grid-template-columns:repeat(7,1fr);gap:0;margin-bottom:4px}.el-date-table__header-cell[data-v-d5380db5]{display:flex;align-items:center;justify-content:center;height:32px;font-size:12px;font-weight:400;color:var(--gantt-text-regular, #909399);text-align:center}.el-date-table__body[data-v-d5380db5]{display:grid;grid-template-columns:repeat(7,1fr);gap:0}.el-date-table__cell[data-v-d5380db5]{display:flex;align-items:center;justify-content:center;height:32px;cursor:pointer;position:relative;transition:all .2s}.el-date-table__cell[data-v-d5380db5]:hover{background:var(--gantt-bg-hover, #f5f7fa)}.el-date-table__cell-inner[data-v-d5380db5]{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:4px;font-size:12px;color:var(--gantt-text-primary, #606266);transition:all .2s}.el-date-table__cell.is-other-month .el-date-table__cell-inner[data-v-d5380db5]{color:var(--gantt-text-placeholder, #c0c4cc)}.el-date-table__cell.is-today .el-date-table__cell-inner[data-v-d5380db5]{color:var(--gantt-primary, #409eff);font-weight:500}.el-date-table__cell.is-selected .el-date-table__cell-inner[data-v-d5380db5],.el-date-table__cell.is-range-start .el-date-table__cell-inner[data-v-d5380db5],.el-date-table__cell.is-range-end .el-date-table__cell-inner[data-v-d5380db5]{background:var(--gantt-primary, #409eff);color:#fff;font-weight:500}.el-date-table__cell.is-in-range[data-v-d5380db5]{background:var(--gantt-primary-light, #ecf5ff)}.el-date-table__cell.is-in-range .el-date-table__cell-inner[data-v-d5380db5]{color:var(--gantt-primary, #409eff)}.el-date-table__cell.is-range-start[data-v-d5380db5],.el-date-table__cell.is-range-end[data-v-d5380db5]{background:transparent}.el-date-table__cell.is-range-start.is-in-range[data-v-d5380db5],.el-date-table__cell.is-range-end.is-in-range[data-v-d5380db5]{background:var(--gantt-primary-light, #ecf5ff)}.el-date-picker-footer[data-v-d5380db5]{padding:8px 0 0;border-top:1px solid var(--gantt-border-light, #ebeef5);margin-top:8px;display:flex;justify-content:flex-end}.el-date-picker-btn[data-v-d5380db5]{padding:4px 12px;border-radius:4px;font-size:12px;cursor:pointer;transition:all .2s;border:1px solid;outline:none;height:24px;line-height:14px}.el-date-picker-btn--confirm[data-v-d5380db5]{background:var(--gantt-primary, #409eff);border-color:var(--gantt-primary, #409eff);color:#fff}.el-date-picker-btn--confirm[data-v-d5380db5]:hover{background:var(--gantt-primary-dark, #337ecc);border-color:var(--gantt-primary-dark, #337ecc)}html[data-theme=dark]{background:var(--gantt-bg-hover-dark, #3c3e40);color:var(--gantt-text-white, #ffffff)}html[data-theme=dark]{color:var(--gantt-text-muted, #73767a)}html[data-theme=dark]{background:#409eff33}@media(max-width:768px){.el-date-picker--large .el-input[data-v-d5380db5]{line-height:36px}.el-date-picker--large .el-input__inner[data-v-d5380db5]{height:36px;line-height:36px;font-size:14px}.el-date-picker--large .el-range-separator[data-v-d5380db5]{line-height:36px;font-size:14px}.el-picker-panel[data-v-d5380db5]{min-width:260px}}@keyframes fadeIn-d5380db5{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.el-date-picker__content-wrapper[data-v-d5380db5]{animation:fadeIn-d5380db5 .2s ease-in-out}.picker-fade-enter-active[data-v-d5380db5],.picker-fade-leave-active[data-v-d5380db5]{transition:all .2s ease}.picker-fade-enter-from[data-v-d5380db5],.picker-fade-leave-to[data-v-d5380db5]{opacity:0;transform:translateY(-10px) scale(.95)}.picker-fade-enter-to[data-v-d5380db5],.picker-fade-leave-from[data-v-d5380db5]{opacity:1;transform:translateY(0) scale(1)}.el-time-picker-input[data-v-d5380db5]{padding:8px 0;border-top:1px solid var(--gantt-border-light, #ebeef5);margin-top:8px;display:flex;align-items:center;gap:8px}.el-time-picker-label[data-v-d5380db5]{font-size:12px;color:var(--gantt-text-regular, #909399);font-weight:500;min-width:30px}.el-time-input[data-v-d5380db5]{flex:1;height:28px;padding:0 8px;border:1px solid var(--gantt-border-color, #dcdfe6);border-radius:4px;font-size:12px;color:var(--gantt-text-primary, #606266);background:var(--gantt-bg-primary, #ffffff);cursor:pointer;transition:all .2s}.el-time-input[data-v-d5380db5]:hover{border-color:var(--gantt-border-hover, #c0c4cc)}.el-time-input[data-v-d5380db5]:focus{outline:none;border-color:var(--gantt-primary, #409eff)}.el-time-picker-panel[data-v-d5380db5]{position:fixed;background:var(--gantt-bg-primary, #ffffff);border:1px solid var(--gantt-border-color, #e4e7ed);border-radius:4px;box-shadow:0 4px 12px #00000026;z-index:10002;width:180px;-webkit-user-select:none;user-select:none;padding:8px}.el-time-picker-header[data-v-d5380db5]{padding:0 8px 8px;border-bottom:1px solid var(--gantt-border-light, #ebeef5);margin-bottom:8px;text-align:center}.el-time-picker-title[data-v-d5380db5]{font-size:14px;font-weight:500;color:var(--gantt-text-primary, #303133)}.el-time-picker-content[data-v-d5380db5]{padding:0;display:flex;gap:4px;justify-content:center}.el-time-column[data-v-d5380db5]{flex:0 0 50px;text-align:center}.el-time-column-header[data-v-d5380db5]{font-size:12px;font-weight:500;color:var(--gantt-text-primary, #606266);margin-bottom:4px}.el-time-column-list[data-v-d5380db5]{max-height:160px;overflow-y:auto;border-radius:4px;scrollbar-width:none;-ms-overflow-style:none}.el-time-column-list[data-v-d5380db5]::-webkit-scrollbar{width:0px;background:transparent}.el-time-column-list[data-v-d5380db5]:hover{scrollbar-width:thin}.el-time-column-list[data-v-d5380db5]:hover::-webkit-scrollbar{width:4px}.el-time-column-list[data-v-d5380db5]:hover::-webkit-scrollbar-track{background:transparent}.el-time-column-list[data-v-d5380db5]:hover::-webkit-scrollbar-thumb{background:var(--gantt-border-color, #dcdfe6);border-radius:2px}.el-time-item[data-v-d5380db5]{height:28px;line-height:28px;cursor:pointer;font-size:12px;color:var(--gantt-text-primary, #606266);transition:all .2s}.el-time-item[data-v-d5380db5]:hover{background:var(--gantt-bg-hover, #f5f7fa);color:var(--gantt-primary, #409eff)}.el-time-item.is-active[data-v-d5380db5]{background:var(--gantt-primary, #409eff);color:#fff;font-weight:500}.el-time-picker-footer[data-v-d5380db5]{padding:8px 0 0;border-top:1px solid var(--gantt-border-light, #ebeef5);margin-top:8px;display:flex;justify-content:flex-end;gap:8px}.el-time-picker-btn[data-v-d5380db5]{padding:4px 12px;border-radius:4px;font-size:12px;cursor:pointer;transition:all .2s;border:1px solid;outline:none;height:24px;line-height:14px}.el-time-picker-btn--cancel[data-v-d5380db5]{background:var(--gantt-bg-primary, #ffffff);border-color:var(--gantt-border-color, #dcdfe6);color:var(--gantt-text-primary, #606266)}.el-time-picker-btn--cancel[data-v-d5380db5]:hover{background:var(--gantt-bg-hover, #f5f7fa);border-color:var(--gantt-border-hover, #c0c4cc)}.el-time-picker-btn--confirm[data-v-d5380db5]{background:var(--gantt-primary, #409eff);border-color:var(--gantt-primary, #409eff);color:#fff}.el-time-picker-btn--confirm[data-v-d5380db5]:hover{background:var(--gantt-primary-dark, #337ecc);border-color:var(--gantt-primary-dark, #337ecc)}html[data-theme=dark]{color:var(--gantt-text-secondary, #909399)}html[data-theme=dark]{border-color:var(--gantt-border-hover, #606266)}html[data-theme=dark]{background:var(--gantt-bg-secondary, #2c2c2c);border-color:var(--gantt-border-dark, #414243);box-shadow:0 4px 12px #0006}html[data-theme=dark]{border-bottom-color:var(--gantt-border-dark, #414243)}html[data-theme=dark]{border-color:var(--gantt-border-dark, #414243)}html[data-theme=dark]{background:var(--gantt-border-hover, #606266)}html[data-theme=dark]{color:var(--gantt-text-white, #ffffff)}html[data-theme=dark]{background:var(--gantt-bg-hover-dark, #3c3e40)}html[data-theme=dark]{border-top-color:var(--gantt-border-dark, #414243)}html[data-theme=dark]{background:var(--gantt-bg-secondary, #2c2c2c);border-color:var(--gantt-border-dark, #414243);color:var(--gantt-text-white, #ffffff)}html[data-theme=dark]{background:var(--gantt-bg-hover-dark, #3c3e40);border-color:var(--gantt-border-hover, #606266)}.gantt-btn{padding:10px 20px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;border:1px solid;transition:background-color .2s ease,border-color .2s ease,color .2s ease,opacity .2s ease;display:inline-flex;align-items:center;gap:6px;outline:none}.gantt-btn:disabled{cursor:not-allowed;opacity:.6}.gantt-btn-default{background:var(--gantt-bg-secondary, #f5f7fa);border-color:var(--gantt-border-medium, #dcdfe6);color:var(--gantt-text-secondary, #8d9095)}.gantt-btn-default:hover:not(:disabled){border-color:var(--gantt-border-dark, #c0c4cc);color:var(--gantt-primary, #409eff);background:var(--gantt-bg-hover, #f0f1f3)}:global(html[data-theme=dark]) .gantt-btn-default{background:var(--gantt-bg-tertiary, #454545)!important;border-color:var(--gantt-border-color, #dcdfe6)!important;color:var(--gantt-text-white, #ffffff)!important}:global(html[data-theme=dark]) .gantt-btn-default:hover:not(:disabled){background:var(--gantt-bg-hover, rgba(255, 255, 255, .1))!important;border-color:var(--gantt-primary, #409eff)!important;color:var(--gantt-primary, #409eff)!important}.gantt-btn-primary{background:var(--gantt-primary, #409eff);border-color:var(--gantt-primary, #409eff);color:#fff}.gantt-btn-primary:hover:not(:disabled){background:#66b1ff;border-color:#66b1ff}.gantt-btn-danger{background:var(--gantt-danger, #f56c6c);border-color:var(--gantt-danger, #f56c6c);color:#fff}.gantt-btn-danger:hover:not(:disabled){background:#f78989;border-color:#f78989}.gantt-btn-warning{background:var(--gantt-warning, #e6a23c);border-color:var(--gantt-warning, #e6a23c);color:#fff}.gantt-btn-warning:hover:not(:disabled){background:#ebb563;border-color:#ebb563}html[data-theme=dark]{background:#1e1e1e!important;color-scheme:dark!important}html[data-theme=dark] body{background:#1e1e1e!important;color:#e5e5e5!important}html[data-theme=light]{background:#fff!important;color-scheme:light!important}html[data-theme=light] body{background:#fff!important;color:#333!important}.gantt-confirm-overlay[data-v-d4d16a15]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000040;z-index:9999;display:flex;align-items:center;justify-content:center}.gantt-confirm-dialog[data-v-d4d16a15]{background:var(--gantt-bg-primary, #fff);border-radius:8px;box-shadow:0 4px 24px #0000002e;min-width:320px;max-width:90vw;padding:24px 28px 18px;display:flex;flex-direction:column}.gantt-confirm-header[data-v-d4d16a15]{margin-bottom:12px}.gantt-confirm-title[data-v-d4d16a15]{font-size:18px;font-weight:600;color:var(--gantt-text-primary, #303133);margin:0}.gantt-confirm-content[data-v-d4d16a15]{font-size:15px;color:var(--gantt-text-secondary, #606266);margin-bottom:18px}.gantt-confirm-footer[data-v-d4d16a15]{display:flex;justify-content:space-between;align-items:center;gap:12px}.gantt-confirm-footer-right[data-v-d4d16a15]{display:flex;gap:12px}html[data-theme=dark]{background:var(--gantt-bg-secondary, #f8f9fa)!important;border-color:var(--gantt-border-dark, #999999)!important}[data-v-9093e0d5]:root{--gantt-bg-primary: #ffffff;--gantt-bg-secondary: #f5f7fa;--gantt-bg-tertiary: #f9f9f9;--gantt-bg-hover: rgba(225, 228, 231, .2);--gantt-bg-hover-parent: rgba(245, 247, 250, .8);--gantt-bg-toolbar: #f8f9fa;--gantt-text-primary: #333333;--gantt-text-secondary: #8d9095;--gantt-text-muted: #909399;--gantt-text-white: #ffffff;--gantt-text-header: #333333;--gantt-border-light: #ebeef5;--gantt-border-medium: #dcdfe6;--gantt-border-dark: #c0c4cc;--gantt-border-color: #dcdfe6;--gantt-primary: #409eff;--gantt-primary-light: #ecf5ff;--gantt-success: #67c23a;--gantt-warning: #e6a23c;--gantt-warning-light: #f5dab1;--gantt-danger: #f56c6c;--gantt-danger-light: #fab6b6;--gantt-scrollbar-thumb: #c1c1c1;--gantt-scrollbar-thumb-hover: #a8a8a8}html[data-theme=dark][data-v-9093e0d5]{--gantt-bg-primary: #6b6b6b;--gantt-bg-secondary: #4b4b4b;--gantt-bg-tertiary: #7b7b7b;--gantt-bg-hover: rgba(180, 180, 180, .35);--gantt-bg-hover-parent: rgba(140, 140, 140, .8);--gantt-bg-toolbar: #5b5b5b;--gantt-text-primary: #ffffff;--gantt-text-secondary: #f8f8f8;--gantt-text-muted: #e0e0e0;--gantt-text-white: #ffffff;--gantt-text-parent: #ffffff;--gantt-text-header: #ffffff;--gantt-border-light: #888888;--gantt-border-medium: #666666;--gantt-border-dark: #999999;--gantt-border-color: #808080;--gantt-primary: #3399ff;--gantt-primary-light: #4d6699;--gantt-success: #66cc33;--gantt-warning: #ff9933;--gantt-warning-light: #cc7722;--gantt-danger: #ff4444;--gantt-danger-light: #cc3333;--gantt-scrollbar-thumb: #888888;--gantt-scrollbar-thumb-hover: #999999}.milestone-dialog-overlay[data-v-9093e0d5]{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000}.milestone-dialog[data-v-9093e0d5]{background:var(--gantt-bg-primary, #ffffff);border-radius:12px;box-shadow:0 20px 60px #00000026;width:90%;max-width:600px;max-height:90vh;overflow:hidden;border:1px solid var(--gantt-border-color, #dcdfe6)}.milestone-dialog-header[data-v-9093e0d5]{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--gantt-border-color, #dcdfe6);background:var(--gantt-bg-secondary, #f8f9fa)}.milestone-dialog-title[data-v-9093e0d5]{display:flex;align-items:center;gap:8px;margin:0;font-size:18px;font-weight:600;color:var(--gantt-text-primary, #303133)}.milestone-icon[data-v-9093e0d5]{width:20px;height:20px;color:var(--gantt-danger, #f56c6c);filter:drop-shadow(0 0 4px var(--gantt-danger, #f56c6c))}.milestone-dialog-close[data-v-9093e0d5]{width:32px;height:32px;border:none;background:transparent;cursor:pointer;border-radius:4px;display:flex;align-items:center;justify-content:center;color:var(--gantt-text-secondary, #909399);transition:all .2s ease;font-size:24px;font-weight:700;line-height:1}.milestone-dialog-content[data-v-9093e0d5]{padding:24px;max-height:60vh;overflow-y:auto}.milestone-form[data-v-9093e0d5]{display:flex;flex-direction:column;gap:20px}.milestone-form-row[data-v-9093e0d5]{display:flex;gap:16px;align-items:flex-start}.milestone-form-item[data-v-9093e0d5]{flex:1;display:flex;flex-direction:column;gap:8px}.milestone-form-item-full[data-v-9093e0d5]{flex:1 1 100%}.milestone-form-label[data-v-9093e0d5]{font-size:14px;font-weight:500;color:var(--gantt-text-secondary, #606266);line-height:1.4;margin:0}.milestone-form-label.required[data-v-9093e0d5]:after{content:"*";color:var(--gantt-danger, #f56c6c);margin-left:4px}.milestone-form-input[data-v-9093e0d5]{padding:12px 16px;border:1px solid var(--gantt-border-color, #dcdfe6);border-radius:4px;font-size:14px;color:var(--gantt-text-primary, #303133);background:var(--gantt-bg-primary, #ffffff);transition:all .2s ease;box-sizing:border-box;height:44px}.milestone-form-input[data-v-9093e0d5]:focus{outline:none;border-color:var(--gantt-primary, #409eff);box-shadow:0 0 0 2px #409eff1a}.milestone-form-input.error[data-v-9093e0d5]{border-color:var(--gantt-danger, #f56c6c);box-shadow:0 0 0 2px #f56c6c1a}.milestone-form-input[data-v-9093e0d5]::placeholder{color:var(--gantt-text-placeholder, #c0c4cc)}.milestone-form-textarea[data-v-9093e0d5]{width:100%;box-sizing:border-box;padding:12px 16px;border:1px solid var(--gantt-border-color, #dcdfe6);border-radius:4px;font-size:14px;color:var(--gantt-text-primary, #303133);background:var(--gantt-bg-primary, #ffffff);transition:all .2s ease;resize:none;min-height:80px;max-height:120px;font-family:inherit;line-height:1.5;overflow-y:auto}.milestone-form-textarea[data-v-9093e0d5]:focus{outline:none;border-color:var(--gantt-primary, #409eff);box-shadow:0 0 0 2px #409eff1a}.milestone-form-textarea[data-v-9093e0d5]::placeholder{color:var(--gantt-text-placeholder, #c0c4cc)}.textarea-wrapper[data-v-9093e0d5]{position:relative}.textarea-footer[data-v-9093e0d5]{display:flex;justify-content:flex-end;margin-top:4px}.char-count[data-v-9093e0d5]{font-size:12px;color:var(--gantt-text-secondary, #909399)}.milestone-form-error[data-v-9093e0d5]{font-size:12px;color:var(--gantt-danger, #f56c6c);margin-top:4px}.milestone-icon-dropdown[data-v-9093e0d5]{position:relative}.milestone-icon-trigger[data-v-9093e0d5]{width:100%;height:44px;padding:12px 16px;border:1px solid var(--gantt-border-color, #dcdfe6);border-radius:4px;background:var(--gantt-bg-primary, #ffffff);cursor:pointer;display:flex;align-items:center;justify-content:space-between;transition:all .2s ease;box-sizing:border-box}.milestone-icon-trigger[data-v-9093e0d5]:hover{border-color:var(--gantt-primary, #409eff)}.milestone-icon-dropdown.active .milestone-icon-trigger[data-v-9093e0d5]{border-color:var(--gantt-primary, #409eff);box-shadow:0 0 0 2px #409eff1a}.selected-icon[data-v-9093e0d5]{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--gantt-text-primary, #303133)}.selected-icon svg[data-v-9093e0d5]{width:16px;height:16px;color:var(--gantt-danger, #f56c6c)}.rocket-emoji-mini[data-v-9093e0d5]{font-size:16px;transform:rotate(-45deg);display:inline-block}.dropdown-arrow[data-v-9093e0d5]{width:16px;height:16px;color:var(--gantt-text-secondary, #909399);transition:transform .2s ease}.milestone-icon-dropdown.active .dropdown-arrow[data-v-9093e0d5]{transform:rotate(180deg)}.milestone-icon-options[data-v-9093e0d5]{position:absolute;top:100%;left:0;right:0;background:var(--gantt-bg-primary, #ffffff);border:1px solid var(--gantt-border-color, #dcdfe6);border-radius:4px;box-shadow:0 4px 12px #0000001a;z-index:1000;margin-top:4px}.icon-option[data-v-9093e0d5]{display:flex;align-items:center;gap:8px;padding:12px 16px;cursor:pointer;transition:all .2s ease;border-bottom:1px solid var(--gantt-border-light, #e4e7ed)}.icon-option[data-v-9093e0d5]:last-child{border-bottom:none}.icon-option[data-v-9093e0d5]:hover{background:var(--gantt-bg-light, #f5f7fa)}.icon-option.selected[data-v-9093e0d5]{background:var(--gantt-primary-lightest, #ecf5ff);color:var(--gantt-primary, #409eff)}.icon-option svg[data-v-9093e0d5]{width:16px;height:16px;color:var(--gantt-danger, #f56c6c)}.rocket-emoji-option[data-v-9093e0d5]{font-size:16px;transform:rotate(-45deg);display:inline-block}.icon-option span[data-v-9093e0d5]{font-size:14px}.milestone-dialog-footer[data-v-9093e0d5]{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-top:1px solid var(--gantt-border-color, #dcdfe6);background:var(--gantt-bg-secondary, #f8f9fa)}.milestone-dialog-footer-left[data-v-9093e0d5]{display:flex;align-items:center}.milestone-dialog-footer-right[data-v-9093e0d5]{display:flex;align-items:center;gap:12px}.milestone-confirm-dialog[data-v-9093e0d5]{background:var(--gantt-bg-primary, #ffffff);border-radius:8px;box-shadow:0 10px 30px #00000026;width:90%;max-width:400px;border:1px solid var(--gantt-border-color, #dcdfe6)}.milestone-confirm-header[data-v-9093e0d5]{padding:20px 24px 0}.milestone-confirm-title[data-v-9093e0d5]{margin:0;font-size:16px;font-weight:600;color:var(--gantt-text-primary, #303133)}.milestone-confirm-content[data-v-9093e0d5]{padding:16px 24px}.milestone-confirm-content p[data-v-9093e0d5]{margin:0;font-size:14px;color:var(--gantt-text-secondary, #606266);line-height:1.5}.milestone-confirm-footer[data-v-9093e0d5]{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid var(--gantt-border-color, #dcdfe6);background:var(--gantt-bg-secondary, #f8f9fa)}html[data-theme=dark]{background:var(--gantt-bg-dark, #1d1e1f);border-color:var(--gantt-border-dark, #3c3e40)}html[data-theme=dark]{background:var(--gantt-bg-darker, #141414);border-color:var(--gantt-border-dark, #3c3e40)}:root{--gantt-bg-primary: #ffffff;--gantt-bg-secondary: #f5f7fa;--gantt-bg-tertiary: #f9f9f9;--gantt-bg-hover: rgba(225, 228, 231, .2);--gantt-bg-hover-parent: rgba(245, 247, 250, .8);--gantt-bg-toolbar: #f8f9fa;--gantt-text-primary: #333333;--gantt-text-secondary: #8d9095;--gantt-text-muted: #909399;--gantt-text-white: #ffffff;--gantt-text-header: #333333;--gantt-border-light: #ebeef5;--gantt-border-medium: #dcdfe6;--gantt-border-dark: #c0c4cc;--gantt-border-color: #dcdfe6;--gantt-primary: #409eff;--gantt-primary-light: #ecf5ff;--gantt-success: #67c23a;--gantt-warning: #e6a23c;--gantt-warning-light: #f5dab1;--gantt-danger: #f56c6c;--gantt-danger-light: #fab6b6;--gantt-scrollbar-thumb: #c1c1c1;--gantt-scrollbar-thumb-hover: #a8a8a8}html[data-theme=dark]{--gantt-bg-primary: #6b6b6b;--gantt-bg-secondary: #4b4b4b;--gantt-bg-tertiary: #7b7b7b;--gantt-bg-hover: rgba(180, 180, 180, .35);--gantt-bg-hover-parent: rgba(140, 140, 140, .8);--gantt-bg-toolbar: #5b5b5b;--gantt-text-primary: #ffffff;--gantt-text-secondary: #f8f8f8;--gantt-text-muted: #e0e0e0;--gantt-text-white: #ffffff;--gantt-text-parent: #ffffff;--gantt-text-header: #ffffff;--gantt-border-light: #888888;--gantt-border-medium: #666666;--gantt-border-dark: #999999;--gantt-border-color: #808080;--gantt-primary: #3399ff;--gantt-primary-light: #4d6699;--gantt-success: #66cc33;--gantt-warning: #ff9933;--gantt-warning-light: #cc7722;--gantt-danger: #ff4444;--gantt-danger-light: #cc3333;--gantt-scrollbar-thumb: #888888;--gantt-scrollbar-thumb-hover: #999999}.version-history-drawer[data-v-630ad444]{position:fixed;top:0;left:0;width:50%;height:100vh;background:var(--gantt-bg-primary, #fff);box-shadow:2px 0 24px #0000001a;z-index:2000;transform:translate(-100%);transition:transform .3s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column}.version-history-drawer.open[data-v-630ad444]{transform:translate(0)}.drawer-mask[data-v-630ad444]{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#00000080;z-index:1999;transition:background .2s}.drawer-header[data-v-630ad444]{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--gantt-border-light, #ebeef5);background:var(--gantt-bg-secondary, #f5f7fa)}.drawer-title[data-v-630ad444]{margin:0;font-size:18px;font-weight:600;color:var(--gantt-text-primary, #303133)}.drawer-close-btn[data-v-630ad444]{background:none;border:none;cursor:pointer;padding:4px;color:var(--gantt-text-muted, #909399);transition:color .2s}.drawer-close-btn[data-v-630ad444]:hover{color:var(--gantt-text-secondary, #606266)}.close-icon[data-v-630ad444]{width:16px;height:16px;stroke-width:2}.drawer-body[data-v-630ad444]{flex:1;overflow-y:auto;padding:32px 32px 32px 60px;background:var(--gantt-bg-primary, #fff);scrollbar-width:thin;scrollbar-color:#b3c6e0 #f0f2f5}.drawer-body[data-v-630ad444]::-webkit-scrollbar{width:6px;background:#f0f2f5}.drawer-body[data-v-630ad444]::-webkit-scrollbar-thumb{background:#b3c6e0;border-radius:4px}.drawer-body[data-v-630ad444]::-webkit-scrollbar-track{background:#f0f2f5}.version-timeline[data-v-630ad444]{position:relative;margin-left:140px;border-left:0}.version-timeline[data-v-630ad444]:before{content:"";position:absolute;left:-8px;top:0;width:2px;height:100%;background:repeating-linear-gradient(to bottom,var(--gantt-timeline-line, #a0cfff) 0 8px,transparent 8px 16px);border-radius:1px;z-index:0}.version-timeline-group[data-v-630ad444]{position:relative;margin-bottom:40px;padding-left:18px;min-height:60px;transition:box-shadow .25s cubic-bezier(.4,0,.2,1)}.version-timeline-dot[data-v-630ad444]{position:absolute;left:-13px;top:18px;width:10px;height:10px;background:var(--gantt-timeline-dot, #a0cfff);border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 2px var(--gantt-timeline-line, #b3d8ff);z-index:3;display:flex;align-items:flex-start;justify-content:flex-end;transition:background .2s,box-shadow .2s}.version-timeline-group:hover .version-timeline-dot[data-v-630ad444]{background:var(--gantt-timeline-dot-hover, #409eff)}.version-timeline-dot.latest[data-v-630ad444]{background:var(--gantt-primary, #409eff)}.dot-label[data-v-630ad444]{position:absolute;left:-140px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:flex-end;min-width:90px;max-width:110px;font-size:13px;pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:left .25s cubic-bezier(.4,0,.2,1)}.version-timeline-group:hover .dot-label[data-v-630ad444]{left:-110px}.version-timeline-content.version-card[data-v-630ad444]{background:#fff;border-radius:10px;box-shadow:0 2px 12px #409eff14;padding:18px 18px 12px;margin-left:0;margin-top:0;margin-bottom:0;min-width:0;border:none;transition:box-shadow .2s;position:relative;z-index:2}.version-timeline-group:hover .version-timeline-content.version-card[data-v-630ad444]{box-shadow:0 8px 24px #409eff29}.version-timeline-content.version-card[data-v-630ad444]:before{content:"";position:absolute;left:-16px;top:18px;width:0;height:0;filter:drop-shadow(-2px 0 2px var(--gantt-timeline-line, #a0cfff));z-index:1}.version-timeline-group:hover .version-timeline-content.version-card[data-v-630ad444]:before{filter:drop-shadow(-2px 0 2px var(--gantt-primary, #409eff))}.version-notes[data-v-630ad444]{margin:0;padding-left:18px;color:#aaa;font-size:14px;list-style:disc;transition:color .2s}.version-timeline-group:hover .version-notes[data-v-630ad444]{color:#333}.dot-version[data-v-630ad444]{font-weight:700;font-size:16px;color:var(--gantt-primary, #409eff);letter-spacing:.5px;line-height:1.2;text-shadow:0 1px 4px rgba(64,158,255,.08)}.dot-date[data-v-630ad444]{color:#b0b3bb;font-size:12px;margin-top:2px;font-weight:400;letter-spacing:.2px;line-height:1.1}html[data-theme=dark]{background:var(--gantt-bg-primary, #6b6b6b)!important;box-shadow:2px 0 24px #0006!important}html[data-theme=dark]{background:var(--gantt-bg-secondary, #4b4b4b)!important;box-shadow:0 2px 8px #00000014!important}html[data-theme=dark]{color:var(--gantt-text-white, #fff)!important}html[data-theme=dark]{background:var(--gantt-bg-primary, #6b6b6b)!important;scrollbar-color:#888888 #4b4b4b!important}html[data-theme=dark]{background:#888!important}html[data-theme=dark]{background:#4b4b4b!important}html[data-theme=dark]{background:var(--gantt-bg-secondary, #4b4b4b)!important;box-shadow:0 2px 12px #00000052!important;color:var(--gantt-text-white, #fff)!important}html[data-theme=dark]{box-shadow:0 8px 24px #00000070!important}html[data-theme=dark]{filter:drop-shadow(-2px 0 2px #222)!important}html[data-theme=dark]{color:var(--gantt-primary, #3399ff)!important;text-shadow:0 1px 4px rgba(51,153,255,.12)!important}html[data-theme=dark]{color:#e0e0e0!important}html[data-theme=dark]{background:var(--gantt-timeline-dot, #3399ff)!important;box-shadow:0 0 0 2px #222!important}html[data-theme=dark]{background:var(--gantt-primary, #3399ff)!important}html[data-theme=dark]{background:repeating-linear-gradient(to bottom,#3399ff 0 8px,transparent 8px 16px)!important}.html-content-card[data-v-62bf5bbd]{display:inline-block}.task-row[data-v-62bf5bbd]{flex:1;padding:0 4px;text-overflow:ellipsis;white-space:nowrap}.task-bar[data-v-62bf5bbd]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn[data-v-62bf5bbd]{height:20px;margin-left:20px}.app-container[data-v-35a86b68]{width:100%;min-width:1200px;min-height:100vh;padding:0;box-sizing:border-box;background:var(--gantt-bg-secondary, #f0f2f5);display:flex;flex-direction:column}.data-source-panel[data-v-35a86b68]{background:var(--gantt-bg-primary, #ffffff);border:1px solid var(--gantt-border-color, #e4e7ed);border-radius:8px;padding:16px;margin:0 10px 20px;box-shadow:0 2px 6px #0000000d;display:flex;flex-direction:column;gap:16px}.data-source-panel.collapsed[data-v-35a86b68]{padding-bottom:12px}.data-source-header[data-v-35a86b68]{display:flex;align-items:center;gap:12px;cursor:pointer;font-size:14px;justify-content:space-between}.data-source-icon[data-v-35a86b68]{width:16px;height:16px;color:var(--gantt-primary-color, #409eff)}.data-source-content[data-v-35a86b68]{padding-top:4px}.data-source-buttons[data-v-35a86b68]{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.data-source-button[data-v-35a86b68]{flex:1 1 220px;min-width:200px;border:1px solid var(--gantt-border-color, #e4e7ed);border-radius:8px;padding:12px 16px;background:var(--gantt-bg-secondary, #f9fafc);cursor:pointer;transition:all .2s ease;text-align:left}.data-source-button[data-v-35a86b68]:hover{border-color:var(--gantt-primary-color, #409eff);box-shadow:0 2px 10px #409eff26}.data-source-button.active[data-v-35a86b68]{border-color:var(--gantt-primary-color, #409eff);background:#409eff14;box-shadow:0 2px 12px #409eff40}.data-source-button[data-v-35a86b68]:disabled{cursor:not-allowed;opacity:.7}.ds-label-row[data-v-35a86b68]{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.ds-label[data-v-35a86b68]{font-size:14px;font-weight:600;color:var(--gantt-text-primary, #333)}.ds-file[data-v-35a86b68]{font-size:12px;color:var(--gantt-text-muted, #909399)}.ds-desc[data-v-35a86b68]{font-size:13px;color:var(--gantt-text-secondary, #666);line-height:1.4}.data-loading-hint[data-v-35a86b68]{font-size:13px;color:var(--gantt-primary-color, #409eff);font-weight:500}.config-panel[data-v-35a86b68]{background:var(--gantt-bg-primary, #ffffff);border:1px solid var(--gantt-border-color, #e4e7ed);border-radius:8px;margin:0 10px 20px;box-shadow:0 2px 8px #0000001a;transition:all .3s ease;overflow:visible}.config-panel[data-v-35a86b68]:hover{box-shadow:0 4px 12px #00000026}.config-panel.collapsed[data-v-35a86b68]{border-radius:8px}.config-header[data-v-35a86b68]{display:flex;align-items:center;justify-content:space-between;padding:16px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s ease;border-bottom:1px solid var(--gantt-border-color, #e4e7ed);gap:12px}.config-panel.collapsed .config-header[data-v-35a86b68]{border-bottom:none}.config-header[data-v-35a86b68]:hover{background-color:var(--gantt-hover-bg, #f8f9fa)}.config-content[data-v-35a86b68]{padding:0 16px 16px;overflow:visible}.collapse-button[data-v-35a86b68]{display:flex;align-items:center;justify-content:center;border:none;background:transparent;border-radius:6px;cursor:pointer;transition:all .3s ease;color:var(--gantt-text-secondary, #666)}.collapse-button.collapsed[data-v-35a86b68]{transform:rotate(90deg)}.collapse-button[data-v-35a86b68]:hover{background-color:var(--gantt-hover-bg, #e8f4fd);color:var(--gantt-primary-color, #409eff)}.collapse-icon[data-v-35a86b68]{width:20px;height:20px;transition:transform .3s ease}.config-content-enter-active[data-v-35a86b68],.config-content-leave-active[data-v-35a86b68]{transition:all .3s ease;overflow:hidden}.config-content-enter-from[data-v-35a86b68],.config-content-leave-to[data-v-35a86b68]{height:0;opacity:0}.config-content-enter-to[data-v-35a86b68],.config-content-leave-from[data-v-35a86b68]{opacity:1}.config-title[data-v-35a86b68]{margin:0;font-size:16px;font-weight:600;color:var(--gantt-text-primary, #333);display:flex;align-items:center;gap:8px;flex:1;min-width:0;word-break:break-word}.config-icon[data-v-35a86b68]{width:20px;height:20px;color:var(--gantt-primary-color, #409eff)}.config-section[data-v-35a86b68]{margin-bottom:16px}.section-header[data-v-35a86b68]{display:flex;align-items:center;justify-content:space-between;padding:0 0 8px;margin-bottom:16px;background-color:transparent;border-bottom:2px solid var(--gantt-primary-color, #409eff);cursor:pointer;transition:all .3s ease;-webkit-user-select:none;user-select:none}.section-header[data-v-35a86b68]:hover{border-bottom-color:var(--gantt-primary-color-light, #66b3ff)}.section-header-title[data-v-35a86b68]{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--gantt-text-primary, #333);flex:1;min-width:0;word-break:break-word}.section-collapse-button[data-v-35a86b68]{background:none;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;color:var(--gantt-text-secondary, #666);transition:transform .3s ease,color .2s ease}.section-collapse-button[data-v-35a86b68]:hover{color:var(--gantt-primary-color, #409eff)}.section-collapse-button.collapsed[data-v-35a86b68]{transform:rotate(-90deg)}.section-content-enter-active[data-v-35a86b68],.section-content-leave-active[data-v-35a86b68]{transition:all .3s ease;overflow:hidden}.section-content-enter-from[data-v-35a86b68],.section-content-leave-to[data-v-35a86b68]{max-height:0;opacity:0;margin-bottom:0}.section-content-enter-to[data-v-35a86b68],.section-content-leave-from[data-v-35a86b68]{max-height:2000px;opacity:1;margin-bottom:16px}.section-title[data-v-35a86b68]{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--gantt-text-primary, #333);margin-bottom:16px;padding-bottom:8px;border-bottom:2px solid var(--gantt-primary-color, #409eff)}.section-icon[data-v-35a86b68]{width:18px;height:18px;color:var(--gantt-primary-color, #409eff)}.subsection[data-v-35a86b68]{margin-bottom:12px;padding-left:12px;border-left:2px solid var(--gantt-border-color, #e4e7ed)}.subsection-title[data-v-35a86b68]{font-size:13px;font-weight:600;color:var(--gantt-text-secondary, #666);margin-bottom:8px;display:flex;align-items:center;gap:6px}.section-subtitle[data-v-35a86b68]{font-size:15px;font-weight:700;color:var(--gantt-primary-color, #409eff);margin:12px 0;padding:8px 12px;background:var(--gantt-primary-light, #ecf5ff);border-radius:6px;border-left:4px solid var(--gantt-primary-color, #409eff);display:flex;align-items:center;gap:8px}.subsection-title[data-v-35a86b68]:before{content:"";display:inline-block;width:4px;height:4px;border-radius:50%;background-color:var(--gantt-primary-color, #409eff)}.width-controls[data-v-35a86b68]{display:flex;flex-direction:row;gap:12px}.width-control[data-v-35a86b68]{display:flex;align-items:center;gap:8px}.width-label[data-v-35a86b68]{flex:0 0 100px;font-size:13px;color:var(--text-secondary)}.width-input[data-v-35a86b68]{flex:1;padding:4px 8px;border:1px solid var(--border-color);border-radius:4px;background:var(--input-background, #fff);color:var(--text-primary);font-size:13px;max-width:100px}.width-input[data-v-35a86b68]:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 2px #409eff33}.width-unit[data-v-35a86b68]{flex:0 0 20px;font-size:12px;color:var(--text-tertiary)}.column-controls[data-v-35a86b68]{display:flex;flex-wrap:wrap;gap:16px}.column-control[data-v-35a86b68]{display:flex;align-items:center;gap:8px;cursor:pointer;padding:6px 12px;border-radius:6px;transition:all .2s ease;background:var(--gantt-bg-secondary, #f8f9fa);border:1px solid transparent}.column-control[data-v-35a86b68]:hover{background:var(--gantt-hover-bg, #e8f4fd);border-color:var(--gantt-primary-color, #409eff)}.column-control input[type=checkbox][data-v-35a86b68]{width:16px;height:16px;cursor:pointer;accent-color:var(--gantt-primary-color, #409eff)}.column-label[data-v-35a86b68]{font-size:14px;font-weight:500;color:var(--gantt-text-primary, #333);-webkit-user-select:none;user-select:none;transition:color .2s ease}.column-control:hover .column-label[data-v-35a86b68]{color:var(--gantt-primary-color, #409eff)}.taskbar-controls[data-v-35a86b68]{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start}.taskbar-control[data-v-35a86b68]{display:flex;align-items:center;gap:8px;cursor:pointer;padding:6px 12px;border-radius:6px;transition:all .2s ease;background:var(--gantt-bg-secondary, #f8f9fa);border:1px solid transparent}.taskbar-control[data-v-35a86b68]:hover{background:var(--gantt-hover-bg, #e8f4fd);border-color:var(--gantt-primary-color, #409eff)}.taskbar-control input[type=checkbox][data-v-35a86b68]{width:16px;height:16px;cursor:pointer;accent-color:var(--gantt-primary-color, #409eff)}.taskbar-label[data-v-35a86b68]{font-size:14px;font-weight:500;color:var(--gantt-text-primary, #333);-webkit-user-select:none;user-select:none;transition:color .2s ease}.taskbar-control:hover .taskbar-label[data-v-35a86b68]{color:var(--gantt-primary-color, #409eff)}.taskbar-advanced-controls[data-v-35a86b68]{display:flex;flex-direction:column;gap:12px}.control-row[data-v-35a86b68]{display:flex;align-items:center;gap:12px;padding:8px 12px;background:var(--gantt-bg-secondary, #f8f9fa);border-radius:6px;border:1px solid var(--gantt-border-color, #e4e7ed)}.control-indent[data-v-35a86b68]{margin-left:24px}.control-label[data-v-35a86b68]{flex:0 0 140px;font-size:13px;font-weight:500;color:var(--gantt-text-secondary, #666)}.control-input[data-v-35a86b68]{flex:0 0 80px;padding:4px 8px;border:1px solid var(--gantt-border-color, #e4e7ed);border-radius:4px;background:var(--gantt-bg-primary, #fff);color:var(--gantt-text-primary, #333);font-size:13px;transition:all .2s ease}.control-input[data-v-35a86b68]:focus{outline:none;border-color:var(--gantt-primary-color, #409eff);box-shadow:0 0 0 2px #409eff33}.control-hint[data-v-35a86b68]{flex:1;font-size:12px;color:var(--gantt-text-muted, #999);font-style:italic}.taskbar-field-control[data-v-35a86b68]{display:flex;align-items:center;gap:8px;padding:6px 12px;border-radius:6px;background:var(--gantt-bg-secondary, #f8f9fa);border:1px solid var(--gantt-border-color, #e4e7ed);min-width:300px}.field-label[data-v-35a86b68]{font-size:13px;font-weight:500;color:var(--gantt-text-secondary, #666);white-space:nowrap}.field-select[data-v-35a86b68]{flex:1;padding:4px 8px;border:1px solid var(--gantt-border-color, #e4e7ed);border-radius:4px;background:var(--gantt-bg-primary, #fff);color:var(--gantt-text-primary, #333);font-size:13px;cursor:pointer;transition:all .2s ease}.field-select[data-v-35a86b68]:focus{outline:none;border-color:var(--gantt-primary-color, #409eff);box-shadow:0 0 0 2px #409eff33}.page-title[data-v-35a86b68]{position:sticky;top:0;z-index:100;background:var(--gantt-bg-secondary, #f0f2f5);margin:0;padding:20px 10px;font-size:1.8rem;font-weight:600;color:var(--gantt-text-primary, #333);display:flex;align-items:center;justify-content:space-between;gap:12px;box-shadow:0 2px 8px #0000000f}.title-left[data-v-35a86b68]{display:flex;align-items:center;gap:12px;flex:1}.title-center[data-v-35a86b68]{display:flex;align-items:center;justify-content:center;flex:0 0 auto}.title-right[data-v-35a86b68]{display:flex;align-items:center;gap:8px;flex:1;justify-content:flex-end}.gitee-award-badge[data-v-35a86b68]{display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,#c71d2314,#ff6b3514);color:#c71d23;padding:8px 18px;border-radius:20px;font-size:.8rem;font-weight:600;text-decoration:none;border:1.5px solid rgba(199,29,35,.2);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:all .3s cubic-bezier(.4,0,.2,1);white-space:nowrap;position:relative;overflow:hidden}.gitee-award-badge[data-v-35a86b68]:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,215,0,.15),transparent);transition:left .5s ease}.gitee-award-badge[data-v-35a86b68]:hover{transform:translateY(-1px);background:linear-gradient(135deg,#c71d231f,#ff6b351f);border-color:#c71d2366;box-shadow:0 4px 16px #c71d2326;color:#e32329}.gitee-award-badge[data-v-35a86b68]:hover:before{left:100%}@keyframes pulse-glow-35a86b68{0%,to{border-color:#c71d2333}50%{border-color:#ffd70066}}@media(max-width:1400px){.gitee-award-badge[data-v-35a86b68]{font-size:.75rem;padding:7px 16px}}@media(max-width:1200px){.page-title[data-v-35a86b68]{flex-wrap:wrap}.title-center[data-v-35a86b68]{order:3;flex:1 0 100%;margin-top:10px;justify-content:center}.gitee-award-badge[data-v-35a86b68]{width:auto;max-width:100%}}@media(max-width:768px){.gitee-award-badge[data-v-35a86b68]{font-size:.7rem;padding:6px 14px}}.gantt-icon[data-v-35a86b68]{width:32px;height:32px;flex-shrink:0;transition:all .3s ease}.gantt-icon[data-v-35a86b68]:hover{transform:scale(1.05)}.version-badge[data-v-35a86b68]{display:inline-block;background:linear-gradient(135deg,#409eff,#36d1dc,#667eea);color:#fff;font-size:.7rem;font-weight:700;font-family:Consolas,Monaco,Courier New,monospace;padding:6px 12px;border-radius:16px;line-height:1;margin-left:8px;position:relative;overflow:hidden;text-transform:uppercase;letter-spacing:.5px;border:1px solid rgba(255,255,255,.2);box-shadow:0 0 20px #409eff4d,0 4px 15px #0003,inset 0 1px #fff3;text-shadow:0 1px 2px rgba(0,0,0,.3);transition:all .4s cubic-bezier(.175,.885,.32,1.275)}.version-badge[data-v-35a86b68]:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);transition:left .6s ease}.version-badge[data-v-35a86b68]:hover{transform:scale(1.05) translateY(-1px);box-shadow:0 0 30px #409eff80,0 8px 25px #0000004d,inset 0 1px #ffffff4d;background:linear-gradient(135deg,#4dabf7,#40c9ff,#74c0fc)}.version-badge[data-v-35a86b68]:hover:before{left:100%}@keyframes glow-pulse-35a86b68{0%,to{box-shadow:0 0 20px #409eff4d,0 4px 15px #0003,inset 0 1px #fff3}50%{box-shadow:0 0 30px #409eff80,0 4px 15px #0003,inset 0 1px #fff3}}.gantt-wrapper[data-v-35a86b68]{max-height:60vh;margin:0 10px 20px;min-width:0;display:flex;align-items:flex-start;justify-content:flex-start}.license-info[data-v-35a86b68]{text-align:center;color:var(--gantt-text-muted, #c0c4cc);font-size:14px;font-weight:400;letter-spacing:.5px;display:flex;align-items:center;justify-content:center;height:60px;gap:8px}html[data-theme=dark]{background:#1e1e1e;color:#e5e5e5}html[data-theme=dark]{background:var(--gantt-bg-primary, #2d3748);border-color:var(--gantt-border-color, #4a5568)}html[data-theme=dark]{background:var(--gantt-bg-primary, #2d3748);border-color:var(--gantt-border-color, #4a5568);box-shadow:none}html[data-theme=dark]{background:#409eff2e;border-color:var(--gantt-primary-color, #66b3ff)}html[data-theme=dark]{color:var(--gantt-text-muted, #a0aec0)}html[data-theme=dark]{color:var(--gantt-text-primary, #e2e8f0);border-bottom-color:var(--gantt-primary-color, #66b3ff)}html[data-theme=dark]{border-bottom-color:var(--gantt-primary-color, #66b3ff)}html[data-theme=dark]{border-bottom-color:var(--gantt-primary-color-light, #74c0fc)}html[data-theme=dark]{border-left-color:var(--gantt-border-color, #4a5568)}html[data-theme=dark]{color:var(--gantt-primary-color, #66b3ff);background:#66b3ff26;border-left-color:var(--gantt-primary-color, #66b3ff)}html[data-theme=dark]{background-color:var(--gantt-primary-color, #66b3ff)}html[data-theme=dark]{background:var(--gantt-bg-secondary, #1a202c)}html[data-theme=dark]{background:var(--gantt-hover-bg, #2d3748)}html[data-theme=dark]{color:var(--gantt-text-primary, #e2e8f0)}html[data-theme=dark]{color:var(--gantt-primary-color, #66b3ff)}html[data-theme=dark]{color:var(--gantt-text-muted, #718096)}html[data-theme=dark]{border-bottom-color:var(--gantt-border-color, #4a5568)}html[data-theme=dark]{background-color:var(--gantt-hover-bg, #2d3748)}html[data-theme=dark]{background-color:var(--gantt-hover-bg, #2d3748);color:var(--gantt-primary-color, #66b3ff)}html[data-theme=dark]{background:linear-gradient(135deg,#1a73e8,#00bcd4,#3f51b5);box-shadow:0 0 25px #66b1ff66,0 4px 15px #0006,inset 0 1px #ffffff1a}html[data-theme=dark]{background:linear-gradient(135deg,#2196f3,#00e5ff,#5c6bc0);box-shadow:0 0 35px #66b1ff99,0 8px 25px #00000080,inset 0 1px #fff3;border-color:#66b1ff80}@keyframes glow-pulse-dark-35a86b68{0%,to{box-shadow:0 0 25px #66b1ff66,0 4px 15px #0006,inset 0 1px #ffffff1a}50%{box-shadow:0 0 35px #66b1ff99,0 4px 15px #0006,inset 0 1px #ffffff1a}}.docs-links[data-v-35a86b68]{display:flex;align-items:center;gap:8px}.docs-divider[data-v-35a86b68]{display:inline-block;width:1px;height:24px;border-left:1.5px dashed #bbb;margin:0 8px;background:none}.doc-link[data-v-35a86b68]{display:flex;align-items:center;gap:6px;color:var(--gantt-text-primary, #333333);text-decoration:none;font-size:1rem;font-weight:500;transition:color .2s ease;padding:4px 8px;border-radius:4px}.doc-link[data-v-35a86b68]:hover{color:var(--gantt-text-primary, #333333);background-color:#0000001a}.doc-link[data-v-35a86b68]:nth-child(2){color:#c71d23}.doc-link[data-v-35a86b68]:nth-child(2):hover{color:#a91b1b;background-color:#c71d231a}.doc-icon[data-v-35a86b68]{width:24px;height:24px;flex-shrink:0;transition:filter .2s ease}.github-link .doc-icon[data-v-35a86b68]{filter:brightness(0) saturate(100%)}.github-link:hover .doc-icon[data-v-35a86b68]{filter:brightness(0) saturate(100%) invert(20%) sepia(15%) saturate(1500%) hue-rotate(200deg)}.gitee-link .doc-icon[data-v-35a86b68]{filter:brightness(0) saturate(100%) invert(20%) sepia(100%) saturate(2000%) hue-rotate(350deg) brightness(.8)}.gitee-link:hover .doc-icon[data-v-35a86b68]{filter:brightness(0) saturate(100%) invert(15%) sepia(100%) saturate(2500%) hue-rotate(350deg) brightness(.7)}.milestone-group-icon[data-v-35a86b68]{color:var(--gantt-danger, #f56c6c);fill:var(--gantt-danger, #f56c6c);opacity:.9;filter:drop-shadow(0 0 6px var(--gantt-danger, #f56c6c));animation:milestone-icon-glow 2.5s ease-in-out infinite alternate}.task-row:hover .milestone-group-icon[data-v-35a86b68]{filter:drop-shadow(0 0 10px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 16px rgba(245,108,108,.4));animation:milestone-icon-glow-intense 1.8s ease-in-out infinite alternate}html[data-theme=dark]{color:#fff;background-color:#ffffff1a}html[data-theme=dark]{color:#fff!important;background-color:#c71d231a}html[data-theme=dark]{filter:brightness(0) saturate(100%) invert(100%)}html[data-theme=dark]{filter:brightness(0) saturate(100%) invert(70%) sepia(50%) saturate(2000%) hue-rotate(190deg) brightness(1.2)}html[data-theme=dark]{filter:brightness(0) saturate(100%) invert(45%) sepia(100%) saturate(1500%) hue-rotate(340deg) brightness(1.1)}html[data-theme=dark]{filter:brightness(0) saturate(100%) invert(50%) sepia(100%) saturate(1800%) hue-rotate(340deg) brightness(1.2)}html[data-theme=dark]{color:var(--gantt-danger, #f67c7c);fill:var(--gantt-danger, #f67c7c);filter:drop-shadow(0 0 6px var(--gantt-danger, #f67c7c));animation:milestone-icon-glow-dark 2.5s ease-in-out infinite alternate}html[data-theme=dark]{filter:drop-shadow(0 0 10px var(--gantt-danger, #f67c7c)) drop-shadow(0 0 16px rgba(246,124,124,.4));animation:milestone-icon-glow-intense-dark 1.8s ease-in-out infinite alternate}.task-click-dialog-overlay[data-v-35a86b68]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:9999}.task-click-dialog[data-v-35a86b68]{background:var(--gantt-bg-primary, #ffffff);border-radius:8px;box-shadow:0 4px 20px #00000026;width:600px;max-width:90vw;max-height:80vh;display:flex;flex-direction:column}.task-click-dialog-header[data-v-35a86b68]{padding:20px;border-bottom:1px solid var(--gantt-border-color, #e4e7ed);display:flex;justify-content:space-between;align-items:center}.task-click-dialog-header h3[data-v-35a86b68]{margin:0;font-size:18px;font-weight:600;color:var(--gantt-text-primary, #303133)}.close-button[data-v-35a86b68]{background:none;border:none;font-size:28px;color:var(--gantt-text-secondary, #909399);cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .3s}.close-button[data-v-35a86b68]:hover{background:var(--gantt-bg-hover, #f5f7fa);color:var(--gantt-text-primary, #303133)}.task-click-dialog-content[data-v-35a86b68]{flex:1;overflow-y:auto;padding:20px}.task-properties[data-v-35a86b68]{display:flex;flex-direction:column;gap:12px}.property-row[data-v-35a86b68]{display:grid;grid-template-columns:150px 1fr;gap:12px;padding:8px 0;border-bottom:1px solid var(--gantt-border-light, #f0f0f0)}.property-row[data-v-35a86b68]:last-child{border-bottom:none}.property-key[data-v-35a86b68]{font-weight:600;color:var(--gantt-text-secondary, #606266);word-break:break-word}.property-value[data-v-35a86b68]{color:var(--gantt-text-primary, #303133);word-break:break-all;white-space:pre-wrap;font-family:Courier New,monospace;font-size:13px}.task-click-dialog-footer[data-v-35a86b68]{padding:16px 20px;border-top:1px solid var(--gantt-border-color, #e4e7ed);display:flex;justify-content:flex-end}.confirm-button[data-v-35a86b68]{padding:8px 20px;background:var(--gantt-primary-color, #409eff);color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:14px;font-weight:500;transition:all .3s}.confirm-button[data-v-35a86b68]:hover{background:var(--gantt-primary-color-hover, #66b1ff)}.confirm-button[data-v-35a86b68]:active{background:var(--gantt-primary-color-active, #3a8ee6)}html[data-theme=dark]{background:var(--gantt-bg-primary, #1a1a1a)}html[data-theme=dark]{background:var(--gantt-bg-hover, #2a2a2a);color:var(--gantt-text-primary, #e0e0e0)}html[data-theme=dark]{color:var(--gantt-text-secondary, #b0b0b0)}html[data-theme=dark]{color:var(--gantt-text-primary, #e0e0e0)}[data-v-35a86b68] .task-row-success{background-color:#f0f9ff!important;background:linear-gradient(90deg,#f0f9ff,#e8f5e9)!important;height:100px}[data-v-35a86b68] .task-row-success:hover{background:linear-gradient(90deg,#e1f5fe,#c8e6c9)!important}[data-v-35a86b68] .task-row-warning{background-color:#fdf6ec!important;background:linear-gradient(90deg,#fdf6ec,#fff3e0)!important}[data-v-35a86b68] .task-row-warning:hover{background:linear-gradient(90deg,#faecd8,#ffe0b2)!important}[data-v-35a86b68] .task-row-info{background-color:#f4f4f5!important;background:linear-gradient(90deg,#f4f4f5,#f5f5f5)!important}[data-v-35a86b68] .task-row-info:hover{background:linear-gradient(90deg,#e9e9eb,#eee)!important}html[data-theme=dark]{background:linear-gradient(90deg,#0a3a2a,#1b4d3e)!important}html[data-theme=dark]{background:linear-gradient(90deg,#0f4d35,#276749)!important}html[data-theme=dark]{background:linear-gradient(90deg,#3d2f1f,#4d3b2a)!important}html[data-theme=dark]{background:linear-gradient(90deg,#4d3b26,#5d4a35)!important}html[data-theme=dark]{background:linear-gradient(90deg,#2a2a2a,#333)!important}html[data-theme=dark]{background:linear-gradient(90deg,#353535,#3d3d3d)!important}.custom-menu[data-v-35a86b68]{position:fixed;z-index:999999!important;background:#fff;border:1px solid #ddd;border-radius:6px;box-shadow:0 4px 12px #00000026;min-width:200px;padding:8px 0;font-size:14px}.custom-menu-header[data-v-35a86b68]{padding:10px 16px;font-weight:700;color:#333;background:#f8f8f8;border-bottom:1px solid #eee;margin-bottom:4px}.custom-menu-item[data-v-35a86b68]{padding:10px 16px;cursor:pointer;transition:background .2s;-webkit-user-select:none;user-select:none}.custom-menu-item[data-v-35a86b68]:hover{background:#f0f0f0}.custom-menu-item.danger[data-v-35a86b68]{color:#ff4d4f}.custom-menu-item.danger[data-v-35a86b68]:hover{background:#fff1f0}.custom-menu-divider[data-v-35a86b68]{height:1px;background:#eee;margin:4px 0}html[data-theme=dark]{background:#2a2a2a;border-color:#444}html[data-theme=dark]{background:#1e1e1e;color:#e0e0e0;border-bottom-color:#444}html[data-theme=dark]{color:#e0e0e0}html[data-theme=dark]{background:#353535}html[data-theme=dark]{color:#ff6b6b}html[data-theme=dark]{background:#3a2020}html[data-theme=dark]{background:#444}.status-panel[data-v-35a86b68]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;padding:12px;background:var(--gantt-bg-secondary, #f8f9fa);border-radius:8px;border:1px solid var(--gantt-border-color, #e4e7ed)}.status-item[data-v-35a86b68]{display:flex;flex-direction:column;gap:4px}.status-label[data-v-35a86b68]{font-size:12px;color:var(--gantt-text-secondary, #909399);font-weight:500}.status-value[data-v-35a86b68]{font-size:14px;font-weight:600;color:var(--gantt-text-primary, #303133);padding:4px 8px;background:var(--gantt-bg-secondary, #f8f9fa);border-radius:4px;border:1px solid var(--gantt-border-color, #e4e7ed)}.status-value.active[data-v-35a86b68]{color:var(--gantt-primary-color, #409eff);border-color:var(--gantt-primary-color, #409eff);background:var(--gantt-primary-light, #ecf5ff)}.control-mode-switch[data-v-35a86b68]{display:flex;gap:8px;margin-bottom:8px}.mode-button[data-v-35a86b68]{flex:1;padding:10px 16px;font-size:13px;font-weight:600;border-radius:6px;border:2px solid var(--gantt-border-color, #dcdfe6);background:var(--gantt-bg-secondary, #f8f9fa);color:var(--gantt-text-secondary, #909399);cursor:pointer;transition:all .3s}.mode-button[data-v-35a86b68]:hover{border-color:var(--gantt-primary-color, #409eff);color:var(--gantt-primary-color, #409eff)}.mode-button.active[data-v-35a86b68]{background:var(--gantt-primary-color, #409eff);border-color:var(--gantt-primary-color, #409eff);color:#fff;box-shadow:0 2px 8px #409eff4d}.control-mode-hint[data-v-35a86b68]{margin:0;padding:8px 12px;font-size:12px;color:var(--gantt-text-secondary, #909399);background:var(--gantt-bg-secondary, #f8f9fa);border-radius:4px;border-left:3px solid var(--gantt-primary-color, #409eff)}.prop-info[data-v-35a86b68]{margin:4px 0 0;padding:4px 8px;font-size:11px;font-family:Courier New,monospace;color:var(--gantt-text-secondary, #909399);background:var(--gantt-bg-secondary, #f8f9fa);border-radius:3px;border:1px dashed var(--gantt-border-color, #e4e7ed)}.tool-control-row[data-v-35a86b68]{display:flex;gap:16px;align-items:flex-start}.tool-control-item[data-v-35a86b68]{flex:1;min-width:0}.tool-control-item .subsection-title[data-v-35a86b68]{margin-bottom:8px}.tool-control-row-full[data-v-35a86b68]{display:flex;gap:12px;align-items:flex-start}.tool-control-item-quarter[data-v-35a86b68]{flex:1;min-width:0}.tool-control-item-quarter .subsection-title[data-v-35a86b68]{margin-bottom:8px;font-size:13px}.tool-control-row-five[data-v-35a86b68]{display:flex;gap:8px;align-items:flex-start}.tool-control-item-fifth[data-v-35a86b68]{flex:1;min-width:0}.tool-control-item-fifth .subsection-title[data-v-35a86b68]{margin-bottom:6px;font-size:12px}.tool-control-flow[data-v-35a86b68]{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.tool-control-group[data-v-35a86b68]{display:flex;flex-direction:column;gap:6px}.tool-control-group .subsection-title[data-v-35a86b68]{margin:0;font-size:13px;font-weight:600}.tool-divider[data-v-35a86b68]{width:1px;height:40px;background:var(--gantt-border-color, #dcdfe6);margin:0 4px;align-self:center}.tool-nav-row[data-v-35a86b68]{display:flex;align-items:center;gap:6px;flex-wrap:nowrap}.tool-button-group[data-v-35a86b68]{display:flex;flex-wrap:nowrap;gap:6px;align-items:center}.tool-button[data-v-35a86b68]{padding:5px 12px;font-size:12px;border-radius:4px;border:1px solid var(--gantt-border-color, #dcdfe6);background:var(--gantt-bg-secondary, #f8f9fa);color:var(--gantt-text-primary, #606266);cursor:pointer;transition:all .2s;font-weight:500;white-space:nowrap;flex-shrink:0}.tool-button[data-v-35a86b68]:hover{background:var(--gantt-background-hover, #e8f4fd);border-color:var(--gantt-primary-color, #409eff);color:var(--gantt-primary-color, #409eff)}.tool-button.primary[data-v-35a86b68]{background:var(--gantt-primary-color, #409eff);border-color:var(--gantt-primary-color, #409eff);color:#fff}.tool-button.primary[data-v-35a86b68]:hover{background:var(--gantt-primary-hover, #66b1ff);border-color:var(--gantt-primary-hover, #66b1ff)}.tool-button.small[data-v-35a86b68]{padding:4px 10px;font-size:11px}.tool-button.tiny[data-v-35a86b68]{padding:3px 8px;font-size:10px}.tool-button.compact[data-v-35a86b68]{padding:4px 10px;font-size:11px}.tool-input-group[data-v-35a86b68]{display:flex;align-items:center;gap:6px;margin-top:6px}.tool-label[data-v-35a86b68]{font-size:12px;color:var(--gantt-text-primary, #606266);font-weight:500;min-width:100px;white-space:nowrap;flex-shrink:0}.tool-label.compact[data-v-35a86b68]{min-width:auto;font-size:11px}.tool-input[data-v-35a86b68]{flex:1;min-width:120px;padding:5px 10px;font-size:12px;border-radius:4px;border:1px solid var(--gantt-border-color, #dcdfe6);background:var(--gantt-bg-secondary, #f8f9fa);color:var(--gantt-text-primary, #606266);transition:border-color .2s}.tool-input.small[data-v-35a86b68]{min-width:80px;padding:4px 10px;font-size:11px}.tool-input.compact[data-v-35a86b68]{min-width:80px;padding:4px 8px;font-size:11px}.tool-input.tiny[data-v-35a86b68]{min-width:60px;padding:3px 6px;font-size:10px}.tool-input[data-v-35a86b68]:focus{outline:none;border-color:var(--gantt-primary-color, #409eff)}.tool-input[data-v-35a86b68]::placeholder{color:var(--gantt-text-placeholder, #c0c4cc)}.tool-note[data-v-35a86b68]{padding:12px;font-size:13px;color:var(--gantt-text-secondary, #909399);background:var(--gantt-background-secondary, #f9fafb);border-left:3px solid var(--gantt-primary-color, #409eff);border-radius:4px;line-height:1.6}html[data-theme=dark]{background:var(--gantt-bg-secondary, #1a202c);border-color:var(--gantt-border-color, #4a5568)}html[data-theme=dark]{background:#409eff26;border-color:var(--gantt-primary-color, #66b3ff);color:var(--gantt-primary-color, #66b3ff)}html[data-theme=dark]{background:var(--gantt-bg-secondary, #1a202c);color:var(--gantt-text-primary, #e2e8f0);border-color:var(--gantt-border-color, #4a5568)}html[data-theme=dark]{background:var(--gantt-hover-bg, #2d3748);border-color:var(--gantt-primary-color, #66b3ff);color:var(--gantt-primary-color, #66b3ff)}html[data-theme=dark]{background:var(--gantt-primary-color, #409eff);border-color:var(--gantt-primary-color, #409eff);color:#fff}html[data-theme=dark]{background:var(--gantt-primary-hover, #66b1ff);border-color:var(--gantt-primary-hover, #66b1ff)}html[data-theme=dark]{background:var(--gantt-border-color, #4a5568)}html[data-theme=dark]{background:var(--gantt-bg-primary, #2d3748);color:var(--gantt-text-primary, #e2e8f0);border-color:var(--gantt-border-color, #4a5568)}html[data-theme=dark]{color:var(--gantt-text-secondary, #a0aec0)}html[data-theme=dark]{background:var(--gantt-bg-secondary, #1a202c);color:var(--gantt-text-secondary, #a0aec0);border-left-color:var(--gantt-primary-color, #66b3ff)}.confirm-timer-dialog-overlay[data-v-4244c39f]{position:fixed;z-index:99999;top:0;left:0;right:0;bottom:0;background:#00000040;display:flex;align-items:center;justify-content:center}.confirm-timer-dialog[data-v-4244c39f]{background:var(--gantt-bg-primary, #fff);border-radius:8px;box-shadow:0 4px 24px #0000001f;padding:24px 32px 18px;min-width:340px;max-width:90vw;display:flex;flex-direction:column;gap:16px}html[data-theme=dark]{background:var(--gantt-bg-primary, #6b6b6b)}.dialog-message[data-v-4244c39f]{font-size:14px;margin-bottom:4px;line-height:1.7}.dialog-message .task-name-highlight[data-v-4244c39f]{color:#f44336;font-size:18px;font-weight:700;margin:0 2px;display:inline-block}.dialog-textarea[data-v-4244c39f]{border:1px solid #dcdfe6;border-radius:4px;font-size:14px;padding:8px 10px;resize:vertical;min-height:60px;margin-bottom:8px}.dialog-actions[data-v-4244c39f]{display:flex;justify-content:flex-end;gap:12px;margin-top:8px}.gantt-btn[data-v-4244c39f]{min-width:96px;padding:10px 0;border:none;border-radius:4px;font-size:15px;font-weight:500;cursor:pointer;transition:background .2s;text-align:center;display:inline-flex;align-items:center;justify-content:center}.gantt-btn-confirm[data-v-4244c39f]{background:#4caf50;color:#fff}.gantt-btn-confirm[data-v-4244c39f]:hover{background:#43a047}.task-context-menu[data-v-ace8cfaf]{position:fixed;background:#fff;border-radius:8px;box-shadow:0 2px 12px #00000026;padding:4px 0;width:180px;z-index:10000;-webkit-user-select:none;user-select:none;animation:fadeIn-ace8cfaf .15s ease-out;border:1px solid #e4e7ed}.menu-item[data-v-ace8cfaf]{padding:6px 12px;cursor:pointer;display:flex;align-items:center;justify-content:flex-start;font-size:14px;transition:all .2s ease;color:#333;gap:10px;height:36px}.menu-item[data-v-ace8cfaf]:hover{background-color:#f5f7fa;color:#409eff}.icon-wrapper[data-v-ace8cfaf]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.menu-icon[data-v-ace8cfaf]{display:inline-flex;align-items:center;justify-content:center;position:relative;flex-shrink:0;border-radius:2px;overflow:visible}.timer-icon[data-v-ace8cfaf],.stop-icon[data-v-ace8cfaf]{width:32px;height:32px}.predecessor-icon[data-v-ace8cfaf],.successor-icon[data-v-ace8cfaf]{width:20px;height:20px}.timer-icon[data-v-ace8cfaf]:before{content:"";position:absolute;width:20px;height:20px;border:2px solid currentColor;border-radius:50%;top:50%;left:50%;transform:translate(-50%,-50%);box-sizing:border-box}.timer-icon[data-v-ace8cfaf]:after{content:"";position:absolute;width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:8px solid currentColor;top:50%;left:50%;transform:translate(-30%,-50%)}.predecessor-icon[data-v-ace8cfaf]:before{content:"";position:absolute;width:12px;height:2px;background-color:currentColor;top:50%;left:50%;transform:translate(-35%,-50%)}.predecessor-icon[data-v-ace8cfaf]:after{content:"";position:absolute;width:5px;height:5px;border-left:2px solid currentColor;border-bottom:2px solid currentColor;top:50%;left:50%;transform:translate(-120%,-50%) rotate(45deg)}.successor-icon[data-v-ace8cfaf]:before{content:"";position:absolute;width:12px;height:2px;background-color:currentColor;top:50%;left:50%;transform:translate(-65%,-50%)}.successor-icon[data-v-ace8cfaf]:after{content:"";position:absolute;width:5px;height:5px;border-right:2px solid currentColor;border-top:2px solid currentColor;top:50%;left:50%;transform:translate(20%,-50%) rotate(45deg)}.stop-icon[data-v-ace8cfaf]:before{content:"";position:absolute;width:20px;height:20px;border:2px solid currentColor;border-radius:50%;top:50%;left:50%;transform:translate(-50%,-50%);box-sizing:border-box}.stop-icon[data-v-ace8cfaf]:after{content:"";position:absolute;width:8px;height:8px;background-color:currentColor;border-radius:0;top:50%;left:50%;transform:translate(-50%,-50%)}.menu-arrow[data-v-ace8cfaf]{position:absolute;width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:8px solid #fff;transform-origin:center;filter:drop-shadow(0 -1px 2px rgba(0,0,0,.1));z-index:10001;pointer-events:none}@keyframes fadeIn-ace8cfaf{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}html[data-theme=dark]{color:#e5e5e5}html[data-theme=dark]{background-color:#3a3a3a;color:#409eff}html[data-theme=dark]{border-bottom-color:#2c2c2c;filter:drop-shadow(0 -1px 2px rgba(0,0,0,.25))}.menu-item-danger[data-v-ace8cfaf]{color:#e74c3c}.menu-item-danger[data-v-ace8cfaf]:hover{background-color:#faeaea;color:#c0392b}.menu-icon.delete-icon[data-v-ace8cfaf]{width:20px;height:20px;display:inline-block;background:none;position:relative}.menu-icon.delete-icon[data-v-ace8cfaf]:before{content:"";display:block;width:16px;height:16px;margin:2px auto;background:url('data:image/svg+xml;utf8,') no-repeat center center;background-size:contain}.menu-divider[data-v-ace8cfaf]{height:1px;background:#ececec;width:92%;margin:4px 0 4px 4%}.menu-item-with-submenu[data-v-ace8cfaf]{position:relative;padding-right:30px}.submenu-arrow[data-v-ace8cfaf]{position:absolute;right:12px;font-style:normal;font-size:16px;color:#999}.submenu[data-v-ace8cfaf]{position:absolute;left:100%;top:0;margin-left:4px;background:#fff;border-radius:8px;box-shadow:0 2px 12px #00000026;padding:4px 0;min-width:200px;z-index:10001;border:1px solid #e4e7ed;animation:fadeIn-ace8cfaf .15s ease-out}.submenu-item[data-v-ace8cfaf]{padding:8px 16px;font-size:13px;white-space:nowrap}.submenu-item[data-v-ace8cfaf]:hover{background-color:#fef0f0;color:#f56c6c}.link-delete-icon[data-v-ace8cfaf]{width:20px;height:20px;position:relative}.link-delete-icon[data-v-ace8cfaf]:before{content:"";position:absolute;width:14px;height:2px;background-color:currentColor;top:50%;left:3px;transform:translateY(-50%) rotate(45deg)}.link-delete-icon[data-v-ace8cfaf]:after{content:"";position:absolute;width:14px;height:2px;background-color:currentColor;top:50%;left:3px;transform:translateY(-50%) rotate(-45deg)}html[data-theme=dark]{background-color:#2c2c2c;border-color:#444;box-shadow:0 2px 12px #00000059}html[data-theme=dark]{background-color:#3a1f1f;color:#f56c6c}.collapse-btn[data-v-d56e1479]{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;cursor:pointer;margin-right:4px;color:var(--gantt-primary);border-radius:2px;transition:background-color .2s ease}.collapse-btn[data-v-d56e1479]:hover{background-color:var(--gantt-primary-light)}.collapse-btn svg[data-v-d56e1479]{transition:transform .2s ease}.task-icon[data-v-7689b9a9]{margin-right:4px;color:var(--gantt-text-muted)}.task-icon svg[data-v-7689b9a9]{vertical-align:middle}.milestone-group-icon[data-v-7689b9a9]{color:var(--gantt-danger, #f56c6c);fill:var(--gantt-danger, #f56c6c)}html[data-theme=dark]{color:var(--gantt-danger, #f67c7c);fill:var(--gantt-danger, #f67c7c)}.status-badge[data-v-f020207b]{display:inline-block;padding:2px 6px;border-radius:2px;font-size:10px;font-weight:700;margin-left:6px;color:#fff}.status-badge.overtime[data-v-f020207b]{background-color:transparent;border:1px solid var(--gantt-danger);color:var(--gantt-danger)}.status-badge.overdue[data-v-f020207b]{background-color:var(--gantt-danger)}.timer-badge[data-v-f020207b]{display:inline-block;padding:2px 6px;border-radius:2px;font-size:10px;font-weight:700;margin-left:6px;background-color:var(--gantt-info, #909399);color:#fff}.timer-badge.timer-active[data-v-f020207b]{background-color:var(--gantt-success, #67c23a)}.timer-dot[data-v-f020207b]{display:inline-block;width:6px;height:6px;border-radius:50%;background-color:#fff;margin-right:4px;animation:timer-pulse-f020207b 1.5s ease-in-out infinite}@keyframes timer-pulse-f020207b{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}.task-name-text[data-v-0e4d76f3]{display:inline-block;max-width:calc(100% - 24px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.task-name-text.parent-task[data-v-0e4d76f3]{font-weight:700;color:var(--gantt-text-parent, var(--gantt-text-primary))}[data-v-e6d0e186]:root{--gantt-bg-primary: #ffffff;--gantt-bg-secondary: #f5f7fa;--gantt-bg-tertiary: #f9f9f9;--gantt-bg-hover: rgba(225, 228, 231, .2);--gantt-bg-hover-parent: rgba(245, 247, 250, .8);--gantt-bg-toolbar: #f8f9fa;--gantt-text-primary: #333333;--gantt-text-secondary: #8d9095;--gantt-text-muted: #909399;--gantt-text-white: #ffffff;--gantt-text-header: #333333;--gantt-border-light: #ebeef5;--gantt-border-medium: #dcdfe6;--gantt-border-dark: #c0c4cc;--gantt-border-color: #dcdfe6;--gantt-primary: #409eff;--gantt-primary-light: #ecf5ff;--gantt-success: #67c23a;--gantt-warning: #e6a23c;--gantt-warning-light: #f5dab1;--gantt-danger: #f56c6c;--gantt-danger-light: #fab6b6;--gantt-scrollbar-thumb: #c1c1c1;--gantt-scrollbar-thumb-hover: #a8a8a8}html[data-theme=dark][data-v-e6d0e186]{--gantt-bg-primary: #6b6b6b;--gantt-bg-secondary: #4b4b4b;--gantt-bg-tertiary: #7b7b7b;--gantt-bg-hover: rgba(180, 180, 180, .35);--gantt-bg-hover-parent: rgba(140, 140, 140, .8);--gantt-bg-toolbar: #5b5b5b;--gantt-text-primary: #ffffff;--gantt-text-secondary: #f8f8f8;--gantt-text-muted: #e0e0e0;--gantt-text-white: #ffffff;--gantt-text-parent: #ffffff;--gantt-text-header: #ffffff;--gantt-border-light: #888888;--gantt-border-medium: #666666;--gantt-border-dark: #999999;--gantt-border-color: #808080;--gantt-primary: #3399ff;--gantt-primary-light: #4d6699;--gantt-success: #66cc33;--gantt-warning: #ff9933;--gantt-warning-light: #cc7722;--gantt-danger: #ff4444;--gantt-danger-light: #cc3333;--gantt-scrollbar-thumb: #888888;--gantt-scrollbar-thumb-hover: #999999}.col[data-v-e6d0e186]{display:flex;align-items:center;justify-content:center;height:100%;border-right:1px solid var(--gantt-border-light);box-sizing:border-box;overflow:hidden;flex:1 0 120px;min-width:120px;max-width:120px}.col-name[data-v-e6d0e186]{flex:2 0 300px;min-width:300px;max-width:300px;justify-content:flex-start}.col-pre[data-v-e6d0e186],.col-assignee[data-v-e6d0e186]{flex:1 0 120px;min-width:120px;max-width:120px}.col-date[data-v-e6d0e186]{flex:1.2 0 140px;min-width:140px;max-width:140px}.col-hours[data-v-e6d0e186],.col-progress[data-v-e6d0e186]{flex:1 0 100px;min-width:100px;max-width:100px}.col-taskName[data-v-e6d0e186]{flex:2 0 300px;min-width:300px;max-width:300px;justify-content:flex-start}.col-predecessor[data-v-e6d0e186]{flex:1 0 120px;min-width:120px;max-width:120px}.col-startDate[data-v-e6d0e186],.col-endDate[data-v-e6d0e186]{flex:1.2 0 140px;min-width:140px;max-width:140px}.col-estimatedHours[data-v-e6d0e186],.col-actualHours[data-v-e6d0e186]{flex:1 0 100px;min-width:100px;max-width:100px}.col[data-v-e6d0e186]:last-child{border-right:none}.task-row[data-v-e6d0e186]{display:flex;border-bottom:1px solid var(--gantt-border-light);height:51px;box-sizing:border-box;background:var(--gantt-bg-primary);align-items:center;color:var(--gantt-text-secondary);cursor:pointer;transition:all .3s ease;transform:scale(1);transform-origin:5px center;z-index:1;position:relative}.task-row[data-v-e6d0e186]:hover{background-color:var(--gantt-bg-hover);transform:scale(1.02);box-shadow:0 4px 12px #00000026;z-index:10}.task-row-hovered[data-v-e6d0e186]{background-color:var(--gantt-bg-hover)!important;transform:scale(1.02)!important;box-shadow:0 4px 12px #00000026!important;z-index:10!important}.task-row.parent-task[data-v-e6d0e186]{background:var(--gantt-bg-tertiary);font-weight:600}.task-row.parent-task[data-v-e6d0e186]:hover{background:var(--gantt-bg-hover-parent, var(--gantt-bg-hover));transform:scale(1.02);box-shadow:0 6px 16px #0003;z-index:10}.task-row.parent-task.task-row-hovered[data-v-e6d0e186]{background:var(--gantt-bg-hover-parent, var(--gantt-bg-hover))!important;transform:scale(1.02)!important;box-shadow:0 6px 16px #0003!important;z-index:10!important}.milestone-group-row[data-v-e6d0e186]{border-left:3px solid var(--gantt-danger, #f56c6c);background:linear-gradient(90deg,var(--gantt-bg-tertiary) 0%,var(--gantt-bg-primary) 100%)}.milestone-group-row[data-v-e6d0e186]:hover{background:linear-gradient(90deg,var(--gantt-bg-hover-parent) 0%,var(--gantt-bg-hover) 100%);transform:scale(1.02);box-shadow:0 6px 16px #f56c6c4d,0 2px 8px #0000001a;z-index:10;border-left-color:var(--gantt-danger, #f56c6c);border-left-width:4px}.task-type-story[data-v-e6d0e186]{border-left:3px solid var(--gantt-primary, #409eff)}.task-type-task[data-v-e6d0e186]{border-left:3px solid var(--gantt-warning, #e6a23c)}.task-type-milestone[data-v-e6d0e186]{border-left:3px solid var(--gantt-danger, #f56c6c)}.task-type-story[data-v-e6d0e186]:hover{border-left:5px solid var(--gantt-primary, #409eff)}.task-type-task[data-v-e6d0e186]:hover{border-left:5px solid var(--gantt-warning, #e6a23c)}.task-type-milestone[data-v-e6d0e186]:hover{border-left:5px solid var(--gantt-danger, #f56c6c)}.task-row-hovered.task-type-story[data-v-e6d0e186]{border-left:5px solid var(--gantt-primary, #409eff)!important}.task-row-hovered.task-type-task[data-v-e6d0e186]{border-left:5px solid var(--gantt-warning, #e6a23c)!important}.task-row-hovered.task-type-milestone[data-v-e6d0e186]{border-left:5px solid var(--gantt-danger, #f56c6c)!important}html[data-theme=dark]{border-left-color:var(--gantt-primary, #7db4f0)}html[data-theme=dark]{border-left-color:var(--gantt-warning, #f0b83c)}html[data-theme=dark]{border-left-color:var(--gantt-danger, #f67c7c)}.collapse-btn[data-v-e6d0e186]:hover{background-color:var(--gantt-primary-light)}.collapse-btn svg[data-v-e6d0e186]{transition:transform .2s ease}.milestone-spacer[data-v-e6d0e186]{display:inline-flex;width:18px;height:18px;margin-right:4px}.leaf-spacer[data-v-e6d0e186]{display:inline-flex;width:20px;height:18px}.assignee-info[data-v-e6d0e186]{display:flex;align-items:center;gap:8px}.avatar[data-v-e6d0e186]{min-width:25px;min-height:25px;border-radius:50%;background:var(--gantt-primary);color:var(--gantt-text-white);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:500;border:2px solid var(--gantt-border-medium);box-sizing:border-box}.assignee-name[data-v-e6d0e186]{font-size:14px;color:var(--gantt-text-secondary)}.progress-value[data-v-e6d0e186]{font-weight:500;color:var(--gantt-text-secondary)}.progress-success[data-v-e6d0e186]{color:var(--gantt-success)}.progress-warning[data-v-e6d0e186]{color:var(--gantt-warning)}.progress-danger[data-v-e6d0e186]{color:var(--gantt-danger)}.milestone-item-icon[data-v-e6d0e186]{color:var(--gantt-danger, #f56c6c)}.milestone-empty-col[data-v-e6d0e186]{color:var(--gantt-text-disabled, #c0c4cc);border-right-color:var(--gantt-border-light)!important}.milestone-empty-col[data-v-e6d0e186]:after{content:"-"}html[data-theme=dark]{color:var(--gantt-danger, #f67c7c)}html[data-theme=dark]{color:var(--gantt-text-disabled, #606266);border-right-color:var(--gantt-border-light)!important}html[data-theme=dark]{box-shadow:0 4px 12px #ffffff1a,0 2px 8px #0000004d}html[data-theme=dark]{background-color:var(--gantt-bg-hover)!important;box-shadow:0 4px 12px #ffffff1a,0 2px 8px #0000004d!important}html[data-theme=dark]{box-shadow:0 6px 16px #ffffff26,0 2px 8px #0006}html[data-theme=dark]{background:var(--gantt-bg-hover-parent)!important;box-shadow:0 6px 16px #ffffff26,0 2px 8px #0006!important}html[data-theme=dark]{box-shadow:0 6px 16px #f67c7c66,0 2px 8px #ffffff1a}.task-row-dragging[data-v-e6d0e186]{opacity:.6!important;cursor:move!important}.task-row-drop-target.drop-after[data-v-e6d0e186]{border-bottom:3px solid var(--gantt-primary, #409eff)!important;background-color:#409eff0d!important}.task-row-drop-target.drop-child[data-v-e6d0e186]{border:2px solid var(--gantt-primary, #409eff)!important;background-color:#409eff0d!important}html[data-theme=dark]{background-color:#7db4f01a!important}.first-col-wrapper[data-v-e6d0e186]{display:flex;align-items:center;width:100%;box-sizing:border-box}.task-row .col[data-v-e6d0e186]{padding:0 10px}[data-v-40aec6fa]:root{--gantt-bg-primary: #ffffff;--gantt-bg-secondary: #f5f7fa;--gantt-bg-tertiary: #f9f9f9;--gantt-bg-hover: rgba(225, 228, 231, .2);--gantt-bg-hover-parent: rgba(245, 247, 250, .8);--gantt-bg-toolbar: #f8f9fa;--gantt-text-primary: #333333;--gantt-text-secondary: #8d9095;--gantt-text-muted: #909399;--gantt-text-white: #ffffff;--gantt-text-header: #333333;--gantt-border-light: #ebeef5;--gantt-border-medium: #dcdfe6;--gantt-border-dark: #c0c4cc;--gantt-border-color: #dcdfe6;--gantt-primary: #409eff;--gantt-primary-light: #ecf5ff;--gantt-success: #67c23a;--gantt-warning: #e6a23c;--gantt-warning-light: #f5dab1;--gantt-danger: #f56c6c;--gantt-danger-light: #fab6b6;--gantt-scrollbar-thumb: #c1c1c1;--gantt-scrollbar-thumb-hover: #a8a8a8}html[data-theme=dark][data-v-40aec6fa]{--gantt-bg-primary: #6b6b6b;--gantt-bg-secondary: #4b4b4b;--gantt-bg-tertiary: #7b7b7b;--gantt-bg-hover: rgba(180, 180, 180, .35);--gantt-bg-hover-parent: rgba(140, 140, 140, .8);--gantt-bg-toolbar: #5b5b5b;--gantt-text-primary: #ffffff;--gantt-text-secondary: #f8f8f8;--gantt-text-muted: #e0e0e0;--gantt-text-white: #ffffff;--gantt-text-parent: #ffffff;--gantt-text-header: #ffffff;--gantt-border-light: #888888;--gantt-border-medium: #666666;--gantt-border-dark: #999999;--gantt-border-color: #808080;--gantt-primary: #3399ff;--gantt-primary-light: #4d6699;--gantt-success: #66cc33;--gantt-warning: #ff9933;--gantt-warning-light: #cc7722;--gantt-danger: #ff4444;--gantt-danger-light: #cc3333;--gantt-scrollbar-thumb: #888888;--gantt-scrollbar-thumb-hover: #999999}.col[data-v-40aec6fa]{display:flex;align-items:center;justify-content:center;height:100%;border-right:1px solid var(--gantt-border-light);box-sizing:border-box;overflow:hidden;flex:1 0 120px;min-width:120px;max-width:120px}.col-name[data-v-40aec6fa]{flex:2 0 300px;min-width:300px;max-width:300px;justify-content:flex-start}.col-pre[data-v-40aec6fa],.col-assignee[data-v-40aec6fa]{flex:1 0 120px;min-width:120px;max-width:120px}.col-date[data-v-40aec6fa]{flex:1.2 0 140px;min-width:140px;max-width:140px}.col-hours[data-v-40aec6fa],.col-progress[data-v-40aec6fa]{flex:1 0 100px;min-width:100px;max-width:100px}.col-taskName[data-v-40aec6fa]{flex:2 0 300px;min-width:300px;max-width:300px;justify-content:flex-start}.col-predecessor[data-v-40aec6fa]{flex:1 0 120px;min-width:120px;max-width:120px}.col-startDate[data-v-40aec6fa],.col-endDate[data-v-40aec6fa]{flex:1.2 0 140px;min-width:140px;max-width:140px}.col-estimatedHours[data-v-40aec6fa],.col-actualHours[data-v-40aec6fa]{flex:1 0 100px;min-width:100px;max-width:100px}.col[data-v-40aec6fa]:last-child{border-right:none}.task-list[data-v-40aec6fa]{width:100%;height:100%;font-size:15px;color:var(--gantt-text-primary);background:var(--gantt-bg-primary);display:flex;flex-direction:column;overflow-x:auto;scrollbar-width:thin;scrollbar-color:var(--gantt-scrollbar-thumb) transparent}.task-list-header[data-v-40aec6fa]{display:flex;background:var(--gantt-bg-secondary);border-bottom:1px solid var(--gantt-border-medium);border-left:3px solid transparent;font-weight:700;padding:0;height:80px;align-items:center;width:max-content;flex-shrink:0;position:sticky;top:0;z-index:10}.task-list-header .col[data-v-40aec6fa]{justify-content:center;font-weight:700;background:var(--gantt-bg-secondary);color:var(--gantt-text-header);border-right-color:var(--gantt-border-medium);padding:0 10px;box-sizing:border-box}.task-list-body[data-v-40aec6fa]{width:max-content;background:var(--gantt-bg-primary);flex:1;overflow-x:hidden;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--gantt-scrollbar-thumb) transparent}.task-list-body-spacer[data-v-40aec6fa]{width:100%}.task-list-body[data-v-40aec6fa]::-webkit-scrollbar{width:8px;height:8px}.task-list-body[data-v-40aec6fa]::-webkit-scrollbar-track{background:transparent}.task-list-body[data-v-40aec6fa]::-webkit-scrollbar-thumb{background-color:var(--gantt-scrollbar-thumb);border-radius:4px;border:2px solid transparent;background-clip:content-box}.task-list-body[data-v-40aec6fa]::-webkit-scrollbar-thumb:hover{background-color:var(--gantt-scrollbar-thumb-hover)}.task-list-body[data-v-40aec6fa]::-webkit-scrollbar-corner{background:transparent}.link-anchor[data-v-9f128e78]{position:absolute;top:50%;width:8px;height:8px;border-radius:50%;background:#409eff;border:2px solid #fff;cursor:pointer;opacity:0;transition:opacity .2s,transform .2s;z-index:200;transform:translateY(-50%) scale(1)}.link-anchor.anchor-predecessor[data-v-9f128e78]{left:-4px}.link-anchor.anchor-successor[data-v-9f128e78]{right:-4px}.link-anchor.visible[data-v-9f128e78]{opacity:1}.link-anchor[data-v-9f128e78]:hover{transform:translateY(-50%) scale(1.3);box-shadow:0 0 8px #409eff99;opacity:1!important}.link-anchor.drag-source[data-v-9f128e78]{opacity:1;transform:translateY(-50%) scale(1)}.link-anchor.drag-target[data-v-9f128e78]{opacity:1;transform:translateY(-50%) scale(1.5);animation:pulse-9f128e78 .8s infinite}.link-anchor.valid-target[data-v-9f128e78]{background:#67c23a;border-color:#fff}.link-anchor.invalid-target[data-v-9f128e78]{background:#f56c6c;border-color:#fff}.anchor-tooltip[data-v-9f128e78]{position:absolute;bottom:100%;left:50%;transform:translate(-50%) translateY(-4px);padding:4px 8px;background:#000c;color:#fff;font-size:12px;white-space:nowrap;border-radius:4px;opacity:0;pointer-events:none;transition:opacity .2s}.link-anchor:hover .anchor-tooltip[data-v-9f128e78]{opacity:1}@keyframes pulse-9f128e78{0%,to{box-shadow:0 0 8px #409eff99}50%{box-shadow:0 0 16px #409eff}}html[data-theme=dark]{border-color:#1a1a1a}html[data-theme=dark]{background:#ffffffe6;color:#1a1a1a}.task-bar[data-v-7b051790]{position:absolute;border-radius:4px;-webkit-user-select:none;user-select:none;box-shadow:0 2px 8px #00000026;transition:box-shadow .2s,transform .3s,filter .3s;z-index:100;border:2px solid;overflow:visible}.task-bar[data-v-7b051790]:hover{box-shadow:0 4px 12px #0003;cursor:pointer}.task-bar.completed[data-v-7b051790]{cursor:pointer!important}.task-bar.completed[data-v-7b051790]:hover{box-shadow:0 2px 8px #00000026;cursor:pointer}.task-bar.dragging[data-v-7b051790]{opacity:.8;z-index:1000}.task-bar.resizing[data-v-7b051790]{z-index:1000}.task-bar.dimmed[data-v-7b051790]{opacity:.35!important;filter:grayscale(.3)!important;transition:all .3s ease!important}.task-bar.highlighted[data-v-7b051790]{z-index:1002!important;box-shadow:0 8px 24px #409eff80,0 6px 16px #0000004d!important;transform:translateY(-5px) scale(1.05)!important;transition:all .3s ease!important;cursor:grab!important}.task-bar.highlighted .task-bar-content[data-v-7b051790]{font-weight:700!important}.task-bar.primary-highlight[data-v-7b051790]{z-index:1003!important;box-shadow:0 12px 32px #409eff99,0 8px 20px #00000059!important;transform:translateY(-8px) scale(1.08)!important;transition:all .3s ease!important;cursor:grab!important}.task-bar.primary-highlight .task-bar-content[data-v-7b051790]{font-weight:700!important}.task-bar.parent-task[data-v-7b051790]{position:relative;border-radius:0;margin-bottom:20px;height:10px!important;border:none;background:#409eff!important;box-shadow:none;top:50%!important;transform:translateY(-50%);cursor:pointer!important;overflow:visible}.task-bar.parent-task.highlighted[data-v-7b051790]{box-shadow:0 8px 24px #409eff80,0 6px 16px #0000004d!important;filter:brightness(1.2) drop-shadow(0 0 8px rgba(64,158,255,.4))!important;transform:translateY(-50%) translateY(-5px) scale(1.05)!important}.task-bar.parent-task.primary-highlight[data-v-7b051790]{box-shadow:0 12px 32px #409eff99,0 8px 20px #00000059!important;filter:brightness(1.25) drop-shadow(0 0 12px rgba(64,158,255,.6))!important;transform:translateY(-50%) translateY(-8px) scale(1.08)!important}.task-bar.parent-task .parent-label[data-v-7b051790]{position:absolute;top:-8px;left:50%;transform:translate(-50%);background:#409eff;color:#fff;padding:4px 10px;border-radius:4px;font-size:11px;font-weight:600;white-space:nowrap;z-index:20}.task-bar.parent-task[data-v-7b051790]:before{content:"";position:absolute;top:10px;left:0;width:0;height:0;border-right:6px solid transparent;border-top:10px solid #409eff;z-index:15}.task-bar.parent-task[data-v-7b051790]:after{content:"";position:absolute;top:10px;right:0;width:0;height:0;border-left:6px solid transparent;border-top:10px solid #409eff;z-index:15}.progress-bar[data-v-7b051790]{position:absolute;top:0;left:0;height:100%;opacity:.3;transition:width .3s ease}.task-bar-content[data-v-7b051790]{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:0 8px;font-size:12px;font-weight:500;text-align:center;overflow:visible;position:relative;z-index:1}.task-avatar[data-v-7b051790]{position:absolute;left:calc(var(--handle-width, 5px) + 3px);top:50%;transform:translateY(-50%);width:22px;height:22px;border-radius:50%;overflow:hidden;background:#f0f0f0;border:2px solid rgba(255,255,255,.9);box-shadow:0 1px 3px #0003;z-index:15;pointer-events:none;flex-shrink:0;display:flex;align-items:center;justify-content:center}.task-avatar img[data-v-7b051790]{width:100%;height:100%;object-fit:cover;display:block}.task-avatar.avatar-default[data-v-7b051790]{background:var(--gantt-bg-tertiary, #e0e0e0);color:var(--gantt-text-tertiary, #9e9e9e)}.task-avatar .avatar-text[data-v-7b051790]{font-size:11px;font-weight:600;color:var(--gantt-text-white, #ffffff);background:var(--gantt-primary-color, #409eff);width:100%;height:100%;display:flex;align-items:center;justify-content:center;border-radius:50%}.task-avatar .avatar-icon[data-v-7b051790]{width:14px;height:14px;color:var(--gantt-text-tertiary, #9e9e9e)}.task-avatar.avatar-outside[data-v-7b051790]{left:-12px;z-index:20;border-width:2px;box-shadow:0 2px 6px #0000004d}.task-bar-content[data-v-7b051790]:has(.task-avatar){padding-left:36px}.task-bar-content[data-v-7b051790]:has(.task-avatar.avatar-outside){padding-left:8px}.task-name[data-v-7b051790]{white-space:nowrap;overflow:visible;line-height:1.2;font-size:12px;font-weight:700;z-index:10}.task-progress[data-v-7b051790]{opacity:.9;font-size:11px;font-weight:700;z-index:10}.resize-handle[data-v-7b051790]{position:absolute;top:0;height:100%;cursor:ew-resize;background:#0000001a;border-radius:2px;transition:all .2s;z-index:2}.resize-handle[data-v-7b051790]:hover{background:#00000040;transform:scaleX(1.2)}.resize-handle-left[data-v-7b051790]{left:0}.resize-handle-right[data-v-7b051790]{right:0}.task-bar.overflow-effect .resize-handle[data-v-7b051790]{z-index:20;background:#00000026}.task-bar.overflow-effect .resize-handle[data-v-7b051790]:hover{background:#0000004d;transform:scaleX(1.3)}.task-bar.overflow-effect .resize-handle-left[data-v-7b051790]{left:0}.task-bar.overflow-effect .resize-handle-right[data-v-7b051790]{right:0}.bubble-indicator[data-v-7b051790]{position:absolute;top:50%;width:8px;height:16px;z-index:15;cursor:pointer;border:2px solid;transform:translateY(-50%);box-shadow:0 2px 8px #00000026,0 1px 3px #0000004d;transition:all .3s cubic-bezier(.4,0,.2,1)}.bubble-left[data-v-7b051790]{border-radius:0 8px 8px 0;border-left:none;transform:translateY(-50%)}.bubble-right[data-v-7b051790]{border-radius:8px 0 0 8px;border-right:none;transform:translateY(-50%)}.bubble-indicator[data-v-7b051790]:hover{transform:translateY(-50%) scale(1.2);box-shadow:0 4px 12px #0003,0 2px 6px #0006}.bubble-left[data-v-7b051790]:hover,.bubble-right[data-v-7b051790]:hover{transform:translateY(-50%) scale(1.2)}@keyframes morphToLeftSemiCircle-7b051790{0%{width:60px;height:30px;border-radius:4px 0 0 4px;border-right:2px solid;border-left:none;opacity:.8;transform:translateY(-50%)}30%{width:30px;height:28px;border-radius:6px 0 0 6px;opacity:.9;transform:translateY(-50%)}70%{width:12px;height:20px;border-radius:0 10px 10px 0;border-right:2px solid;border-left:none;opacity:1;transform:translateY(-50%)}to{width:8px;height:16px;border-radius:0 8px 8px 0;border-right:2px solid;border-left:none;opacity:1;transform:translateY(-50%)}}@keyframes morphToRightSemiCircle-7b051790{0%{width:60px;height:30px;border-radius:0 4px 4px 0;border-left:2px solid;border-right:none;opacity:.8;transform:translateY(-50%)}30%{width:30px;height:28px;border-radius:0 6px 6px 0;opacity:.9;transform:translateY(-50%)}70%{width:12px;height:20px;border-radius:10px 0 0 10px;border-left:2px solid;border-right:none;opacity:1;transform:translateY(-50%)}to{width:8px;height:16px;border-radius:8px 0 0 8px;border-left:2px solid;border-right:none;opacity:1;transform:translateY(-50%)}}@keyframes semiCirclePulse-7b051790{0%{opacity:.8;transform:translateY(-50%) scale(1);box-shadow:0 2px 8px #00000026}50%{opacity:1;transform:translateY(-50%) scale(1.1);box-shadow:0 4px 12px #00000040}to{opacity:.8;transform:translateY(-50%) scale(1);box-shadow:0 2px 8px #00000026}}@keyframes leftSemiCirclePulse-7b051790{0%{opacity:.8;transform:translateY(-50%) scale(1);box-shadow:0 2px 8px #00000026}50%{opacity:1;transform:translateY(-50%) scale(1.1);box-shadow:0 4px 12px #00000040}to{opacity:.8;transform:translateY(-50%) scale(1);box-shadow:0 2px 8px #00000026}}@keyframes rightSemiCirclePulse-7b051790{0%{opacity:.8;transform:translateY(-50%) scale(1);box-shadow:0 2px 8px #00000026}50%{opacity:1;transform:translateY(-50%) scale(1.1);box-shadow:0 4px 12px #00000040}to{opacity:.8;transform:translateY(-50%) scale(1);box-shadow:0 2px 8px #00000026}}.bubble-animation-morphToSemiCircle[data-v-7b051790]{animation:semiCirclePulse-7b051790 2s ease-in-out infinite}.bubble-left.bubble-animation-morphToSemiCircle[data-v-7b051790]{animation:morphToLeftSemiCircle-7b051790 .8s cubic-bezier(.25,.46,.45,.94) forwards,leftSemiCirclePulse-7b051790 2s ease-in-out .8s infinite}.bubble-right.bubble-animation-morphToSemiCircle[data-v-7b051790]{animation:morphToRightSemiCircle-7b051790 .8s cubic-bezier(.25,.46,.45,.94) forwards,rightSemiCirclePulse-7b051790 2s ease-in-out .8s infinite}.task-tooltip[data-v-7b051790]{position:fixed;background:#000000e6;color:#fff;padding:12px;border-radius:8px;font-size:12px;z-index:9999999999;max-width:250px;box-shadow:0 8px 24px #0006,0 4px 12px #0000004d;pointer-events:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1px solid rgba(255,255,255,.1)}.tooltip-title[data-v-7b051790]{font-weight:700;font-size:13px;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid rgba(255,255,255,.2);color:#fff}.tooltip-content[data-v-7b051790]{display:flex;flex-direction:column;gap:4px}.tooltip-row[data-v-7b051790]{display:flex;justify-content:space-between;align-items:center;min-height:18px}.tooltip-label[data-v-7b051790]{opacity:.8;min-width:60px;color:#e5e5e5}.tooltip-value[data-v-7b051790]{font-weight:600;text-align:right;color:#fff}.drag-tooltip[data-v-7b051790]{position:fixed;background:#007bfff2;color:#fff;padding:8px 12px;border-radius:6px;font-size:12px;font-weight:500;z-index:999999999;box-shadow:0 2px 12px #007bff66;pointer-events:none;border:1px solid rgba(255,255,255,.2);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.drag-tooltip .tooltip-row[data-v-7b051790]{display:flex;justify-content:space-between;align-items:center;margin-bottom:2px}.drag-tooltip .tooltip-row[data-v-7b051790]:last-child{margin-bottom:0}.drag-tooltip .tooltip-label[data-v-7b051790]{opacity:.9;min-width:55px;font-size:11px}.drag-tooltip .tooltip-value[data-v-7b051790]{font-weight:600;text-align:right;font-size:11px;margin-left:8px}.sticky-text[data-v-7b051790]{position:absolute;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;line-height:1.2;z-index:10}html[data-theme=dark]{border-color:#111827!important;box-shadow:0 4px 12px #000000b3,0 2px 4px #0000004d!important}html[data-theme=dark]{box-shadow:0 6px 20px #000c,0 4px 8px #0006!important;transform:translateY(-2px);transition:all .2s ease}html[data-theme=dark]{background:#070a0ffa!important;color:#f9fafb!important;box-shadow:0 4px 12px #0009!important}html[data-theme=dark]{background:linear-gradient(135deg,#1e40af,#1e3a8a)!important;border-color:#1e3a8a!important}html[data-theme=dark]{background:linear-gradient(135deg,#c2410c,#9a3412)!important;border-color:#9a3412!important}html[data-theme=dark]{background:linear-gradient(135deg,#14532d,#16a34a)!important;border-color:#14532d!important}html[data-theme=dark]{background:linear-gradient(135deg,#991b1b,#dc2626)!important;border-color:#991b1b!important}html[data-theme=dark]{background:linear-gradient(135deg,#581c87,#7c3aed)!important;border-color:#581c87!important}html[data-theme=dark]{background:#fff3!important}html[data-theme=dark]{background:#fffc!important}html[data-theme=dark]{background:#ffffff1a!important}html[data-theme=dark]{background:#ffffff4d!important}.task-bar.week-view.short-task-bar[data-v-7b051790]{position:relative;overflow:visible}.task-bar.overflow-effect .task-bar-content[data-v-7b051790]{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:0 8px;font-size:12px;font-weight:500;text-align:center;overflow:visible;position:relative;z-index:10;pointer-events:auto}.task-bar.overflow-effect .task-name[data-v-7b051790]{white-space:nowrap;overflow:visible;line-height:1.2;font-size:12px;font-weight:700;z-index:15;pointer-events:none;min-width:max-content}.task-bar.overflow-effect .task-progress[data-v-7b051790]{opacity:.9;font-size:11px;font-weight:700;z-index:16;pointer-events:none;padding:1px 3px;border-radius:2px}.task-bar.week-view[data-v-7b051790]{min-width:4px;border-width:1px;border-radius:2px}html[data-theme=dark]{background:#ffffff26}html[data-theme=dark]{background:#ffffff4d}html[data-theme=dark]{background:#000000e6;color:#fff}html[data-theme=dark]{border-color:var(--gantt-border-light, #555555)}html[data-theme=dark]{border-color:#ffffff4d;box-shadow:0 1px 3px #00000080}html[data-theme=dark]{background:var(--gantt-bg-tertiary, #4a5568);color:var(--gantt-text-tertiary, #718096)}html[data-theme=dark]{color:var(--gantt-text-tertiary, #718096)}html[data-theme=dark]{border-color:#fff6;box-shadow:0 2px 8px #000000b3}[data-v-7405b38c]:root{--gantt-bg-primary: #ffffff;--gantt-bg-secondary: #f5f7fa;--gantt-bg-tertiary: #f9f9f9;--gantt-bg-hover: rgba(225, 228, 231, .2);--gantt-bg-hover-parent: rgba(245, 247, 250, .8);--gantt-bg-toolbar: #f8f9fa;--gantt-text-primary: #333333;--gantt-text-secondary: #8d9095;--gantt-text-muted: #909399;--gantt-text-white: #ffffff;--gantt-text-header: #333333;--gantt-border-light: #ebeef5;--gantt-border-medium: #dcdfe6;--gantt-border-dark: #c0c4cc;--gantt-border-color: #dcdfe6;--gantt-primary: #409eff;--gantt-primary-light: #ecf5ff;--gantt-success: #67c23a;--gantt-warning: #e6a23c;--gantt-warning-light: #f5dab1;--gantt-danger: #f56c6c;--gantt-danger-light: #fab6b6;--gantt-scrollbar-thumb: #c1c1c1;--gantt-scrollbar-thumb-hover: #a8a8a8}html[data-theme=dark][data-v-7405b38c]{--gantt-bg-primary: #6b6b6b;--gantt-bg-secondary: #4b4b4b;--gantt-bg-tertiary: #7b7b7b;--gantt-bg-hover: rgba(180, 180, 180, .35);--gantt-bg-hover-parent: rgba(140, 140, 140, .8);--gantt-bg-toolbar: #5b5b5b;--gantt-text-primary: #ffffff;--gantt-text-secondary: #f8f8f8;--gantt-text-muted: #e0e0e0;--gantt-text-white: #ffffff;--gantt-text-parent: #ffffff;--gantt-text-header: #ffffff;--gantt-border-light: #888888;--gantt-border-medium: #666666;--gantt-border-dark: #999999;--gantt-border-color: #808080;--gantt-primary: #3399ff;--gantt-primary-light: #4d6699;--gantt-success: #66cc33;--gantt-warning: #ff9933;--gantt-warning-light: #cc7722;--gantt-danger: #ff4444;--gantt-danger-light: #cc3333;--gantt-scrollbar-thumb: #888888;--gantt-scrollbar-thumb-hover: #999999}.milestone[data-v-7405b38c]{position:absolute;z-index:120;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;cursor:pointer;-webkit-user-select:none;user-select:none}.milestone.dimmed[data-v-7405b38c]{opacity:.35!important;filter:grayscale(.3)!important;transition:all .3s ease!important}.milestone svg[data-v-7405b38c]{filter:drop-shadow(0 0 8px var(--gantt-danger, #f56c6c));animation:milestone-glow-7405b38c 2s ease-in-out infinite alternate}@keyframes milestone-glow-7405b38c{0%{filter:drop-shadow(0 0 4px var(--gantt-danger, #f56c6c))}to{filter:drop-shadow(0 0 12px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 20px rgba(245,108,108,.3))}}.milestone:hover svg[data-v-7405b38c]{filter:drop-shadow(0 0 16px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 24px rgba(245,108,108,.4));animation:milestone-glow-intense-7405b38c 1.5s ease-in-out infinite alternate}@keyframes milestone-glow-intense-7405b38c{0%{filter:drop-shadow(0 0 12px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 20px rgba(245,108,108,.4))}to{filter:drop-shadow(0 0 20px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 32px rgba(245,108,108,.6))}}.milestone-label[data-v-7405b38c]{font-size:12px;font-weight:700;color:var(--gantt-text-primary, #222);white-space:nowrap;z-index:10}.milestone-label-right[data-v-7405b38c]{margin-left:5px;align-self:center}.milestone-label[style*="position: absolute"][data-v-7405b38c]{background:#ffffffe6;padding:2px 6px;border-radius:4px;box-shadow:0 2px 4px #0000001a;border:1px solid rgba(245,108,108,.2);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.rocket-emoji[data-v-7405b38c]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:20px;line-height:1;transform:rotate(-45deg);transition:transform .3s ease}.milestone:hover .rocket-emoji[data-v-7405b38c]{transform:rotate(-45deg) scale(1.1)}html[data-theme=dark]{color:var(--gantt-text-white, #ffffff)!important}html[data-theme=dark]{background:#1e1e1ee6!important;border-color:#f67c7c4d!important;color:#fff!important}html[data-theme=dark]{filter:drop-shadow(0 0 8px var(--gantt-danger, #f67c7c));animation:milestone-glow-dark-7405b38c 2s ease-in-out infinite alternate}html[data-theme=dark]{filter:drop-shadow(0 0 16px var(--gantt-danger, #f67c7c)) drop-shadow(0 0 24px rgba(246,124,124,.4));animation:milestone-glow-intense-dark-7405b38c 1.5s ease-in-out infinite alternate}@keyframes milestone-glow-dark-7405b38c{0%{filter:drop-shadow(0 0 4px var(--gantt-danger, #f67c7c))}to{filter:drop-shadow(0 0 12px var(--gantt-danger, #f67c7c)) drop-shadow(0 0 20px rgba(246,124,124,.3))}}@keyframes milestone-glow-intense-dark-7405b38c{0%{filter:drop-shadow(0 0 12px var(--gantt-danger, #f67c7c)) drop-shadow(0 0 20px rgba(246,124,124,.4))}to{filter:drop-shadow(0 0 20px var(--gantt-danger, #f67c7c)) drop-shadow(0 0 32px rgba(246,124,124,.6))}}.milestone.dragging[data-v-7405b38c]{z-index:1000;opacity:.8;transform:scale(1.1);cursor:grabbing}.milestone.dragging svg[data-v-7405b38c]{filter:drop-shadow(0 0 20px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 32px rgba(245,108,108,.6));animation:none}html[data-theme=dark]{filter:drop-shadow(0 0 20px var(--gantt-danger, #f67c7c)) drop-shadow(0 0 32px rgba(246,124,124,.6))}.milestone-sticky svg[data-v-7405b38c]{z-index:150;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1)}.milestone-sticky-left svg[data-v-7405b38c]{animation:milestone-glow-sticky-7405b38c 3s ease-in-out infinite alternate}.milestone-sticky-right svg[data-v-7405b38c]{animation:milestone-glow-sticky-7405b38c 3s ease-in-out infinite alternate}.milestone-sticky-left svg[style*=clip-path][data-v-7405b38c],.milestone-sticky-right svg[style*=clip-path][data-v-7405b38c]{animation:none;filter:none}@keyframes milestone-glow-sticky-7405b38c{0%{filter:drop-shadow(0 0 6px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 12px rgba(245,108,108,.4))}to{filter:drop-shadow(0 0 10px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 20px rgba(245,108,108,.6))}}html[data-theme=dark]{animation:milestone-glow-sticky-dark-7405b38c 3s ease-in-out infinite alternate}html[data-theme=dark]{animation:none;filter:none}@keyframes milestone-glow-sticky-dark-7405b38c{0%{filter:drop-shadow(0 0 6px var(--gantt-danger, #f67c7c)) drop-shadow(0 0 12px rgba(246,124,124,.4))}to{filter:drop-shadow(0 0 10px var(--gantt-danger, #f67c7c)) drop-shadow(0 0 20px rgba(246,124,124,.6))}}.milestone-sticky svg[style*=clip-path][data-v-7405b38c]{transition:clip-path .4s cubic-bezier(.4,0,.2,1),transform .3s cubic-bezier(.4,0,.2,1),filter .3s ease-in-out}.milestone-sticky-left svg[style*=clip-path][data-v-7405b38c]{transform-origin:100% 50%}.milestone-sticky-right svg[style*=clip-path][data-v-7405b38c]{transform-origin:0% 50%}.milestone-sticky svg[style*=clip-path][data-v-7405b38c]:hover{transform:scale(1.15);filter:drop-shadow(0 0 18px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 30px rgba(245,108,108,.8))}.milestone-sticky.milestone-pushing svg[data-v-7405b38c]{transform:scale(1.1);filter:drop-shadow(0 0 15px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 25px rgba(245,108,108,.7))}.milestone-sticky-left svg[data-v-7405b38c],.milestone-sticky-right svg[data-v-7405b38c]{animation:milestone-glow-sticky-enhanced-7405b38c 2s ease-in-out infinite alternate}@keyframes milestone-glow-sticky-enhanced-7405b38c{0%{filter:drop-shadow(0 0 8px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 16px rgba(245,108,108,.5))}to{filter:drop-shadow(0 0 12px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 24px rgba(245,108,108,.7)) drop-shadow(0 0 32px rgba(245,108,108,.3))}}.milestone-tooltip[data-v-7405b38c]{position:fixed;background:#000000e6;color:#fff;padding:8px 12px;border-radius:6px;font-size:12px;z-index:10000;max-width:300px;box-shadow:0 4px 12px #0000004d,0 2px 6px #0003;pointer-events:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.milestone-tooltip .tooltip-content[data-v-7405b38c]{font-weight:600;color:#fff;line-height:1.4}html[data-theme=dark]{background:#1e1e1ef2!important;color:#fff!important}.milestone-pushing[data-v-7405b38c]{animation:milestone-pushing-pulse-7405b38c .6s ease-in-out}@keyframes milestone-pushing-pulse-7405b38c{0%{transform:scale(1)}50%{transform:scale(1.1);filter:drop-shadow(0 0 12px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 20px rgba(245,108,108,.6))}to{transform:scale(1)}}.milestone-pushed-out[data-v-7405b38c]{opacity:0;transform:scale(.6) translateY(-10px);transition:all .4s cubic-bezier(.4,0,.2,1);pointer-events:none}.milestone-sticky svg[data-v-7405b38c]:hover{transform:scale(1.05);cursor:pointer}.milestone-sticky svg[data-v-7405b38c]:active{transform:scale(.95)}.gantt-links-canvas[data-v-7c939e26],.link-drag-guide-canvas[data-v-b2173cd8]{display:block;background:transparent;opacity:1}[data-v-57c6fd2e]:root{--gantt-bg-primary: #ffffff;--gantt-bg-secondary: #f5f7fa;--gantt-bg-tertiary: #f9f9f9;--gantt-bg-hover: rgba(225, 228, 231, .2);--gantt-bg-hover-parent: rgba(245, 247, 250, .8);--gantt-bg-toolbar: #f8f9fa;--gantt-text-primary: #333333;--gantt-text-secondary: #8d9095;--gantt-text-muted: #909399;--gantt-text-white: #ffffff;--gantt-text-header: #333333;--gantt-border-light: #ebeef5;--gantt-border-medium: #dcdfe6;--gantt-border-dark: #c0c4cc;--gantt-border-color: #dcdfe6;--gantt-primary: #409eff;--gantt-primary-light: #ecf5ff;--gantt-success: #67c23a;--gantt-warning: #e6a23c;--gantt-warning-light: #f5dab1;--gantt-danger: #f56c6c;--gantt-danger-light: #fab6b6;--gantt-scrollbar-thumb: #c1c1c1;--gantt-scrollbar-thumb-hover: #a8a8a8}html[data-theme=dark][data-v-57c6fd2e]{--gantt-bg-primary: #6b6b6b;--gantt-bg-secondary: #4b4b4b;--gantt-bg-tertiary: #7b7b7b;--gantt-bg-hover: rgba(180, 180, 180, .35);--gantt-bg-hover-parent: rgba(140, 140, 140, .8);--gantt-bg-toolbar: #5b5b5b;--gantt-text-primary: #ffffff;--gantt-text-secondary: #f8f8f8;--gantt-text-muted: #e0e0e0;--gantt-text-white: #ffffff;--gantt-text-parent: #ffffff;--gantt-text-header: #ffffff;--gantt-border-light: #888888;--gantt-border-medium: #666666;--gantt-border-dark: #999999;--gantt-border-color: #808080;--gantt-primary: #3399ff;--gantt-primary-light: #4d6699;--gantt-success: #66cc33;--gantt-warning: #ff9933;--gantt-warning-light: #cc7722;--gantt-danger: #ff4444;--gantt-danger-light: #cc3333;--gantt-scrollbar-thumb: #888888;--gantt-scrollbar-thumb-hover: #999999}.timeline[data-v-57c6fd2e]{height:100%;display:flex;flex-direction:column;background:var(--gantt-bg-primary, #ffffff);overflow-x:auto;overflow-y:auto;width:100%;cursor:grab;transition:background-color .3s ease;position:relative;scrollbar-width:thin;scrollbar-color:var(--gantt-scrollbar-thumb) transparent}.timeline[data-v-57c6fd2e]:active{cursor:grabbing}.timeline[data-v-57c6fd2e]::-webkit-scrollbar{width:8px;height:8px}.timeline[data-v-57c6fd2e]::-webkit-scrollbar-track{background:transparent}.timeline[data-v-57c6fd2e]::-webkit-scrollbar-thumb{background-color:var(--gantt-scrollbar-thumb);border-radius:4px;border:2px solid transparent;background-clip:content-box}.timeline[data-v-57c6fd2e]::-webkit-scrollbar-thumb:hover{background-color:var(--gantt-scrollbar-thumb-hover)}.timeline[data-v-57c6fd2e]::-webkit-scrollbar-corner{background:transparent}.timeline-header[data-v-57c6fd2e]{height:80px;background:var(--gantt-bg-secondary);width:fit-content;display:flex;flex-direction:column}.timeline-header-row[data-v-57c6fd2e]{display:flex;height:50%;border-bottom:1px solid var(--gantt-border-medium);min-width:fit-content}.timeline-header-row[data-v-57c6fd2e]:last-child{border-bottom:none}.year-month-row[data-v-57c6fd2e]{align-items:center;position:relative}.days-row[data-v-57c6fd2e]{align-items:center}.timeline-month[data-v-57c6fd2e]{display:flex;align-items:center;justify-content:center;border-right:1px solid var(--gantt-border-medium);box-sizing:border-box;height:100%;min-width:60px}.timeline-month[data-v-57c6fd2e]:last-child{border-right:none}.year-month-label[data-v-57c6fd2e]{font-size:14px;font-weight:600;color:var(--gantt-text-header);text-align:center}.timeline-month-days[data-v-57c6fd2e]{display:flex;height:100%;border-right:1px solid var(--gantt-border-medium);box-sizing:border-box;min-width:120px}.timeline-month-days[data-v-57c6fd2e]:last-child{border-right:none}.timeline-day[data-v-57c6fd2e]{display:flex;align-items:center;justify-content:center;border-right:1px solid var(--gantt-border-light);width:30px;box-sizing:border-box;border-bottom:1px solid var(--gantt-border-medium);transition:background-color .2s}.timeline-day[data-v-57c6fd2e]:last-child{border-right:none}.timeline-day.today[data-v-57c6fd2e]{background-color:var(--gantt-primary);color:var(--gantt-text-white)}.timeline-day.today .day-label[data-v-57c6fd2e]{color:var(--gantt-text-white);font-weight:600}.timeline-day.weekend[data-v-57c6fd2e]{background-color:var(--gantt-bg-secondary);opacity:.6}.timeline-day.weekend .day-label[data-v-57c6fd2e]{color:var(--gantt-border-dark)}.day-label[data-v-57c6fd2e]{font-size:12px;color:var(--gantt-text-header);text-align:center}.timeline-month-weeks[data-v-57c6fd2e]{display:flex;height:100%;border-right:1px solid var(--gantt-border-medium);box-sizing:border-box;min-width:60px}.timeline-month-weeks[data-v-57c6fd2e]:last-child{border-right:none}.timeline-week[data-v-57c6fd2e]{display:flex;flex-direction:column;align-items:center;justify-content:center;border-right:1px solid var(--gantt-border-light);width:60px;box-sizing:border-box;border-bottom:1px solid var(--gantt-border-medium);transition:background-color .2s;position:relative}.timeline-week[data-v-57c6fd2e]:last-child{border-right:none}.timeline-week.today[data-v-57c6fd2e]{background-color:var(--gantt-primary);color:var(--gantt-text-white)}.timeline-week.today .week-label[data-v-57c6fd2e]{color:var(--gantt-text-white);font-weight:600}.week-label[data-v-57c6fd2e]{font-size:12px;color:var(--gantt-text-header);text-align:center;margin-bottom:2px}.week-sub-days[data-v-57c6fd2e]{width:100%;height:100%;position:absolute;top:0;left:0;pointer-events:none}.month-first-flag[data-v-57c6fd2e]{position:absolute;bottom:-40px;z-index:1;pointer-events:none;display:flex;flex-direction:column;align-items:center}.flag-content[data-v-57c6fd2e]{background-color:var(--gantt-primary, #409eff);color:#fff;font-size:10px;font-weight:600;padding:1px 4px;border-radius:2px;text-align:center;min-width:12px;box-shadow:0 1px 3px #0003;order:1}.flag-pole[data-v-57c6fd2e]{width:1px;height:50px;background-color:var(--gantt-primary, #409eff);order:2}html[data-theme=dark]{background-color:var(--gantt-primary-light, #66b1ff)}html[data-theme=dark]{background-color:var(--gantt-primary-light, #66b1ff);box-shadow:0 1px 3px #0006}.month-week-columns[data-v-57c6fd2e]{display:flex;position:relative}.week-column[data-v-57c6fd2e]{position:relative;border-right:1px solid var(--gantt-border-light, #e4e7ed);box-sizing:border-box;display:grid;grid-template-columns:repeat(7,1fr);gap:0}.week-column[data-v-57c6fd2e]:last-child{border-right:none}.week-column.today[data-v-57c6fd2e]{background-color:#409eff1a}.sub-day-column[data-v-57c6fd2e]{position:relative;box-sizing:border-box}.sub-day-column.weekend[data-v-57c6fd2e]{background-color:var(--gantt-bg-secondary, #f5f7fa);opacity:.6}.sub-day-column.today[data-v-57c6fd2e]{background-color:var(--gantt-primary-light, rgba(64, 158, 255, .2))}.timeline-body[data-v-57c6fd2e]{flex:1;overflow-x:hidden;overflow-y:auto;position:relative;width:fit-content;background:var(--gantt-bg-primary, #ffffff);cursor:grab;transition:background-color .3s ease;scrollbar-width:none;-ms-overflow-style:none}.timeline-body[data-v-57c6fd2e]::-webkit-scrollbar{display:none}.timeline-body-content[data-v-57c6fd2e]{width:100%;height:100%;position:relative;background:var(--gantt-bg-primary, #ffffff);transition:background-color .3s ease}.task-bar-container[data-v-57c6fd2e]{position:absolute;top:0;left:0;width:100%;z-index:100;pointer-events:none}.task-rows[data-v-57c6fd2e]{position:relative;width:100%}.task-row[data-v-57c6fd2e]{position:absolute;left:0;width:100%;height:51px;pointer-events:auto;z-index:11;transition:background-color .2s ease}.timeline-body .task-row-hovered[data-v-57c6fd2e]{background-color:var(--gantt-bg-hover);z-index:11}.timeline-body .task-row-hovered[data-v-57c6fd2e]>*{pointer-events:auto}.task-bar-placeholder[data-v-57c6fd2e]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:#909399;pointer-events:auto}.placeholder-text[data-v-57c6fd2e]{font-size:18px;font-weight:600;margin-bottom:8px}.placeholder-desc[data-v-57c6fd2e]{font-size:14px;color:#c0c4cc}.day-columns[data-v-57c6fd2e]{display:flex;border-right:1px solid var(--gantt-border-light, #ebeef5);box-sizing:border-box;min-width:120px}.day-columns[data-v-57c6fd2e]:last-child{border-right:none}.month-day-columns[data-v-57c6fd2e]{display:flex;border-right:1px dashed var(--gantt-border-light, #ebeef5);box-sizing:border-box;min-width:120px}.month-day-columns[data-v-57c6fd2e]:last-child{border-right:none}.day-column[data-v-57c6fd2e]{width:30px;border-right:1px dashed var(--gantt-border-light, #f0f0f0);box-sizing:border-box;transition:background-color .2s;position:relative}.day-column[data-v-57c6fd2e]:last-child{border-right:none}.day-column.weekend[data-v-57c6fd2e]{background-color:var(--gantt-bg-secondary, #f5f7fa);opacity:.6}.day-column.today[data-v-57c6fd2e]{border-left:3px solid var(--gantt-primary-color, #409eff);background-color:var(--gantt-primary-color, #409eff);opacity:.15;position:relative}.day-column.today[data-v-57c6fd2e]:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(to bottom,#409eff1a,#409eff0d,#409eff1a);pointer-events:none}.day-column.today.weekend[data-v-57c6fd2e]{background-color:var(--gantt-primary-color, #409eff);opacity:.2}.day-column.today-highlight[data-v-57c6fd2e]{background-color:var(--gantt-primary-color, #409eff)!important;opacity:.5!important;animation:today-pulse-57c6fd2e 2s ease-in-out;border-left:3px solid var(--gantt-primary-color, #409eff)!important;box-shadow:0 0 8px #409eff66}.day-column.today-highlight[data-v-57c6fd2e]:before{background:linear-gradient(to bottom,#409eff4d,#409eff33,#409eff4d)!important}@keyframes today-pulse-57c6fd2e{0%{opacity:.8;transform:scale(1);box-shadow:0 0 8px #409eff99}50%{opacity:.9;transform:scale(1.02);box-shadow:0 0 12px #409effcc}to{opacity:.5;transform:scale(1);box-shadow:0 0 8px #409eff66}}html[data-theme=dark]{background:var(--gantt-bg-primary, #3a3a3a)!important;color:var(--gantt-text-primary, #e5e5e5)!important}html[data-theme=dark]{background:var(--gantt-bg-secondary, #1a1a1a)!important}html[data-theme=dark]{border-bottom-color:var(--gantt-border-medium, #333333)!important}html[data-theme=dark]{background:#1a365d!important;color:#e3f2fd!important}html[data-theme=dark]{background:var(--gantt-bg-secondary, #1a1a1a)!important;color:var(--gantt-text-muted, #b0b0b0)!important}html[data-theme=dark]{background:var(--gantt-bg-primary, #6b6b6b)!important}html[data-theme=dark]{border-left-color:var(--gantt-primary, #409eff)!important;background-color:var(--gantt-primary, #409eff)!important}html[data-theme=dark]{background:linear-gradient(to bottom,#409eff26,#409eff14,#409eff26)!important}html[data-theme=dark]{background-color:var(--gantt-primary-color, #409eff)!important}html[data-theme=dark]{background-color:var(--gantt-primary-color, #409eff)!important;box-shadow:0 0 8px #409eff99!important}html[data-theme=dark]{background:linear-gradient(to bottom,#409eff66,#409eff40,#409eff66)!important}html[data-theme=dark]{background-color:var(--gantt-bg-hover)!important;z-index:11!important}html[data-theme=dark]{pointer-events:auto!important}html[data-theme=dark]{color:var(--gantt-text-muted, #b0b0b0)!important}.year-row[data-v-57c6fd2e]{min-height:36px;border-bottom:1px solid var(--gantt-border-medium, #e1e4e8);position:relative}.timeline-year[data-v-57c6fd2e]{border-right:1px solid var(--gantt-border-medium, #e1e4e8);display:flex;align-items:center;justify-content:center;min-height:36px;box-sizing:border-box}.year-label[data-v-57c6fd2e]{color:var(--gantt-text-header, #24292e);font-weight:600;font-size:14px;line-height:1.5;text-align:center;white-space:nowrap}.months-row[data-v-57c6fd2e]{min-height:36px;border-bottom:1px solid var(--gantt-border-light, #d1d5da)}.timeline-month-item[data-v-57c6fd2e]{border-right:1px solid var(--gantt-border-light, #d1d5da);border-bottom:1px solid var(--gantt-border-light, #d1d5da);display:flex;align-items:center;justify-content:center;min-height:36px;transition:background-color .2s ease}.timeline-month-item.today[data-v-57c6fd2e]{background-color:var(--gantt-primary)}.month-label[data-v-57c6fd2e]{color:var(--gantt-text-primary, #24292e);font-weight:500;font-size:13px;line-height:1.5;text-align:center}.month-column[data-v-57c6fd2e]{border-right:1px solid var(--gantt-border-light, #d1d5da);position:relative;transition:background-color .2s ease}.month-column.today[data-v-57c6fd2e]{background-color:var(--gantt-primary-color, #409eff);opacity:.15}.quarter-header-container[data-v-57c6fd2e]{position:relative;overflow:hidden}.quarters-row[data-v-57c6fd2e]{min-height:36px;background:var(--gantt-bg-secondary, #f6f8fa);border-bottom:1px solid var(--gantt-border-light, #d1d5da);position:relative}.timeline-quarter-item[data-v-57c6fd2e]{border-right:1px solid var(--gantt-border-light, #d1d5da);border-bottom:1px solid var(--gantt-border-light, #d1d5da);display:flex;align-items:center;justify-content:center;min-height:36px;height:100%;transition:background-color .2s ease;box-sizing:border-box}.timeline-quarter-item.today[data-v-57c6fd2e]{background-color:var(--gantt-primary-color, #409eff);color:#fff}.quarter-label[data-v-57c6fd2e]{color:var(--gantt-text-primary, #24292e);font-weight:500;font-size:13px;line-height:1.5;text-align:center;white-space:nowrap}.timeline-quarter-item.today .quarter-label[data-v-57c6fd2e]{color:#fff}.quarter-columns-container[data-v-57c6fd2e]{position:relative;overflow:hidden}.quarter-column[data-v-57c6fd2e]{border-right:1px solid var(--gantt-border-light, #d1d5da);position:absolute;transition:background-color .2s ease;box-sizing:border-box}.quarter-column.today[data-v-57c6fd2e]{background-color:var(--gantt-primary-color, #409eff);opacity:.15}.half-years-row[data-v-57c6fd2e]{min-height:36px;border-bottom:1px solid var(--gantt-border-light, #d1d5da)}.timeline-half-year-item[data-v-57c6fd2e]{border-right:1px solid var(--gantt-border-light, #d1d5da);border-bottom:1px solid var(--gantt-border-light, #d1d5da);display:flex;align-items:center;justify-content:center;min-height:36px;transition:background-color .2s ease;box-sizing:border-box}.half-year-label[data-v-57c6fd2e]{color:var(--gantt-text-primary, #24292e);font-weight:500;font-size:13px;line-height:1.5;text-align:center}.half-year-column[data-v-57c6fd2e]{border-right:1px solid var(--gantt-border-light, #d1d5da);position:relative;transition:background-color .2s ease;background-color:var(--gantt-bg-primary, #ffffff);box-sizing:border-box}.half-year-column[data-v-57c6fd2e]:hover{background-color:var(--gantt-bg-hover, rgba(64, 158, 255, .05))}html[data-theme=dark]{background-color:var(--gantt-primary);border-left-color:var(--gantt-primary, #409eff)!important}html[data-theme=dark]{background-color:var(--gantt-primary, #409eff)!important}html[data-theme=dark]{background-color:var(--gantt-primary-color, #409eff);border-left-color:var(--gantt-primary-color, #409eff)!important}html[data-theme=dark]{border-right-color:var(--gantt-border-light, #555555)!important;background-color:var(--gantt-bg-primary, #6b6b6b)!important}html[data-theme=dark]{background-color:var(--gantt-bg-hover, rgba(64, 158, 255, .1))!important}.today-line-year-view[data-v-57c6fd2e]{position:absolute;top:0;width:2px;background-color:var(--gantt-primary, #409eff);z-index:30;pointer-events:none;box-shadow:0 0 4px #409eff4d}html[data-theme=dark]{background-color:var(--gantt-primary, #66b1ff);box-shadow:0 0 4px #66b1ff66}.hour-header-container[data-v-57c6fd2e]{position:relative;min-width:100%}.date-row[data-v-57c6fd2e]{min-height:40px;border-bottom:1px solid var(--gantt-border-light, #d1d5da);position:relative;overflow:hidden}.timeline-day-item[data-v-57c6fd2e]{top:0;height:100%;border-right:1px solid var(--gantt-border-medium, #e1e4e8);background-color:var(--gantt-bg-secondary, #f6f8fa);display:flex;align-items:center;justify-content:center;min-height:40px;box-sizing:border-box}.timeline-day-item.hour-view-day[data-v-57c6fd2e]{position:absolute;top:0;height:100%;border-right:1px solid var(--gantt-border-medium, #e1e4e8);background-color:var(--gantt-bg-secondary, #f6f8fa)}.date-label[data-v-57c6fd2e]{color:var(--gantt-text-header, #24292e);font-weight:600;font-size:14px;line-height:1.5;text-align:center}.hours-row[data-v-57c6fd2e]{min-height:40px;border-bottom:1px solid var(--gantt-border-light, #d1d5da);position:relative;overflow:hidden;display:flex}.hour-label[data-v-57c6fd2e]{color:var(--gantt-text-primary, #24292e);font-weight:600;font-size:13px;line-height:1.3;text-align:center;letter-spacing:0px}.quarter-hour-lines[data-v-57c6fd2e]{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none}.quarter-line[data-v-57c6fd2e]{position:absolute;top:0;bottom:0;width:1px;background-color:var(--gantt-border-light, #d1d5da);opacity:.5}.timeline-hour-item[data-v-57c6fd2e]{top:0;height:100%;border-right:1px solid var(--gantt-border-light, #d1d5da);display:flex;align-items:center;justify-content:center;min-height:40px;transition:background-color .2s ease;box-sizing:border-box;flex-shrink:0}.timeline-hour-item.today[data-v-57c6fd2e]{background-color:var(--gantt-primary);color:var(--gantt-text-white)}.timeline-hour-item.today .hour-label[data-v-57c6fd2e]{color:var(--gantt-text-white)}.timeline-hour-item.non-working-hour[data-v-57c6fd2e]{background-color:var(--gantt-bg-secondary)}.timeline-hour-item.non-working-hour .hour-label[data-v-57c6fd2e]{color:var(--gantt-border-dark)}.hour-columns-container[data-v-57c6fd2e]{position:relative;min-width:100%;min-height:100px;display:flex}.hour-column[data-v-57c6fd2e]{position:absolute;top:0;bottom:0;border-right:1px solid var(--gantt-border-light, #e0e6ed);background-color:var(--gantt-bg-primary, #ffffff);transition:background-color .2s ease;box-sizing:border-box;flex-shrink:0;pointer-events:none;z-index:1}.hour-column.weekend[data-v-57c6fd2e],.hour-column.rest-hour[data-v-57c6fd2e]{background-color:var(--gantt-bg-secondary, #f5f7fa);opacity:.6}.hour-column.working-hour[data-v-57c6fd2e]{background-color:var(--gantt-bg-primary, #ffffff)}.hour-column.today[data-v-57c6fd2e]{background-color:var(--gantt-primary-color, #409eff);opacity:.2;border-left:2px solid var(--gantt-primary-color, #409eff)}.hour-column[data-v-57c6fd2e]:hover{background-color:var(--gantt-bg-hover, rgba(64, 158, 255, .05))}html[data-theme=dark]{border-right-color:var(--gantt-border-medium, #333333)!important}html[data-theme=dark]{color:var(--gantt-text-header, #ffffff)!important}html[data-theme=dark]{background:var(--gantt-bg-secondary, #1a1a1a)!important;border-bottom-color:var(--gantt-border-medium, #333333)!important}html[data-theme=dark]{border-right-color:var(--gantt-border-light, #555555)!important;border-bottom-color:var(--gantt-border-light, #555555)!important}html[data-theme=dark]{background-color:var(--gantt-primary, #1a365d)!important;color:var(--gantt-text-white, #e3f2fd)!important}html[data-theme=dark]{color:var(--gantt-text-primary, #e5e5e5)!important}html[data-theme=dark]{color:var(--gantt-text-white, #e3f2fd)!important}html[data-theme=dark]{border-right-color:var(--gantt-border-light, #555555)!important}html[data-theme=dark]{background-color:var(--gantt-bg-secondary, #1a1a1a)!important}html[data-theme=dark]{background-color:var(--gantt-bg-primary, #6b6b6b)!important}html[data-theme=dark]{background-color:var(--gantt-primary-color, #409eff)!important;border-left-color:var(--gantt-primary-color, #409eff)!important}html[data-theme=dark]{background-color:var(--gantt-border-light, #555555)!important}[data-v-8df0c217]:root{--gantt-bg-primary: #ffffff;--gantt-bg-secondary: #f5f7fa;--gantt-bg-tertiary: #f9f9f9;--gantt-bg-hover: rgba(225, 228, 231, .2);--gantt-bg-hover-parent: rgba(245, 247, 250, .8);--gantt-bg-toolbar: #f8f9fa;--gantt-text-primary: #333333;--gantt-text-secondary: #8d9095;--gantt-text-muted: #909399;--gantt-text-white: #ffffff;--gantt-text-header: #333333;--gantt-border-light: #ebeef5;--gantt-border-medium: #dcdfe6;--gantt-border-dark: #c0c4cc;--gantt-border-color: #dcdfe6;--gantt-primary: #409eff;--gantt-primary-light: #ecf5ff;--gantt-success: #67c23a;--gantt-warning: #e6a23c;--gantt-warning-light: #f5dab1;--gantt-danger: #f56c6c;--gantt-danger-light: #fab6b6;--gantt-scrollbar-thumb: #c1c1c1;--gantt-scrollbar-thumb-hover: #a8a8a8}html[data-theme=dark][data-v-8df0c217]{--gantt-bg-primary: #6b6b6b;--gantt-bg-secondary: #4b4b4b;--gantt-bg-tertiary: #7b7b7b;--gantt-bg-hover: rgba(180, 180, 180, .35);--gantt-bg-hover-parent: rgba(140, 140, 140, .8);--gantt-bg-toolbar: #5b5b5b;--gantt-text-primary: #ffffff;--gantt-text-secondary: #f8f8f8;--gantt-text-muted: #e0e0e0;--gantt-text-white: #ffffff;--gantt-text-parent: #ffffff;--gantt-text-header: #ffffff;--gantt-border-light: #888888;--gantt-border-medium: #666666;--gantt-border-dark: #999999;--gantt-border-color: #808080;--gantt-primary: #3399ff;--gantt-primary-light: #4d6699;--gantt-success: #66cc33;--gantt-warning: #ff9933;--gantt-warning-light: #cc7722;--gantt-danger: #ff4444;--gantt-danger-light: #cc3333;--gantt-scrollbar-thumb: #888888;--gantt-scrollbar-thumb-hover: #999999}.gantt-toolbar[data-v-8df0c217]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--gantt-bg-toolbar, #f8f9fa);border-bottom:1px solid var(--gantt-border-color, #ebeef5);box-shadow:0 1px 3px #0000001a}.toolbar-left[data-v-8df0c217]{display:flex;align-items:center;gap:12px}.toolbar-right[data-v-8df0c217]{display:flex;align-items:center;gap:8px}.toolbar-icon-btn[data-v-8df0c217]{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;margin-right:8px;padding:0;border:none;border-radius:4px;background:transparent;color:var(--gantt-text-primary, #606266);cursor:pointer;outline:none}.toolbar-icon-btn[data-v-8df0c217]:hover{background:var(--gantt-bg-hover, rgba(0, 0, 0, .2));color:var(--gantt-primary, #409eff)}.toolbar-icon-btn[data-v-8df0c217]:focus{outline:none;background:var(--gantt-bg-hover, rgba(0, 0, 0, .2));color:var(--gantt-primary, #409eff)}.toolbar-icon-btn[data-v-8df0c217]:active{background:var(--gantt-bg-active, rgba(0, 0, 0, .3))}.toolbar-icon-btn .gantt-btn-icon[data-v-8df0c217]{width:18px;height:18px}.gantt-btn-icon[data-v-8df0c217]{width:16px;height:16px;stroke-width:2;fill:none;stroke:currentColor;display:block;flex-shrink:0}.icon-fallback[data-v-8df0c217]{position:absolute;font-size:16px;opacity:0;pointer-events:none;transition:opacity .2s ease;-webkit-user-select:none;user-select:none;top:50%;left:50%;transform:translate(-50%,-50%)}.language-dropdown[data-v-8df0c217]{position:relative;display:inline-block}.toolbar-lang-btn[data-v-8df0c217]{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:36px;padding:0 12px;border-radius:4px;background:transparent;border:1px solid var(--gantt-border-color, #dcdfe6);color:var(--gantt-text-primary, #606266);cursor:pointer;outline:none;font-size:14px;white-space:nowrap}.toolbar-lang-btn[data-v-8df0c217]:hover{background:var(--gantt-bg-hover, #f5f7fa);border-color:var(--gantt-primary-color, #409eff);color:var(--gantt-primary-color, #409eff)}.toolbar-lang-btn[data-v-8df0c217]:focus{outline:none;background:var(--gantt-bg-hover, #f5f7fa);border-color:var(--gantt-primary-color, #409eff);color:var(--gantt-primary-color, #409eff);box-shadow:0 0 0 2px #409eff33}.toolbar-lang-btn[data-v-8df0c217]:active{background:var(--gantt-bg-active, rgba(64, 158, 255, .1))}.toolbar-lang-btn .gantt-btn-icon[data-v-8df0c217]{width:16px;height:16px;stroke-width:2}.lang-text[data-v-8df0c217]{font-size:14px;font-weight:500}.dropdown-arrow[data-v-8df0c217]{width:12px;height:12px;stroke-width:2;transition:transform .2s ease}.language-dropdown[aria-expanded=true] .dropdown-arrow[data-v-8df0c217],.language-dropdown:has(.language-menu) .dropdown-arrow[data-v-8df0c217]{transform:rotate(180deg)}.language-menu[data-v-8df0c217]{position:absolute;top:100%;right:0;margin-top:4px;min-width:120px;background:var(--gantt-bg-primary, #ffffff);border:1px solid var(--gantt-border-color, #dcdfe6);border-radius:4px;box-shadow:0 4px 12px #0000001a;z-index:1000;overflow:hidden;animation:dropdown-appear-8df0c217 .2s ease}@keyframes dropdown-appear-8df0c217{0%{opacity:0;transform:translateY(-8px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.language-option[data-v-8df0c217]{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;cursor:pointer;color:var(--gantt-text-primary, #606266);transition:all .2s ease;border-bottom:1px solid var(--gantt-border-color, #f0f0f0)}.language-option[data-v-8df0c217]:last-child{border-bottom:none}.language-option[data-v-8df0c217]:hover{background:var(--gantt-bg-hover, #f5f7fa);color:var(--gantt-primary-color, #409eff)}.language-option.active[data-v-8df0c217]{background:var(--gantt-primary-color, #409eff);color:#fff}.language-option.active[data-v-8df0c217]:hover{background:var(--gantt-primary-hover, #66b1ff)}.check-icon[data-v-8df0c217]{width:14px;height:14px;stroke-width:2.5;opacity:.9;flex-shrink:0}.confirm-dialog[data-v-8df0c217]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000;animation:dialog-fade-in-8df0c217 .2s ease-out}.dialog-content[data-v-8df0c217]{background:var(--gantt-bg-primary, #ffffff);border-radius:8px;padding:24px;min-width:320px;box-shadow:0 8px 32px #0000001f;animation:dialog-slide-up-8df0c217 .2s ease-out}.dialog-message[data-v-8df0c217]{font-size:16px;color:var(--gantt-text-primary, #303133);margin:0 0 20px;text-align:center;line-height:1.5}.dialog-actions[data-v-8df0c217]{display:flex;justify-content:center;gap:12px}.dialog-actions .btn+.btn[data-v-8df0c217]{margin-left:12px}html[data-theme=dark]{background:var(--gantt-bg-hover, rgba(255, 255, 255, .08));color:var(--gantt-primary, #66b1ff)}html[data-theme=dark]{background:var(--gantt-bg-hover, rgba(255, 255, 255, .1));color:var(--gantt-primary, #66b1ff)}html[data-theme=dark]{background:var(--gantt-bg-hover, rgba(255, 255, 255, .06));border-color:var(--gantt-primary, #66b1ff);color:var(--gantt-primary, #66b1ff)}html[data-theme=dark]{background:var(--gantt-bg-hover, rgba(255, 255, 255, .08));border-color:var(--gantt-primary, #66b1ff);color:var(--gantt-primary, #66b1ff);box-shadow:0 0 0 2px #66b1ff66}html[data-theme=dark]{background:var(--gantt-bg-secondary, #2c2c2c)}html[data-theme=dark]{color:var(--gantt-text-primary, #e5eaf3)}@keyframes dialog-fade-in-8df0c217{0%{opacity:0}to{opacity:1}}@keyframes dialog-slide-up-8df0c217{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@media(max-width:768px){.toolbar-lang-btn[data-v-8df0c217]{padding:0 8px;gap:4px}.lang-text[data-v-8df0c217]{display:none}.language-menu[data-v-8df0c217]{right:0;min-width:100px}.language-option[data-v-8df0c217]{padding:10px 12px}.dialog-content[data-v-8df0c217]{padding:16px}.dialog-message[data-v-8df0c217]{font-size:14px}.gantt-btn[data-v-8df0c217]{padding:8px 12px;font-size:13px}}.gantt-btn-group[data-v-8df0c217]{display:inline-flex;margin-right:8px;overflow:hidden;transition:all .2s ease}.gantt-btn-group[data-v-8df0c217]:hover,.gantt-btn-group[data-v-8df0c217]:focus-within{transform:translateY(-1px);box-shadow:0 4px 12px #00000026}.gantt-btn-group-item[data-v-8df0c217]{display:inline-flex;align-items:center;gap:6px;padding:10px 16px;border:1px solid;background:#fff;color:#606266;font-size:14px;font-weight:500;cursor:pointer;outline:none;line-height:1;white-space:nowrap;position:relative;border-radius:0;margin:0;border-left:none;transition:all .2s ease}.gantt-btn-group-item[data-v-8df0c217]:first-child{border-left:1px solid;border-right:none;border-top-left-radius:4px;border-bottom-left-radius:4px}.gantt-btn-group-item[data-v-8df0c217]:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}.gantt-btn-group-item[data-v-8df0c217]:not(:last-child):after{content:"";position:absolute;right:0;top:25%;height:50%;width:1px;background:var(--gantt-border-color, #dcdfe6);transition:opacity .2s ease}.gantt-add-btn-group .gantt-btn-group-item[data-v-8df0c217]{background:#409eff;border-color:#409eff;color:#fff}.gantt-add-btn-group .gantt-btn-group-item[data-v-8df0c217]:after{background:#ffffff4d}.gantt-add-btn-group .gantt-btn-group-item[data-v-8df0c217]:hover{background:#66b1ff;border-color:#66b1ff;z-index:1}.gantt-add-btn-group .gantt-btn-group-item[data-v-8df0c217]:focus{background:#3a8ee6;border-color:#3a8ee6;z-index:1;box-shadow:inset 0 0 0 1px #ffffff4d}.gantt-add-btn-group .gantt-btn-group-item[data-v-8df0c217]:active{background:#337ecc;border-color:#337ecc}.gantt-btn-group:hover .gantt-btn-group-item[data-v-8df0c217]:after,.gantt-btn-group:focus-within .gantt-btn-group-item[data-v-8df0c217]:after{opacity:0}.gantt-btn-group:not(.gantt-add-btn-group) .gantt-btn-group-item[data-v-8df0c217]{border-color:#dcdfe6}.gantt-btn-group:not(.gantt-add-btn-group) .gantt-btn-group-item[data-v-8df0c217]:hover{background:#ecf5ff;border-color:#b3d8ff;color:#409eff;z-index:1}.gantt-btn-group:not(.gantt-add-btn-group) .gantt-btn-group-item[data-v-8df0c217]:focus{background:#ecf5ff;border-color:#409eff;color:#409eff;z-index:1;box-shadow:inset 0 0 0 1px #409eff}.gantt-btn-group:not(.gantt-add-btn-group) .gantt-btn-group-item[data-v-8df0c217]:active{background:#d9ecff;border-color:#409eff;color:#409eff}.gantt-btn-group-item .gantt-btn-icon[data-v-8df0c217]{width:16px;height:16px;stroke-width:2}html[data-theme=dark]{box-shadow:0 1px 3px #0000004d,0 1px 2px -1px #0000004d}html[data-theme=dark]{box-shadow:0 4px 12px #00000080}html[data-theme=dark]{background:#337ecc;border-color:#337ecc;color:#fff}html[data-theme=dark]{background:#4d94d4;border-color:#4d94d4}html[data-theme=dark]{background:#2c5aa0;border-color:#2c5aa0;box-shadow:inset 0 0 0 1px #ffffff4d}html[data-theme=dark]{background:#1f4872;border-color:#1f4872}html[data-theme=dark]{background:#2c2c2c;border-color:#4c4c4c;color:#e5e5e5}.segmented-control[data-v-8df0c217]{position:relative;display:inline-flex;background:var(--gantt-bg-primary, #ffffff);border:1px solid var(--gantt-border-color, #dcdfe6);border-radius:6px;padding:1px;margin-right:8px;overflow:hidden;transition:border-color .2s ease;height:36px}.segmented-control[data-v-8df0c217]:hover{border-color:var(--gantt-primary-light, #79bbff)}.segmented-track[data-v-8df0c217]{position:absolute;top:1px;left:1px;right:1px;bottom:1px;pointer-events:none}.segmented-thumb[data-v-8df0c217]{position:absolute;top:0;left:0;width:25%;height:100%;background:var(--gantt-primary, #409eff);border-radius:5px;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 1px 2px #0000001a,0 1px 6px -1px #0000001a}.segmented-item[data-v-8df0c217]{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:1;height:34px;padding:0 12px;border:none;background:transparent;font-size:14px;font-weight:500;cursor:pointer;outline:none;transition:all .2s cubic-bezier(.4,0,.2,1);min-width:40px;z-index:1;border-radius:5px;-webkit-user-select:none;user-select:none}.segmented-item[data-v-8df0c217]:hover:not(.active){color:var(--gantt-primary, #409eff);background:var(--gantt-bg-hover, rgba(64, 158, 255, .06))}.segmented-item[data-v-8df0c217]:active:not(.active){background:var(--gantt-bg-active, rgba(64, 158, 255, .12))}.segmented-item.active[data-v-8df0c217]{color:#fff;font-weight:600}.time-scale-segmented[data-v-8df0c217]{height:36px}.time-scale-segmented .segmented-item[data-v-8df0c217]{height:34px;font-size:13px;min-width:36px}html[data-theme=dark]{background:var(--gantt-bg-secondary, #4b4b4b);border-color:var(--gantt-border-color, #808080)}html[data-theme=dark]{border-color:var(--gantt-primary, #3399ff)}html[data-theme=dark]{background:var(--gantt-primary, #3399ff);box-shadow:0 1px 2px #0000004d,0 1px 6px -1px #0000004d}html[data-theme=dark]{color:#fff!important}html[data-theme=dark]{color:var(--gantt-primary, #3399ff);background:#3399ff1f}html[data-theme=dark]{background:#39f3}.multi-select-predecessor[data-v-3a17beda]{display:flex;flex-direction:column;gap:8px}.form-label[data-v-3a17beda]{font-size:14px;font-weight:500;color:var(--gantt-text-secondary, #606266);line-height:1.4}.predecessor-selector[data-v-3a17beda]{display:flex;flex-direction:column;gap:8px}.selected-tags[data-v-3a17beda]{display:flex;flex-wrap:wrap;gap:6px}.predecessor-tag[data-v-3a17beda]{display:inline-flex;align-items:center;padding:4px 8px;background:var(--gantt-primary, #409eff);color:#fff;font-size:12px;border-radius:14px;gap:6px}.remove-tag-btn[data-v-3a17beda]{background:none;border:none;color:#fff;font-size:14px;font-weight:700;cursor:pointer;padding:0;width:16px;height:16px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background-color .2s}.remove-tag-btn[data-v-3a17beda]:hover{background:#fff3}.select-wrapper[data-v-3a17beda]{width:100%}.form-select[data-v-3a17beda]{padding:12px 16px;border:1px solid var(--gantt-border-medium, #dcdfe6);border-radius:4px;font-size:14px;color:var(--gantt-text-primary, #303133);background:var(--gantt-bg-primary, white);transition:border-color .2s;outline:none;width:100%}.form-select[data-v-3a17beda]:focus{border-color:var(--gantt-primary, #409eff)}html[data-theme=dark]{background:var(--gantt-primary-dark, #337ecc)}html[data-theme=dark]{background:var(--gantt-bg-primary, #2b2b2b);border-color:var(--gantt-border-medium, #4c4d4f);color:var(--gantt-text-primary, #e5eaf3)}[data-v-71d14202]:root{--gantt-bg-primary: #ffffff;--gantt-bg-secondary: #f5f7fa;--gantt-bg-tertiary: #f9f9f9;--gantt-bg-hover: rgba(225, 228, 231, .2);--gantt-bg-hover-parent: rgba(245, 247, 250, .8);--gantt-bg-toolbar: #f8f9fa;--gantt-text-primary: #333333;--gantt-text-secondary: #8d9095;--gantt-text-muted: #909399;--gantt-text-white: #ffffff;--gantt-text-header: #333333;--gantt-border-light: #ebeef5;--gantt-border-medium: #dcdfe6;--gantt-border-dark: #c0c4cc;--gantt-border-color: #dcdfe6;--gantt-primary: #409eff;--gantt-primary-light: #ecf5ff;--gantt-success: #67c23a;--gantt-warning: #e6a23c;--gantt-warning-light: #f5dab1;--gantt-danger: #f56c6c;--gantt-danger-light: #fab6b6;--gantt-scrollbar-thumb: #c1c1c1;--gantt-scrollbar-thumb-hover: #a8a8a8}html[data-theme=dark][data-v-71d14202]{--gantt-bg-primary: #6b6b6b;--gantt-bg-secondary: #4b4b4b;--gantt-bg-tertiary: #7b7b7b;--gantt-bg-hover: rgba(180, 180, 180, .35);--gantt-bg-hover-parent: rgba(140, 140, 140, .8);--gantt-bg-toolbar: #5b5b5b;--gantt-text-primary: #ffffff;--gantt-text-secondary: #f8f8f8;--gantt-text-muted: #e0e0e0;--gantt-text-white: #ffffff;--gantt-text-parent: #ffffff;--gantt-text-header: #ffffff;--gantt-border-light: #888888;--gantt-border-medium: #666666;--gantt-border-dark: #999999;--gantt-border-color: #808080;--gantt-primary: #3399ff;--gantt-primary-light: #4d6699;--gantt-success: #66cc33;--gantt-warning: #ff9933;--gantt-warning-light: #cc7722;--gantt-danger: #ff4444;--gantt-danger-light: #cc3333;--gantt-scrollbar-thumb: #888888;--gantt-scrollbar-thumb-hover: #999999}.drawer-overlay[data-v-71d14202]{height:100%;position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:10000;display:flex;justify-content:flex-end;align-items:stretch}.drawer-container[data-v-71d14202]{width:500px;background:var(--gantt-bg-primary, white);box-shadow:-2px 0 8px #0000001a;display:flex;flex-direction:column;animation:slideIn-71d14202 .3s ease-out;color:var(--gantt-text-primary, #303133)}@keyframes slideIn-71d14202{0%{transform:translate(100%)}to{transform:translate(0)}}.drawer-header[data-v-71d14202]{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--gantt-border-light, #ebeef5);background:var(--gantt-bg-secondary, #f5f7fa)}.drawer-title[data-v-71d14202]{margin:0;font-size:18px;font-weight:600;color:var(--gantt-text-primary, #303133)}.drawer-close-btn[data-v-71d14202]{background:none;border:none;cursor:pointer;padding:4px;color:var(--gantt-text-muted, #909399);transition:color .2s}.drawer-close-btn[data-v-71d14202]:hover{color:var(--gantt-text-secondary, #606266)}.close-icon[data-v-71d14202]{width:16px;height:16px;stroke-width:2}.drawer-body[data-v-71d14202]{flex:1;padding:24px;overflow-y:auto}.task-form[data-v-71d14202]{display:flex;flex-direction:column;gap:20px}.form-group[data-v-71d14202]{display:flex;flex-direction:column;gap:8px}.form-row[data-v-71d14202]{display:flex;gap:16px}.form-row .form-group[data-v-71d14202]{flex:1}.form-label[data-v-71d14202]{font-size:14px;font-weight:500;color:var(--gantt-text-secondary, #606266);line-height:1.4}.required[data-v-71d14202]{color:var(--gantt-danger, #f56c6c);margin-left:2px}.form-input[data-v-71d14202],.form-select[data-v-71d14202],.form-textarea[data-v-71d14202]{padding:12px 16px;border:1px solid var(--gantt-border-medium, #dcdfe6);border-radius:4px;font-size:14px;color:var(--gantt-text-primary, #303133);background:var(--gantt-bg-primary, white);transition:border-color .2s;outline:none}.form-input[data-v-71d14202]:focus,.form-select[data-v-71d14202]:focus,.form-textarea[data-v-71d14202]:focus{border-color:var(--gantt-primary, #409eff)}.form-input.error[data-v-71d14202],.form-select.error[data-v-71d14202]{border-color:var(--gantt-danger, #f56c6c)}.form-input[data-v-71d14202]::placeholder,.form-select[data-v-71d14202]::placeholder,.form-textarea[data-v-71d14202]::placeholder{color:var(--gantt-text-placeholder, #c0c4cc)}.form-textarea[data-v-71d14202]{resize:vertical;min-height:80px}.error-text[data-v-71d14202]{color:var(--gantt-danger, #f56c6c);font-size:12px;line-height:1.4}.progress-container[data-v-71d14202]{display:flex;align-items:center;gap:12px}.progress-slider[data-v-71d14202]{flex:1;height:6px;border-radius:3px;background:var(--gantt-border-light, #e4e7ed);outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;position:relative;vertical-align:middle}.progress-slider[data-v-71d14202]::-webkit-slider-runnable-track{height:6px;border-radius:3px;background:linear-gradient(to right,var(--gantt-primary, #409eff) 0%,var(--gantt-primary, #409eff) var(--progress-percent, 0%),var(--gantt-border-light, #e4e7ed) var(--progress-percent, 0%),var(--gantt-border-light, #e4e7ed) 100%)}.progress-slider[data-v-71d14202]::-moz-range-track{height:6px;border-radius:3px;background:linear-gradient(to right,var(--gantt-primary, #409eff) 0%,var(--gantt-primary, #409eff) var(--progress-percent, 0%),var(--gantt-border-light, #e4e7ed) var(--progress-percent, 0%),var(--gantt-border-light, #e4e7ed) 100%);border:none}.progress-slider[data-v-71d14202]::-moz-range-progress{height:6px;border-radius:3px;background:var(--gantt-primary, #409eff)}.progress-slider[data-v-71d14202]:before{content:"";position:absolute;top:0;left:0;height:6px;width:var(--progress-percent, 0%);background:var(--gantt-primary, #409eff);border-radius:3px;pointer-events:none;transition:width .2s ease}.progress-slider[data-v-71d14202]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--gantt-primary, #409eff);cursor:pointer;position:relative;z-index:2;box-shadow:0 2px 4px #0000001a;transition:box-shadow .2s ease;margin-top:-5px}.progress-slider[data-v-71d14202]::-webkit-slider-thumb:hover{box-shadow:0 4px 8px #00000026}.progress-slider[data-v-71d14202]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--gantt-primary, #409eff);cursor:pointer;border:none;position:relative;z-index:2;box-shadow:0 2px 4px #0000001a;transition:box-shadow .2s ease;margin-top:-5px}.progress-slider[data-v-71d14202]::-moz-range-thumb:hover{box-shadow:0 4px 8px #00000026}.progress-input-group[data-v-71d14202]{display:flex;align-items:center;border:1px solid var(--gantt-border-medium, #dcdfe6);border-radius:4px;background:var(--gantt-bg-primary, white);overflow:hidden;transition:border-color .2s ease;width:70px}.progress-input-group[data-v-71d14202]:hover{border-color:var(--gantt-primary, #409eff)}.progress-input-group[data-v-71d14202]:focus-within{border-color:var(--gantt-primary, #409eff)}.progress-input[data-v-71d14202]{flex:1;font-size:14px;color:var(--gantt-text-primary, #303133);text-align:center;border:none;outline:none;background:transparent;padding:12px 8px;min-width:0}.progress-input[data-v-71d14202]::placeholder{color:var(--gantt-text-placeholder, #c0c4cc)}.progress-unit[data-v-71d14202]{font-size:14px;color:var(--gantt-text-secondary, #606266);padding:12px 12px 12px 4px;-webkit-user-select:none;user-select:none;flex-shrink:0}html[data-theme=dark]{border-color:var(--gantt-border-medium, #4c4d4f);background:var(--gantt-bg-primary, #2b2b2b)}html[data-theme=dark]{border-color:var(--gantt-primary, #409eff)}html[data-theme=dark]{color:var(--gantt-text-primary, #e5eaf3);background:transparent}html[data-theme=dark]{color:var(--gantt-text-placeholder, #8b949e)}html[data-theme=dark]{color:var(--gantt-text-secondary, #a8a8a8)}.drawer-footer[data-v-71d14202]{padding:16px 24px;border-top:1px solid var(--gantt-border-light, #ebeef5);background:var(--gantt-bg-toolbar, #fafafa);display:flex;justify-content:space-between;align-items:center}.footer-left[data-v-71d14202]{display:flex;align-items:center}.footer-right[data-v-71d14202]{display:flex;align-items:center;gap:12px}.loading-spinner[data-v-71d14202]{width:12px;height:12px;border:2px solid transparent;border-top:2px solid currentColor;border-radius:50%;animation:spin-71d14202 1s linear infinite}@keyframes spin-71d14202{to{transform:rotate(360deg)}}.message[data-v-71d14202]{animation:messageSlideIn-71d14202 .3s ease-out}@keyframes messageSlideIn-71d14202{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}html[data-theme=dark]{background:#000000b3!important}html[data-theme=dark]{box-shadow:-4px 0 15px #0006!important}html[data-theme=dark]{background:var(--gantt-bg-hover, rgba(255, 255, 255, .1))!important;border-radius:4px}html[data-theme=dark]{box-shadow:0 0 0 2px #409eff33!important}html[data-theme=dark]{color:var(--gantt-text-muted, #9e9e9e)!important}[data-v-80f4d61d]:root{--gantt-bg-primary: #ffffff;--gantt-bg-secondary: #f5f7fa;--gantt-bg-tertiary: #f9f9f9;--gantt-bg-hover: rgba(225, 228, 231, .2);--gantt-bg-hover-parent: rgba(245, 247, 250, .8);--gantt-bg-toolbar: #f8f9fa;--gantt-text-primary: #333333;--gantt-text-secondary: #8d9095;--gantt-text-muted: #909399;--gantt-text-white: #ffffff;--gantt-text-header: #333333;--gantt-border-light: #ebeef5;--gantt-border-medium: #dcdfe6;--gantt-border-dark: #c0c4cc;--gantt-border-color: #dcdfe6;--gantt-primary: #409eff;--gantt-primary-light: #ecf5ff;--gantt-success: #67c23a;--gantt-warning: #e6a23c;--gantt-warning-light: #f5dab1;--gantt-danger: #f56c6c;--gantt-danger-light: #fab6b6;--gantt-scrollbar-thumb: #c1c1c1;--gantt-scrollbar-thumb-hover: #a8a8a8}html[data-theme=dark][data-v-80f4d61d]{--gantt-bg-primary: #6b6b6b;--gantt-bg-secondary: #4b4b4b;--gantt-bg-tertiary: #7b7b7b;--gantt-bg-hover: rgba(180, 180, 180, .35);--gantt-bg-hover-parent: rgba(140, 140, 140, .8);--gantt-bg-toolbar: #5b5b5b;--gantt-text-primary: #ffffff;--gantt-text-secondary: #f8f8f8;--gantt-text-muted: #e0e0e0;--gantt-text-white: #ffffff;--gantt-text-parent: #ffffff;--gantt-text-header: #ffffff;--gantt-border-light: #888888;--gantt-border-medium: #666666;--gantt-border-dark: #999999;--gantt-border-color: #808080;--gantt-primary: #3399ff;--gantt-primary-light: #4d6699;--gantt-success: #66cc33;--gantt-warning: #ff9933;--gantt-warning-light: #cc7722;--gantt-danger: #ff4444;--gantt-danger-light: #cc3333;--gantt-scrollbar-thumb: #888888;--gantt-scrollbar-thumb-hover: #999999}.gantt-root[data-v-80f4d61d]{display:flex;flex-direction:column;width:100%;height:100%;background:#f5f7fa;box-shadow:0 6px 32px #0000001a,0 1.5px 6px #00000014;border-radius:12px;overflow:hidden}.gantt-body[data-v-80f4d61d]{display:flex;flex:1;min-height:0}.gantt-panel[data-v-80f4d61d]{height:100%;background:#fff;box-shadow:0 1px 4px #0000000a;display:flex;flex-direction:column}.gantt-panel-left[data-v-80f4d61d]{min-width:320px;transition:width .1s}.gantt-panel-right[data-v-80f4d61d]{flex:1;min-width:0;position:relative}.gantt-panel-right.full-width[data-v-80f4d61d]{flex:1;width:100%}.focus-close-button[data-v-80f4d61d]{position:absolute;bottom:20px;left:50%;transform:translate(-50%);z-index:1004;display:flex;align-items:center;gap:8px;padding:10px 20px;background:#f56c6c;border:1px solid #f56c6c;border-radius:20px;box-shadow:0 4px 12px #f56c6c66;cursor:pointer;transition:all .3s ease;-webkit-user-select:none;user-select:none}.focus-close-button[data-v-80f4d61d]:hover{background:#f78989;border-color:#f78989;box-shadow:0 6px 16px #f56c6c80;transform:translate(-50%) translateY(-2px)}.focus-close-button .close-icon[data-v-80f4d61d]{width:18px;height:18px;color:#fff;transition:color .3s ease}.focus-close-button:hover .close-icon[data-v-80f4d61d]{color:#fff}.focus-close-button .close-text[data-v-80f4d61d]{font-size:14px;color:#fff;font-weight:500;transition:color .3s ease}.focus-close-button:hover .close-text[data-v-80f4d61d]{color:#fff}.gantt-splitter[data-v-80f4d61d]{position:relative;width:6px;cursor:col-resize;background:var(--gantt-border-light, #e4e7ed);transition:all .2s ease;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;touch-action:none}.gantt-splitter[data-v-80f4d61d]:hover{background:var(--gantt-border-dark, #c0c4cc)}.placeholder[data-v-80f4d61d]{color:#909399;text-align:center;margin:auto;font-size:18px}@keyframes slideLeftImpact-80f4d61d{0%{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(2px)}60%{transform:translate(-3px)}80%{transform:translate(1px)}to{transform:translate(0)}}@keyframes slideRightImpact-80f4d61d{0%{transform:translate(0)}20%{transform:translate(8px)}40%{transform:translate(-2px)}60%{transform:translate(3px)}80%{transform:translate(-1px)}to{transform:translate(0)}}.task-list-toggle[data-v-80f4d61d]{position:absolute;top:0;left:6px;width:15px;height:35px;display:flex;align-items:center;justify-content:center;background:#fffffff2;border:1px solid #d9d9d9;border-radius:0 6px 6px 0;cursor:pointer;z-index:1000;color:#666;transition:all .2s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:1px 1px 4px #00000026}.task-list-toggle.collapsed[data-v-80f4d61d]:hover{box-shadow:-1px 2px 8px #409eff40}.task-list-toggle[data-v-80f4d61d]:active{transform:scale(1)}.task-list-toggle svg[data-v-80f4d61d]{transition:transform .2s ease}.task-list-toggle:hover svg[data-v-80f4d61d]{transform:scale(1.1)}html[data-theme=dark]{background:#1e1e1e!important;color:#e5e5e5!important}html[data-theme=dark]{background:#2c2c2c!important}html[data-theme=dark]{border-right-color:#4c4c4c!important}html[data-theme=dark]{background:#d85555;border-color:#d85555;box-shadow:0 4px 12px #d8555566}html[data-theme=dark]{background:#e67676;border-color:#e67676;box-shadow:0 6px 16px #d8555580}html[data-theme=dark]{color:#fff}html[data-theme=dark]{background:linear-gradient(to right,transparent,var(--gantt-border-dark, #666666) 20%,var(--gantt-border-dark, #666666) 80%,transparent)!important;box-shadow:inset 0 0 2px #ffffff1a!important}html[data-theme=dark]{background:linear-gradient(to right,transparent,var(--gantt-primary, #409eff) 20%,var(--gantt-primary, #409eff) 80%,transparent)!important;border-left-color:var(--gantt-primary, #409eff)!important;border-right-color:var(--gantt-primary, #409eff)!important;box-shadow:inset 0 0 4px #409eff4d,0 0 8px #409eff33!important}html[data-theme=dark]{background:#2a2a2af2!important;border-color:#555!important;color:#ccc!important;box-shadow:1px 1px 4px #0006!important}html[data-theme=dark]{box-shadow:-1px 1px 4px #0006!important}html[data-theme=dark]{background:#2a2a2a!important;color:#569cd6!important;box-shadow:1px 2px 8px #569cd64d!important}html[data-theme=dark]{box-shadow:-1px 2px 8px #569cd64d!important}.task-list-toggle.impact-left[data-v-80f4d61d]{animation:slideLeftImpact-80f4d61d .4s ease-out}.task-list-toggle.impact-right[data-v-80f4d61d]{animation:slideRightImpact-80f4d61d .4s ease-out}.gantt-fullscreen[data-v-80f4d61d]{position:fixed!important;top:0!important;left:0!important;right:0!important;bottom:0!important;width:100vw!important;height:100vh!important;z-index:9999!important;background:#f5f7fa!important;border-radius:0!important;box-shadow:none!important;margin:0!important;padding:0!important;transition:all .3s ease-in-out;animation:ganttFullscreenEnter-80f4d61d .3s ease-out}@keyframes ganttFullscreenEnter-80f4d61d{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.gantt-fullscreen .gantt-body[data-v-80f4d61d]{height:calc(100vh - 60px)}.gantt-fullscreen .gantt-toolbar[data-v-80f4d61d]{border-radius:0!important;box-shadow:0 2px 8px #0000001a!important}html[data-theme=dark]{background:#1e1e1e!important}html[data-theme=dark]{box-shadow:0 2px 8px #0000004d!important}.gantt-root.splitter-dragging[data-v-80f4d61d]{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.gantt-root.splitter-dragging .gantt-panel-right[data-v-80f4d61d]{background:#ffffff1a}.gantt-root.splitter-dragging[data-v-80f4d61d] *{cursor:col-resize!important} diff --git a/dist/assets/index-0sGHotAG.js b/dist/assets/index-DBfszOX9.js similarity index 99% rename from dist/assets/index-0sGHotAG.js rename to dist/assets/index-DBfszOX9.js index f161268..5fdd292 100644 --- a/dist/assets/index-0sGHotAG.js +++ b/dist/assets/index-DBfszOX9.js @@ -62,7 +62,7 @@ var vI=Object.defineProperty;var FI=(e,a,t)=>a in e?vI(e,a,{enumerable:!0,config 开始计时:${new Date(We.timerStartTime).toLocaleString()}`,se+=` 结束计时:${new Date().toLocaleString()}`,We.timerStartDesc&&(se+=` 计时说明:${We.timerStartDesc}`)):se+=` -结束计时:${new Date().toLocaleString()}`,a(se,"info",{closable:!0})}function wr(We){}const Rt=async We=>{const{draggedTask:se,targetTask:X2,position:Et,oldParent:kt,newParent:h0}=We,ya=o(kt),Ra=o(Et==="after"?h0:{type:X2.type,name:X2.name});let ge="";const he=n.value.taskMoveConfirm.messages;Et==="after"?ge=d(he.moveAfter,{draggedTaskType:i(se.type),draggedTaskName:se.name,targetTaskType:i(X2.type),targetTaskName:X2.name}):kt&&kt.id!==X2.id?ge=d(he.moveAsChild,{draggedTaskName:se.name,oldParentName:ya,newParentName:Ra}):kt?ge=d(he.moveAsChildSameParent,{draggedTaskName:se.name,newParentName:Ra}):ge=d(he.moveAsChildNoOldParent,{draggedTaskName:se.name,newParentName:Ra});const Je=n.value.taskMoveConfirm.messages.moveSuccess;a(`${Je}: ${ge}`,"success",{closable:!0})},y0=(We,se)=>{a(`自定义操作: ${We} - 任务: ${se.name}`,"info",{closable:!0})};return(We,se)=>{var h0,ya,Ra,ge;const X2=Yo("TaskListColumn"),Et=Yo("TaskListContextMenu"),kt=Yo("GanttChart");return q(),me("div",Ff,[h("h1",wf,[h("div",Tf,[se[56]||(se[56]=H1(' Jordium Gantt Vue3 Demo ',2)),h("span",{class:"version-badge",style:{cursor:"pointer"},onClick:se[0]||(se[0]=he=>K.value=!0)},le(we(ju).version),1)]),h("div",Bf,[h("a",{href:((h0=we(n).giteeBadge)==null?void 0:h0.url)||"https://gitee.com/activity/2025opensource?ident=IOUNZP",target:"_blank",rel:"noopener noreferrer",class:"gitee-award-badge"},le(((ya=we(n).giteeBadge)==null?void 0:ya.text)||"🥇 Gitee 2025 Open Source Awards 👉 Thanks for Your Vote"),9,Nf)]),h("div",{class:"title-right docs-links"},[se[59]||(se[59]=H1('npm versionnpm total',3)),h("a",{href:"#github-docs",class:"doc-link github-link",onClick:ra},se[57]||(se[57]=[h("img",{class:"doc-icon",src:Xl,alt:"GitHub"},null,-1)])),se[60]||(se[60]=H1('starfork',3)),h("a",{href:"#gitee-docs",class:"doc-link gitee-link",onClick:_0},se[58]||(se[58]=[h("img",{class:"doc-icon",src:Jl,alt:"Gitee"},null,-1)])),se[61]||(se[61]=h("a",{href:"https://gitee.com/jordium/jordium-gantt-vue3/stargazers"},[h("img",{src:"https://gitee.com/jordium/jordium-gantt-vue3/badge/star.svg?theme=dark",alt:"star"})],-1)),se[62]||(se[62]=h("a",{href:"https://gitee.com/jordium/jordium-gantt-vue3/members"},[h("img",{src:"https://gitee.com/jordium/jordium-gantt-vue3/badge/fork.svg?theme=dark",alt:"fork"})],-1))])]),ht(af,{visible:K.value,onClose:se[1]||(se[1]=he=>K.value=!1)},null,8,["visible"]),h("div",{class:B2(["data-source-panel",{collapsed:w.value}])},[h("div",{class:"data-source-header",onClick:He},[h("h3",yf,[se[63]||(se[63]=h("svg",{class:"data-source-icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[h("path",{d:"M4 4h16a2 2 0 0 1 2 2v2H2V6a2 2 0 0 1 2-2zm16 6H4v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V10zm-5 4h4v4h-4v-4z",fill:"currentColor"})],-1)),Ut(" "+le((Ra=we(t).dataSourceSwitch)==null?void 0:Ra.title)+" - "+le((ge=we(t).dataSourceSwitch)==null?void 0:ge.subtitle),1)]),h("button",{class:B2(["collapse-button",{collapsed:w.value}])},[(q(),me("svg",Rf,[h("path",{d:w.value?"M7 14l5-5 5 5":"M7 10l5 5 5-5",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,8,Qf)]))],2)]),ht(rs,{name:"config-content"},{default:z0(()=>{var he;return[Mt(h("div",bf,[h("div",Hf,[(q(!0),me(c2,null,ut(f.value,Je=>(q(),me("button",{key:Je.key,class:B2(["data-source-button",{active:v.value===Je.key}]),disabled:B.value&&v.value===Je.key,onClick:t2=>X(Je.key)},[h("div",kf,[h("span",xf,le(Je.label),1),h("span",Uf,le(Je.badge),1)]),h("div",Ef,le(Je.description),1)],10,Mf))),128)),B.value?(q(),me("span",Kf,le((he=we(t).dataSourceSwitch)==null?void 0:he.loading),1)):h2("",!0)])],512),[[Xn,!w.value]])]}),_:1})],2),h("div",{class:B2(["config-panel",{collapsed:Me.value}])},[h("div",{class:"config-header",onClick:fe},[h("h3",Lf,[se[64]||(se[64]=h("svg",{class:"config-icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[h("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z",fill:"currentColor"})],-1)),Ut(" "+le(we(t).configDemo),1)]),h("button",{class:B2(["collapse-button",{collapsed:Me.value}])},[(q(),me("svg",Wf,[h("path",{d:Me.value?"M7 14l5-5 5 5":"M7 10l5 5 5-5",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,8,_f)]))],2)]),ht(rs,{name:"config-content"},{default:z0(()=>[Mt(h("div",Pf,[h("div",Of,[h("div",{class:"section-header",onClick:be},[h("div",Vf,[se[65]||(se[65]=h("svg",{class:"section-icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[h("path",{d:"M3 6h18v2H3V6zm0 5h18v2H3v-2zm0 5h18v2H3v-2z",fill:"currentColor"})],-1)),Ut(" "+le(we(t).taskListConfig.title),1)]),h("button",{class:B2(["section-collapse-button",{collapsed:P.value}])},se[66]||(se[66]=[h("svg",{class:"collapse-icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[h("path",{d:"M7 10l5 5 5-5",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)]),2)]),ht(rs,{name:"section-content"},{default:z0(()=>[Mt(h("div",jf,[h("div",$f,[h("h5",Gf,le(we(t).taskListConfig.width.title),1),h("div",Yf,[h("label",qf,[Mt(h("input",{"onUpdate:modelValue":se[2]||(se[2]=he=>j.value=he),type:"radio",value:"px"},null,512),[[b4,j.value]]),h("span",zf,le(we(t).taskListConfig.width.pixelsModel),1)]),h("label",Xf,[Mt(h("input",{"onUpdate:modelValue":se[3]||(se[3]=he=>j.value=he),type:"radio",value:"%"},null,512),[[b4,j.value]]),h("span",Jf,le(we(t).taskListConfig.width.percentageModel),1)])]),j.value==="px"?(q(),me("div",Zf,[h("div",eh,[h("label",th,le(we(t).taskListConfig.width.defaultWidth)+":",1),Mt(h("input",{"onUpdate:modelValue":se[4]||(se[4]=he=>F.value.defaultWidth=he),type:"number",min:F.value.minWidth,max:F.value.maxWidth,step:"10",class:"width-input"},null,8,ah),[[wa,F.value.defaultWidth,void 0,{number:!0}]]),se[67]||(se[67]=h("span",{class:"width-unit"},"px",-1))]),h("div",rh,[h("label",nh,le(we(t).taskListConfig.width.minWidth)+":",1),Mt(h("input",{"onUpdate:modelValue":se[5]||(se[5]=he=>F.value.minWidth=he),type:"number",min:"280",max:F.value.defaultWidth,step:"10",class:"width-input"},null,8,sh),[[wa,F.value.minWidth,void 0,{number:!0}]]),se[68]||(se[68]=h("span",{class:"width-unit"},"px",-1))]),h("div",dh,[h("label",ih,le(we(t).taskListConfig.width.maxWidth)+":",1),Mt(h("input",{"onUpdate:modelValue":se[6]||(se[6]=he=>F.value.maxWidth=he),type:"number",min:F.value.defaultWidth,max:"2000",step:"10",class:"width-input"},null,8,oh),[[wa,F.value.maxWidth,void 0,{number:!0}]]),se[69]||(se[69]=h("span",{class:"width-unit"},"px",-1))])])):(q(),me("div",ph,[h("div",Dh,[h("label",Ah,le(we(t).taskListConfig.width.defaultWidth)+":",1),Mt(h("input",{"onUpdate:modelValue":se[7]||(se[7]=he=>_.value.defaultWidth=he),type:"number",min:_.value.minWidth,max:_.value.maxWidth,step:"1",class:"width-input"},null,8,gh),[[wa,_.value.defaultWidth,void 0,{number:!0}]]),se[70]||(se[70]=h("span",{class:"width-unit"},"%",-1))]),h("div",Ih,[h("label",mh,le(we(t).taskListConfig.width.minWidth)+":",1),Mt(h("input",{"onUpdate:modelValue":se[8]||(se[8]=he=>_.value.minWidth=he),type:"number",min:"10",max:_.value.defaultWidth,step:"1",class:"width-input"},null,8,lh),[[wa,_.value.minWidth,void 0,{number:!0}]]),se[71]||(se[71]=h("span",{class:"width-unit"},"%",-1))]),h("div",ch,[h("label",uh,le(we(t).taskListConfig.width.maxWidth)+":",1),Mt(h("input",{"onUpdate:modelValue":se[9]||(se[9]=he=>_.value.maxWidth=he),type:"number",min:_.value.defaultWidth,max:"80",step:"1",class:"width-input"},null,8,fh),[[wa,_.value.maxWidth,void 0,{number:!0}]]),se[72]||(se[72]=h("span",{class:"width-unit"},"%",-1))])]))]),h("div",hh,[h("div",Sh,[h("h5",Ch,le(we(t).taskListConfig.columns.renderMode),1),h("div",vh,[h("label",Fh,[Mt(h("input",{"onUpdate:modelValue":se[10]||(se[10]=he=>x.value=he),type:"radio",value:"default"},null,512),[[b4,x.value]]),h("span",wh,le(we(t).taskListConfig.columns.renderModeDefault),1)]),h("label",Th,[Mt(h("input",{"onUpdate:modelValue":se[11]||(se[11]=he=>x.value=he),type:"radio",value:"declarative"},null,512),[[b4,x.value]]),h("span",Bh,le(we(t).taskListConfig.columns.renderModeDeclarative),1)])])]),h("h5",Nh,le(we(t).taskListConfig.columns.title),1),h("div",yh,[(q(!0),me(c2,null,ut(T.value,he=>(q(),me("label",{key:he.key,class:"column-control"},[h("input",{type:"checkbox",checked:he.visible,onChange:Je=>lt(he.key,Je)},null,40,Rh),h("span",Qh,le(we(t)[he.key]||he.label),1)]))),128))])])],512),[[Xn,!P.value]])]),_:1})]),h("div",bh,[h("div",{class:"section-header",onClick:Ze},[h("div",Hh,[se[73]||(se[73]=h("svg",{class:"section-icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[h("rect",{x:"2",y:"6",width:"20",height:"3",rx:"1.5",fill:"currentColor"}),h("rect",{x:"2",y:"11",width:"15",height:"3",rx:"1.5",fill:"currentColor"}),h("rect",{x:"2",y:"16",width:"18",height:"3",rx:"1.5",fill:"currentColor"})],-1)),Ut(" "+le(we(t).taskBarConfig.title),1)]),h("button",{class:B2(["section-collapse-button",{collapsed:G.value}])},se[74]||(se[74]=[h("svg",{class:"collapse-icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[h("path",{d:"M7 10l5 5 5-5",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)]),2)]),ht(rs,{name:"section-content"},{default:z0(()=>[Mt(h("div",Mh,[h("div",kh,[h("h5",xh,le(we(t).taskBarConfig.display.title),1),h("div",Uh,[h("label",Eh,[Mt(h("input",{"onUpdate:modelValue":se[12]||(se[12]=he=>te.value.showAvatar=he),type:"checkbox"},null,512),[[Cs,te.value.showAvatar]]),h("span",Kh,le(we(t).taskBarConfig.display.showAvatar),1)]),h("label",Lh,[Mt(h("input",{"onUpdate:modelValue":se[13]||(se[13]=he=>te.value.showTitle=he),type:"checkbox"},null,512),[[Cs,te.value.showTitle]]),h("span",Wh,le(we(t).taskBarConfig.display.showTitle),1)]),h("label",_h,[Mt(h("input",{"onUpdate:modelValue":se[14]||(se[14]=he=>te.value.showProgress=he),type:"checkbox"},null,512),[[Cs,te.value.showProgress]]),h("span",Ph,le(we(t).taskBarConfig.display.showProgress),1)])])]),h("div",Oh,[h("h5",Vh,le(we(t).taskBarConfig.mistouch.title),1),h("div",jh,[h("div",$h,[h("label",Gh,[Mt(h("input",{"onUpdate:modelValue":se[15]||(se[15]=he=>ve.value=he),type:"checkbox"},null,512),[[Cs,ve.value]]),h("span",Yh,le(we(t).taskBarConfig.mistouch.allowDragOnClick),1)]),h("span",qh,le(we(t).taskBarConfig.mistouch.allowDragOnClickHint),1)]),h("div",zh,[h("label",Xh,[Mt(h("input",{"onUpdate:modelValue":se[16]||(se[16]=he=>ne.value=he),type:"checkbox"},null,512),[[Cs,ne.value]]),se[75]||(se[75]=h("span",{class:"taskbar-label"}," 启用TaskRow拖拽移动 ",-1))]),se[76]||(se[76]=h("span",{class:"control-hint"}," 允许通过拖拽TaskRow来调整任务的层级和顺序 ",-1))]),h("div",Jh,[h("label",Zh,le(we(t).taskBarConfig.mistouch.dragThreshold)+": ",1),Mt(h("input",{"onUpdate:modelValue":se[17]||(se[17]=he=>te.value.dragThreshold=he),type:"number",min:"0",max:"20",step:"1",class:"control-input"},null,512),[[wa,te.value.dragThreshold,void 0,{number:!0}]]),h("span",eS,le(we(t).taskBarConfig.mistouch.dragThresholdHint),1)]),h("div",tS,[h("label",aS,le(we(t).taskBarConfig.mistouch.resizeHandleWidth)+": ",1),Mt(h("input",{"onUpdate:modelValue":se[18]||(se[18]=he=>te.value.resizeHandleWidth=he),type:"number",min:"5",max:"15",step:"1",class:"control-input"},null,512),[[wa,te.value.resizeHandleWidth,void 0,{number:!0}]]),h("span",rS,le(we(t).taskBarConfig.mistouch.resizeHandleWidthHint),1)]),h("div",nS,[h("label",sS,[Mt(h("input",{"onUpdate:modelValue":se[19]||(se[19]=he=>te.value.enableDragDelay=he),type:"checkbox"},null,512),[[Cs,te.value.enableDragDelay]]),h("span",dS,le(we(t).taskBarConfig.mistouch.enableDragDelay),1)]),h("span",iS,le(we(t).taskBarConfig.mistouch.enableDragDelayHint),1)]),te.value.enableDragDelay?(q(),me("div",oS,[h("label",pS,le(we(t).taskBarConfig.mistouch.dragDelayTime)+": ",1),Mt(h("input",{"onUpdate:modelValue":se[20]||(se[20]=he=>te.value.dragDelayTime=he),type:"number",min:"50",max:"500",step:"50",class:"control-input"},null,512),[[wa,te.value.dragDelayTime,void 0,{number:!0}]]),h("span",DS,le(we(t).taskBarConfig.mistouch.dragDelayTimeHint),1)])):h2("",!0)])])],512),[[Xn,!G.value]])]),_:1})]),h("div",AS,[h("div",{class:"section-header",onClick:Le},[h("div",gS,[se[77]||(se[77]=h("svg",{class:"section-icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[h("path",{d:"M12 15a3 3 0 100-6 3 3 0 000 6z",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"}),h("path",{d:"M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 010 2.83 2 2 0 01-2.83 0l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-2 2 2 2 0 01-2-2v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83 0 2 2 0 010-2.83l.06-.06a1.65 1.65 0 00.33-1.82 1.65 1.65 0 00-1.51-1H3a2 2 0 01-2-2 2 2 0 012-2h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 010-2.83 2 2 0 012.83 0l.06.06a1.65 1.65 0 001.82.33H9a1.65 1.65 0 001-1.51V3a2 2 0 012-2 2 2 0 012 2v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 0 2 2 0 010 2.83l-.06.06a1.65 1.65 0 00-.33 1.82V9a1.65 1.65 0 001.51 1H21a2 2 0 012 2 2 2 0 01-2 2h-.09a1.65 1.65 0 00-1.51 1z",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)),Ut(" "+le(D.value.title||"Tool 设置")+" / External Control API ",1)]),h("button",{class:B2(["section-collapse-button",{collapsed:ee.value}])},se[78]||(se[78]=[h("svg",{class:"collapse-icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[h("path",{d:"M7 10l5 5 5-5",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)]),2)]),ht(rs,{name:"section-content"},{default:z0(()=>{var he,Je,t2,$2,E2,I2,m2,u2,G2,Tt,St,st,Qt,jt,Kt,Pt,z,Re,Pe,i2,D2,w2,R2,J2,N2,T2,W2,_2,dt,Ft,p0,Z2,Va,va,Ka,$t,R0,ga,Tr,m0,ja,Qa,Bt,S0,s0,zt,C0,Fa,aa,da,$a,Mr,Ga,mr,Gr,D1,Br,Nr,K1,Yr,kr,l,N,de,Fe,Ee,r2,o2,P2,et,ct,Ct,Lt,v0,O0,M,Z,U,ce,Te,Ke,qe,Oe,g2,H2,Q2,n2,x2,It,e0,l0,d0,i0,Wt,F0,ar,Q0,G0,rr,xr,w1,lr,D0,xt,Gt,E0;return[Mt(h("div",IS,[h("div",mS,[h("h5",lS,"📊 "+le(((he=D.value.currentStatus)==null?void 0:he.title)||"Current Status"),1),h("div",cS,[h("div",uS,[h("span",fS,le(((Je=D.value.currentStatus)==null?void 0:Je.fullscreen)||"Fullscreen")+":",1),h("span",{class:B2(["status-value",{active:ue.value}])},le(ue.value?`✅ ${((t2=D.value.currentStatus)==null?void 0:t2.active)||"Active"}`:`❌ ${(($2=D.value.currentStatus)==null?void 0:$2.inactive)||"Inactive"}`),3)]),h("div",hS,[h("span",SS,le(((E2=D.value.currentStatus)==null?void 0:E2.expandAll)||"Expand All")+":",1),h("span",{class:B2(["status-value",{active:pe.value}])},le(pe.value?`✅ ${((I2=D.value.currentStatus)==null?void 0:I2.expanded)||"Expanded"}`:`❌ ${((m2=D.value.currentStatus)==null?void 0:m2.collapsed)||"Collapsed"}`),3)]),h("div",CS,[h("span",vS,le(((u2=D.value.currentStatus)==null?void 0:u2.locale)||"Locale")+":",1),h("span",FS,le(Ie.value),1)]),h("div",wS,[h("span",TS,le(((G2=D.value.currentStatus)==null?void 0:G2.timeScale)||"TimeScale")+":",1),h("span",BS,le(ae.value),1)]),h("div",NS,[h("span",yS,le(((Tt=D.value.currentStatus)==null?void 0:Tt.theme)||"Theme")+":",1),h("span",RS,le(ke.value),1)]),h("div",QS,[h("span",bS,le(((St=D.value.currentStatus)==null?void 0:St.controlMode)||"Control Mode")+":",1),h("span",{class:"status-value active",style:at({color:$.value==="props"?"#67c23a":"#409eff"})},le($.value==="props"?"📝 Props":"⚡ Expose"),5)])])]),h("div",HS,[h("h5",MS,"🎛️ "+le(((st=D.value.controlMode)==null?void 0:st.title)||"Control Mode"),1),h("div",kS,[h("button",{class:B2(["mode-button",{active:$.value==="expose"}]),onClick:se[21]||(se[21]=ft=>$.value="expose")}," ⚡ "+le(((Qt=D.value.controlMode)==null?void 0:Qt.expose)||"Expose Methods"),3),h("button",{class:B2(["mode-button",{active:$.value==="props"}]),onClick:se[22]||(se[22]=ft=>$.value="props")}," 📝 "+le(((jt=D.value.controlMode)==null?void 0:jt.props)||"Props Control"),3)]),h("p",xS,le($.value==="expose"?((Kt=D.value.controlMode)==null?void 0:Kt.exposeHint)||"通过 ref.value.method() 调用组件方法":((Pt=D.value.controlMode)==null?void 0:Pt.propsHint)||"通过修改 Props 控制组件状态"),1)]),Mt(h("div",US,[h("h4",ES,"⚡ "+le(((z=D.value.exposeMethods)==null?void 0:z.sectionTitle)||"Expose 方法控制"),1),h("div",KS,[h("div",LS,[h("h5",WS,"🖥️ "+le(((Pe=(Re=D.value.exposeMethods)==null?void 0:Re.fullscreen)==null?void 0:Pe.title)||"Fullscreen"),1),h("div",_S,[h("button",{class:"tool-button",onClick:l2},le(((D2=(i2=D.value.exposeMethods)==null?void 0:i2.fullscreen)==null?void 0:D2.enter)||"Enter"),1),h("button",{class:"tool-button",onClick:S2},le(((R2=(w2=D.value.exposeMethods)==null?void 0:w2.fullscreen)==null?void 0:R2.exit)||"Exit"),1),h("button",{class:"tool-button primary",onClick:k2},le(((N2=(J2=D.value.exposeMethods)==null?void 0:J2.fullscreen)==null?void 0:N2.toggle)||"Toggle"),1)])]),se[80]||(se[80]=h("div",{class:"tool-divider"},null,-1)),h("div",PS,[h("h5",OS,"📂 "+le(((W2=(T2=D.value.exposeMethods)==null?void 0:T2.expand)==null?void 0:W2.title)||"Expand"),1),h("div",VS,[h("button",{class:"tool-button",onClick:y2},le(((dt=(_2=D.value.exposeMethods)==null?void 0:_2.expand)==null?void 0:dt.all)||"All"),1),h("button",{class:"tool-button",onClick:v2},le(((p0=(Ft=D.value.exposeMethods)==null?void 0:Ft.expand)==null?void 0:p0.none)||"None"),1),h("button",{class:"tool-button primary",onClick:K2},le(((Va=(Z2=D.value.exposeMethods)==null?void 0:Z2.expand)==null?void 0:Va.toggle)||"Toggle"),1)])]),se[81]||(se[81]=h("div",{class:"tool-divider"},null,-1)),h("div",jS,[h("h5",$S,"📏 "+le(((Ka=(va=D.value.exposeMethods)==null?void 0:va.timeScale)==null?void 0:Ka.title)||"Scale"),1),h("div",GS,[h("button",{class:"tool-button",onClick:se[23]||(se[23]=ft=>b2("hour"))},le(((R0=($t=D.value.exposeMethods)==null?void 0:$t.timeScale)==null?void 0:R0.hour)||"Hour"),1),h("button",{class:"tool-button",onClick:se[24]||(se[24]=ft=>b2("day"))},le(((Tr=(ga=D.value.exposeMethods)==null?void 0:ga.timeScale)==null?void 0:Tr.day)||"Day"),1),h("button",{class:"tool-button",onClick:se[25]||(se[25]=ft=>b2("week"))},le(((ja=(m0=D.value.exposeMethods)==null?void 0:m0.timeScale)==null?void 0:ja.week)||"Week"),1),h("button",{class:"tool-button",onClick:se[26]||(se[26]=ft=>b2("month"))},le(((Bt=(Qa=D.value.exposeMethods)==null?void 0:Qa.timeScale)==null?void 0:Bt.month)||"Month"),1),h("button",{class:"tool-button",onClick:se[27]||(se[27]=ft=>b2("quarter"))},le(((s0=(S0=D.value.exposeMethods)==null?void 0:S0.timeScale)==null?void 0:s0.quarter)||"Quarter"),1),h("button",{class:"tool-button",onClick:se[28]||(se[28]=ft=>b2("year"))},le(((C0=(zt=D.value.exposeMethods)==null?void 0:zt.timeScale)==null?void 0:C0.year)||"Year"),1),se[79]||(se[79]=h("span",{style:{margin:"0 4px",color:"var(--gantt-border-color, #dcdfe6)"}},"|",-1)),h("button",{class:"tool-button primary",onClick:V2},"➕"),h("button",{class:"tool-button primary",onClick:_t},"➖")])]),se[82]||(se[82]=h("div",{class:"tool-divider"},null,-1)),h("div",YS,[h("h5",qS,"🌐 "+le(((aa=(Fa=D.value.exposeMethods)==null?void 0:Fa.locale)==null?void 0:aa.title)||"Locale"),1),h("div",zS,[h("button",{class:B2(["tool-button",{primary:Ie.value==="zh-CN"}]),onClick:se[29]||(se[29]=ft=>q2("zh-CN"))},le((($a=(da=D.value.exposeMethods)==null?void 0:da.locale)==null?void 0:$a.zhCN)||"中文"),3),h("button",{class:B2(["tool-button",{primary:Ie.value==="en-US"}]),onClick:se[30]||(se[30]=ft=>q2("en-US"))},le(((Ga=(Mr=D.value.exposeMethods)==null?void 0:Mr.locale)==null?void 0:Ga.enUS)||"EN"),3)])]),se[83]||(se[83]=h("div",{class:"tool-divider"},null,-1)),h("div",XS,[h("h5",JS,"🎨 "+le(((Gr=(mr=D.value.exposeMethods)==null?void 0:mr.theme)==null?void 0:Gr.title)||"Theme"),1),h("div",ZS,[h("button",{class:B2(["tool-button",{primary:ke.value==="light"}]),onClick:se[31]||(se[31]=ft=>mt("light"))}," ☀️ "+le(((Br=(D1=D.value.exposeMethods)==null?void 0:D1.theme)==null?void 0:Br.light)||"Light"),3),h("button",{class:B2(["tool-button",{primary:ke.value==="dark"}]),onClick:se[32]||(se[32]=ft=>mt("dark"))}," 🌙 "+le(((K1=(Nr=D.value.exposeMethods)==null?void 0:Nr.theme)==null?void 0:K1.dark)||"Dark"),3)])]),se[84]||(se[84]=h("div",{class:"tool-divider"},null,-1)),h("div",eC,[h("h5",tC,"🧭 "+le(((kr=(Yr=D.value.exposeMethods)==null?void 0:Yr.navigation)==null?void 0:kr.title)||"Nav"),1),h("div",aC,[h("button",{class:"tool-button primary",onClick:C2}," 📅 "),Mt(h("input",{"onUpdate:modelValue":se[33]||(se[33]=ft=>ze.value=ft),type:"text",class:"tool-input",placeholder:((N=(l=D.value.exposeMethods)==null?void 0:l.navigation)==null?void 0:N.taskIdPlaceholder)||"Task ID"},null,8,rC),[[wa,ze.value]]),h("button",{class:"tool-button",onClick:gt},le(((Fe=(de=D.value.exposeMethods)==null?void 0:de.navigation)==null?void 0:Fe.go)||"Go"),1),Mt(h("input",{"onUpdate:modelValue":se[34]||(se[34]=ft=>W.value=ft),type:"date",class:"tool-input"},null,512),[[wa,W.value]]),h("button",{class:"tool-button",onClick:it},le(((r2=(Ee=D.value.exposeMethods)==null?void 0:Ee.navigation)==null?void 0:r2.go)||"Go"),1)])])])],512),[[Xn,$.value==="expose"]]),Mt(h("div",nC,[h("h4",sC,"📝 "+le(((o2=D.value.propsControl)==null?void 0:o2.sectionTitle)||"Props 属性控制"),1),h("div",dC,[h("div",iC,[h("h5",oC,"🌐 "+le(((et=(P2=D.value.propsControl)==null?void 0:P2.locale)==null?void 0:et.title)||"Locale Prop"),1),h("div",pC,[h("button",{class:B2(["tool-button",{primary:Be.value==="zh-CN"}]),onClick:se[35]||(se[35]=ft=>Be.value="zh-CN")},le(((Ct=(ct=D.value.exposeMethods)==null?void 0:ct.locale)==null?void 0:Ct.zhCN)||"中文"),3),h("button",{class:B2(["tool-button",{primary:Be.value==="en-US"}]),onClick:se[36]||(se[36]=ft=>Be.value="en-US")},le(((v0=(Lt=D.value.exposeMethods)==null?void 0:Lt.locale)==null?void 0:v0.enUS)||"EN"),3)]),h("p",DC,':locale="'+le(Be.value)+'"',1)]),se[85]||(se[85]=h("div",{class:"tool-divider"},null,-1)),h("div",AC,[h("h5",gC,"🎨 "+le(((M=(O0=D.value.propsControl)==null?void 0:O0.theme)==null?void 0:M.title)||"Theme Prop"),1),h("div",IC,[h("button",{class:B2(["tool-button",{primary:R.value==="light"}]),onClick:se[37]||(se[37]=ft=>R.value="light")}," ☀️ "+le(((U=(Z=D.value.exposeMethods)==null?void 0:Z.theme)==null?void 0:U.light)||"Light"),3),h("button",{class:B2(["tool-button",{primary:R.value==="dark"}]),onClick:se[38]||(se[38]=ft=>R.value="dark")}," 🌙 "+le(((Te=(ce=D.value.exposeMethods)==null?void 0:ce.theme)==null?void 0:Te.dark)||"Dark"),3)]),h("p",mC,':theme="'+le(R.value)+'"',1)]),se[86]||(se[86]=h("div",{class:"tool-divider"},null,-1)),h("div",lC,[h("h5",cC,"📅 "+le(((qe=(Ke=D.value.propsControl)==null?void 0:Ke.timeScale)==null?void 0:qe.title)||"TimeScale Prop"),1),h("div",uC,[h("button",{class:B2(["tool-button",{primary:ye.value==="hour"}]),onClick:se[39]||(se[39]=ft=>ye.value="hour")},le(((g2=(Oe=D.value.exposeMethods)==null?void 0:Oe.timeScale)==null?void 0:g2.hour)||"Hour"),3),h("button",{class:B2(["tool-button",{primary:ye.value==="day"}]),onClick:se[40]||(se[40]=ft=>ye.value="day")},le(((Q2=(H2=D.value.exposeMethods)==null?void 0:H2.timeScale)==null?void 0:Q2.day)||"Day"),3),h("button",{class:B2(["tool-button",{primary:ye.value==="week"}]),onClick:se[41]||(se[41]=ft=>ye.value="week")},le(((x2=(n2=D.value.exposeMethods)==null?void 0:n2.timeScale)==null?void 0:x2.week)||"Week"),3),h("button",{class:B2(["tool-button",{primary:ye.value==="month"}]),onClick:se[42]||(se[42]=ft=>ye.value="month")},le(((e0=(It=D.value.exposeMethods)==null?void 0:It.timeScale)==null?void 0:e0.month)||"Month"),3),h("button",{class:B2(["tool-button",{primary:ye.value==="quarter"}]),onClick:se[43]||(se[43]=ft=>ye.value="quarter")},le(((d0=(l0=D.value.exposeMethods)==null?void 0:l0.timeScale)==null?void 0:d0.quarter)||"Quarter"),3),h("button",{class:B2(["tool-button",{primary:ye.value==="year"}]),onClick:se[44]||(se[44]=ft=>ye.value="year")},le(((Wt=(i0=D.value.exposeMethods)==null?void 0:i0.timeScale)==null?void 0:Wt.year)||"Year"),3)]),h("p",fC,':time-scale="'+le(ye.value)+'"',1)]),se[87]||(se[87]=h("div",{class:"tool-divider"},null,-1)),h("div",hC,[h("h5",SC,"🖥️ "+le(((ar=(F0=D.value.propsControl)==null?void 0:F0.fullscreen)==null?void 0:ar.title)||"Fullscreen Prop"),1),h("div",CC,[h("button",{class:B2(["tool-button",{primary:O.value===!0}]),onClick:se[45]||(se[45]=ft=>O.value=!0)}," ✅ "+le(((G0=(Q0=D.value.propsControl)==null?void 0:Q0.fullscreen)==null?void 0:G0.true)||"True"),3),h("button",{class:B2(["tool-button",{primary:O.value===!1}]),onClick:se[46]||(se[46]=ft=>O.value=!1)}," ❌ "+le(((xr=(rr=D.value.propsControl)==null?void 0:rr.fullscreen)==null?void 0:xr.false)||"False"),3)]),h("p",vC,':fullscreen="'+le(O.value)+'"',1)]),se[88]||(se[88]=h("div",{class:"tool-divider"},null,-1)),h("div",FC,[h("h5",wC,"📂 "+le(((lr=(w1=D.value.propsControl)==null?void 0:w1.expandAll)==null?void 0:lr.title)||"ExpandAll Prop"),1),h("div",TC,[h("button",{class:B2(["tool-button",{primary:ie.value===!0}]),onClick:se[47]||(se[47]=ft=>ie.value=!0)}," ✅ "+le(((xt=(D0=D.value.propsControl)==null?void 0:D0.expandAll)==null?void 0:xt.true)||"True"),3),h("button",{class:B2(["tool-button",{primary:ie.value===!1}]),onClick:se[48]||(se[48]=ft=>ie.value=!1)}," ❌ "+le(((E0=(Gt=D.value.propsControl)==null?void 0:Gt.expandAll)==null?void 0:E0.false)||"False"),3)]),h("p",BC,':expand-all="'+le(ie.value)+'"',1)])])],512),[[Xn,$.value==="props"]])],512),[[Xn,!ee.value]])]}),_:1})])],512),[[Xn,!Me.value]])]),_:1})],2),h("div",NC,[ht(kt,{ref_key:"gantt",ref:A,tasks:m.value,milestones:c.value,locale:$.value==="props"?Be.value:void 0,theme:$.value==="props"?R.value:void 0,"time-scale":$.value==="props"?ye.value:void 0,fullscreen:$.value==="props"?O.value:void 0,"expand-all":$.value==="props"?ie.value:void 0,"toolbar-config":y,"task-list-config":Ne.value,"task-bar-config":Se.value,"working-hours":z2,"use-default-milestone-dialog":!0,"allow-drag-and-resize":ve.value,"enable-task-row-move":ne.value,"assignee-options":oe.value,"task-list-row-class-name":U2,"task-list-row-style":Ba,"on-export-csv":qt,"on-language-change":Xe,"on-theme-change":Aa,"task-list-column-render-mode":x.value,onMilestoneSaved:B0,onMilestoneDeleted:Vt,onMilestoneIconChanged:Na,onAddTask:U0,onTaskbarDragEnd:na,onTaskbarResizeEnd:na,onMilestoneDragEnd:P0,onTaskClick:e2,onEditTask:se[49]||(se[49]=he=>we(a)(`进入任务编辑:${he.name}`)),onClose:se[50]||(se[50]=()=>we(a)("已关闭任务编辑","info")),onTimerStarted:sa,onTimerStopped:Ea,onPredecessorAdded:se[51]||(se[51]=he=>we(a)(`Demo 任务[${he.targetTask.name}] 添加前置任务 [${he.newTask.name}]`,"info")),onSuccessorAdded:se[52]||(se[52]=he=>we(a)(`Demo 任务[${he.targetTask.name}] 添加后置任务 [${he.newTask.name}]`,"info")),onTaskDeleted:Ua,onTaskAdded:N0,onTaskUpdated:o0,onTaskRowMoved:Rt},{"custom-task-content":z0(he=>[ht(of,{item:void 0,task:he.task,type:he.type,style:at(he.dynamicStyles)},null,8,["item","task","type","style"])]),"header-name":z0(()=>[h("div",yC,[se[89]||(se[89]=h("img",{src:"https://foruda.gitee.com/avatar/1764902889653058860/565633_nelson820125_1764902889.png!avatar200",width:"32",height:"32",style:{"border-radius":"50%"}},null,-1)),h("strong",RC,le(we(t).taskName),1)])]),"column-name":z0(({task:he,column:Je,value:t2})=>[h("div",QC,[se[90]||(se[90]=h("img",{src:"https://foruda.gitee.com/avatar/1764902889653058860/565633_nelson820125_1764902889.png!avatar200",width:"20",height:"20",style:{"border-radius":"50%"}},null,-1)),h("span",{innerHTML:t2},null,8,bC),he.priority?(q(),me("span",HC," P-"+le(he.priority),1)):h2("",!0)])]),"column-custom":z0(({task:he,column:Je,value:t2})=>[h("div",MC,[typeof t2=="number"?(q(),me("span",kC," 💰 "+le(t2.toLocaleString()),1)):typeof t2=="string"?(q(),me("span",xC," 📝 "+le(t2),1)):(q(),me("span",UC,"-"))])]),default:z0(()=>[ht(X2,{prop:"name",label:we(t).taskName,width:"300",align:"center"},{header:z0(()=>[se[91]||(se[91]=h("img",{src:"https://foruda.gitee.com/avatar/1764902889653058860/565633_nelson820125_1764902889.png!avatar200",width:"32",height:"32",style:{"border-radius":"50%"}},null,-1)),h("strong",EC,le(we(t).taskName),1)]),default:z0(he=>[h("div",KC,[he.row.type==="milestone-group"?(q(),me("svg",LC,se[92]||(se[92]=[h("polygon",{points:"12,2 22,12 12,22 2,12"},null,-1)]))):h2("",!0),he.row.avatar&&he.row.type==="task"?(q(),me("img",{key:1,src:he.row.avatar,width:"20",height:"20",style:{"border-radius":"50%"}},null,8,WC)):h2("",!0),h("span",{innerHTML:he.row.name},null,8,_C)])]),_:1},8,["label"]),ht(X2,{prop:"startDate",label:we(t).startDate,width:"200",align:"center"},null,8,["label"]),ht(X2,{prop:"endDate",label:we(t).endDate,width:"200",align:"center"},null,8,["label"]),ht(Et,{"task-type":["task"]},{default:z0(he=>[h("div",PC,[se[93]||(se[93]=h("div",{class:"custom-menu-header"},"声明式 TaskList 菜单",-1)),h("div",{class:"custom-menu-item",onClick:Je=>y0("extend",he.row)}," ➡️ 延长任务 ",8,OC),h("div",{class:"custom-menu-item",onClick:Je=>y0("move",he.row)}," 📅 移动任务 ",8,VC),se[94]||(se[94]=h("div",{class:"custom-menu-divider"},null,-1)),h("div",{class:"custom-menu-item",onClick:Je=>y0("copy",he.row)}," 📄 复制任务 ",8,jC)])]),_:1})]),_:1},8,["tasks","milestones","locale","theme","time-scale","fullscreen","expand-all","task-list-config","task-bar-config","allow-drag-and-resize","enable-task-row-move","assignee-options","task-list-column-render-mode"])]),se[96]||(se[96]=H1('
MIT License @ 2025 JORDIUM.COMMIT LicenseVue.jsTypeScriptNodejs
',1)),ht(E3,{visible:re.value,milestone:J.value,"onUpdate:visible":se[53]||(se[53]=he=>re.value=he),onSave:Z0,onDelete:Vt,onClose:se[54]||(se[54]=he=>re.value=!1)},null,8,["visible","milestone"]),j2.value?(q(),me("div",{key:0,class:"task-click-dialog-overlay",onClick:Ye},[h("div",{class:"task-click-dialog",onClick:se[55]||(se[55]=Jt(()=>{},["stop"]))},[h("div",{class:"task-click-dialog-header"},[se[95]||(se[95]=h("h3",null,"Task",-1)),h("button",{class:"close-button",onClick:Ye},"×")]),h("div",$C,[xe.value?(q(),me("div",GC,[(q(!0),me(c2,null,ut(Object.entries(xe.value),([he,Je])=>(q(),me("div",{key:he,class:"property-row"},[h("span",YC,le(he)+":",1),h("span",qC,le(F2(Je)),1)]))),128))])):h2("",!0)]),h("div",{class:"task-click-dialog-footer"},[h("button",{class:"confirm-button",onClick:Ye},"确认")])])])):h2("",!0)])}}}),XC=J0(zC,[["__scopeId","data-v-35a86b68"]]),JC={class:"confirm-timer-dialog-overlay"},ZC={class:"confirm-timer-dialog"},ev={class:"dialog-message"},tv={class:"task-name-highlight"},av=["placeholder"],rv={class:"dialog-actions"},nv=x0({__name:"ConfirmTimerDialog",props:{visible:Boolean,title:{type:String,default:"确认开始计时"},message:{type:String,default:""},defaultDesc:{type:String,default:""},placeholder:{type:String,default:"请输入计时说明"}},emits:["confirm","cancel"],setup(e,{emit:a}){const t=e,r=a,{getTranslation:n}=Fr(),s=Ce(t.defaultDesc);Dt(()=>t.visible,o=>{o&&(s.value=t.defaultDesc)});const d=()=>r("confirm",s.value),i=Ge(()=>{if(t.message){const o=t.message.match(/任务([\S\s]+?)计时|Task ([\S\s]+?) timing/);if(o&&(o[1]||o[2]))return o[1]||o[2]}return t.defaultDesc});return(o,D)=>(q(),me("div",JC,[h("div",ZC,[h("div",ev,[h("span",null,le(we(n)("timerConfirmPrefix")),1),h("span",tv,le(i.value),1),h("span",null,le(we(n)("timerConfirmSuffix")),1)]),Mt(h("textarea",{"onUpdate:modelValue":D[0]||(D[0]=A=>s.value=A),class:"dialog-textarea",placeholder:we(n)("timerConfirmPlaceholder"),rows:"3"},null,8,av),[[wa,s.value]]),h("div",rv,[h("button",{class:"gantt-btn gantt-btn-default",onClick:D[1]||(D[1]=A=>o.$emit("cancel"))},le(we(n)("cancel")),1),h("button",{class:"gantt-btn gantt-btn-confirm",onClick:d},le(we(n)("startTimer")),1)])])]))}}),K3=J0(nv,[["__scopeId","data-v-4244c39f"]]),sv={class:"icon-wrapper"},dv=["onClick"],iv=["innerHTML"],ov=x0({__name:"TaskContextMenu",props:{visible:{type:Boolean},position:{},task:{},allTasks:{}},emits:["start-timer","stop-timer","add-predecessor","add-successor","delete","delete-link","close"],setup(e,{emit:a}){const t=e,r=a,{t:n}=Fr(),s=Ce(null),d=Ce({x:0,y:0}),i=Ce({display:"none",left:"50%",top:"-8px",transform:"rotate(0deg)"}),o=Ce(!1),D=Ce(""),A=Ce(!1),m=Ge(()=>{var te;return((te=t.task)==null?void 0:te.type)==="story"?"yes-no-cancel":"confirm-cancel"}),c=Ge(()=>{var te,Se,Me;return((te=t.task)==null?void 0:te.type)==="story"?n.value.confirmDeleteStory.replace("{name}",((Se=t.task)==null?void 0:Se.name)||""):n.value.confirmDeleteTask.replace("{name}",((Me=t.task)==null?void 0:Me.name)||"")});function g(){var te;D.value=((te=t.task)==null?void 0:te.name)||"",o.value=!0}function f(){o.value=!1}function v(te){if(o.value=!1,t.task&&typeof t.task=="object"){r("close");const Se=Date.now();Object.assign(t.task,{timerStartDesc:te||"",isTimerRunning:!0,timerStartTime:Se,timerElapsedTime:0}),r("start-timer",t.task)}}function B(){A.value=!0}const C=()=>{A.value=!1,t.task&&(r("delete",t.task),r("close"))},E=()=>{A.value=!1},b=()=>{A.value=!1,t.task&&(r("delete",t.task,!0),x())},H=()=>{A.value=!1,t.task&&(r("delete",t.task,!1),x())},X=Ge(()=>{var te;return((te=t.task)==null?void 0:te.type)!=="story"}),re=Ce(!1);let J=null;const K=Ge(()=>{const te=[];if(!t.task||!t.allTasks)return te;if(t.task.predecessor){const Se=Vr(t.task.predecessor);for(const Me of Se){const w=t.allTasks.find(P=>P.id===Me);w&&te.push({type:"predecessor",taskId:Me,taskName:w.name||`任务 ${Me}`})}}for(const Se of t.allTasks)Se.predecessor&&Se.id!==t.task.id&&Vr(Se.predecessor).includes(t.task.id)&&te.push({type:"successor",taskId:Se.id,taskName:Se.name||`任务 ${Se.id}`});return te}),y=Ge(()=>K.value.length>0);Dt([()=>t.visible,()=>t.position],([te,Se])=>{te&&Se&&Zt(()=>{if(s.value){const Me=window.innerWidth,w=window.innerHeight,P=s.value.offsetWidth,G=s.value.offsetHeight;let ee=Se.x-P/2,ue=Se.y+10,pe="50%",Ie="-8px",ae="rotate(0deg)";if(ee+P>Me){const ke=ee+P-Me+5;ee-=ke,pe=`calc(50% + ${ke}px)`}if(ee<5){const ke=5-ee;ee=5,pe=`calc(50% - ${ke}px)`}ue+G>w&&(ue=Se.y-G-10,Ie="100%",ae="rotate(180deg)"),d.value={x:ee,y:ue},i.value={display:"block",left:pe,top:Ie,transform:ae}}})},{immediate:!0,deep:!0});const x=()=>{r("close")},T=()=>{var te;(te=t.task)!=null&&te.isTimerRunning?(r("close"),Object.assign(t.task,{isTimerRunning:!1,timerEndTime:Date.now(),timerElapsedTime:(t.task.timerElapsedTime||0)+(Date.now()-(t.task.timerStartTime||Date.now()))}),r("stop-timer",t.task)):g()},F=()=>{t.task&&(r("close"),Zt(()=>{r("add-predecessor",t.task)}))},j=()=>{t.task&&(r("close"),Zt(()=>{r("add-successor",t.task)}))},_=te=>{J&&(clearTimeout(J),J=null),re.value=!1,r("delete-link",{sourceTaskId:te.type==="predecessor"?te.taskId:t.task.id,targetTaskId:te.type==="predecessor"?t.task.id:te.taskId}),r("close")},Ne=()=>{J&&(clearTimeout(J),J=null),re.value=!0},ve=()=>{J=window.setTimeout(()=>{re.value=!1},200)},ne=te=>{s.value&&!s.value.contains(te.target)&&x()},oe=te=>{te.key==="Escape"&&x()};return Ca(()=>{document.addEventListener("mousedown",ne),document.addEventListener("keydown",oe)}),Da(()=>{document.removeEventListener("mousedown",ne),document.removeEventListener("keydown",oe),J&&clearTimeout(J)}),(te,Se)=>{var Me,w,P,G;return q(),r0(kn,{to:"body"},[te.visible?(q(),me("div",{key:0,ref_key:"menuRef",ref:s,class:"task-context-menu",style:at({left:`${d.value.x}px`,top:`${d.value.y}px`,zIndex:1e4,position:"fixed"})},[h("div",{class:"menu-arrow",style:at({display:i.value.display,left:i.value.left,top:i.value.top,transform:i.value.transform})},null,4),X.value?(q(),me("div",{key:0,class:"menu-item",onClick:T},[h("div",sv,[h("i",{class:B2(["menu-icon",(Me=t.task)!=null&&Me.isTimerRunning?"stop-icon":"timer-icon"])},null,2)]),Ut(" "+le((w=t.task)!=null&&w.isTimerRunning?we(n).stopTimer:we(n).startTimer),1)])):h2("",!0),h("div",{class:"menu-item",onClick:F},[Se[0]||(Se[0]=h("div",{class:"icon-wrapper"},[h("i",{class:"menu-icon predecessor-icon"})],-1)),Ut(" "+le(we(n).addPredecessor),1)]),h("div",{class:"menu-item",onClick:j},[Se[1]||(Se[1]=h("div",{class:"icon-wrapper"},[h("i",{class:"menu-icon successor-icon"})],-1)),Ut(" "+le(we(n).addSuccessor),1)]),y.value?(q(),me("div",{key:1,class:"menu-item menu-item-with-submenu",onMouseenter:Ne,onMouseleave:ve},[Se[2]||(Se[2]=h("div",{class:"icon-wrapper"},[h("i",{class:"menu-icon link-delete-icon"})],-1)),Ut(" "+le(we(n).deleteLinks)+" ",1),Se[3]||(Se[3]=h("i",{class:"submenu-arrow"},"›",-1)),re.value?(q(),me("div",{key:0,class:"submenu",onMouseenter:Ne,onMouseleave:ve},[(q(!0),me(c2,null,ut(K.value,ee=>(q(),me("div",{key:`${ee.type}-${ee.taskId}`,class:"menu-item submenu-item",onClick:Jt(ue=>_(ee),["stop"])},[h("span",{innerHTML:ee.type==="predecessor"?we(n).predecessorLink.replace("{name}",ee.taskName):we(n).successorLink.replace("{name}",ee.taskName)},null,8,iv)],8,dv))),128))],32)):h2("",!0)],32)):h2("",!0),Se[5]||(Se[5]=h("div",{class:"menu-divider"},null,-1)),h("div",{class:"menu-item menu-item-danger",onClick:B},[Se[4]||(Se[4]=h("div",{class:"icon-wrapper"},[h("i",{class:"menu-icon delete-icon"})],-1)),Ut(" "+le(we(n).delete),1)]),ht(o6,{visible:A.value,title:we(n).delete,type:m.value,message:c.value,"confirm-text":we(n).confirm,"cancel-text":we(n).cancel,"yes-text":we(n).storyDeleteYes,"no-text":we(n).storyDeleteNo,onConfirm:C,onYes:b,onNo:H,onCancel:E},null,8,["visible","title","type","message","confirm-text","cancel-text","yes-text","no-text"]),o.value?(q(),r0(K3,{key:2,visible:o.value,title:"确认开始计时",message:`即将为任务${(P=t.task)==null?void 0:P.name}计时,若有特殊说明请完善下面的描述`,"default-desc":((G=t.task)==null?void 0:G.name)||"",onConfirm:v,onCancel:f},null,8,["visible","message","default-desc"])):h2("",!0)],4)):h2("",!0)])}}}),L3=J0(ov,[["__scopeId","data-v-ace8cfaf"]]),pv={width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},Dv={key:0,points:"9,18 15,12 9,6"},Av={key:1,points:"18,15 12,9 6,15"},gv=x0({__name:"TaskRowCollapseButton",props:{collapsed:{type:Boolean},visible:{type:Boolean}},emits:["toggle"],setup(e){return(a,t)=>a.visible?(q(),me("span",{key:0,class:"collapse-btn",onClick:t[0]||(t[0]=Jt(r=>a.$emit("toggle"),["stop"]))},[(q(),me("svg",pv,[a.collapsed?(q(),me("polyline",Dv)):(q(),me("polyline",Av))]))])):h2("",!0)}}),qD=J0(gv,[["__scopeId","data-v-d56e1479"]]),Iv={key:0,class:"task-icon"},mv={key:0,width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",class:"milestone-group-icon"},lv={key:1,width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},cv={key:2,width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},uv=x0({__name:"TaskRowIcon",props:{isMilestoneGroup:{type:Boolean},isParentTask:{type:Boolean},hasChildren:{type:Boolean},isStoryTask:{type:Boolean},showIcon:{type:Boolean,default:!0}},setup(e){return(a,t)=>a.showIcon?(q(),me("span",Iv,[a.isMilestoneGroup?(q(),me("svg",mv,t[0]||(t[0]=[h("polygon",{points:"12,2 22,12 12,22 2,12"},null,-1)]))):a.isStoryTask||a.hasChildren?(q(),me("svg",lv,t[1]||(t[1]=[h("path",{d:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-5l-2-2H5a2 2 0 00-2 2z"},null,-1)]))):(q(),me("svg",cv,t[2]||(t[2]=[H1('',5)])))])):h2("",!0)}}),zD=J0(uv,[["__scopeId","data-v-7689b9a9"]]),fv={key:0,class:"timer-dot"},hv={key:1,class:"status-badge overtime"},Sv={key:2,class:"status-badge overdue"},Cv=x0({__name:"TaskRowBadges",props:{formattedTimer:{},isTimerRunning:{type:Boolean},timerElapsedTime:{},isOvertime:{type:Boolean},overdueDays:{},overtimeText:{},overdueText:{},daysText:{}},setup(e){return(a,t)=>(q(),me(c2,null,[a.isTimerRunning||a.timerElapsedTime?(q(),me("span",{key:0,class:B2(["timer-badge",{"timer-active":a.isTimerRunning}])},[a.isTimerRunning?(q(),me("span",fv)):h2("",!0),Ut(" "+le(a.formattedTimer),1)],2)):h2("",!0),a.isOvertime?(q(),me("span",hv,le(a.overtimeText),1)):h2("",!0),a.overdueDays>0?(q(),me("span",Sv,le(a.overdueText)+le(a.overdueDays>0?a.overdueDays+a.daysText:""),1)):h2("",!0)],64))}}),XD=J0(Cv,[["__scopeId","data-v-f020207b"]]),vv=["title"],Fv=["title"],wv=x0({__name:"TaskRowNameContent",props:{task:{},isParentTask:{type:Boolean},hasChildren:{type:Boolean},isStoryTask:{type:Boolean},isMilestoneGroup:{type:Boolean},isMilestoneTask:{type:Boolean},showTaskIcon:{type:Boolean},formattedTimer:{},isOvertime:{type:Boolean},overdueDays:{},overtimeText:{},overdueText:{},daysText:{},hasContentSlot:{type:Boolean},renderColumnSlot:{type:Function},hasColumnSlot:{type:Function}},setup(e){const a=e;return(t,r)=>{var n;return(n=t.hasColumnSlot)!=null&&n.call(t,"name")?(q(),r0(tn(()=>{var s;return(s=t.renderColumnSlot)==null?void 0:s.call(t,"name",{task:a.task,column:{key:"name"},value:a.task.name,isParentTask:t.isParentTask,hasChildren:t.hasChildren,isStoryTask:t.isStoryTask,isMilestoneGroup:t.isMilestoneGroup,isMilestoneTask:t.isMilestoneTask,showTaskIcon:t.showTaskIcon,formattedTimer:t.formattedTimer,isOvertime:t.isOvertime,overdueDays:t.overdueDays,overtimeText:t.overtimeText,overdueText:t.overdueText,daysText:t.daysText})}),{key:0})):t.hasContentSlot?(q(),me(c2,{key:1},[ht(zD,{isMilestoneGroup:t.isMilestoneGroup,isParentTask:t.isParentTask,hasChildren:t.hasChildren,isStoryTask:t.isStoryTask,showIcon:t.showTaskIcon},null,8,["isMilestoneGroup","isParentTask","hasChildren","isStoryTask","showIcon"]),h("span",{class:B2(["task-name-text",{"parent-task":t.isParentTask}]),title:t.task.name},[u1(t.$slots,"custom-task-content",{},void 0),ht(XD,{formattedTimer:t.formattedTimer,isTimerRunning:!!t.task.isTimerRunning,timerElapsedTime:t.task.timerElapsedTime,isOvertime:t.isOvertime,overdueDays:t.overdueDays,overtimeText:t.overtimeText,overdueText:t.overdueText,daysText:t.daysText},null,8,["formattedTimer","isTimerRunning","timerElapsedTime","isOvertime","overdueDays","overtimeText","overdueText","daysText"])],10,vv)],64)):(q(),me(c2,{key:2},[ht(zD,{isMilestoneGroup:t.isMilestoneGroup,isParentTask:t.isParentTask,hasChildren:t.hasChildren,isStoryTask:t.isStoryTask,showIcon:t.showTaskIcon},null,8,["isMilestoneGroup","isParentTask","hasChildren","isStoryTask","showIcon"]),h("span",{class:B2(["task-name-text",{"parent-task":t.isParentTask}]),title:t.task.name},[Ut(le(t.task.name)+" ",1),ht(XD,{formattedTimer:t.formattedTimer,isTimerRunning:!!t.task.isTimerRunning,timerElapsedTime:t.task.timerElapsedTime,isOvertime:t.isOvertime,overdueDays:t.overdueDays,overtimeText:t.overtimeText,overdueText:t.overdueText,daysText:t.daysText},null,8,["formattedTimer","isTimerRunning","timerElapsedTime","isOvertime","overdueDays","overtimeText","overdueText","daysText"])],10,Fv)],64))}}}),Tv=J0(wv,[["__scopeId","data-v-0e4d76f3"]]);function Bv(e,a,t,r,n){const d=Ge(()=>{const g=e.value.type,f=e.value.children,v=!!(f&&f.length>0),B=g==="story",C=g==="milestone-group",E=g==="milestone",b=B||v||C;return{indent:`${10+a.value*20}px`,hasChildren:v,isStoryTask:B,isMilestoneGroup:C,isMilestoneTask:E,isParentTask:b}}),i=()=>{const g=e.value.progress||0,f=new Date,v=e.value.endDate?new Date(e.value.endDate):null;return v&&f>v&&g<100?"progress-danger":g>=100?"progress-success":g>0?"progress-warning":""},o=()=>e.value.actualHours&&e.value.estimatedHours&&e.value.actualHours>e.value.estimatedHours,D=()=>{const g=new Date,f=e.value.endDate?new Date(e.value.endDate):null,v=e.value.progress||0;if(f&&g>f&&v<100){const B=new Date(g.getFullYear(),g.getMonth(),g.getDate()),C=new Date(f.getFullYear(),f.getMonth(),f.getDate());return Math.floor((B.getTime()-C.getTime())/(1e3*60*60*24))}return 0},A=Ge(()=>i()),m=Ge(()=>r!=null&&r.value?typeof r.value=="function"?r.value(e.value,(t==null?void 0:t.value)??0):r.value:""),c=Ge(()=>n!=null&&n.value?typeof n.value=="function"?n.value(e.value,(t==null?void 0:t.value)??0):n.value:{});return{indent:Ge(()=>d.value.indent),hasChildren:Ge(()=>d.value.hasChildren),isStoryTask:Ge(()=>d.value.isStoryTask),isMilestoneGroup:Ge(()=>d.value.isMilestoneGroup),isMilestoneTask:Ge(()=>d.value.isMilestoneTask),isParentTask:Ge(()=>d.value.isParentTask),getProgressClass:i,isOvertime:o,overdueDays:D,progressClass:A,customRowClass:m,customRowStyle:c}}function Nv(e,a,t,r,n,s,d){const i=A=>A===0;return{isFirstColumn:i,getDeclarativeColumnAlign:A=>({justifyContent:A.align==="center"?"center":A.align==="right"?"flex-end":"flex-start",textAlign:A.align||"left"}),renderDeclarativeColumn:(A,m)=>{if(i(m)){const c=A.prop?e.value[A.prop]:e.value.name;return A.defaultSlot?pr("div",{class:"task-name-content"},[pr("span",{class:["task-name-text",{"parent-task":a.value}],title:c},[A.defaultSlot({row:e.value,$index:d.value??-1})])]):pr("div",{class:"task-name-content"},[s.value!==!1?pr("span",{class:"task-icon"},t.value?pr("svg",{width:16,height:16,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,class:"milestone-group-icon"},pr("polygon",{points:"12,2 22,12 12,22 2,12"})):r.value||n.value?pr("svg",{width:16,height:16,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2},pr("path",{d:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-5l-2-2H5a2 2 0 00-2 2z"})):pr("svg",{width:16,height:16,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2},[pr("path",{d:"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"}),pr("polyline",{points:"14,2 14,8 20,8"}),pr("line",{x1:16,y1:13,x2:8,y2:13}),pr("line",{x1:16,y1:17,x2:8,y2:17}),pr("polyline",{points:"10,9 9,9 8,9"})])):null,pr("span",{class:["task-name-text",{"parent-task":a.value}],title:String(c)},String(c||"-"))])}if(A.defaultSlot)return A.defaultSlot({row:e.value,$index:d.value??-1});if(A.prop){const c=e.value[A.prop];return c??"-"}return"-"}}}function yv(e,a){const t=Ce(!1),r=Ce({x:0,y:0}),n=Ge(()=>e.value),s=Ce(0),d=Ce(null);let i=null;const o=Ge(()=>{const v=Math.floor(s.value/1e3),B=Math.floor(v/3600),C=Math.floor(v%3600/60),E=v%60;return`${String(B).padStart(2,"0")}:${String(C).padStart(2,"0")}:${String(E).padStart(2,"0")}`}),D=()=>{if(e.value.isTimerRunning&&e.value.timerStartTime){const v=e.value.timerElapsedTime||0;s.value=Date.now()-e.value.timerStartTime+v}else e.value.timerElapsedTime?s.value=e.value.timerElapsedTime:s.value=0},A=()=>{i||(i=Dt(()=>[e.value.isTimerRunning,e.value.timerStartTime,e.value.timerElapsedTime],()=>{d.value&&(clearInterval(d.value),d.value=null),e.value.isTimerRunning?(D(),d.value=window.setInterval(D,1e3)):D()},{immediate:!0}))};(e.value.isTimerRunning||e.value.timerElapsedTime)&&A();const m=v=>{window.dispatchEvent(new CustomEvent("close-all-taskbar-menus"));const B=e.value.type||"task";if(B!=="task"&&B!=="story"){v.preventDefault(),t.value=!1;return}v.preventDefault(),t.value=!0,r.value={x:v.clientX,y:v.clientY}},c=()=>{t.value=!1},g=v=>{if(!t.value)return;const B=v.target,C=document.querySelector(".task-context-menu");C&&C.contains(B)||c()},f=(v,B)=>{a("delete",v,B),c()};return Ca(()=>{window.addEventListener("close-all-taskbar-menus",c),document.addEventListener("click",g)}),Da(()=>{window.removeEventListener("close-all-taskbar-menus",c),document.removeEventListener("click",g),d.value&&clearInterval(d.value),i&&i()}),{contextMenuVisible:t,contextMenuPosition:r,contextMenuTask:n,handleContextMenu:m,closeContextMenu:c,handleTaskDelete:f,timerElapsed:s,formattedTimer:o}}function Rv(e,a,t,r,n,s,d,i,o,D,A){const m=()=>{o&&o("toggle",e.value)},c=()=>{(a.value||t.value)&&!r.value&&o&&o("toggle",e.value)},g=H=>{H.stopPropagation(),o&&o("dblclick",e.value)},f=()=>{n.value||i&&i(e.value.id)},v=()=>{n.value||i&&i(null)},B=()=>{n.value=!0},C=()=>{n.value=!1},E=H=>{if(!d.value)return;const X=H.target;X.tagName==="BUTTON"||X.tagName==="INPUT"||X.tagName==="SELECT"||X.tagName==="TEXTAREA"||X.closest(".collapse-btn")||X.closest(".task-context-menu")||s.value&&D&&D(e.value,s.value,H)},b=H=>{if(!d.value||!s.value||!A)return;const{taskId:X,event:re}=H.detail;X===e.value.id&&A(e.value,s.value,re)};return Ca(()=>{window.addEventListener("splitter-drag-start",B),window.addEventListener("splitter-drag-end",C),window.addEventListener("task-row-drag-over",b)}),Da(()=>{window.removeEventListener("splitter-drag-start",B),window.removeEventListener("splitter-drag-end",C),window.removeEventListener("task-row-drag-over",b)}),{handleToggle:m,handleRowClick:c,handleTaskRowDoubleClick:g,handleMouseEnter:f,handleMouseLeave:v,handleMouseDown:E}}function Qv(){const e=d1("gantt-column-slots",{});return{columnSlots:e,hasColumnSlot:r=>{const n=`column-${r}`;return!!e[n]},renderColumnSlot:(r,n)=>{const s=`column-${r}`,d=e[s];return d?d(n):null}}}const bv=["data-task-id"],Hv={key:0,class:"milestone-spacer"},Mv={key:1,class:"leaf-spacer"},kv={key:0,class:"milestone-spacer"},xv={key:1,class:"leaf-spacer"},Uv={key:0,class:"milestone-empty-col"},Ev={key:3,class:"assignee-info"},Kv={class:"avatar"},Lv={class:"assignee-name"},Wv=x0({__name:"TaskRow",props:{task:{},level:{},rowIndex:{},isHovered:{type:Boolean},hoveredTaskId:{},onHover:{},columns:{},declarativeColumns:{},renderMode:{default:"default"},getColumnWidthStyle:{},disableChildrenRender:{type:Boolean},showTaskIcon:{type:Boolean},enableDrag:{type:Boolean},dragStart:{},dragOver:{},taskListRowClassName:{},taskListRowStyle:{type:[Boolean,null,String,Object,Array,Function]}},emits:["toggle","dblclick","contextmenu","start-timer","stop-timer","add-predecessor","add-successor","delete"],setup(e,{emit:a}){const t=e,r=a,{t:n}=Fr(),s=Ge(()=>{var O;return((O=n.value)==null?void 0:O.overtime)??""}),d=Ge(()=>{var O;return((O=n.value)==null?void 0:O.overdue)??""}),i=Ge(()=>{var O;return((O=n.value)==null?void 0:O.days)??""}),o=Do(),D=Ge(()=>!!o["custom-task-content"]),A=d1("enable-task-list-context-menu",Ge(()=>!0)),m=d1("task-list-context-menu-slot",Ge(()=>!1)),c=d1("declarative-task-list-context-menu",Ge(()=>null)),g=Ge(()=>!!A.value),f=Ge(()=>A.value?!m.value:!1),v=Ge(()=>{if(!A.value||!m.value)return!1;const O=c.value;if((O==null?void 0:O.taskType)!==void 0){const ie=t.task.type||"task";return(Array.isArray(O.taskType)?O.taskType:[O.taskType]).includes(ie)}return!0}),B=pD(t,"task"),C=pD(t,"level"),{indent:E,hasChildren:b,isStoryTask:H,isMilestoneGroup:X,isMilestoneTask:re,isParentTask:J,isOvertime:K,overdueDays:y,progressClass:x,customRowClass:T,customRowStyle:F}=Bv(B,C,Ge(()=>t.rowIndex),Ge(()=>t.taskListRowClassName),Ge(()=>t.taskListRowStyle)),{hasColumnSlot:j,renderColumnSlot:_}=Qv(),{isFirstColumn:Ne,getDeclarativeColumnAlign:ve,renderDeclarativeColumn:ne}=Nv(B,J,X,H,b,Ge(()=>t.showTaskIcon),Ge(()=>t.rowIndex)),{contextMenuVisible:oe,contextMenuPosition:te,contextMenuTask:Se,handleContextMenu:Me,closeContextMenu:w,handleTaskDelete:P,timerElapsed:G,formattedTimer:ee}=yv(B,r),ue=O=>{if(!g.value){O.preventDefault();return}Me(O)},pe=Ce(null),Ie=Ce(!1),{handleToggle:ae,handleRowClick:ke,handleTaskRowDoubleClick:ze,handleMouseEnter:W,handleMouseLeave:$,handleMouseDown:Be}=Rv(B,H,b,X,Ie,pe,Ge(()=>t.enableDrag),t.onHover,r,t.dragStart,t.dragOver),R=Ge(()=>t.renderMode==="declarative"&&t.declarativeColumns?t.declarativeColumns:t.columns),ye=Ge(()=>({isRowContent:!0,task:t.task,level:t.level,indent:E.value,isHovered:t.isHovered??!1,hoveredTaskId:t.hoveredTaskId??null,isParent:J.value,hasChildren:b.value,collapsed:!!t.task.collapsed,formattedTimer:ee.value,timerRunning:!!t.task.isTimerRunning,timerElapsed:G.value,isOvertime:K(),overdueDays:y(),overtimeText:s.value,overdueText:d.value,daysText:i.value,progressClass:x.value}));return(O,ie)=>{var fe;return q(),me("div",null,[h("div",{ref_key:"taskRowRef",ref:pe,class:B2(["task-row",{"task-row-hovered":O.isHovered,"parent-task":we(J),"milestone-group-row":we(X),"task-type-story":we(H),"task-type-task":t.task.type==="task","task-type-milestone":we(re),[we(T)]:we(T)}]),"data-task-id":t.task.id,style:at(we(F)),onClick:ie[0]||(ie[0]=(...He)=>we(ke)&&we(ke)(...He)),onDblclick:ie[1]||(ie[1]=(...He)=>we(ze)&&we(ze)(...He)),onMousedown:ie[2]||(ie[2]=(...He)=>we(Be)&&we(Be)(...He)),onMouseenter:ie[3]||(ie[3]=(...He)=>we(W)&&we(W)(...He)),onMouseleave:ie[4]||(ie[4]=(...He)=>we($)&&we($)(...He)),onContextmenu:ue},[O.renderMode==="declarative"&&O.declarativeColumns?(q(!0),me(c2,{key:0},ut(R.value,(He,be)=>(q(),me("div",{key:be,class:B2(["col",[He.cssClass,{"col-name":we(Ne)(be)}]]),style:at([O.getColumnWidthStyle?O.getColumnWidthStyle(He):{},we(ve)(He)])},[we(Ne)(be)?(q(),me("div",{key:0,style:at({paddingLeft:we(E)}),class:"first-col-wrapper"},[ht(qD,{collapsed:!!t.task.collapsed,visible:(we(H)||we(b))&&!we(X),onToggle:we(ae)},null,8,["collapsed","visible","onToggle"]),we(X)?(q(),me("span",Hv)):h2("",!0),!we(J)&&!we(X)&&O.showTaskIcon===!1?(q(),me("span",Mv)):h2("",!0),(q(),r0(tn(()=>we(ne)(He,be))))],4)):(q(),r0(tn(()=>we(ne)(He,be)),{key:1}))],6))),128)):(q(),me(c2,{key:1},[h("div",{class:"col col-name",style:at({paddingLeft:we(E)})},[ht(qD,{collapsed:!!t.task.collapsed,visible:(we(H)||we(b))&&!we(X),onToggle:we(ae)},null,8,["collapsed","visible","onToggle"]),we(X)?(q(),me("span",kv)):h2("",!0),!we(J)&&!we(X)&&O.showTaskIcon===!1?(q(),me("span",xv)):h2("",!0),ht(Tv,{task:t.task,isParentTask:we(J),hasChildren:we(b),isStoryTask:we(H),isMilestoneGroup:we(X),isMilestoneTask:we(re),showTaskIcon:O.showTaskIcon!==!1,formattedTimer:we(ee),isOvertime:!!we(K)(),overdueDays:we(y)(),overtimeText:s.value,overdueText:d.value,daysText:i.value,hasContentSlot:D.value,renderColumnSlot:we(_),hasColumnSlot:we(j)},{"custom-task-content":z0(()=>[u1(O.$slots,"custom-task-content",Ln(ye.value,{type:"task-row"}),void 0,!0)]),_:3},8,["task","isParentTask","hasChildren","isStoryTask","isMilestoneGroup","isMilestoneTask","showTaskIcon","formattedTimer","isOvertime","overdueDays","overtimeText","overdueText","daysText","hasContentSlot","renderColumnSlot","hasColumnSlot"])],4),(q(!0),me(c2,null,ut(O.columns,He=>(q(),me("div",{key:He.key,class:B2(["col",He.cssClass||`col-${He.key}`]),style:at(O.getColumnWidthStyle?O.getColumnWidthStyle(He):void 0)},[we(X)?(q(),me("div",Uv)):(q(),me(c2,{key:1},[we(j)(He.key)?(q(),r0(tn(()=>we(_)(He.key,{task:t.task,column:He,value:t.task[He.key]})),{key:0})):He.formatter?(q(),me(c2,{key:1},[Ut(le(He.formatter(t.task,He)),1)],64)):He.key==="predecessor"?(q(),me(c2,{key:2},[Ut(le(we(o5)(t.task.predecessor)),1)],64)):He.key==="assignee"?(q(),me("div",Ev,[h("div",Kv,le(t.task.assignee?t.task.assignee.charAt(0):"-"),1),h("span",Lv,le(t.task.assignee||"-"),1)])):He.key==="startDate"?(q(),me(c2,{key:4},[Ut(le(t.task.startDate||"-"),1)],64)):He.key==="endDate"?(q(),me(c2,{key:5},[Ut(le(t.task.endDate||"-"),1)],64)):He.key==="estimatedHours"?(q(),me(c2,{key:6},[Ut(le(t.task.estimatedHours||"-"),1)],64)):He.key==="actualHours"?(q(),me(c2,{key:7},[Ut(le(t.task.actualHours||"-"),1)],64)):He.key==="progress"?(q(),me("span",{key:8,class:B2(["progress-value",we(x)])},le(t.task.progress!=null?t.task.progress+"%":"-"),3)):(q(),me(c2,{key:9},[Ut(le(t.task[He.key]||"-"),1)],64))],64))],6))),128))],64))],46,bv),f.value?(q(),r0(L3,{key:0,visible:we(oe),task:we(Se),position:we(te),onClose:we(w),onStartTimer:ie[5]||(ie[5]=He=>O.$emit("start-timer",t.task)),onStopTimer:ie[6]||(ie[6]=He=>O.$emit("stop-timer",t.task)),onAddPredecessor:ie[7]||(ie[7]=He=>O.$emit("add-predecessor",t.task)),onAddSuccessor:ie[8]||(ie[8]=He=>O.$emit("add-successor",t.task)),onDelete:we(P)},null,8,["visible","task","position","onClose","onDelete"])):h2("",!0),(q(),r0(kn,{to:"body"},[v.value&&we(oe)&&((fe=we(c))!=null&&fe.defaultSlot)?(q(),me("div",{key:0,class:"gantt-context-menu-wrapper",style:at({position:"fixed",left:`${we(te).x}px`,top:`${we(te).y}px`,zIndex:9999})},[(q(),r0(tn(we(c).defaultSlot),{row:we(Se),$index:t.rowIndex??-1},null,8,["row","$index"]))],4)):h2("",!0)]))])}}}),_v=J0(Wv,[["__scopeId","data-v-e6d0e186"]]),Pv=320,JD=280,Ov=1160;function tp(e,a,t){if(e==null)return t;if(typeof e=="number")return e;if(typeof e=="string"){const r=e.trim();if(r.endsWith("%")){const s=parseFloat(r);if(!isNaN(s))return Math.round(a*s/100)}const n=parseFloat(r);if(!isNaN(n))return n}return t}const ap=[{type:"name",key:"taskName",label:"任务名称",cssClass:"col-name",visible:!0},{type:"predecessor",key:"predecessor",label:"前置任务",cssClass:"col-pre",visible:!0},{type:"assignee",key:"assignee",label:"负责人",cssClass:"col-assignee",visible:!0},{type:"startDate",key:"startDate",label:"开始日期",cssClass:"col-date",visible:!0},{type:"endDate",key:"endDate",label:"结束日期",cssClass:"col-date",visible:!0},{type:"estimatedHours",key:"estimatedHours",label:"预估工时",cssClass:"col-hours",visible:!0},{type:"actualHours",key:"actualHours",label:"实际工时",cssClass:"col-hours",visible:!0},{type:"progress",key:"progress",label:"进度",cssClass:"col-progress",visible:!0}];function Vv(e){const a=e.dragThreshold??5,t=Ce({isDragging:!1,isPreparing:!1,draggedTask:null,draggedElement:null,ghostElement:null,dropTargetTask:null,dropPosition:null,startX:0,startY:0}),r=(c,g,f)=>{e.enabled&&(c.type==="milestone-group"||c.type==="milestone"||(f.preventDefault(),f.stopPropagation(),t.value.isPreparing=!0,t.value.draggedTask=c,t.value.draggedElement=g,t.value.startX=f.clientX,t.value.startY=f.clientY))},n=c=>{if(!t.value.isPreparing||t.value.isDragging)return;const g=t.value.draggedTask,f=t.value.draggedElement;t.value.isDragging=!0,t.value.isPreparing=!1;const v=f.cloneNode(!0);v.style.position="fixed",v.style.left="-9999px",v.style.top="-9999px",v.style.width=`${f.offsetWidth}px`,v.style.height=`${f.offsetHeight}px`,v.style.opacity="0.6",v.style.pointerEvents="none",v.style.zIndex="999999",v.style.boxShadow="0 8px 24px rgba(0, 0, 0, 0.3)",v.classList.add("task-row-dragging"),(document.querySelector(".gantt-fullscreen")||document.body).appendChild(v),t.value.ghostElement=v,f.style.opacity="0.4",document.body.style.userSelect="none",document.body.style.webkitUserSelect="none",document.body.style.cursor="move",window.dispatchEvent(new CustomEvent("task-row-drag-start",{detail:{task:g}})),e.onDragStart&&e.onDragStart(g),s(c)},s=c=>{if(t.value.ghostElement){const g=t.value.ghostElement;g.style.left=`${c.clientX+10}px`,g.style.top=`${c.clientY-25}px`}},d=(c,g,f)=>{if(!t.value.isDragging||!t.value.draggedTask)return;if(c.id===t.value.draggedTask.id){i();return}if(m(t.value.draggedTask,c)){i();return}f.preventDefault(),f.stopPropagation();const B=c.children&&c.children.length>0?"child":"after";t.value.dropTargetTask=c,t.value.dropPosition=B,document.querySelectorAll(".task-row-drop-target").forEach(C=>{C.classList.remove("task-row-drop-target","drop-after","drop-child")}),g.classList.add("task-row-drop-target"),B==="after"?g.classList.add("drop-after"):g.classList.add("drop-child"),e.onDragOver&&e.onDragOver(c,B)},i=()=>{t.value.dropTargetTask=null,t.value.dropPosition=null,document.querySelectorAll(".task-row-drop-target").forEach(c=>{c.classList.remove("task-row-drop-target","drop-after","drop-child")})},o=()=>{if(t.value.isPreparing&&!t.value.isDragging){t.value.isPreparing=!1,t.value.draggedTask=null,t.value.draggedElement=null;return}if(!t.value.isDragging)return;const c=t.value.draggedTask,g=t.value.dropTargetTask,f=t.value.dropPosition;t.value.draggedElement&&(t.value.draggedElement.style.opacity=""),t.value.ghostElement&&t.value.ghostElement.parentElement&&t.value.ghostElement.parentElement.removeChild(t.value.ghostElement),i(),document.body.style.userSelect="",document.body.style.webkitUserSelect="",document.body.style.cursor="",window.dispatchEvent(new CustomEvent("task-row-drag-end")),c&&g&&f&&e.onDrop&&e.onDrop(c,g,f),t.value={isDragging:!1,isPreparing:!1,draggedTask:null,draggedElement:null,ghostElement:null,dropTargetTask:null,dropPosition:null,startX:0,startY:0}},D=c=>{if(t.value.isPreparing&&!t.value.isDragging){const g=Math.abs(c.clientX-t.value.startX),f=Math.abs(c.clientY-t.value.startY);Math.sqrt(g*g+f*f)>a&&n(c);return}if(t.value.isDragging){s(c);const g=t.value.ghostElement;g&&(g.style.display="none");const f=document.elementFromPoint(c.clientX,c.clientY);if(g&&(g.style.display=""),f){const v=f.closest(".task-row");if(v&&v.dataset.taskId){const B=Number(v.dataset.taskId);window.dispatchEvent(new CustomEvent("task-row-drag-over",{detail:{taskId:B,event:c}}))}}}},A=()=>{(t.value.isDragging||t.value.isPreparing)&&o()},m=(c,g)=>{if(!c.children)return!1;for(const f of c.children)if(f.id===g.id||m(f,g))return!0;return!1};return Ca(()=>{document.addEventListener("mousemove",D),document.addEventListener("mouseup",A)}),Da(()=>{document.removeEventListener("mousemove",D),document.removeEventListener("mouseup",A),t.value.ghostElement&&t.value.ghostElement.parentElement&&t.value.ghostElement.parentElement.removeChild(t.value.ghostElement)}),{dragState:t,startDrag:r,handleDragOver:d,endDrag:o}}function jv(e){let a=!1;if(typeof e.type=="object"){const d=e.type;a=d.name==="TaskListColumn"||d.__name==="TaskListColumn"||d.__file&&d.__file.includes("TaskListColumn")}if(!a)return null;const t=e.props||{},r=e.children,n=r==null?void 0:r.header,s=r==null?void 0:r.default;return{prop:t.prop,label:t.label,width:t.width,align:t.align||"left",cssClass:t.cssClass,headerSlot:n,defaultSlot:s}}function $v(e){var n;const a=(n=e.default)==null?void 0:n.call(e);if(!a||!Array.isArray(a))return[];const t=[],r=s=>{for(const d of s){if(!d)continue;if(typeof d.type=="symbol"){d.children&&Array.isArray(d.children)&&r(d.children);continue}const i=jv(d);i&&t.push(i),d.children&&Array.isArray(d.children)&&r(d.children)}};return r(a),t}function Gv(e,a,t){const r=Ge(()=>(typeof e=="string"?e:e.value)!=="declarative"?[]:$v(a)),n=Ge(()=>(typeof e=="string"?e:e.value)==="declarative"?r.value:t||[]);return{declarativeColumns:r,finalColumns:n,getColumnWidthStyle:(i,o)=>{if(!i.width)return{};let D;if(typeof i.width=="string"&&i.width.includes("%"))if(o&&o>0){const A=parseFloat(i.width)/100;D=`${Math.floor(o*A)}px`}else return{};else typeof i.width=="number"?D=`${i.width}px`:typeof i.width=="string"?/\d+(px|rem|em|%)/.test(i.width)?D=i.width:D=`${i.width}px`:D=String(i.width);return{flex:`0 0 ${D}`,minWidth:D,maxWidth:D}},getColumnAlignStyle:i=>!i||i==="left"?{}:{justifyContent:i==="center"?"center":"flex-end",textAlign:i}}}const md=51,ZD=5;function Yv(e){const a=Ce(0),t=Ce(0),r=(A,m=0)=>{const c=[];for(const g of A)c.push({task:g,level:m}),!(g.type==="milestone-group")&&g.children&&g.children.length>0&&!g.collapsed&&c.push(...r(g.children,m+1));return c},n=Ge(()=>r(e.value)),s=Ge(()=>{const A=a.value,m=t.value||600,c=Math.floor(A/md)-ZD,g=Math.ceil((A+m)/md)+ZD,f=n.value.length,v=Math.min(Math.max(0,c),f),B=Math.min(f,Math.max(v+1,g));return{startIndex:v,endIndex:B}}),d=Ge(()=>{const{startIndex:A,endIndex:m}=s.value;return n.value.slice(A,m).map((g,f)=>({...g,rowIndex:A+f}))}),i=Ge(()=>n.value.length*md),o=Ge(()=>s.value.startIndex*md),D=Ge(()=>{const A=d.value.length*md;return Math.max(0,i.value-o.value-A)});return{taskListScrollTop:a,taskListBodyHeight:t,flattenedTasks:n,visibleTaskRange:s,visibleTasks:d,totalContentHeight:i,startSpacerHeight:o,endSpacerHeight:D,getFlattenedVisibleTasks:r}}function qv(e,a,t){const r=Ce(null),n=Ce(null),s=Ce(0);let d=null,i=null;return{taskListRef:r,taskListBodyRef:n,cachedContainerWidth:s,initializeResizeObservers:()=>{r.value&&(d=new ResizeObserver(m=>{if(!e.value)for(const c of m)s.value=c.contentRect.width}),d.observe(r.value)),n.value&&(t.value=n.value.clientHeight,a.value=n.value.scrollTop,i=new ResizeObserver(m=>{for(const c of m)t.value=c.contentRect.height}),i.observe(n.value))},cleanupResizeObservers:()=>{d&&(d.disconnect(),d=null),i&&(i.disconnect(),i=null)},updateContainerWidth:()=>{if(r.value){const m=r.value.offsetWidth;Math.abs(m-s.value)>1&&(s.value=m)}}}}function zv(e){if(!e.children||e.children.length===0)return{progress:e.progress||0,startDate:e.startDate||"",endDate:e.endDate||""};const a=[],t=A=>{A.forEach(m=>{a.push(m),m.children&&m.children.length>0&&t(m.children)})};t(e.children);const r=a.reduce((A,m)=>A+(m.progress||0),0),n=a.length>0?Math.round(r/a.length):0,s=a.filter(A=>A.startDate&&A.endDate);if(s.length===0)return{progress:n,startDate:e.startDate||"",endDate:e.endDate||""};const d=s.map(A=>new Date(A.startDate)),i=s.map(A=>new Date(A.endDate)),o=new Date(Math.min(...d.map(A=>A.getTime()))),D=new Date(Math.max(...i.map(A=>A.getTime())));return{progress:n,startDate:o.toISOString().split("T")[0],endDate:D.toISOString().split("T")[0]}}function p5(e){if(!e)return;const a=t=>{t.forEach(r=>{if(r.children&&r.children.length>0){a(r.children);const n=zv(r);r.progress=n.progress,r.startDate=n.startDate,r.endDate=n.endDate}})};a(e)}function Xv(e){const a=[],t=r=>{r.forEach(n=>{a.push(n),n.children&&n.children.length>0&&t(n.children)})};return t(e),a}function Jv(e){const{tasks:a,hoveredTaskId:t,isSplitterDragging:r,taskListScrollTop:n,taskListBodyRef:s,updateContainerWidth:d,onTaskUpdate:i}=e,o=J=>{r.value||(t.value=J,window.dispatchEvent(new CustomEvent("task-list-hover",{detail:J})))},D=J=>{t.value=J.detail},A=J=>{J.type==="milestone"||J.type==="milestone-group"||window.dispatchEvent(new CustomEvent("task-row-double-click",{detail:J}))},m=J=>{if(!a.value)return;const K=y=>{for(const x of y){if(x.id===J.id)return Object.assign(x,J),J.children,!0;if(x.children&&K(x.children))return!0}return!1};K(a.value),p5(a.value),i&&i(J)},c=J=>{const K=J.detail;m(K)},g=J=>{const K=J.detail;a.value&&a.value.push(K),p5(a.value)},f=()=>{const J=Xv(a.value);window.dispatchEvent(new CustomEvent("task-list-updated",{detail:J}))},v=J=>{const{milestoneId:K,icon:y}=J.detail,x=T=>{for(const F of T){if(F.type==="milestone-group"&&F.children){const j=F.children.find(_=>_.id===K);if(j)return j.icon=y,!0}if(F.children&&x(F.children))return!0}return!1};x(a.value)},B=J=>{const K=J.target;if(!K)return;const y=K.scrollTop;n.value=y,window.dispatchEvent(new CustomEvent("close-all-taskbar-menus")),window.dispatchEvent(new CustomEvent("task-list-vertical-scroll",{detail:{scrollTop:y}}))},C=J=>{const{scrollTop:K}=J.detail,y=s.value;n.value=K,y&&Math.abs(y.scrollTop-K)>1&&(y.scrollTop=K)},E=J=>{try{window.dispatchEvent(new CustomEvent("context-menu",{detail:J}))}catch(K){console.error("TaskList - Failed to dispatch context-menu event",K)}},b=()=>{r.value=!0},H=()=>{r.value=!1,d()};return{handleTaskRowHover:o,handleTaskRowDoubleClick:A,handleTaskListScroll:B,handleTaskRowContextMenu:E,registerEventListeners:()=>{window.addEventListener("task-updated",c),window.addEventListener("task-added",g),window.addEventListener("request-task-list",f),window.addEventListener("timeline-task-hover",D),window.addEventListener("timeline-vertical-scroll",C),window.addEventListener("milestone-icon-changed",v),window.addEventListener("splitter-drag-start",b),window.addEventListener("splitter-drag-end",H)},unregisterEventListeners:()=>{window.removeEventListener("task-updated",c),window.removeEventListener("task-added",g),window.removeEventListener("request-task-list",f),window.removeEventListener("timeline-task-hover",D),window.removeEventListener("timeline-vertical-scroll",C),window.removeEventListener("milestone-icon-changed",v),window.removeEventListener("splitter-drag-start",b),window.removeEventListener("splitter-drag-end",H)}}}const Zv={class:"task-list-header"},eF={class:"col col-name"},tF=x0({__name:"TaskList",props:{tasks:{},useDefaultDrawer:{type:Boolean},taskListConfig:{},taskListColumnRenderMode:{default:"default"},enableTaskRowMove:{type:Boolean},taskListRowClassName:{},taskListRowStyle:{type:[Boolean,null,String,Object,Array,Function]}},emits:["task-collapse-change","start-timer","stop-timer","add-predecessor","add-successor","delete","task-row-moved"],setup(e,{emit:a}){var ue;const t=e,r=a,n=Do(),s=Ge(()=>!!n["custom-task-content"]),d=d1("gantt-column-slots",{}),{t:i}=Fr(),{declarativeColumns:o,getColumnWidthStyle:D}=Gv(Ge(()=>t.taskListColumnRenderMode||"default"),n,((ue=t.taskListConfig)==null?void 0:ue.columns)||ap),A=Ge(()=>{var Ie;return t.taskListColumnRenderMode==="declarative"?o.value:(((Ie=t.taskListConfig)==null?void 0:Ie.columns)||ap).filter(ae=>ae.visible!==!1)}),m=Ge(()=>{var Ie;return t.taskListColumnRenderMode==="declarative"?[]:(((Ie=t.taskListConfig)==null?void 0:Ie.columns)||ap).filter(ae=>ae.visible!==!1)}),c=Ge(()=>t.tasks||[]),{taskListScrollTop:g,taskListBodyHeight:f,visibleTasks:v,startSpacerHeight:B,endSpacerHeight:C}=Yv(c),E=Ce(null),b=Ce(!1),{taskListRef:H,taskListBodyRef:X,cachedContainerWidth:re,initializeResizeObservers:J,cleanupResizeObservers:K,updateContainerWidth:y}=qv(b,g,f),x=pe=>{if(t.taskListColumnRenderMode==="declarative")return D(pe,re.value);if(!pe.width)return{};let Ie;if(typeof pe.width=="string"&&pe.width.includes("%")){const ae=re.value||0;if(ae>0){const ke=parseFloat(pe.width)/100;Ie=`${Math.floor(ae*ke)}px`}else return{}}else Ie=`${pe.width}px`;return{flex:`0 0 ${Ie}`,minWidth:Ie,maxWidth:Ie}},{handleTaskRowHover:T,handleTaskRowDoubleClick:F,handleTaskListScroll:j,handleTaskRowContextMenu:_,registerEventListeners:Ne,unregisterEventListeners:ve}=Jv({tasks:c,hoveredTaskId:E,isSplitterDragging:b,taskListScrollTop:g,taskListBodyRef:X,updateContainerWidth:y});function ne(pe){pe.collapsed=!pe.collapsed,r("task-collapse-change",pe)}const oe=pe=>{r("start-timer",pe)},te=pe=>{r("stop-timer",pe)},Se=pe=>{r("add-predecessor",pe)},Me=pe=>{r("add-successor",pe)},w=(pe,Ie)=>{r("delete",pe,Ie)},P=pe=>{const{draggedTask:Ie,targetTask:ae,position:ke}=pe;t.tasks&&r("task-row-moved",{draggedTask:Ie,targetTask:ae,position:ke,oldParent:null,newParent:null})},{startDrag:G,handleDragOver:ee}=Vv({enabled:t.enableTaskRowMove??!1,onDrop:(pe,Ie,ae)=>{P({draggedTask:pe,targetTask:Ie,position:ae})}});return Ca(async()=>{J(),Ne(),p5(t.tasks)}),Da(()=>{K(),ve()}),(pe,Ie)=>(q(),me("div",{ref_key:"taskListRef",ref:H,class:"task-list"},[h("div",Zv,[pe.taskListColumnRenderMode==="declarative"?(q(!0),me(c2,{key:0},ut(A.value,(ae,ke)=>(q(),me("div",{key:ke,class:B2(["col",ae.cssClass]),style:at({...x(ae),justifyContent:ae.align==="center"?"center":ae.align==="right"?"flex-end":"flex-start",textAlign:ae.align||"left"})},[ae.headerSlot?(q(),r0(tn(ae.headerSlot),{key:0})):(q(),me(c2,{key:1},[Ut(le(ae.label),1)],64))],6))),128)):(q(),me(c2,{key:1},[h("div",eF,[we(d)["header-name"]?(q(),r0(tn(we(d)["header-name"]),{key:0})):(q(),me(c2,{key:1},[Ut(le(we(i).taskName||"任务名称"),1)],64))]),(q(!0),me(c2,null,ut(m.value,ae=>(q(),me("div",{key:ae.key,class:B2(["col",ae.cssClass||`col-${ae.key}`]),style:at(x(ae))},[we(d)[`header-${ae.key}`]?(q(),r0(tn(we(d)[`header-${ae.key}`]),{key:0})):(q(),me(c2,{key:1},[Ut(le(we(i)[ae.key]||ae.label),1)],64))],6))),128))],64))]),h("div",{ref_key:"taskListBodyRef",ref:X,class:"task-list-body",onScroll:Ie[0]||(Ie[0]=(...ae)=>we(j)&&we(j)(...ae))},[h("div",{class:"task-list-body-spacer",style:at({height:`${we(B)}px`})},null,4),(q(!0),me(c2,null,ut(we(v),({task:ae,level:ke,rowIndex:ze})=>{var W;return q(),r0(_v,{key:ae.id,task:ae,level:ke,"row-index":ze,"is-hovered":E.value===ae.id,"hovered-task-id":E.value,"on-hover":we(T),columns:pe.taskListColumnRenderMode==="declarative"?[]:m.value,"declarative-columns":pe.taskListColumnRenderMode==="declarative"?A.value:void 0,"render-mode":pe.taskListColumnRenderMode,"get-column-width-style":x,"disable-children-render":!0,"show-task-icon":(W=t.taskListConfig)==null?void 0:W.showTaskIcon,"enable-drag":t.enableTaskRowMove,"drag-start":we(G),"drag-over":we(ee),"task-list-row-class-name":t.taskListRowClassName,"task-list-row-style":t.taskListRowStyle,onToggle:ne,onDblclick:we(F),onContextmenu:we(_),onStartTimer:oe,onStopTimer:te,onAddPredecessor:Se,onAddSuccessor:Me,onDelete:w},Ei({_:2},[s.value?{name:"custom-task-content",fn:z0($=>[u1(pe.$slots,"custom-task-content",Ln({ref_for:!0},$),void 0,!0)]),key:"0"}:void 0,we(n)["task-list-context-menu"]?{name:"task-list-context-menu",fn:z0($=>[u1(pe.$slots,"task-list-context-menu",Ln({ref_for:!0},$),void 0,!0)]),key:"1"}:void 0]),1032,["task","level","row-index","is-hovered","hovered-task-id","on-hover","columns","declarative-columns","render-mode","show-task-icon","enable-drag","drag-start","drag-over","task-list-row-class-name","task-list-row-style","onDblclick","onContextmenu"])}),128)),h("div",{class:"task-list-body-spacer",style:at({height:`${we(C)}px`})},null,4)],544)],512))}}),aF=J0(tF,[["__scopeId","data-v-40aec6fa"]]),Ve={HOUR:"hour",DAY:"day",WEEK:"week",MONTH:"month",QUARTER:"quarter",YEAR:"year"},rF={hour:{scale:Ve.HOUR,cellWidth:40,headerLevels:2,formatters:{primary:"yyyy年MM月dd日",secondary:"HH:mm"}},day:{scale:Ve.DAY,cellWidth:30,headerLevels:2,formatters:{primary:"yyyy年MM月",secondary:"dd"}},week:{scale:Ve.WEEK,cellWidth:120,headerLevels:2,formatters:{primary:"yyyy年MM月",secondary:"W周"}},month:{scale:Ve.MONTH,cellWidth:180,headerLevels:2,formatters:{primary:"yyyy年",secondary:"MM月"}},quarter:{scale:Ve.QUARTER,cellWidth:60,headerLevels:2,formatters:{primary:"yyyy年",secondary:"Q季度"}},year:{scale:Ve.YEAR,cellWidth:180,headerLevels:2,formatters:{primary:"yyyy年",secondary:"上半年|下半年"}}},nF={key:0,class:"anchor-tooltip"},sF=x0({__name:"LinkAnchor",props:{type:{},taskId:{},visible:{type:Boolean,default:!1},isDragSource:{type:Boolean,default:!1},isDragTarget:{type:Boolean,default:!1},isValidTarget:{type:Boolean,default:!0},enabled:{type:Boolean,default:!0},globalDragging:{type:Boolean,default:!1}},emits:["drag-start","drag-move","drag-end"],setup(e,{emit:a}){const t=e,r=a,n=Ce(!1),s=Ge(()=>t.visible||t.globalDragging||t.isDragSource||t.isDragTarget||n.value);let d=null,i=null,o=!1;function D(g){t.enabled&&(g.stopPropagation(),g.preventDefault(),o=!0,r("drag-start",{taskId:t.taskId,type:t.type,x:g.clientX,y:g.clientY}),d=f=>{o&&r("drag-move",{x:f.clientX,y:f.clientY})},i=()=>{o&&(r("drag-end",{taskId:t.taskId,type:t.type}),c())},document.addEventListener("mousemove",d),document.addEventListener("mouseup",i))}function A(){t.enabled&&(n.value=!0)}function m(){t.enabled&&(n.value=!1)}function c(){o=!1,d&&(document.removeEventListener("mousemove",d),d=null),i&&(document.removeEventListener("mouseup",i),i=null)}return Da(()=>{c()}),(g,f)=>g.enabled&&s.value?(q(),me("div",{key:0,class:B2(["link-anchor",{"anchor-predecessor":g.type==="predecessor","anchor-successor":g.type==="successor","drag-source":g.isDragSource,"drag-target":g.isDragTarget,"valid-target":g.isDragTarget&&g.isValidTarget,"invalid-target":g.isDragTarget&&!g.isValidTarget,visible:s.value}]),onMousedown:D,onMouseenter:A,onMouseleave:m},[!g.isDragSource&&!g.isDragTarget&&!g.globalDragging?(q(),me("div",nF,le(g.type==="predecessor"?"添加前置任务":"添加后置任务"),1)):h2("",!0)],34)):h2("",!0)}}),e7=J0(sF,[["__scopeId","data-v-9f128e78"]]),dF={showAvatar:!0,showTitle:!0,showProgress:!0,dragThreshold:5,resizeHandleWidth:5,enableDragDelay:!1,dragDelayTime:150},iF=["data-task-id"],oF={key:0,class:"parent-label"},pF=["src","alt"],DF={key:1,class:"avatar-text"},AF={key:2,class:"avatar-icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},gF={key:1,class:"task-name"},IF={class:"tooltip-title"},mF={class:"tooltip-content"},lF={class:"tooltip-row"},cF={class:"tooltip-label"},uF={class:"tooltip-value"},fF={class:"tooltip-row"},hF={class:"tooltip-label"},SF={class:"tooltip-value"},CF={class:"tooltip-row"},vF={class:"tooltip-label"},FF={class:"tooltip-value"},wF={class:"tooltip-row"},TF={class:"tooltip-label"},BF={class:"tooltip-value"},NF={class:"tooltip-row"},yF={class:"tooltip-label"},RF={class:"tooltip-value"},QF={class:"drag-tooltip-content"},bF={class:"tooltip-row"},HF={class:"tooltip-label"},MF={class:"tooltip-value"},kF={class:"tooltip-row"},xF={class:"tooltip-label"},UF={class:"tooltip-value"},EF=1e3,KF=100,LF=250,WF=x0({__name:"TaskBar",props:{task:{},rowHeight:{},dayWidth:{},startDate:{},isParent:{type:Boolean},onClick:{type:Function},rowIndex:{},scrollLeft:{},containerWidth:{},hideBubbles:{type:Boolean},timelineData:{},currentTimeScale:{},taskBarConfig:{},allowDragAndResize:{type:Boolean},isHighlighted:{type:Boolean},isPrimaryHighlight:{type:Boolean},isInHighlightMode:{type:Boolean},dragLinkMode:{},isLinkDragSource:{type:Boolean},isValidLinkTarget:{type:Boolean},isInvalidLinkTarget:{type:Boolean},allTasks:{}},emits:["update:task","bar-mounted","click","dblclick","drag-end","resize-end","scroll-to-position","start-timer","stop-timer","add-predecessor","add-successor","delete","delete-link","context-menu","long-press","link-drag-start","link-drag-move","link-drag-end"],setup(e,{emit:a}){const t=e,r=a,n=Do(),s=d1("enable-task-bar-context-menu",Ge(()=>!0)),d=d1("task-bar-context-menu-slot",Ge(()=>!1)),i=d1("declarative-task-bar-context-menu",Ge(()=>null)),o=Ge(()=>!!s.value),D=Ge(()=>s.value?!d.value:!1),A=Ge(()=>{if(!s.value||!d.value)return!1;const ge=i.value;if((ge==null?void 0:ge.taskType)!==void 0){const he=t.task.type||"task";return(Array.isArray(ge.taskType)?ge.taskType:[ge.taskType]).includes(he)}return!0}),{getTranslation:m}=Fr(),c=ge=>m(ge),g=Ge(()=>!!n["custom-task-content"]),f=Ge(()=>({...dF,...t.taskBarConfig})),v=ge=>{if(!ge)return null;if(ge instanceof Date)return ge;if(typeof ge=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(ge)){const[Je,t2,$2]=ge.split("-").map(Number);return new Date(Je,t2-1,$2)}if(typeof ge=="string"&&/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}$/.test(ge)){const[Je,t2]=ge.split(" "),[$2,E2,I2]=Je.split("-").map(Number),[m2,u2]=t2.split(":").map(Number);return new Date($2,E2-1,I2,m2,u2)}const he=new Date(ge);return isNaN(he.getTime())?null:he},B=()=>{const ge=new Date;return new Date(ge.getFullYear(),ge.getMonth(),ge.getDate())},C=Ce(B());let E=null;Ca(()=>{E=window.setInterval(()=>{C.value=B()},6e4)}),Da(()=>{E!==null&&(clearInterval(E),E=null)});const b=ge=>{const he=ge.getFullYear(),Je=String(ge.getMonth()+1).padStart(2,"0"),t2=String(ge.getDate()).padStart(2,"0");if(t.currentTimeScale===Ve.HOUR){const $2=String(ge.getHours()).padStart(2,"0"),E2=String(ge.getMinutes()).padStart(2,"0");return`${he}-${Je}-${t2} ${$2}:${E2}`}return`${he}-${Je}-${t2}`},H=(ge,he)=>{const Je=new Date(ge);return Je.setDate(Je.getDate()+he),Je},X=(ge,he)=>{const Je=new Date(ge);return Je.setMinutes(Je.getMinutes()+he),Je},re=(ge,he)=>Math.round((he.getTime()-ge.getTime())/(1e3*60)),J=Ge(()=>t.task.isEditable===!1?!0:t.currentTimeScale===Ve.YEAR),K=Ce(!1),y=Ce(!1),x=Ce(!1),T=Ce(!1),F=Ce(0),j=Ce(0),_=Ce(0),Ne=Ce(0),ve=Ce(0),ne=Ce(0),oe=Ce(null),te=Ce(!1),Se=Ce(!1),Me=Ge(()=>f.value.dragThreshold??5),w=Ce(!1),P=Ce(null),G=Ce(null),ee=Ce(!1),ue=Ce(0),pe=Ce(null),Ie=Ce(null),ae=Ce(null),ke=Ce(null),ze=Ce(0),W=Ge(()=>{var Tt,St;if(Ie.value&&t.currentTimeScale===Ve.QUARTER)return{left:`${Ie.value.left??0}px`,width:`${Ie.value.width??100}px`,height:`${t.rowHeight-10}px`,top:"4px"};const ge=((Tt=pe.value)==null?void 0:Tt.startDate)||t.task.startDate,he=((St=pe.value)==null?void 0:St.endDate)||t.task.endDate,Je=v(ge),t2=v(he),$2=R.value;if(!Je&&!t2)return{left:"0px",width:"0px",height:`${t.rowHeight-10}px`,top:"4px"};const E2=Je||t2,I2=t2||Je,m2=$2;if(!E2||!I2||!m2)return{left:"0px",width:"0px",height:`${t.rowHeight-10}px`,top:"4px"};let u2=0,G2=0;if(t.currentTimeScale===Ve.HOUR){const st=new Date(m2);st.setHours(0,0,0,0);let Qt=E2,jt=I2;const Kt=ge||t.task.startDate,Pt=he||t.task.endDate;typeof Kt=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(Kt.trim())&&(Qt=new Date(E2),Qt.setHours(0,0,0,0)),typeof Pt=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(Pt.trim())&&(jt=new Date(I2),jt.setDate(jt.getDate()+1),jt.setHours(0,0,0,0));const z=re(st,Qt),Re=re(st,jt),Pe=40/60;u2=Math.max(0,z*Pe),G2=Math.max(4,(Re-z)*Pe)}else{const st=new Date(E2.getFullYear(),E2.getMonth(),E2.getDate()),Qt=new Date(I2.getFullYear(),I2.getMonth(),I2.getDate()),jt=new Date(m2.getFullYear(),m2.getMonth(),m2.getDate());if(t.timelineData&&t.currentTimeScale&&(t.currentTimeScale===Ve.WEEK||t.currentTimeScale===Ve.MONTH||t.currentTimeScale===Ve.QUARTER||t.currentTimeScale===Ve.YEAR)){const Kt=P0(st,t.timelineData,t.currentTimeScale),Pt=new Date(Qt);Pt.setDate(Pt.getDate()+1);let z=P0(Pt,t.timelineData,t.currentTimeScale);if(z===Kt){let Re=2;t.currentTimeScale===Ve.WEEK?Re=60/7:t.currentTimeScale===Ve.QUARTER?Re=60/90:t.currentTimeScale===Ve.YEAR&&(Re=180/182),z=P0(Qt,t.timelineData,t.currentTimeScale)+Re}u2=Kt,G2=Math.max(z-Kt,4)}else if(t.timelineData&&t.currentTimeScale===Ve.DAY){const Kt=P0(st,t.timelineData,t.currentTimeScale),Pt=new Date(Qt);Pt.setDate(Pt.getDate()+1);let z=P0(Pt,t.timelineData,t.currentTimeScale);z===Kt&&(z=P0(Qt,t.timelineData,t.currentTimeScale)+30),u2=Kt,G2=Math.max(z-Kt,4)}else{const Kt=Math.floor((st.getTime()-jt.getTime())/864e5),Pt=Qt.getTime()-st.getTime(),z=Math.round(Pt/(1e3*60*60*24)),Re=z===0?1:z+1;u2=Kt*t.dayWidth,G2=Re*t.dayWidth}}return{left:`${u2}px`,width:`${G2}px`,height:`${t.rowHeight-10}px`,top:"4px"}}),$=Ce({left:0,top:0,width:0,height:0,timestamp:0}),Be=Ge(()=>v(t.task.endDate||"")),R=Ge(()=>v(t.startDate)),ye=Ge(()=>{var Je,t2;const ge=((Je=pe.value)==null?void 0:Je.startDate)||t.task.startDate,he=((t2=pe.value)==null?void 0:t2.endDate)||t.task.endDate;return!!(ge||he)}),O=Ge(()=>{if(t.isParent)return{type:"parent",color:"#409eff",bgColor:"#409eff",borderColor:"#409eff"};const ge=C.value,he=Be.value,Je=t.task.progress||0;return Je>=100?{type:"completed",color:"#909399",bgColor:"#f4f4f5",borderColor:"#d3d4d6"}:he&&he=ge&&Je>0?{type:"in-progress",color:"#e6a23c",bgColor:"#fdf6ec",borderColor:"#f5dab1"}:{type:"not-started",color:"#409eff",bgColor:"#ecf5ff",borderColor:"#b3d8ff"}}),ie=Ge(()=>({type:"task-bar",task:t.task,status:O.value,statusType:O.value.type,isParent:t.isParent??!1,progress:t.task.progress||0,currentTimeScale:t.currentTimeScale,rowHeight:t.rowHeight,dayWidth:t.dayWidth})),fe=Ge(()=>(t.task.progress||0)>=100),He=Ge(()=>t.isInHighlightMode&&!t.isHighlighted&&!t.isPrimaryHighlight),be=Ge(()=>{const ge=t.task.progress||0,he=parseInt(W.value.width);return`${ge/100*he}px`}),Ze=Ge(()=>t.dayWidth<=9),Le=Ge(()=>parseFloat(W.value.width||"0")<80),p2=Ge(()=>Ze.value&&Le.value),l2=(ge,he)=>{if(t.isHighlighted||t.isPrimaryHighlight||t.allowDragAndResize===!1||fe.value||t.isParent||J.value||(ge.preventDefault(),ge.stopPropagation(),pe.value=null,w.value=!1,ee.value=!1,P.value=he,te.value=!1,oe.value&&(clearTimeout(oe.value),oe.value=null),he==="drag"&&(oe.value=window.setTimeout(()=>{!w.value&&!K.value&&!y.value&&!x.value&&(te.value=!0,r("long-press",t.task.id)),oe.value=null},EF)),f.value.enableDragDelay&&f.value.dragDelayTime?G.value=window.setTimeout(()=>{ee.value=!0,G.value=null},f.value.dragDelayTime):ee.value=!0,!document.querySelector(".timeline")||!ae.value))return;const t2=ae.value.getBoundingClientRect();ue.value=ge.clientX-t2.left,F.value=ge.clientX,j.value=parseInt(W.value.left),_.value=parseInt(W.value.width),(he==="resize-left"||he==="resize-right")&&(Ne.value=ge.clientX,ve.value=parseInt(W.value.width),ne.value=parseInt(W.value.left)),window.addEventListener("timeline-auto-scroll",S2),document.addEventListener("mousemove",gt),document.addEventListener("mouseup",it)},S2=ge=>{const{scrollDelta:he}=ge.detail;K.value?F.value-=he:(y.value||x.value)&&(Ne.value-=he)};let k2=!1;function y2(){k2||(k2=!0,requestAnimationFrame(()=>{if(k2=!1,!ae.value)return;const ge=Date.now();if(ge-$.value.timestamp{if(!(t.isHighlighted||t.isPrimaryHighlight)&&!(f.value.enableDragDelay&&!ee.value)){if(!w.value){if(Math.abs(ge.clientX-F.value){if(G.value!==null&&(window.clearTimeout(G.value),G.value=null),oe.value!==null&&(clearTimeout(oe.value),oe.value=null),v2.value=!1,Ie.value=null,window.dispatchEvent(new CustomEvent("drag-boundary-check",{detail:{mouseX:0,isDragging:!1}})),w.value&&pe.value){const ge={...t.task,...pe.value};K.value?r("drag-end",ge):(y.value||x.value)&&r("resize-end",ge),r("update:task",ge),pe.value=null,Zt(()=>{y2()})}window.removeEventListener("timeline-auto-scroll",S2),(K.value||y.value||x.value)&&(T.value=!0,setTimeout(()=>{T.value=!1},200)),K.value=!1,y.value=!1,x.value=!1,w.value=!1,ee.value=!1,P.value=null,document.removeEventListener("mousemove",gt),document.removeEventListener("mouseup",it)};let q2=null;Ca(()=>{Zt(()=>{y2(),ke.value&&(q2=new ResizeObserver(Je=>{for(const t2 of Je)ze.value=t2.contentRect.width}),q2.observe(ke.value))});const ge=()=>{Zt(()=>{y2()})},he=()=>{Zt(()=>{setTimeout(()=>{y2()},10)})};window.addEventListener("timeline-scale-updated",ge),window.addEventListener("timeline-force-recalculate",he),window.addEventListener("close-all-taskbar-menus",Rt),document.addEventListener("click",y0),Da(()=>{q2&&(q2.disconnect(),q2=null),window.removeEventListener("timeline-scale-updated",ge),window.removeEventListener("timeline-force-recalculate",he),window.removeEventListener("close-all-taskbar-menus",Rt),document.removeEventListener("click",y0),oe.value!==null&&(clearTimeout(oe.value),oe.value=null),b2!==null&&(clearTimeout(b2),b2=null)})}),Dt(()=>[t.task.startDate,t.task.endDate],()=>{Zt(()=>{y2()})},{deep:!0}),Dt(()=>[t.isHighlighted,t.isPrimaryHighlight],([ge,he])=>{(ge||he)&&(K.value=!1,y.value=!1,x.value=!1,w.value=!1,ee.value=!1,P.value=null,v2.value=!1,document.removeEventListener("mousemove",gt),document.removeEventListener("mouseup",it),window.removeEventListener("timeline-auto-scroll",S2),oe.value&&(clearTimeout(oe.value),oe.value=null),G.value&&(clearTimeout(G.value),G.value=null),window.dispatchEvent(new CustomEvent("taskbar-highlighted",{detail:{taskId:t.task.id}})))});let b2=null;const mt=ge=>{if(!(K.value||y.value||x.value||T.value)){if(te.value){te.value=!1;return}b2===null&&(b2=window.setTimeout(()=>{b2=null,t.onClick&&typeof t.onClick=="function"?t.onClick(t.task,ge):r("click",t.task,ge)},LF))}},V2=ge=>{ge.stopPropagation(),ge.preventDefault(),b2!==null&&(clearTimeout(b2),b2=null),K.value=!1,y.value=!1,x.value=!1,pe.value=null,document.removeEventListener("mousemove",gt),document.removeEventListener("mouseup",it),r("dblclick",t.task,ge)},_t=Ge(()=>{const ge=t.scrollLeft||0,he=t.containerWidth||0;if(!ge&&!he)return{nameLeft:"",namePosition:"",nameTop:"",progressLeft:"",progressPosition:"",progressTop:"",avatarLeft:"",avatarPosition:""};const Je=parseInt(W.value.left),t2=parseInt(W.value.width),$2=Je+t2,E2=Je+t2/2,I2=ge,m2=ge+he;let u2="",G2="",Tt="",St="",st="",Qt="",jt="",Kt="";const Pt=Math.max(ze.value,40),z=35,Re=22,Pe=na.value,i2=Pe+3,D2=Je+i2,w2=Je+i2+Re,R2=D2I2||E2I2,J2=Math.max(Pt,z),N2=w2+J2+15>m2&&JeI2}else Ft=W2I2&&E2m2&&Jem2;if(Ft){const $t=I2-Je,R0=R2?T2:0;u2=`${$t+Pe+3+R0}px`,G2="absolute",Tt="2px"}else p0&&(u2=`${m2-Je-Pt-Pe-10}px`,G2="absolute",Tt="2px");const Z2=E2-z/2,Va=E2+z/2;let va=!1;if(dt){const $t=Z2,R0=Re+15;va=$tI2}else va=Z2I2&&E2m2&&Jem2;if(va){const $t=I2-Je,R0=R2?T2:0;St=`${$t+Pe+3+R0}px`,st="absolute",Qt="18px"}else Ka&&(St=`${m2-Je-z-Pe-3}px`,st="absolute",Qt="18px");return{nameLeft:u2,namePosition:G2,nameTop:Tt,progressLeft:St,progressPosition:st,progressTop:Qt,avatarLeft:jt,avatarPosition:Kt}}),j2=Ge(()=>{const ge=t.scrollLeft||0,he=t.containerWidth||0;if(!he||he<=0)return{show:!1,left:"0px",side:"left",color:"#409eff",animationType:"none"};if(lt.value||qt.value||t.hideBubbles)return{show:!1,left:"0px",side:"left",color:O.value.color,animationType:"none"};const Je=parseInt(W.value.left),t2=parseInt(W.value.width),$2=Je+t2,E2=ge,I2=ge+he,m2=$2<=E2,u2=Je>=I2;return m2?{show:!0,left:`${E2-Je-4}px`,side:"left",color:O.value.color,animationType:"morphToSemiCircle"}:u2?{show:!0,left:`${I2-Je-8}px`,side:"right",color:O.value.color,animationType:"morphToSemiCircle"}:{show:!1,left:"0px",side:"left",color:O.value.color,animationType:"none"}}),xe=Ce(!1),Xe=Ce({x:0,y:0}),e2=Ce(!1),Ye=Ce(null),F2=Ce(!1),lt=Ce(!0),z2=Ce(!1),qt=Ce(!1),U0=ge=>{ge.stopPropagation(),ge.preventDefault();const he=t.scrollLeft||0,Je=t.containerWidth||0;if(!he&&!Je)return;const t2=parseInt(W.value.left),$2=parseInt(W.value.width),I2=t2+$2/2-Je/2;z2.value=!0,qt.value=!0,xe.value=!1,r("scroll-to-position",I2)};Dt(()=>[t.scrollLeft,t.containerWidth],(ge,he)=>{const[Je,t2]=ge,[$2,E2]=he||[0,0],I2=Je||0,m2=t2||0,u2=$2||0,G2=E2||0;if(Math.abs(m2-G2)>1&&G2>0){F2.value=!0,Zt(()=>{}),lt.value&&setTimeout(()=>{lt.value=!1},300),setTimeout(()=>{F2.value=!1},500);return}lt.value&&I2>=0&&m2>0&&setTimeout(()=>{lt.value=!1},1e3),I2!==u2&&!F2.value&&(e2.value=!0,Ye.value&&clearTimeout(Ye.value),Ye.value=setTimeout(()=>{e2.value=!1,z2.value&&(z2.value=!1,setTimeout(()=>{qt.value=!1},300))},200))},{immediate:!0}),Dt(()=>t.hideBubbles,(ge,he)=>{he&&!ge&&Zt(()=>{})}),Dt(()=>j2.value.show,()=>{});const U2=()=>{F2.value=!0,Zt(()=>{}),setTimeout(()=>{F2.value=!1},300)};Ca(()=>{window.addEventListener("resize",U2),window.addEventListener("zoom",U2)}),Da(()=>{document.removeEventListener("mousemove",gt),document.removeEventListener("mouseup",it),window.removeEventListener("resize",U2),window.removeEventListener("zoom",U2)});const Ba=ge=>{ge.stopPropagation(),xe.value=!0;const Je=j2.value.side==="right"?-180:15;Xe.value={x:ge.clientX+Je,y:ge.clientY-10}},Aa=ge=>{ge.stopPropagation(),xe.value=!1},Z0=ge=>{ge.stopPropagation(),xe.value=!1},B0=ge=>{if(!ge)return c("dateNotSet");const he=v(ge);if(!he)return c("dateNotSet");const Je=he.getFullYear(),t2=String(he.getMonth()+1).padStart(2,"0"),$2=String(he.getDate()).padStart(2,"0");return`${Je}-${t2}-${$2}`},Vt=Ge(()=>{const ge=v(t.task.startDate),he=v(t.task.endDate);let Je=0;if(ge&&he){const E2=Math.abs(he.getTime()-ge.getTime());Je=Math.ceil(E2/(1e3*60*60*24))*8}const t2=t.task.progress||0,$2=Math.round(Je*t2/100);return{total:Je,used:$2}}),o0=Ge(()=>!0),N0=()=>{const ge=_t.value,he={};return ge.nameLeft&&(he.left=ge.nameLeft),ge.namePosition&&(he.position=ge.namePosition),ge.nameTop&&(he.top=ge.nameTop),he},Ua=()=>{const ge=_t.value,he={};return ge.progressLeft&&(he.left=ge.progressLeft),ge.progressPosition&&(he.position=ge.progressPosition),ge.progressTop&&(he.top=ge.progressTop),he},Na=()=>{const ge=_t.value,he={};return ge.avatarLeft&&(he.left=ge.avatarLeft),ge.avatarPosition&&(he.position=ge.avatarPosition),he},ra=Ge(()=>parseInt(W.value.width)-10<22),_0=Ge(()=>({width:`${Math.min(f.value.resizeHandleWidth??5,15)}px`})),na=Ge(()=>Math.min(f.value.resizeHandleWidth??5,15)),P0=(ge,he,Je)=>{var $2;let t2=0;for(const E2 of he)if(Je===Ve.DAY){const I2=E2.days||[];for(let m2=0;m2=u2&&ge<=G2){const st=60/Math.ceil((G2.getTime()-u2.getTime())/864e5),Qt=Math.ceil((ge.getTime()-u2.getTime())/(1e3*60*60*24));return t2+Qt*st}t2+=60}}else if(Je===Ve.WEEK){const I2=E2.weeks||[];for(const m2 of I2){const u2=new Date(m2.weekStart),G2=new Date(m2.weekEnd);if(ge>=u2&&ge<=G2){const St=m2.subDays||[],st=60/7;for(let jt=0;jt=I2&&ge<=m2){const Tt=60/((($2=E2.monthData)==null?void 0:$2.dayCount)||30),St=ge.getDate();return t2+(St-1)*Tt}t2+=60}else if(Je===Ve.YEAR){const I2=E2.halfYears||[];for(const m2 of I2){const u2=new Date(m2.startDate),G2=new Date(m2.endDate);if(ge>=u2&&ge<=G2){const st=180/Math.ceil((G2.getTime()-u2.getTime())/864e5),Qt=Math.ceil((ge.getTime()-u2.getTime())/(1e3*60*60*24));return t2+Qt*st}t2+=180}}return Je===Ve.WEEK?(console.warn("[Gantt Debug] 周视图定位失败,任务日期未找到 week 匹配,返回 -1",{targetDate:ge}),-1):t2},ea=(ge,he,Je)=>{var $2;if(!he)return null;let t2=0;if(Je===Ve.DAY)for(const E2 of he){const I2=E2.days||[],m2=I2.length*30;if(ge>=t2&&ge=0&&G2=t2&&ge=t2&&ge=t2&&get.task);function wr(ge){if(!o.value){ge.preventDefault();return}if(t.isHighlighted||t.isPrimaryHighlight){ge.preventDefault();return}window.dispatchEvent(new CustomEvent("close-all-taskbar-menus"));const he=t.task.type||"task";if(he!=="task"&&he!=="story"){ge.preventDefault(),ta.value=!1;return}ge.preventDefault(),ta.value=!0,sa.value={x:ge.clientX,y:ge.clientY}}function Rt(){ta.value=!1}function y0(ge){if(!ta.value)return;const he=ge.target,Je=document.querySelector(".task-context-menu");Je&&Je.contains(he)||Rt()}const We=(ge,he)=>{r("delete",ge,he),Rt()},se=ge=>{r("delete-link",ge),Rt()},X2=ge=>{r("link-drag-start",ge)},Et=ge=>{r("link-drag-move",ge)},kt=ge=>{r("link-drag-end",ge)},h0=ge=>{const he={clientX:ge.x,clientY:ge.y};X2({task:t.task,type:ge.type,mouseEvent:he})},ya=ge=>{Et({mouseX:ge.x,mouseY:ge.y})},Ra=ge=>{kt({task:t.task,type:ge.type})};return(ge,he)=>{var Je;return q(),me(c2,null,[ye.value?(q(),me("div",{key:0,ref_key:"barRef",ref:ae,class:B2(["task-bar",{dragging:K.value,resizing:y.value||x.value,completed:fe.value,"parent-task":ge.isParent,"week-view":Ze.value,"short-task-bar":Le.value,"overflow-effect":p2.value,highlighted:ge.isHighlighted,"primary-highlight":ge.isPrimaryHighlight,dimmed:He.value}]),"data-task-id":ge.task.id,style:at({...W.value,backgroundColor:O.value.bgColor,borderColor:O.value.borderColor,color:O.value.color,cursor:fe.value||ge.isParent?"default":"move","--row-height":`${ge.rowHeight}px`,"--handle-width":`${na.value}px`}),onClick:mt,onContextmenu:wr,onDblclick:V2,onMouseenter:he[7]||(he[7]=t2=>Se.value=!0),onMouseleave:he[8]||(he[8]=t2=>Se.value=!1)},[ge.isParent?(q(),me("div",oF,[g.value?u1(ge.$slots,"custom-task-content",bi(Ln({key:0},ie.value)),void 0):(q(),me(c2,{key:1},[Ut(le(ge.task.name)+" ("+le(ge.task.progress||0)+"%) ",1)],64))])):h2("",!0),!ge.isParent&&ge.task.progress&&ge.task.progress>0?(q(),me("div",{key:1,class:"progress-bar",style:at({width:be.value,backgroundColor:O.value.color})},null,4)):h2("",!0),!fe.value&&!ge.isParent&&!J.value&&t.allowDragAndResize!==!1&&!ge.isHighlighted&&!ge.isPrimaryHighlight?(q(),me("div",{key:2,class:"resize-handle resize-handle-left",style:at(_0.value),onMousedown:he[0]||(he[0]=t2=>l2(t2,"resize-left"))},null,36)):h2("",!0),ge.isParent?h2("",!0):(q(),me("div",{key:3,class:"task-bar-content",style:at({cursor:J.value||t.allowDragAndResize===!1||ge.isHighlighted||ge.isPrimaryHighlight?"grab":"move"}),onMousedown:he[1]||(he[1]=t2=>{ge.isHighlighted||ge.isPrimaryHighlight||J.value||t.allowDragAndResize===!1||l2(t2,"drag")})},[f.value.showAvatar?(q(),me("div",{key:0,class:B2(["task-avatar",{"avatar-outside":ra.value,"avatar-default":!ge.task.avatar}]),style:at(Na())},[ge.task.avatar?(q(),me("img",{key:0,src:ge.task.avatar,alt:ge.task.assignee||"avatar"},null,8,pF)):ge.task.assigneeName?(q(),me("span",DF,le(ge.task.assigneeName.charAt(0).toUpperCase()),1)):(q(),me("svg",AF,he[9]||(he[9]=[h("path",{d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z",fill:"currentColor"},null,-1)])))],6)):h2("",!0),f.value.showTitle?(q(),me("div",{key:1,ref_key:"taskBarNameRef",ref:ke,style:at(N0())},[g.value?u1(ge.$slots,"custom-task-content",bi(Ln({key:0},ie.value)),void 0):(q(),me("div",gF,le(ge.task.name),1))],4)):h2("",!0),f.value.showProgress&&o0.value?(q(),me("div",{key:2,class:"task-progress",style:at(Ua())},le(ge.task.progress||0)+"% ",5)):h2("",!0)],36)),!fe.value&&!ge.isParent&&!J.value&&t.allowDragAndResize!==!1&&!ge.isHighlighted&&!ge.isPrimaryHighlight?(q(),me("div",{key:4,class:"resize-handle resize-handle-right",style:at(_0.value),onMousedown:he[2]||(he[2]=t2=>l2(t2,"resize-right"))},null,36)):h2("",!0),!ge.isParent&&!ge.isInHighlightMode?(q(),r0(e7,{key:5,type:"predecessor","task-id":ge.task.id,visible:Se.value,"is-drag-source":ge.isLinkDragSource&&ge.dragLinkMode==="predecessor","is-drag-target":ge.isValidLinkTarget||ge.isInvalidLinkTarget,"is-valid-target":ge.isValidLinkTarget,"global-dragging":!!ge.dragLinkMode,onDragStart:h0,onDragMove:ya,onDragEnd:Ra},null,8,["task-id","visible","is-drag-source","is-drag-target","is-valid-target","global-dragging"])):h2("",!0),!ge.isParent&&!ge.isInHighlightMode?(q(),r0(e7,{key:6,type:"successor","task-id":ge.task.id,visible:Se.value,"is-drag-source":ge.isLinkDragSource&&ge.dragLinkMode==="successor","is-drag-target":ge.isValidLinkTarget||ge.isInvalidLinkTarget,"is-valid-target":ge.isValidLinkTarget,"global-dragging":!!ge.dragLinkMode,onDragStart:h0,onDragMove:ya,onDragEnd:Ra},null,8,["task-id","visible","is-drag-source","is-drag-target","is-valid-target","global-dragging"])):h2("",!0),j2.value.show&&!ge.isParent?(q(),me("div",{key:7,class:B2(["bubble-indicator",[`bubble-${j2.value.side}`,`bubble-animation-${j2.value.animationType}`]]),style:at({left:j2.value.left,backgroundColor:j2.value.color,borderColor:j2.value.color}),onMouseenter:Jt(Ba,["stop"]),onMouseleave:Jt(Aa,["stop"]),onMousedown:Jt(Z0,["stop"]),onClick:Jt(U0,["stop"])},null,38)):h2("",!0),D.value?(q(),r0(L3,{key:8,visible:ta.value,task:Ea.value,position:sa.value,"all-tasks":ge.allTasks,onClose:Rt,onStartTimer:he[3]||(he[3]=t2=>ge.$emit("start-timer",t.task)),onStopTimer:he[4]||(he[4]=t2=>ge.$emit("stop-timer",t.task)),onAddPredecessor:he[5]||(he[5]=t2=>ge.$emit("add-predecessor",t.task)),onAddSuccessor:he[6]||(he[6]=t2=>ge.$emit("add-successor",t.task)),onDelete:We,onDeleteLink:se},null,8,["visible","task","position","all-tasks"])):h2("",!0),(q(),r0(kn,{to:"body"},[A.value&&ta.value&&((Je=we(i))!=null&&Je.defaultSlot)?(q(),me("div",{key:0,class:"gantt-context-menu-wrapper",style:at({position:"fixed",left:`${sa.value.x}px`,top:`${sa.value.y}px`,zIndex:9999})},[(q(),r0(tn(we(i).defaultSlot),{row:Ea.value,$index:t.rowIndex??-1},null,8,["row","$index"]))],4)):h2("",!0)]))],46,iF)):h2("",!0),(q(),r0(kn,{to:"body"},[xe.value?(q(),me("div",{key:0,class:"task-tooltip",style:at({left:`${Xe.value.x}px`,top:`${Xe.value.y}px`})},[he[10]||(he[10]=h("div",{class:"tooltip-arrow"},null,-1)),h("div",IF,le(ge.task.name),1),h("div",mF,[h("div",lF,[h("span",cF,le(c("startDate"))+":",1),h("span",uF,le(B0(ge.task.startDate)),1)]),h("div",fF,[h("span",hF,le(c("endDate"))+":",1),h("span",SF,le(B0(ge.task.endDate)),1)]),h("div",CF,[h("span",vF,le(c("estimatedHours"))+":",1),h("span",FF,le(Vt.value.total)+"h",1)]),h("div",wF,[h("span",TF,le(c("actualHours"))+":",1),h("span",BF,le(Vt.value.used)+"h",1)]),h("div",NF,[h("span",yF,le(c("progress"))+":",1),h("span",RF,le(ge.task.progress||0)+"%",1)])])],4)):h2("",!0)])),(q(),r0(kn,{to:"body"},[v2.value?(q(),me("div",{key:0,class:"drag-tooltip",style:at({left:`${K2.value.x}px`,top:`${K2.value.y}px`})},[h("div",QF,[h("div",bF,[h("span",HF,le(c("startDate"))+":",1),h("span",MF,le(B0(C2.value.startDate)),1)]),h("div",kF,[h("span",xF,le(c("endDate"))+":",1),h("span",UF,le(B0(C2.value.endDate)),1)])])],4)):h2("",!0)]))],64)}}}),_F=J0(WF,[["__scopeId","data-v-7b051790"]]),PF=["title"],OF={key:0,transform:"rotate(45 16 16)"},VF=["fill","stroke"],jF={key:1},$F={key:2,transform:"rotate(45 16 16)"},GF=["fill","stroke"],YF={key:1,class:"milestone-label milestone-label-right"},qF={class:"tooltip-content"},zF=x0({__name:"MilestonePoint",props:{date:{},milestone:{},name:{},rowHeight:{},dayWidth:{},startDate:{},timelineStart:{},timelineEnd:{},scrollLeft:{},containerWidth:{},milestoneId:{},otherMilestones:{},currentTimeScale:{},timelineData:{},periodWidth:{},isInHighlightMode:{type:Boolean},allowDragAndResize:{type:Boolean}},emits:["milestone-double-click","update:milestone","drag-end"],setup(e,{emit:a}){const t=e,r=a,{getTranslation:n}=Fr(),s=ne=>n(ne),d=Ce(!1),i=Ce(0),o=Ce(0),D=Ce(null),A=ne=>{if(ne.preventDefault(),ne.stopPropagation(),!(K.value.isSticky||K.value.isPushedOut||!K.value.showIcon))if(d.value=!1,D.value=null,document.removeEventListener("mousemove",B),document.removeEventListener("mouseup",C),t.milestone)r("milestone-double-click",t.milestone);else{const oe={name:t.name||"里程碑",startDate:t.date,type:"milestone"};r("milestone-double-click",oe)}},m=(ne,oe)=>{const te=new Date(ne);return te.setDate(te.getDate()+oe),te},c=ne=>{const oe=ne.getFullYear(),te=String(ne.getMonth()+1).padStart(2,"0"),Se=String(ne.getDate()).padStart(2,"0");return`${oe}-${te}-${Se}`},g=(ne,oe,te)=>{var Me;if(!oe)return null;let Se=0;if(te===Ve.DAY)for(const w of oe){const P=w.days||[],G=P.length*30;if(ne>=Se&&ne=0&&ue=Se&&ne=Se&&ne{t.allowDragAndResize===!1||t.currentTimeScale===Ve.YEAR||K.value.isSticky||K.value.isPushedOut||!K.value.showIcon||(ne.preventDefault(),ne.stopPropagation(),!document.querySelector(".timeline"))||(i.value=ne.clientX,o.value=parseInt(H.value.left),D.value=null,window.addEventListener("timeline-auto-scroll",v),document.addEventListener("mousemove",B),document.addEventListener("mouseup",C))},v=ne=>{const{scrollDelta:oe}=ne.detail;d.value&&(i.value-=oe)},B=ne=>{window.dispatchEvent(new CustomEvent("drag-boundary-check",{detail:{mouseX:ne.clientX,isDragging:d.value}}));const oe=ne.clientX-i.value;if(Math.abs(oe)>3){d.value=!0;const te=Math.max(0,o.value+oe);let Se;if(t.currentTimeScale===Ve.MONTH||t.currentTimeScale===Ve.QUARTER||t.currentTimeScale===Ve.DAY)if(t.timelineData&&t.currentTimeScale){const Me=g(te,t.timelineData,t.currentTimeScale);Me?Se=Me:Se=m(t.startDate,te/t.dayWidth)}else Se=m(t.startDate,te/t.dayWidth);else Se=m(t.startDate,te/t.dayWidth);D.value={startDate:c(Se)}}},C=()=>{if(window.dispatchEvent(new CustomEvent("drag-boundary-check",{detail:{mouseX:0,isDragging:!1}})),d.value&&D.value&&t.milestone){const ne={...t.milestone,...D.value};r("update:milestone",ne),r("drag-end",ne)}window.removeEventListener("timeline-auto-scroll",v),d.value=!1,D.value=null,document.removeEventListener("mousemove",B),document.removeEventListener("mouseup",C)},E=ne=>{if(ne.preventDefault(),ne.stopPropagation(),d.value||K.value.isPushedOut||!K.value.showIcon||K.value.isFullyVisible)return;const oe=t.containerWidth||0,te=parseInt(H.value.left)+12;if(oe>0){const Se=Math.max(0,te-oe/2);window.dispatchEvent(new CustomEvent("milestone-click-locate",{detail:{scrollLeft:Se,smooth:!0}}))}},b=Ge(()=>t.isInHighlightMode===!0),H=Ge(()=>{var Me;const ne=((Me=D.value)==null?void 0:Me.startDate)||t.date,oe=Cf(ne);if(!t.startDate||!oe||isNaN(oe.getTime()))return{left:"0px",top:"0px",width:"auto",height:"auto"};let te=0,Se=24;return t.currentTimeScale===Ve.YEAR||t.currentTimeScale===Ve.QUARTER?Se=Math.min(t.rowHeight,24):t.currentTimeScale===Ve.MONTH?Se=Math.min(t.rowHeight,20):t.currentTimeScale===Ve.WEEK?Se=Math.min(t.rowHeight,Math.max(t.dayWidth*.8,16),24):Se=Math.min(t.rowHeight,t.dayWidth*1.2,24),t.currentTimeScale===Ve.HOUR?te=Ne(oe,t.startDate)-Se/2:t.timelineData&&t.currentTimeScale&&(t.currentTimeScale===Ve.WEEK||t.currentTimeScale===Ve.MONTH||t.currentTimeScale===Ve.DAY||t.currentTimeScale===Ve.QUARTER||t.currentTimeScale===Ve.YEAR)?te=ve(oe,t.timelineData,t.currentTimeScale)-Se/2:te=Math.floor((oe.getTime()-t.startDate.getTime())/864e5)*t.dayWidth+t.dayWidth/2-Se/2,{left:`${te}px`,top:`${(t.rowHeight-Se)/2}px`,width:"auto",height:"auto"}}),X=Ge(()=>"var(--gantt-danger, #f56c6c)"),re=Ge(()=>"var(--gantt-danger-light, #fab6b6)"),J=Ge(()=>{var ne;return((ne=t.milestone)==null?void 0:ne.icon)||"diamond"}),K=Ge(()=>{const ne=t.scrollLeft||0,oe=t.containerWidth||0;if(!oe||oe<=0)return{showIcon:!0,showLabel:!0,isSticky:!1,stickyPosition:"none",iconLeft:"0px",isPushedOut:!1,clipPath:"none",isFullyVisible:!0};const te=parseInt(H.value.left)+12,Se=ne,Me=ne+oe,w=24,P=te-w/2,G=te+w/2,ee=t.milestoneId,ue=P>=Se&&G<=Me,pe=t.otherMilestones||[];if(G<=Se+w/2){const Ie=pe.filter(ae=>ae.id!==ee&&ae.stickyPosition==="left"&&ae.isSticky);if(Ie.length>0){const ae=parseInt(H.value.left)+12;if(Ie.some(ze=>ze.originalLeft>ae))return{showIcon:!1,showLabel:!1,isSticky:!1,stickyPosition:"none",iconLeft:"0px",isPushedOut:!0,clipPath:"none",isFullyVisible:!1}}return{showIcon:!0,showLabel:!1,isSticky:!0,stickyPosition:"left",iconLeft:`${Se-parseInt(H.value.left)-w/2}px`,isPushedOut:!1,clipPath:"polygon(50% 0%, 100% 0%, 100% 100%, 50% 100%)",isFullyVisible:!1}}if(P>=Me-w/2){const Ie=pe.filter(ae=>ae.id!==ee&&ae.stickyPosition==="right"&&ae.isSticky);if(Ie.length>0){const ae=parseInt(H.value.left)+12;if(Ie.some(ze=>ze.originalLeft{var oe;if(K.value.isSticky&&K.value.showIcon&&!K.value.isPushedOut){y.value=!0;const te=!t.milestone||((oe=t.milestone)==null?void 0:oe.icon)==="diamond"?-300:-270,Se=K.value.stickyPosition==="left"?10:te;x.value={x:ne.clientX+Se,y:ne.clientY-10}}},F=()=>{y.value=!1},j=ne=>{if(!ne)return s("dateNotSet");try{const oe=new Date(ne);if(isNaN(oe.getTime()))return s("dateNotSet");const te=oe.getFullYear(),Se=String(oe.getMonth()+1).padStart(2,"0"),Me=String(oe.getDate()).padStart(2,"0");return`${te}-${Se}-${Me}`}catch{return s("dateNotSet")}},_=Ge(()=>{var te,Se;const ne=t.name||((te=t.milestone)==null?void 0:te.name)||s("milestone"),oe=j(t.date||((Se=t.milestone)==null?void 0:Se.startDate)||"");return`${s("milestone")}:${ne} - ${s("targetDate")}:${oe}`});Da(()=>{d.value=!1,D.value=null,document.removeEventListener("mousemove",B),document.removeEventListener("mouseup",C)});const Ne=(ne,oe)=>{const te=new Date(ne.getFullYear(),ne.getMonth(),ne.getDate()),Se=new Date(oe.getFullYear(),oe.getMonth(),oe.getDate()),Me=te.getTime()-Se.getTime(),G=Math.floor(Me/(1e3*60*60*24))*960,ue=ne.getHours()*40,Ie=ne.getMinutes()/60*40;return G+ue+Ie},ve=(ne,oe,te)=>{var Me;let Se=0;for(const w of oe)if(te===Ve.DAY){const P="days"in w&&w.days?w.days:[];for(let G=0;G=ee&&ne<=ue){const ae=60/Math.ceil((ue.getTime()-ee.getTime())/864e5),ke=Math.ceil((ne.getTime()-ee.getTime())/(1e3*60*60*24));return Se+ke*ae+ae/2}Se+=60}}else if(te===Ve.YEAR){const P="halfYears"in w&&w.halfYears?w.halfYears:[];for(const G of P){const ee=new Date(G.startDate),ue=new Date(G.endDate);if(ne>=ee&&ne<=ue){const ae=180/Math.ceil((ue.getTime()-ee.getTime())/864e5),ke=Math.ceil((ne.getTime()-ee.getTime())/(1e3*60*60*24));return Se+ke*ae+ae/2}Se+=180}}else if(te===Ve.WEEK){const P="weeks"in w&&w.weeks?w.weeks:[];for(const G of P){const ee=new Date(G.weekStart),ue=new Date(G.weekEnd);if(ne>=ee&&ne<=ue){const Ie=G.subDays||[],ae=60/7;for(let W=0;W=P&&ne<=G){const pe=60/("monthData"in w&&((Me=w.monthData)==null?void 0:Me.dayCount)||30),Ie=ne.getDate();return Se+(Ie-1)*pe+pe/2}Se+=60}return Se};return(ne,oe)=>(q(),me(c2,null,[h("div",{class:B2(["milestone",{dragging:d.value,"milestone-sticky":K.value.isSticky,"milestone-sticky-left":K.value.stickyPosition==="left","milestone-sticky-right":K.value.stickyPosition==="right","milestone-pushed-out":K.value.isPushedOut,dimmed:b.value}]),style:at(H.value),title:K.value.isSticky?"":t.name||"里程碑",onClick:Jt(E,["stop"])},[K.value.showIcon?(q(),me("svg",{key:0,width:24,height:24,viewBox:"0 0 24 24",style:at([{position:K.value.isSticky?"relative":"static",left:K.value.isSticky?K.value.iconLeft:"0px",clipPath:K.value.clipPath,zIndex:K.value.isSticky?200:120},{cursor:"pointer"}]),onMouseenter:T,onMouseleave:F,onClick:Jt(E,["stop"]),onDblclick:Jt(A,["stop"]),onMousedown:Jt(f,["stop"])},[J.value==="diamond"?(q(),me("g",OF,[h("rect",{x:"4",y:"8",width:"15",height:"15",rx:"6",ry:"6",fill:X.value,stroke:re.value,"stroke-width":"2"},null,8,VF)])):J.value==="rocket"?(q(),me("g",jF,oe[0]||(oe[0]=[h("foreignObject",{x:"0",y:"0",width:"24",height:"24"},[h("div",{class:"rocket-emoji"},"🚀")],-1)]))):(q(),me("g",$F,[h("rect",{x:"4",y:"8",width:"15",height:"15",rx:"6",ry:"6",fill:X.value,stroke:re.value,"stroke-width":"2"},null,8,GF)]))],36)):h2("",!0),t.name&&K.value.showLabel?(q(),me("span",YF,le(t.name),1)):h2("",!0)],14,PF),(q(),r0(kn,{to:"body"},[y.value&&K.value.isSticky?(q(),me("div",{key:0,class:"milestone-tooltip",style:at({left:`${x.value.x}px`,top:`${x.value.y}px`})},[h("div",qF,le(_.value),1)],4)):h2("",!0)]))],64))}}),t7=J0(zF,[["__scopeId","data-v-7405b38c"]]);class W3{constructor(){a0(this,"cachedCtx",null);a0(this,"cachedWidth",0);a0(this,"cachedHeight",0);a0(this,"isUniApp",!1);this.isUniApp=typeof window<"u"&&!!window.uni}get isUniAppEnvironment(){return this.isUniApp}getContext(a){const{canvas:t,canvasId:r,width:n,height:s,contextOptions:d}=a;if(!this.cachedCtx||this.cachedWidth!==n||this.cachedHeight!==s){let i=null;if(this.isUniApp&&window.uni)i=window.uni.createCanvasContext(r);else{if(!t)return null;const o=window.devicePixelRatio||1;if(i=t.getContext("2d",d||{alpha:!0}),!i)return null;const D=n*o,A=s*o;t.width=D,t.height=A,i.scale(o,o)}if(!i)return null;this.cachedCtx=i,this.cachedWidth=n,this.cachedHeight=s}return this.cachedCtx}clear(a,t){this.cachedCtx&&this.cachedCtx.clearRect(0,0,a,t)}draw(){var a;this.isUniApp&&((a=this.cachedCtx)!=null&&a.draw)&&this.cachedCtx.draw()}reset(){this.cachedCtx=null,this.cachedWidth=0,this.cachedHeight=0}}const XF=x0({__name:"GanttLinks",props:{tasks:{},taskBarPositions:{},width:{},height:{},offsetLeft:{default:0},offsetTop:{default:0},highlightedTaskId:{},highlightedTaskIds:{},hoveredTaskId:{},verticalLines:{default:()=>[]},showVerticalLines:{type:Boolean,default:!0}},setup(e,{expose:a}){const t=e,r=Ce(null),n=new W3;let s=null,d=!1,i=null;const o=Ce(document.documentElement.getAttribute("data-theme")==="dark"),D=()=>{o.value=document.documentElement.getAttribute("data-theme")==="dark",c()},A=()=>{const g=n.getContext({canvas:r.value,canvasId:"gantt-link-canvas",width:t.width,height:t.height,contextOptions:{alpha:!0}});if(!g){console.error("❌ Canvas context 获取失败,可能是尺寸超限");return}const f=t.width,v=t.height;if(g.clearRect(0,0,f,v),t.showVerticalLines&&t.verticalLines&&t.verticalLines.length>0){g.save();const x=o.value?"#66b1ff":"#409eff";g.strokeStyle=x,g.lineWidth=1,g.beginPath();for(const T of t.verticalLines){const F=T.left-t.offsetLeft;F>=0&&F<=f&&(g.moveTo(F,0),g.lineTo(F,v))}g.stroke(),g.restore()}const B=new Set;for(const x of t.tasks)B.add(x.id);const C=t.highlightedTaskId!==null,E=t.offsetLeft,b=t.offsetLeft+f,H=t.offsetTop,X=t.offsetTop+v,re=[],J=[],K=[],y=[];for(const x of t.tasks){if(!x.predecessor||!t.taskBarPositions[x.id])continue;const T=Vr(x.predecessor);for(const F of T){const j=t.taskBarPositions[F],_=t.taskBarPositions[x.id];if(!j||!_||!B.has(F))continue;const Ne=t.highlightedTaskId===F,ve=t.highlightedTaskId===x.id,ne=t.highlightedTaskIds.has(F),oe=t.highlightedTaskIds.has(x.id),te=ne&&oe,Se=t.hoveredTaskId===F,Me=t.hoveredTaskId===x.id,w=Se||Me,P=Ne?-8:ne?-5:0,G=ve?-8:oe?-5:0,ee=j.left+j.width,ue=j.top+j.height/2+P,pe=_.left,Ie=_.top+_.height/2+G,ae=Math.min(ee,pe),ke=Math.max(ee,pe),ze=Math.min(ue,Ie),W=Math.max(ue,Ie);if(keb||WX)continue;const $=ee-t.offsetLeft,Be=ue-t.offsetTop,R=pe-t.offsetLeft,ye=Ie-t.offsetTop,O=R-$,ie=ye-Be,fe=Math.sqrt(O*O+ie*ie),He=j.width,be=j.height,Ze=Math.abs(O)/(fe+1),Le=20;let p2=be/2+Le;Ze<.3?p2=Math.max(be/2+25,45):Ze<.6?p2=be/2+Le:p2=He/3+10;let l2=0;if(Math.abs(ie)>0){const b2=be/2+12,mt=Math.abs(ie)-be,V2=Math.min(mt*.5,100);l2=Math.max(b2,V2)}else l2=0;const k2=Ze<.3?.4:.8,y2=$+p2,v2=Be+(ie>0?l2:-l2)*k2,K2=R-p2,C2=ye-(ie>0?l2:-l2)*k2,gt=Math.atan2(ye-C2,R-K2),it={x1:$,y1:Be,x2:R,y2:ye,c1x:y2,c1y:v2,c2x:K2,c2y:C2,arrowAngle:gt};te?re.push(it):w?J.push(it):C?y.push(it):K.push(it)}}if(g.setLineDash([6,4]),re.length>0){g.strokeStyle="#409eff",g.fillStyle="#409eff",g.lineWidth=4,g.globalAlpha=1,g.beginPath();for(const x of re)g.moveTo(x.x1,x.y1),g.bezierCurveTo(x.c1x,x.c1y,x.c2x,x.c2y,x.x2,x.y2);g.stroke();for(const x of re)m(g,x.x2,x.y2,x.arrowAngle)}if(J.length>0){g.strokeStyle="#67c23a",g.fillStyle="#67c23a",g.lineWidth=3,g.globalAlpha=1,g.beginPath();for(const x of J)g.moveTo(x.x1,x.y1),g.bezierCurveTo(x.c1x,x.c1y,x.c2x,x.c2y,x.x2,x.y2);g.stroke();for(const x of J)m(g,x.x2,x.y2,x.arrowAngle)}if(K.length>0){g.strokeStyle="#c0c4cc",g.fillStyle="#c0c4cc",g.lineWidth=2,g.globalAlpha=1,g.beginPath();for(const x of K)g.moveTo(x.x1,x.y1),g.bezierCurveTo(x.c1x,x.c1y,x.c2x,x.c2y,x.x2,x.y2);g.stroke();for(const x of K)m(g,x.x2,x.y2,x.arrowAngle)}if(y.length>0){g.strokeStyle="#c0c4cc",g.fillStyle="#c0c4cc",g.lineWidth=2,g.globalAlpha=.2,g.beginPath();for(const x of y)g.moveTo(x.x1,x.y1),g.bezierCurveTo(x.c1x,x.c1y,x.c2x,x.c2y,x.x2,x.y2);g.stroke();for(const x of y)m(g,x.x2,x.y2,x.arrowAngle);g.globalAlpha=1}n.draw()},m=(g,f,v,B)=>{g.beginPath(),g.moveTo(f,v),g.lineTo(f-8*Math.cos(B)-4*Math.sin(B),v-8*Math.sin(B)+4*Math.cos(B)),g.lineTo(f-8*Math.cos(B)+4*Math.sin(B),v-8*Math.sin(B)-4*Math.cos(B)),g.closePath(),g.fill()},c=()=>{d||(d=!0,s!==null&&cancelAnimationFrame(s),s=requestAnimationFrame(()=>{d=!1,s=null,A()}))};return Dt([()=>t.taskBarPositions,()=>t.tasks,()=>t.highlightedTaskId,()=>t.highlightedTaskIds,()=>t.hoveredTaskId,()=>t.width,()=>t.height,()=>t.verticalLines,()=>t.showVerticalLines,()=>t.offsetLeft,()=>t.offsetTop],()=>{c()},{deep:!1}),Ca(()=>{i=new MutationObserver(g=>{for(const f of g)if(f.attributeName==="data-theme"){D();break}}),i.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]}),Zt(()=>{A()})}),Da(()=>{i&&(i.disconnect(),i=null),s!==null&&(cancelAnimationFrame(s),s=null)}),a({redraw:A}),(g,f)=>(q(),me("canvas",{ref_key:"canvasRef",ref:r,"canvas-id":"gantt-link-canvas",class:"gantt-links-canvas",type:"2d",hidpi:!0,style:at({position:"absolute",left:`${g.offsetLeft}px`,top:`${g.offsetTop}px`,width:`${g.width}px`,height:`${g.height}px`,zIndex:g.highlightedTaskId!==null?1001:25,pointerEvents:"none"})},null,4))}}),JF=J0(XF,[["__scopeId","data-v-7c939e26"]]),ZF=x0({__name:"LinkDragGuide",props:{active:{type:Boolean},width:{},height:{},offsetLeft:{default:0},offsetTop:{default:0}},setup(e,{expose:a}){const t=e,r=Ce(null),n=new W3,s=()=>n.getContext({canvas:r.value,canvasId:"link-drag-guide-canvas",width:t.width,height:t.height,contextOptions:{alpha:!0,willReadFrequently:!1}}),d=(o,D,A,m,c=!0,g="")=>{const f=s();if(!f){console.error("[LinkDragGuide] initCanvas returned null");return}const v=t.width,B=t.height;f.clearRect(0,0,v,B);const C=o-t.offsetLeft,E=D-t.offsetTop,b=A-t.offsetLeft,H=m-t.offsetTop,X=100;if(!((C>=-X||b>=-X)&&(C<=v+X||b<=v+X)&&(E>=-X||H>=-X)&&(E<=B+X||H<=B+X)))return;f.save();const J=c?"#67c23a":"#f56c6c";f.strokeStyle=J,f.lineWidth=3,f.globalAlpha=.8,f.beginPath(),f.moveTo(C,E),f.lineTo(b,H),f.stroke();const K=Math.atan2(H-E,b-C),y=8,x=4;if(f.fillStyle=J,f.globalAlpha=1,f.beginPath(),f.moveTo(b,H),f.lineTo(b-y*Math.cos(K)-x*Math.sin(K),H-y*Math.sin(K)+x*Math.cos(K)),f.lineTo(b-y*Math.cos(K)+x*Math.sin(K),H-y*Math.sin(K)-x*Math.cos(K)),f.closePath(),f.fill(),!c&&g){const T=(C+b)/2,F=(E+H)/2-10;f.font="12px Arial, sans-serif";const _=f.measureText(g).width,Ne=8;f.fillStyle="rgba(0, 0, 0, 0.75)",f.fillRect(T-_/2-Ne,F-12,_+Ne*2,24),f.fillStyle="#ffffff",f.textAlign="center",f.textBaseline="middle",f.fillText(g,T,F)}f.restore(),n.draw()},i=()=>{n.clear(t.width,t.height)};return Dt([()=>t.width,()=>t.height],()=>{n.reset()}),Dt(()=>t.active,o=>{o||n.reset()}),Da(()=>{n.reset()}),a({draw:d,clear:i}),(o,D)=>o.active?(q(),me("canvas",{key:0,ref_key:"canvasRef",ref:r,"canvas-id":"link-drag-guide-canvas",class:"link-drag-guide-canvas",type:"2d",hidpi:!0,style:at({position:"absolute",left:`${o.offsetLeft}px`,top:`${o.offsetTop}px`,width:`${o.width}px`,height:`${o.height}px`,zIndex:1002,pointerEvents:"none"})},null,4)):h2("",!0)}}),ew=J0(ZF,[["__scopeId","data-v-b2173cd8"]]);performance.now();const tw={class:"timeline-header"},aw={class:"timeline-header-row year-row"},rw={class:"year-label"},nw={class:"timeline-header-row half-years-row"},sw={class:"half-year-label"},dw={class:"timeline-header-row year-row"},iw={class:"year-label"},ow={class:"timeline-header-row months-row"},pw={class:"month-label"},Dw={class:"timeline-header-row year-row"},Aw={class:"year-label"},gw={class:"timeline-header-row quarters-row"},Iw={class:"quarter-label"},mw={class:"timeline-header-row date-row"},lw={class:"date-label"},cw={class:"timeline-header-row hours-row"},uw={class:"hour-label"},fw={class:"timeline-header-row year-month-row"},hw={class:"year-month-label"},Sw={class:"flag-content"},Cw={class:"timeline-header-row days-row"},vw={class:"week-label"},Fw={class:"day-label"},ww=["onMouseenter"],Tw=200,Bw=8,Nw=4,rp=40,a7=10,r7=51,n7=5,M4=5e3,yw=5e3,s7=50,d7=5,Rw=x0({__name:"Timeline",props:{tasks:{default:()=>[]},milestones:{default:()=>[]},startDate:{},endDate:{},useDefaultDrawer:{type:Boolean,default:!0},useDefaultMilestoneDialog:{type:Boolean,default:!0},onTaskDelete:{type:Function,default:void 0},onTaskUpdate:{type:Function,default:void 0},onMilestoneDelete:{type:Function,default:void 0},onMilestoneUpdate:{type:Function,default:void 0},onMilestoneSave:{type:Function,default:void 0},workingHours:{default:()=>({morning:{start:8,end:11},afternoon:{start:13,end:17}})},taskBarConfig:{default:void 0},allowDragAndResize:{type:Boolean,default:!0}},emits:["timeline-scale-changed","click-task","edit-task","milestone-double-click","start-timer","stop-timer","add-predecessor","add-successor","predecessor-added","successor-added","delete","link-deleted"],setup(e,{expose:a,emit:t}){const r=e,n=t,{formatYearMonth:s,formatMonth:d,getTranslation:i}=Fr(),o=M=>i(M),D=(()=>{const M=new Date,Z=new Date(M.getFullYear(),M.getMonth()-6,1),U=new Date(M.getFullYear(),M.getMonth()+6+1,0);return{startDate:Z,endDate:U}})(),A=()=>D,m=Ge(()=>r.startDate?new Date(r.startDate):A().startDate),c=Ge(()=>r.endDate?new Date(r.endDate):A().endDate),g=Ce({startDate:m.value,endDate:c.value,zoomLevel:1}),f=Ce(Ve.DAY);Dt([m,c],([M,Z])=>{(r.startDate||r.endDate)&&(u2||(g.value.startDate=M,g.value.endDate=Z))});const v=[],B=Ge(()=>r.tasks??v),C=Ce(null),E=Ce(null),b=Ge(()=>f.value===Ve.HOUR?960:f.value===Ve.WEEK?60/7:f.value===Ve.MONTH?2:f.value===Ve.QUARTER?60/90:f.value===Ve.YEAR?360/365:30);let H=null;const X=()=>{H=null},re=()=>{if(!B.value||B.value.length===0)return null;const M=[],Z=Te=>{if(Te.startDate&&M.push(new Date(Te.startDate)),Te.endDate&&M.push(new Date(Te.endDate)),Te.children&&Te.children.length>0)for(const Ke of Te.children)Z(Ke)};for(const Te of B.value)Z(Te);if(M.length===0)return null;let U=1/0,ce=-1/0;for(const Te of M){const Ke=Te.getTime();isNaN(Ke)||(Kece&&(ce=Ke))}return U===1/0||ce===-1/0?null:{minDate:new Date(U),maxDate:new Date(ce)}},J=()=>H||(H=re(),H),K=()=>{const M=J(),Z=Ye.value||1200,U=40;if(!M){const H2=new Date;H2.setHours(0,0,0,0);const Q2=new Date(H2);Q2.setDate(Q2.getDate()-1);const n2=new Date(H2);return n2.setDate(n2.getDate()+1),n2.setHours(23,59,59,999),{startDate:Q2,endDate:n2}}const{minDate:ce,maxDate:Te}=M,Ke=new Date(ce);Ke.setHours(0,0,0,0),Ke.setDate(Ke.getDate()-1);const qe=new Date(Te);qe.setHours(23,59,59,999),qe.setDate(qe.getDate()+1);const Oe=Math.ceil((qe.getTime()-Ke.getTime())/(1e3*60*60));if(Oe*U{const M=J(),Z=Ye.value||1200,U=30;if(!M){const H2=new Date,Q2=Math.max(Math.ceil(Z/U),60),n2=new Date(H2);n2.setDate(n2.getDate()-Math.floor(Q2/2));const x2=new Date(H2);return x2.setDate(x2.getDate()+Math.ceil(Q2/2)),{startDate:n2,endDate:x2}}const{minDate:ce,maxDate:Te}=M;let Ke=new Date(ce);Ke.setDate(Ke.getDate()-30);let qe=new Date(Te);qe.setDate(qe.getDate()+30);const Oe=Math.ceil((qe.getTime()-Ke.getTime())/(1e3*60*60*24));if(Oe*U{const M=J(),Z=Ye.value||1200,U=60;if(!M){const D0=new Date,xt=Math.max(Math.ceil(Z/U),20),Gt=new Date(D0);Gt.setDate(Gt.getDate()-Math.floor(xt/2)*7);const E0=new Date(D0);return E0.setDate(E0.getDate()+Math.ceil(xt/2)*7),{startDate:Gt,endDate:E0}}const{minDate:ce,maxDate:Te}=M;function Ke(D0){const xt=new Date(D0),Gt=xt.getDay()||7;return xt.setDate(xt.getDate()-(Gt-1)),xt}function qe(D0,xt){let Gt=1;for(;Gt<=31;){const E0=new Date(D0,xt,Gt);if(E0.getMonth()!==xt)break;const ft=Ke(E0);if(ft.getMonth()===xt)return ft;Gt++}return new Date(D0,xt,1)}function Oe(D0,xt){const Gt=new Date(D0,xt+1,0).getDate();for(let E0=Gt;E0>=1;E0--){const ft=new Date(D0,xt,E0),Ya=Ke(ft);if(Ya.getMonth()===xt)return Ya}return new Date(D0,xt,1)}function g2(D0,xt){const Gt=[],E0=qe(D0,xt),ft=Oe(D0,xt),Ya=new Date(E0);for(;Ya<=ft;)Gt.push(new Date(Ya)),Ya.setDate(Ya.getDate()+7);return Gt}const H2=Ke(ce),Q2=H2.getFullYear(),n2=H2.getMonth(),x2=n2===0?11:n2-1,It=n2===0?Q2-1:Q2,e0=g2(It,x2),l0=Ke(Te),d0=l0.getFullYear(),i0=l0.getMonth(),Wt=i0===11?0:i0+1,F0=i0===11?d0+1:d0,ar=g2(F0,Wt);let Q0=[];Q0.push(...e0);let G0=Q2,rr=n2;for(;G011&&(rr=0,G0++)}Q0.push(...ar);let xr=Q0.length*U;for(;xr=Z)break;const on=Q0[Q0.length-1],L1=on.getFullYear(),V0=on.getMonth(),us=V0===11?0:V0+1,qr=V0===11?L1+1:L1,zr=g2(qr,us);Q0=[...Q0,...zr],xr=Q0.length*U}const w1=new Date(Q0[0]),lr=new Date(Q0[Q0.length-1]);return lr.setDate(lr.getDate()+6),{startDate:w1,endDate:lr}},T=()=>{const M=J();if(!M){const Q2=new Date,n2=new Date(Q2.getFullYear()-1,0,1),x2=new Date(Q2.getFullYear()+1,11,31);return{startDate:n2,endDate:x2}}const{minDate:Z,maxDate:U}=M,ce=Ye.value||1200;let Te=new Date(Z.getFullYear()-1,0,1),Ke=new Date(U.getFullYear()+1,11,31);const Oe=(Ke.getFullYear()-Te.getFullYear())*12+(Ke.getMonth()-Te.getMonth()),g2=60;if(Oe*g2{const M=J();if(!M){const Oe=new Date,g2=Ye.value||1200;let H2=3;f.value===Ve.QUARTER?H2=Math.max(Math.ceil(g2/240)+1,5):f.value===Ve.YEAR&&(H2=Math.max(Math.ceil(g2/360)+1,5));const Q2=Oe.getFullYear()-Math.floor(H2/2),n2=Q2+H2-1,x2=new Date(Q2,0,1),It=new Date(n2,11,31);return{startDate:x2,endDate:It}}const{minDate:Z,maxDate:U}=M,ce=Ye.value||1200;let Te=new Date(Z.getFullYear()-1,0,1),Ke=new Date(U.getFullYear()+1,11,31);const qe=Ke.getFullYear()-Te.getFullYear()+1;if(f.value===Ve.QUARTER){if(qe*240_.value!==null),ne=()=>{_.value=null,Ne.value.clear()},oe=M=>{_.value=M,Ne.value.clear(),Ne.value.add(M);const Z=B.value.find(U=>U.id===M);if(Z){if(Z.predecessor){const U=Vr(Z.predecessor);for(const ce of U)Ne.value.add(ce)}for(const U of B.value)U.predecessor&&Vr(U.predecessor).includes(M)&&Ne.value.add(U.id)}},te=Ce(null),Se=N4(null),Me=N4(null),w=Ce(!1),P=Ce(""),G=Ce(null);let ee=!1,ue="";const pe=new Map,Ie=M=>{te.value=M.type,Se.value=M.task,be(M.mouseEvent.clientX,M.mouseEvent.clientY),Me.value=null,w.value=!1,P.value="",S2=null,ee=!1,ue="",C2(),document.addEventListener("mousemove",R),document.addEventListener("mouseup",ye)};let ae=null,ke=0,ze=0,W=0,$=0;const Be=()=>{ae=null,be(ke,ze),k2(ke,ze),w2.value&&Se.value&&w2.value.draw(q2(),b2(),W,$,ee,ue)},R=M=>{te.value&&(ke=M.clientX,ze=M.clientY,ae===null&&(ae=requestAnimationFrame(Be)))},ye=()=>{te.value&&(ae!==null&&(cancelAnimationFrame(ae),ae=null),Se.value&&Le({task:Se.value,type:te.value}))};let O=null,ie=0,fe=!1;const He=(M,Z)=>{if(!D2.value){W=M,$=Z;return}const U=Date.now();(!O||fe||U-ie>Tw)&&(O=D2.value.getBoundingClientRect(),ie=U,fe=!1),W=M-O.left,$=Z-O.top},be=(M,Z)=>{He(M,Z)},Ze=M=>{ke=M.mouseX,ze=M.mouseY,ae===null&&(ae=requestAnimationFrame(Be))},Le=M=>{var Z;O=null,document.removeEventListener("mousemove",R),document.removeEventListener("mouseup",ye),gt(),(Z=w2.value)==null||Z.clear(),Me.value&&w.value&&K2(M.task,Me.value,M.type),te.value=null,Se.value=null,Me.value=null,w.value=!1},p2=(M,Z)=>{O||(O=D2.value.getBoundingClientRect(),ie=Date.now());const U=M-O.left,ce=Z-O.top,Te=(Bw+Nw)/2,Ke=Te+10;for(const qe in Pe.value){const Oe=Pe.value[qe],g2=Number(qe);if(ceOe.top+Oe.height+Ke)continue;const H2=Oe.top+Oe.height/2,Q2=Oe.left;if(U>=Q2-Te&&U<=Q2+Te&&ce>=H2-Te&&ce<=H2+Te)return{taskId:g2,anchorType:"left"};const n2=Oe.left+Oe.width;if(U>=n2-Te&&U<=n2+Te&&ce>=H2-Te&&ce<=H2+Te)return{taskId:g2,anchorType:"right"}}return null},l2=(M,Z)=>{const U=(S2==null?void 0:S2.id)??null,ce=(M==null?void 0:M.id)??null;if(U!==ce)if(S2=M,M&&Se.value){const Te=y2(Se.value,M,te.value,Z);ee=Te.valid,ue=Te.error||"",w.value=Te.valid,Me.value=M}else ee=!1,ue="",w.value=!1,Me.value=null};let S2=null;const k2=(M,Z)=>{if(!Se.value||!D2.value)return;const U=p2(M,Z),ce=U!==null&&pe.get(U.taskId)||null,Te=U==null?void 0:U.anchorType;l2(ce,Te)},y2=(M,Z,U,ce)=>{if(ce){if(U==="predecessor"&&ce!=="right")return{valid:!1,error:"前置任务应连接到右侧触点"};if(U==="successor"&&ce!=="left")return{valid:!1,error:"后置任务应连接到左侧触点"}}if(M.id===Z.id)return{valid:!1,error:"不能连接到自己"};if(Z.isParent||Z.type==="milestone")return{valid:!1,error:"不能连接到父级任务或里程碑"};if(U==="predecessor"){if(v2(Z.id,M.id))return{valid:!1,error:"会产生循环依赖"}}else if(v2(M.id,Z.id))return{valid:!1,error:"会产生循环依赖"};if(U==="predecessor"){if(M.predecessor&&Vr(M.predecessor).includes(Z.id))return{valid:!1,error:"关系已存在"}}else if(Z.predecessor&&Vr(Z.predecessor).includes(M.id))return{valid:!1,error:"关系已存在"};return{valid:!0}},v2=(M,Z)=>{const U=new Set,ce=[M];for(;ce.length>0;){const Te=ce.shift();if(Te===Z)return!0;if(U.has(Te))continue;U.add(Te);const Ke=B.value.find(qe=>qe.id===Te);if(Ke&&Ke.predecessor){const qe=Vr(Ke.predecessor);ce.push(...qe)}}return!1},K2=(M,Z,U)=>{if(console.log("----> hello:",{mode:U,sourceTask:M,targetTask:Z}),U==="predecessor"){const ce=M.predecessor?Vr(M.predecessor):[];ce.includes(Z.id)||(ce.push(Z.id),M.predecessor=ce,Pt(M),n("predecessor-added",{targetTask:M,newTask:Z}))}else{const ce=Z.predecessor?Vr(Z.predecessor):[];ce.includes(M.id)||(ce.push(M.id),Z.predecessor=ce,Pt(Z),n("successor-added",{targetTask:Z,newTask:M}))}},C2=()=>{G.value=window.setInterval(()=>{if(!C.value||!D2.value)return;const M=C.value,Z=S0.value;if(!Z)return;const U=M.getBoundingClientRect(),ce=80,Te=15,Ke=ke,qe=ze;let Oe=!1;if(Ke0)M.scrollLeft-=Te,Oe=!0;else if(Ke>U.right-ce){const g2=M.scrollWidth-M.clientWidth;M.scrollLeft0)Z.scrollTop-=Te,Oe=!0;else if(qe>U.bottom-ce){const g2=Z.scrollHeight-Z.clientHeight;Z.scrollTop{G.value!==null&&(clearInterval(G.value),G.value=null)},it=()=>{var M;gt(),O=null,ae!==null&&(cancelAnimationFrame(ae),ae=null),(M=w2.value)==null||M.clear(),document.removeEventListener("mousemove",R),document.removeEventListener("mouseup",ye),te.value=null,Se.value=null,Me.value=null,w.value=!1},q2=()=>{if(!Se.value)return 0;const M=Pe.value[Se.value.id];return M?te.value==="predecessor"?M.left:M.left+M.width:0},b2=()=>{if(!Se.value)return 0;const M=Pe.value[Se.value.id];return M?M.top+M.height/2:0},mt=Ce(!1),V2=Ce(!1),_t=Ce(!1),j2=Ce(0),xe=Ce(!1);let Xe=null;const e2=Ce(0),Ye=Ce(0),F2=Ce(!0),lt=Ce(!0);let z2=null;const qt=Ce(0),U0=new Map,U2=Ce(!0),Ba=Ge(()=>{if(f.value!==Ve.HOUR)return{startHour:0,endHour:0};const M=e2.value,Z=Ye.value;if(U2.value&&M===0)return{startHour:0,endHour:168};if(U2.value){const Te=new Date,Ke=g.value.startDate,qe=Math.floor((Te.getTime()-Ke.getTime())/(1e3*60*60));return{startHour:Math.max(0,qe-168),endHour:qe+168}}const U=Math.floor(M/rp)-a7,ce=Math.ceil((M+Z)/rp)+a7;return{startHour:Math.max(0,U),endHour:Math.max(U+1,ce)}}),Aa=Ge(()=>{const M=qt.value,Z=ra.value||600,U=Math.floor(M/r7)-n7,ce=Math.ceil((M+Z)/r7)+n7;return{startIndex:Math.max(0,U),endIndex:Math.min(B.value.length,Math.max(U+1,ce))}}),Z0=Ge(()=>{const{startIndex:M,endIndex:Z}=Aa.value;return B.value.slice(M,Z).map((U,ce)=>({task:U,originalIndex:M+ce}))}),B0=(M,Z)=>{let U=null;return((...ce)=>{const Te=()=>{U=null,M(...ce)};U&&clearTimeout(U),U=window.setTimeout(Te,Z)})},Vt=B0(()=>{P0()},200),o0=B0(()=>{dt()},200),N0=()=>{const M=f.value,Z=g.value.startDate.getTime(),U=g.value.endDate.getTime(),ce=`${M}-${Z}-${U}`;if(!U0.has(ce)){let Te;M===Ve.HOUR?Te=ge():M===Ve.WEEK?Te=he():M===Ve.MONTH?Te=et():M===Ve.QUARTER?Te=ct():M===Ve.YEAR?Te=Lt():Te=ya(),U0.set(ce,Te)}return U0.get(ce)},Ua=Ge(()=>{const M=N0();if(f.value===Ve.HOUR&&Array.isArray(M)){const{startHour:Z,endHour:U}=Ba.value,ce=[],Te=new Date(g.value.startDate);Te.setHours(0,0,0,0);const Ke=Te.getTime(),qe=1e3*60*60*24;for(const Oe of M){const g2=new Date(Oe.year,Oe.month-1,Oe.day);g2.setHours(0,0,0,0);const Q2=Math.floor((g2.getTime()-Ke)/qe)*24,n2=Math.max(0,Z-Q2),x2=Math.min(Oe.hours.length,U-Q2);n2{var ce,Te;const M=N0();if(!Array.isArray(M))return 0;const Z=f.value;if(Z===Ve.HOUR){let Ke=0;for(const qe of M)Ke+=qe.hours.length;return Ke*rp}if(Z===Ve.QUARTER){let Ke=0;for(const qe of M)Ke+=qe.quarters.length;return Ke*60}if(Z===Ve.WEEK){let Ke=0;for(const qe of M)Ke+=((ce=qe.weeks)==null?void 0:ce.length)||0;return Ke*60}if(Z===Ve.MONTH)return M.length*60;if(Z===Ve.YEAR)return M.length*360;let U=0;for(const Ke of M)U+=((Te=Ke.days)==null?void 0:Te.length)||0;return U*30}),ra=Ce(0);let _0=null;const na=Ce(new Map),P0=()=>{const M=new Map,Z=g.value.startDate.getTime(),U=e2.value,ce=U+Ye.value;for(const Te of B.value)if(Te.type==="milestone-group"&&Te.children)for(const Ke of Te.children){const qe=new Date(Ke.startDate||"");if(!isNaN(qe.getTime())){const g2=Math.floor((qe.getTime()-Z)/864e5)*30+15-12,H2=g2-12,Q2=g2+12;let n2=!1,x2="none";Q2<=U+12?(n2=!0,x2="left"):H2>=ce-12&&(n2=!0,x2="right"),M.set(Ke.id,{left:g2,originalLeft:g2,isSticky:n2,stickyPosition:x2})}}else if(Te.type==="milestone"){const Ke=new Date(Te.startDate||"");if(!isNaN(Ke.getTime())){const qe=(Ke.getTime()-Z)/864e5,g2=Math.floor(qe)*30+15-12,H2=g2-12,Q2=g2+12;let n2=!1,x2="none";Q2<=U+12?(n2=!0,x2="left"):H2>=ce-12&&(n2=!0,x2="right"),M.set(Te.id,{left:g2,originalLeft:g2,isSticky:n2,stickyPosition:x2})}}na.value=M},ea=M=>{const Z=[];return na.value.forEach((U,ce)=>{ce!==M&&Z.push({id:ce,left:U.left,originalLeft:U.originalLeft,isSticky:U.isSticky,stickyPosition:U.stickyPosition,priority:U.originalLeft})}),Z},ta=()=>{mt.value=!0},sa=()=>{if(mt.value=!1,C.value){const M=C.value.clientWidth;Math.abs(M-Ye.value)>1&&(Ye.value=M)}F2.value=!0,setTimeout(()=>{F2.value=!1},300)},Ea=()=>{F2.value=!0,Pe.value={},i2.value++,z2&&clearTimeout(z2),z2=setTimeout(()=>{F2.value=!1,z2=null,dt()},300)},wr=M=>{mt.value||ga.value||(j.value=M,window.dispatchEvent(new CustomEvent("timeline-task-hover",{detail:M})))},Rt=Ge(()=>{const U=B.value.length*51;return Math.max(U,400,ra.value)}),y0=M=>{ga.value||(j.value=M.detail)},We=M=>{const Z=M.detail;z(Z)},se=()=>{m2.value=kt()},X2=M=>{ve.value||n("milestone-double-click",M)},Et=M=>{r.onMilestoneSave&&typeof r.onMilestoneSave=="function"&&r.onMilestoneSave(M),window.dispatchEvent(new CustomEvent("milestone-data-updated",{detail:{milestone:M}}))},kt=()=>N0(),h0=()=>{U0.clear()},ya=()=>{const M=[],Z=new Date(g.value.startDate);for(;Z<=g.value.endDate;){const U=Z.getFullYear(),ce=Z.getMonth()+1,Te=[],Ke=new Date(U,ce,0).getDate();for(let qe=1;qe<=Ke;qe++){const Oe=new Date(U,ce-1,qe),g2=Oe.getDay(),H2=g2===0||g2===6;Te.push({day:qe,date:Oe,label:String(qe).padStart(2,"0"),isToday:I2(Oe),isWeekend:H2})}M.push({year:U,month:ce,yearMonthLabel:s(U,ce),startDate:new Date(Z),endDate:new Date(U,ce,0),days:Te}),Z.setMonth(Z.getMonth()+1)}return M},Ra=(M,Z)=>{if(Z===0||Z===6)return!1;const U=r.workingHours;if(!U)return!1;if(U.morning){const{start:ce,end:Te}=U.morning;if(M>=ce&&M<=Te)return!0}if(U.afternoon){const{start:ce,end:Te}=U.afternoon;if(M>=ce&&M<=Te)return!0}return!1},ge=()=>{const M=[],Z=new Date(g.value.startDate);for(;Z<=g.value.endDate;){const U=Z.getFullYear(),ce=Z.getMonth()+1,Te=Z.getDate(),Ke=[],qe=Z.getDay();for(let Oe=0;Oe<24;Oe++){const g2=new Date(U,ce-1,Te,Oe);Ke.push({hour:Oe,label:`${String(Oe).padStart(2,"0")}:00`,shortLabel:String(Oe).padStart(2,"0"),date:g2,isToday:I2(g2)&&Oe===new Date().getHours(),isWorkingHour:Ra(Oe,qe),isWeekend:qe===0||qe===6})}M.push({year:U,month:ce,day:Te,date:new Date(Z),dateLabel:`${U}/${String(ce).padStart(2,"0")}/${String(Te).padStart(2,"0")}`,isToday:I2(Z),hours:Ke}),Z.setDate(Z.getDate()+1)}return M},he=()=>{const M=[],Z=new Date(g.value.startDate),U=new Date(g.value.endDate),ce=new Date(Z),Te=ce.getDay()||7;ce.setDate(ce.getDate()-(Te-1));const Ke=new Date(ce);for(;Ke<=U;){const g2=new Date(Ke);g2.setDate(g2.getDate()+6),M.push({weekStart:new Date(Ke),weekEnd:new Date(g2),label:`${Ke.getDate()}`,isToday:t2(Ke,g2),subDays:Je(Ke),belongsToYear:Ke.getFullYear(),belongsToMonth:Ke.getMonth()+1}),Ke.setDate(Ke.getDate()+7)}const qe=new Map;for(const g2 of M){const H2=g2,Q2=H2.belongsToYear,n2=H2.belongsToMonth,x2=`${Q2}-${n2}`;qe.has(x2)||qe.set(x2,{year:Q2,month:n2,yearMonthLabel:s(Q2,n2),startDate:new Date(Q2,n2-1,1),endDate:new Date(Q2,n2,0),weeks:[],isWeekView:!0}),qe.get(x2).weeks.push(g2)}return Array.from(qe.values()).sort((g2,H2)=>g2.year!==H2.year?g2.year-H2.year:g2.month-H2.month)},Je=M=>{const Z=[];for(let U=0;U<7;U++){const ce=new Date(M);ce.setDate(ce.getDate()+U),Z.push({date:new Date(ce),dayOfWeek:ce.getDay()})}return Z},t2=(M,Z)=>{const U=new Date;return U.setHours(0,0,0,0),U>=M&&U<=Z},$2=(M,Z)=>{let U=0;for(let ce=0;ce{if(f.value=M,U2.value=!0,h0(),M===Ve.HOUR){const Z=K();u2=!0,g.value={...g.value,startDate:Z.startDate,endDate:Z.endDate},u2=!1}else if(M===Ve.DAY){const Z=y();u2=!0,g.value={...g.value,startDate:Z.startDate,endDate:Z.endDate},u2=!1}if(M===Ve.WEEK){const Z=x();u2=!0,g.value={...g.value,startDate:Z.startDate,endDate:Z.endDate},u2=!1}if(M===Ve.MONTH){const Z=T();u2=!0,g.value={...g.value,startDate:Z.startDate,endDate:Z.endDate},u2=!1}if(M===Ve.QUARTER){const Z=F();u2=!0,g.value={...g.value,startDate:Z.startDate,endDate:Z.endDate},u2=!1}if(M===Ve.YEAR){const Z=F();u2=!0,g.value={...g.value,startDate:Z.startDate,endDate:Z.endDate},u2=!1}m2.value=kt(),Zt(()=>{n("timeline-scale-changed",M),window.dispatchEvent(new CustomEvent("timeline-scale-updated")),setTimeout(()=>{window.dispatchEvent(new CustomEvent("timeline-force-recalculate")),setTimeout(()=>{Tt()},100)},50)})},I2=M=>{const Z=new Date;return M.getDate()===Z.getDate()&&M.getMonth()===Z.getMonth()&&M.getFullYear()===Z.getFullYear()},m2=N4(kt());let u2=!1;Dt(()=>[g.value.startDate,g.value.endDate],()=>{u2||(h0(),m2.value=kt())});let G2=!1;Dt(()=>[m2.value,g.value.startDate,g.value.endDate],()=>{G2||Zt(()=>{Tt(),G2=!0})});const Tt=(M=0)=>{F2.value=!0,lt.value=!0;const Z=new Date,U=g.value.startDate,ce=new Date(Z.getFullYear(),Z.getMonth(),Z.getDate());let Te;if(f.value===Ve.YEAR||f.value===Ve.QUARTER){const n2=F();Te=new Date(n2.startDate.getFullYear(),n2.startDate.getMonth(),n2.startDate.getDate())}else if(f.value===Ve.MONTH){const n2=T();Te=new Date(n2.startDate.getFullYear(),n2.startDate.getMonth(),n2.startDate.getDate())}else Te=new Date(U.getFullYear(),U.getMonth(),U.getDate());const Ke=ce.getTime()-Te.getTime(),qe=Math.floor(Ke/(1e3*60*60*24));let Oe;if(f.value===Ve.HOUR){const n2=Z.getHours(),x2=Z.getMinutes(),It=qe*b.value,e0=n2*40,l0=x2/60*40;Oe=It+e0+l0}else if(f.value===Ve.QUARTER){const n2=ce.getFullYear(),x2=Te.getFullYear(),It=240,e0=60;Oe=(n2-x2)*It;const d0=ce.getMonth()+1;let i0=1;d0>=1&&d0<=3||(d0>=4&&d0<=6?i0=2:d0>=7&&d0<=9?i0=3:i0=4),Oe+=(i0-1)*e0;let Wt,F0;i0===1?(Wt=new Date(n2,0,1),F0=new Date(n2,2,31)):i0===2?(Wt=new Date(n2,3,1),F0=new Date(n2,5,30)):i0===3?(Wt=new Date(n2,6,1),F0=new Date(n2,8,30)):(Wt=new Date(n2,9,1),F0=new Date(n2,11,31));const ar=Math.floor((ce.getTime()-Wt.getTime())/(1e3*60*60*24)),Q0=Math.floor((F0.getTime()-Wt.getTime())/(1e3*60*60*24))+1,G0=ar/Q0*e0;Oe+=G0}else if(f.value===Ve.MONTH){const n2=ce.getFullYear(),x2=ce.getMonth()+1,It=Te.getFullYear(),e0=Te.getMonth()+1,l0=(n2-It)*12+(x2-e0),d0=60;Oe=l0*d0;const i0=ce.getDate(),Wt=new Date(n2,x2,0).getDate(),F0=i0/Wt*d0;Oe+=F0}else if(f.value===Ve.YEAR){const n2=m2.value;let x2=0;const It=180;let e0=!1;for(const l0 of n2){const d0=l0.halfYears||[];for(const i0 of d0){const Wt=new Date(i0.startDate),F0=new Date(i0.endDate);if(Wt.setHours(0,0,0,0),F0.setHours(0,0,0,0),ce=Wt&&ce<=F0){const ar=F0.getTime()-Wt.getTime(),G0=(ce.getTime()-Wt.getTime())/ar;x2+=G0*It,e0=!0;break}x2+=It}if(e0)break}Oe=x2}else Oe=qe*b.value;const g2=C.value;if(!g2){M<10&&setTimeout(()=>Tt(M+1),60);return}const H2=g2.clientWidth;if(H2===0&&M<10){setTimeout(()=>Tt(M+1),60);return}const Q2=Oe-H2/2+15;typeof g2.scrollTo=="function"?g2.scrollTo({left:Math.max(0,Q2),behavior:"smooth"}):g2.scrollLeft=Math.max(0,Q2),setTimeout(()=>{lt.value=!1,f.value===Ve.HOUR&&(U2.value=!1),setTimeout(()=>{F2.value=!1},300)},1500)},St=Ge(()=>{if(f.value!==Ve.YEAR)return-1;const M=new Date;M.setHours(0,0,0,0);const Z=m2.value;if(!Z||Z.length===0)return-1;let U=0;const ce=180;for(const Te of Z){const Ke=Te.halfYears||[];for(const qe of Ke){const Oe=new Date(qe.startDate),g2=new Date(qe.endDate);if(Oe.setHours(0,0,0,0),g2.setHours(0,0,0,0),M=Oe&&M<=g2){const H2=g2.getTime()-Oe.getTime(),n2=(M.getTime()-Oe.getTime())/H2;return U+n2*ce}U+=ce}}return U}),st=Ge(()=>{if(f.value!==Ve.YEAR)return!1;const M=new Date,Z=new Date(M.getFullYear(),M.getMonth(),M.getDate()),U=F(),ce=U.startDate,Te=U.endDate;return Z>=ce&&Z<=Te}),Qt=()=>{if(B.value.length===0){jt();return}const M=[];for(const Q2 of B.value)Q2.startDate&&M.push(new Date(Q2.startDate));if(M.length===0){jt();return}let Z=1/0;for(const Q2 of M){const n2=Q2.getTime();n2{const M=new Date,Z=g.value.startDate,U=new Date(M.getFullYear(),M.getMonth(),M.getDate()),ce=new Date(Z.getFullYear(),Z.getMonth(),Z.getDate()),Te=U.getTime()-ce.getTime(),Ke=Math.floor(Te/(1e3*60*60*24));if(Ke<0||U>g.value.endDate)return;const qe=Ke*30,Oe=C.value;if(!Oe)return;const g2=Oe.clientWidth,H2=qe-g2/2+15;Oe.scrollTo({left:Math.max(0,H2),behavior:"smooth"}),setTimeout(()=>{const Q2=document.querySelectorAll(".day-column.today");for(const n2 of Q2)n2.classList.add("today-highlight"),setTimeout(()=>{n2.classList.remove("today-highlight")},2e3)},500)},Kt=M=>{const Z=typeof M=="string"?new Date(M):M,U=g.value.startDate,ce=new Date(Z.getFullYear(),Z.getMonth(),Z.getDate());let Te;if(f.value===Ve.YEAR||f.value===Ve.QUARTER){const n2=F();Te=new Date(n2.startDate.getFullYear(),n2.startDate.getMonth(),n2.startDate.getDate())}else if(f.value===Ve.MONTH){const n2=T();Te=new Date(n2.startDate.getFullYear(),n2.startDate.getMonth(),n2.startDate.getDate())}else Te=new Date(U.getFullYear(),U.getMonth(),U.getDate());const Ke=ce.getTime()-Te.getTime(),qe=Math.floor(Ke/(1e3*60*60*24));let Oe;if(f.value===Ve.HOUR){const n2=Z.getHours(),x2=Z.getMinutes(),It=qe*b.value,e0=n2*40,l0=x2/60*40;Oe=It+e0+l0}else if(f.value===Ve.QUARTER){const n2=ce.getFullYear(),x2=Te.getFullYear(),It=240,e0=60;Oe=(n2-x2)*It;const d0=Math.floor(ce.getMonth()/3);Oe+=d0*e0;const i0=d0*3,Wt=new Date(n2,i0,1),F0=Math.floor((ce.getTime()-Wt.getTime())/(1e3*60*60*24));Oe+=F0/91*e0}else if(f.value===Ve.YEAR){const n2=ce.getFullYear(),x2=Te.getFullYear(),It=360;Oe=(n2-x2)*It;const l0=new Date(n2,0,1),d0=Math.floor((ce.getTime()-l0.getTime())/(1e3*60*60*24));Oe+=d0/365*It}else if(f.value===Ve.MONTH){const n2=ce.getFullYear(),x2=ce.getMonth(),It=Te.getFullYear(),e0=Te.getMonth(),l0=60;Oe=((n2-It)*12+(x2-e0))*l0;const i0=ce.getDate(),Wt=new Date(n2,x2+1,0).getDate();Oe+=i0/Wt*l0}else f.value===Ve.WEEK?Oe=qe/7*60:Oe=qe*b.value;const g2=C.value;if(!g2)return;const H2=g2.clientWidth,Q2=Oe-H2/2;g2.scrollTo({left:Math.max(0,Q2),behavior:"smooth"})},Pt=M=>{window.dispatchEvent(new CustomEvent("task-updated",{detail:M}))},z=M=>{ve.value||n("edit-task",M)},Re=(M,Z)=>{ve.value||n("click-task",M,Z)},Pe=N4({}),i2=Ce(0),D2=Ce(null),w2=Ce(null),R2=Ce(0),J2=Ce(0),N2=Ce(0),T2=Ce(0),W2=Ce(0),_2=Ce(0);function dt(){if(D2.value){const M=D2.value.offsetWidth,Z=Rt.value,U=e2.value,ce=qt.value;N2.value=M4;const Te=M4/3;let Ke=Math.max(0,U-Te);if(M<=M4)Ke=0;else{const H2=M-M4;Ke=Math.min(Ke,H2)}W2.value=Ke;const qe=Math.min(Z,yw);T2.value=qe,R2.value=N2.value,J2.value=qe;const Oe=qe/3;let g2=Math.max(0,ce-Oe);if(Z<=qe)g2=0;else{const H2=Z-qe;g2=Math.min(g2,H2)}_2.value=g2}}function Ft(M){if(!D2.value)return;const Z=D2.value.getBoundingClientRect();Pe.value={...Pe.value,[M.id]:{left:M.left-Z.left,top:M.top-Z.top,width:M.width,height:M.height}},setTimeout(()=>{dt()},200)}const p0=M=>{window.dispatchEvent(new CustomEvent("taskbar-drag-end",{detail:M}))},Z2=M=>{window.dispatchEvent(new CustomEvent("taskbar-resize-end",{detail:M}))},Va=M=>{window.dispatchEvent(new CustomEvent("context-menu",{detail:M}))},va=M=>{if(Bt.value){F2.value=!0;const Z=Bt.value.scrollWidth-Bt.value.clientWidth,U=Math.max(0,Math.min(M,Z));Bt.value.scrollTo({left:U,behavior:"smooth"}),setTimeout(()=>{F2.value=!1},1e3)}},Ka=M=>{window.dispatchEvent(new CustomEvent("milestone-drag-end",{detail:M}))};Ca(()=>{Zt(()=>{setTimeout(()=>{Tt()},60)}),window.addEventListener("task-row-double-click",We),window.addEventListener("task-list-hover",y0),window.addEventListener("task-list-vertical-scroll",$t),window.addEventListener("locale-changed",se),window.addEventListener("splitter-drag-start",ta),window.addEventListener("splitter-drag-end",sa),window.addEventListener("timeline-container-resized",Ea),window.addEventListener("milestone-click-locate",P2),window.addEventListener("drag-boundary-check",Gr),window.addEventListener("taskbar-highlighted",Fa),Zt(()=>{const M=document.querySelector(".timeline-body"),Z=document.querySelector(".timeline"),U=document.querySelector(".gantt-panel-right");if(S0.value=M,C.value=Z,E.value=U,M&&(ra.value=M.clientHeight,_0=new ResizeObserver(ce=>{for(const Te of ce)ra.value=Te.contentRect.height}),_0.observe(M)),Z){e2.value=Z.scrollLeft,Ye.value=Z.clientWidth;const ce=new ResizeObserver(Te=>{for(const Ke of Te){const qe=Ke.contentRect.width;Math.abs(qe-Ye.value)>1&&(Ye.value=qe,F2.value=!0,z2&&clearTimeout(z2),z2=setTimeout(()=>{F2.value=!1,z2=null},300))}});ce.observe(Z),_0||(_0=ce)}}),setTimeout(()=>{Tt(),dt()},200),window.addEventListener("resize",dt)});const $t=M=>{const{scrollTop:Z}=M.detail;qt.value=Z,o0(),S0.value&&Math.abs(S0.value.scrollTop-Z)>1&&(S0.value.scrollTop=Z)},R0=M=>{const Z=M.target;if(!Z)return;const U=Z.scrollTop;qt.value=U,fe=!0,o0(),!ga.value&&U>=0&&window.dispatchEvent(new CustomEvent("timeline-vertical-scroll",{detail:{scrollTop:U}}))};Dt(()=>B.value.length,()=>{Zt(()=>{dt()})},{immediate:!0}),Dt(B,M=>{pe.clear();const Z=U=>{pe.set(U.id,U),U.children&&U.children.length>0&&U.children.forEach(Z)};M.forEach(Z)},{immediate:!0});const ga=Ce(!1),Tr=Ce(0),m0=Ce(0),ja=Ce(0),Qa=Ce(0),Bt=Ce(null),S0=Ce(null);let s0=null;const zt=Ce(!1);let C0=null;const Fa=()=>{const M=Z=>{var U;Z.buttons===1&&(ga.value=!0,Tr.value=Z.pageX,ja.value=((U=Bt.value)==null?void 0:U.scrollLeft)||0,Bt.value&&(Bt.value.style.cursor="grabbing",Bt.value.style.userSelect="none"),document.addEventListener("mousemove",da),document.addEventListener("mouseup",$a)),document.removeEventListener("mousemove",M)};document.addEventListener("mousemove",M),setTimeout(()=>{document.removeEventListener("mousemove",M)},5e3)},aa=M=>{var Te,Ke;const Z=M.target,U=Z.closest(".timeline-header"),ce=Z.closest(".timeline-body");if(!(!U&&!ce)){if(ce){const qe=Z.closest(".task-bar");if(qe){const Oe=qe.classList.contains("highlighted"),g2=qe.classList.contains("primary-highlight");if(!Oe&&!g2)return}else if([".milestone","button","input","select","textarea",".custom-task-content",".progress-bar",".task-name",".task-controls"].some(H2=>Z.closest(H2)))return}ga.value=!0,Tr.value=M.pageX,m0.value=M.pageY,ja.value=((Te=Bt.value)==null?void 0:Te.scrollLeft)||0,!S0.value&&Bt.value&&(S0.value=Bt.value.querySelector(".timeline-body")),Qa.value=((Ke=S0.value)==null?void 0:Ke.scrollTop)||0,Bt.value&&(Bt.value.style.cursor="grabbing",Bt.value.style.userSelect="none"),M.preventDefault(),document.addEventListener("mousemove",da),document.addEventListener("mouseup",$a)}},da=M=>{!ga.value||!Bt.value||(M.preventDefault(),s0!==null&&cancelAnimationFrame(s0),s0=requestAnimationFrame(()=>{if(!Bt.value)return;const Z=M.pageX,U=M.pageY,ce=(Z-Tr.value)*1.5,Te=(U-m0.value)*1.5;if(Bt.value.scrollLeft=ja.value-ce,S0.value){const Ke=Qa.value-Te;S0.value.scrollTop=Ke;const qe=document.querySelector(".task-list-body");qe&&(qe.scrollTop=Ke)}s0=null}))},$a=()=>{ga.value=!1,s0!==null&&(cancelAnimationFrame(s0),s0=null),Bt.value&&(Bt.value.style.cursor="grab",Bt.value.style.userSelect="auto"),j.value=null,document.removeEventListener("mousemove",da),document.removeEventListener("mouseup",$a)},Mr=M=>{var qe;const Z=M.target;if(!Z)return;const U=Z.scrollLeft;if(e2.value=U,window.dispatchEvent(new CustomEvent("close-all-taskbar-menus")),fe=!0,Ye.value===0&&(Ye.value=Z.clientWidth),U2.value&&U>0&&(U2.value=!1),o0(),f.value===Ve.HOUR){xe.value=!0,Xe&&clearTimeout(Xe),Xe=setTimeout(()=>{xe.value=!1},200);return}const ce=Z.scrollWidth,Te=Z.clientWidth,Ke=ce-Te;j2.value=Ke>0?U/Ke:0,V2.value=U>20,_t.value=U{var Oe;xe.value=!1,(Oe=Z.classList)==null||Oe.remove("scrolling")},500)},Ga=M=>{if(zt.value||!Bt.value)return;zt.value=!0;const Z=()=>{if(!Bt.value||!zt.value)return;const U=Bt.value.scrollLeft,ce=Bt.value.scrollWidth-Bt.value.clientWidth;let Te;if(M==="left"?Te=Math.max(0,U-d7):Te=Math.min(ce,U+d7),Te===U){mr();return}Bt.value.scrollLeft=Te,window.dispatchEvent(new CustomEvent("timeline-auto-scroll",{detail:{scrollDelta:Te-U}})),C0=window.setTimeout(Z,16)};Z()},mr=()=>{zt.value=!1,C0&&(clearTimeout(C0),C0=null)},Gr=M=>{const{mouseX:Z,isDragging:U}=M.detail;if(!U||!Bt.value){mr();return}const ce=Bt.value.getBoundingClientRect(),Te=Z-ce.left;Te<=s7&&Bt.value.scrollLeft>0?Ga("left"):Te>=ce.width-s7&&Bt.value.scrollLeft{mr(),it(),window.removeEventListener("task-row-double-click",We),window.removeEventListener("task-list-hover",y0),window.removeEventListener("task-list-vertical-scroll",$t),window.removeEventListener("locale-changed",se),window.removeEventListener("splitter-drag-start",ta),window.removeEventListener("splitter-drag-end",sa),window.removeEventListener("timeline-container-resized",Ea),window.removeEventListener("milestone-click-locate",P2),window.removeEventListener("drag-boundary-check",Gr),_0&&(_0.disconnect(),_0=null),window.removeEventListener("resize",dt),document.removeEventListener("mousemove",da),document.removeEventListener("mouseup",$a)});const D1=(M,Z)=>{n("delete",M,Z)},Br=M=>{const Z=B.value.find(Ke=>Ke.id===M.targetTaskId);if(!Z||!Z.predecessor)return;const ce=Vr(Z.predecessor).filter(Ke=>Ke!==M.sourceTaskId),Te={...Z,predecessor:ce.length>0?ce:void 0};n("link-deleted",{sourceTaskId:M.sourceTaskId,targetTaskId:M.targetTaskId,updatedTask:Te}),Pt(Te),h0()},Nr=Ge(()=>{if(f.value!==Ve.MONTH)return{};const M={},Z=m2.value;for(const U of Z){const Te=U.year;M[Te]||(M[Te]=[]),M[Te].push(U)}return M}),K1=Ge(()=>{if(f.value!==Ve.WEEK)return[];const M=[],Z=m2.value;for(let U=0;U{if(f.value!==Ve.WEEK)return[];const M=[],Z=m2.value;for(let U=0;U{if(f.value!==Ve.YEAR)return[];try{const M=Lt();return Array.isArray(M)?M:[]}catch{return[]}});a({scrollToTasks:Qt,scrollToToday:jt,scrollToTodayCenter:Tt,scrollToDate:Kt,timelineConfig:g,updateTimeScale:E2,highlightedTaskId:_,clearHighlight:ne});const l=M=>{n("start-timer",M)},N=M=>{n("stop-timer",M)},de=M=>{const Z=M.startDate||M.endDate||"";return{...M,type:"milestone",startDate:Z,endDate:M.startDate||M.endDate}};Dt(()=>B.value.length,()=>{X(),P0()},{immediate:!0});let Fe=null;const Ee=(M=50)=>{Fe&&clearTimeout(Fe),Fe=setTimeout(()=>{r2(),Fe=null},M)},r2=()=>{let M=null;f.value===Ve.HOUR?M=K():f.value===Ve.DAY?M=y():f.value===Ve.WEEK?M=x():f.value===Ve.MONTH?M=T():(f.value===Ve.QUARTER||f.value===Ve.YEAR)&&(M=F()),M&&(h0(),u2=!0,g.value.startDate=M.startDate,g.value.endDate=M.endDate,u2=!1,m2.value=kt())};Dt(()=>{var M;return(M=B.value)==null?void 0:M.length},(M,Z)=>{M!==Z&&X(),Z===0&&M>0&&Ee(50)}),Dt(Ye,(M,Z)=>{mt.value||(!Z||Z===0||Math.abs(M-Z)>50)&&M>0&&Ee(100)},{immediate:!0});let o2=null;Dt([m2,Ye],()=>{mt.value||(o2&&clearTimeout(o2),o2=setTimeout(()=>{Pe.value={},i2.value++,Zt(()=>{setTimeout(()=>{dt()},200)}),o2=null},100))}),Dt(()=>B.value,M=>{X();const Z=new Set;for(const ce of M)Z.add(ce.id);const U={};for(const ce in Pe.value){const Te=parseInt(ce);Z.has(Te)&&(U[Te]=Pe.value[Te])}Pe.value=U},{deep:!0});const P2=M=>{const{scrollLeft:Z,smooth:U}=M.detail,ce=document.querySelector(".timeline"),Te=document.querySelector(".timeline-body");let Ke=null;if(ce&&ce.scrollWidth>ce.clientWidth?Ke=ce:Te&&Te.scrollWidth>Te.clientWidth&&(Ke=Te),Ke){const qe=Ke.scrollWidth-Ke.clientWidth,Oe=Math.min(Math.max(0,Z),qe);U?Ke.scrollTo({left:Oe,behavior:"smooth"}):Ke.scrollLeft=Oe}},et=()=>{let M,Z;if(f.value===Ve.MONTH){const qe=T();M=qe.startDate,Z=qe.endDate}else M=new Date(g.value.startDate),Z=new Date(g.value.endDate);const U={},ce=new Date(M);for(ce.setDate(1);ce<=Z;){const qe=ce.getFullYear(),Oe=ce.getMonth()+1,H2=new Date(qe,Oe,0).getDate(),Q2=new Date,n2=qe===Q2.getFullYear()&&Oe===Q2.getMonth()+1;U[qe]||(U[qe]={year:qe,yearLabel:`${qe}年`,months:[]}),U[qe].months.push({year:qe,month:Oe,monthLabel:d(Oe),startDate:new Date(qe,Oe-1,1),endDate:new Date(qe,Oe,0),isToday:n2,dayCount:H2}),ce.setMonth(ce.getMonth()+1)}const Te=[];let Ke=0;for(const qe of Object.values(U))for(const Oe of qe.months){const g2=[];for(let x2=1;x2<=Oe.dayCount;x2++){const It=new Date(Oe.year,Oe.month-1,x2);g2.push({day:x2,date:new Date(It),dayOfWeek:It.getDay(),isToday:I2(It),isWeekend:It.getDay()===0||It.getDay()===6})}const H2=60,Q2=Ke,n2=Ke+H2;Te.push({year:Oe.year,month:Oe.month,yearMonthLabel:s(Oe.year,Oe.month),startDate:Oe.startDate,endDate:Oe.endDate,isMonthView:!0,monthData:{monthLabel:Oe.monthLabel,isToday:Oe.isToday,dayCount:Oe.dayCount},subDays:g2,days:g2.map(x2=>({day:x2.day,date:x2.date,label:String(x2.day).padStart(2,"0"),isToday:x2.isToday,isWeekend:x2.isWeekend})),_debugInfo:{monthStartPosition:Q2,monthEndPosition:n2,monthWidth:H2}}),Ke+=H2}return Te},ct=()=>{const M=g.value.startDate,Z=g.value.endDate,U=[],ce=M.getFullYear(),Te=Z.getFullYear();for(let Ke=ce;Ke<=Te;Ke++){const qe=[];for(let Oe=1;Oe<=4;Oe++){const g2=(Oe-1)*3,H2=new Date(Ke,g2,1),Q2=g2+2,n2=new Date(Ke,Q2+1,0);qe.push({quarter:Oe,label:`Q${Oe}`,fullLabel:`${Ke}年第${Oe}季度`,startDate:H2,endDate:n2,isToday:Ct(H2,n2),year:Ke})}U.push({year:Ke,yearLabel:String(Ke),startDate:new Date(Ke,0,1),endDate:new Date(Ke,11,31),quarters:qe})}return U},Ct=(M,Z)=>{const U=new Date;return U.setHours(0,0,0,0),U>=M&&U<=Z},Lt=()=>{const M=g.value.startDate,Z=g.value.endDate,U=[],ce=M.getFullYear(),Te=Z.getFullYear();for(let Ke=ce;Ke<=Te;Ke++){const qe=[{label:o("halfYearFirst"),startDate:new Date(Ke,0,1),endDate:new Date(Ke,6,0),width:180},{label:o("halfYearSecond"),startDate:new Date(Ke,6,1),endDate:new Date(Ke,11,31),width:180}];U.push({year:Ke,startDate:new Date(Ke,0,1),endDate:new Date(Ke,11,31),halfYears:qe,width:360})}return U},v0=M=>{n("add-predecessor",M)},O0=M=>{n("add-successor",M)};return(M,Z)=>(q(),me("div",{ref_key:"timelineContainer",ref:Bt,class:"timeline",onMousedown:aa,onScroll:Mr},[h("div",tw,[f.value===we(Ve).YEAR&&kr.value&&kr.value.length>0?(q(),me(c2,{key:0},[h("div",aw,[(q(!0),me(c2,null,ut(kr.value,U=>(q(),me("div",{key:`year-${U.year}`,class:"timeline-year",style:{width:"360px"}},[h("div",rw,le(U.year),1)]))),128))]),h("div",nw,[(q(!0),me(c2,null,ut(kr.value,U=>(q(),me(c2,{key:`halfyear-${U.year}`},[(q(!0),me(c2,null,ut(U.halfYears||[],ce=>(q(),me("div",{key:`halfyear-${U.year}-${ce.label}`,class:"timeline-half-year-item",style:{width:"180px"}},[h("div",sw,le(ce.label),1)]))),128))],64))),128))])],64)):f.value===we(Ve).MONTH?(q(),me(c2,{key:1},[h("div",dw,[(q(!0),me(c2,null,ut(Nr.value,(U,ce)=>(q(),me("div",{key:`year-${ce}`,class:"timeline-year",style:{width:"720px"}},[h("div",iw,le(ce),1)]))),128))]),h("div",ow,[(q(!0),me(c2,null,ut(m2.value,U=>{var ce,Te;return q(),me("div",{key:`month-${U.year}-${U.month}`,class:B2(["timeline-month-item",{today:(ce=U.monthData)==null?void 0:ce.isToday}]),style:{width:"59px"}},[h("div",pw,le((Te=U.monthData)==null?void 0:Te.monthLabel),1)],2)}),128))])],64)):f.value===we(Ve).QUARTER?(q(),me(c2,{key:2},[h("div",Dw,[(q(!0),me(c2,null,ut(m2.value,U=>(q(),me("div",{key:`year-${U.year}`,class:"timeline-year",style:{width:"240px"}},[h("div",Aw,le(U.yearLabel),1)]))),128))]),h("div",gw,[(q(!0),me(c2,null,ut(m2.value,U=>(q(),me(c2,{key:`quarters-${U.year}`},[(q(!0),me(c2,null,ut(U.quarters,ce=>(q(),me("div",{key:`quarter-${U.year}-${ce.quarter}`,class:B2(["timeline-quarter-item",{today:ce.isToday}]),style:{width:"60px"}},[h("div",Iw,le(ce.label),1)],2))),128))],64))),128))])],64)):f.value===we(Ve).HOUR?(q(),me("div",{key:3,class:"hour-header-container",style:at({width:`${Na.value}px`})},[h("div",mw,[(q(!0),me(c2,null,ut(Ua.value,U=>(q(),me("div",{key:`date-${U.year}-${U.month}-${U.day}`,class:"timeline-day-item",style:at({position:"absolute",width:`${U.hours.length*40}px`,left:`${(U.hourOffset||0)*40}px`})},[h("div",lw,le(U.dateLabel),1)],4))),128))]),h("div",cw,[(q(!0),me(c2,null,ut(Ua.value,U=>(q(),me(c2,{key:`hours-${U.year}-${U.month}-${U.day}`},[(q(!0),me(c2,null,ut(U.hours,(ce,Te)=>(q(),me("div",{key:`hour-${U.year}-${U.month}-${U.day}-${ce.hour}`,class:B2(["timeline-hour-item",{today:ce.isToday,"non-working-hour":!ce.isWorkingHour}]),style:at({position:"absolute",width:"40px",left:`${(U.hourOffset+Te)*40}px`})},[h("div",uw,le(ce.shortLabel),1)],6))),128))],64))),128))])],4)):(q(),me(c2,{key:4},[h("div",fw,[(q(!0),me(c2,null,ut(m2.value,U=>(q(),me("div",{key:`year-month-${U.year}-${U.month}`,class:"timeline-month",style:at({width:U.isWeekView?`${(U.weeks||[]).length*60}px`:`${(U.days||[]).length*30}px`})},[h("div",hw,le(U.yearMonthLabel),1)],4))),128)),(q(!0),me(c2,null,ut(K1.value,(U,ce)=>(q(),me("div",{key:`flag-${ce}`,class:"month-first-flag",style:at({left:`${U.left}px`,transform:"translateX(-50%)"})},[Z[1]||(Z[1]=h("div",{class:"flag-pole"},null,-1)),h("div",Sw,le(U.date),1)],4))),128))]),h("div",Cw,[(q(!0),me(c2,null,ut(m2.value,U=>(q(),me(c2,{key:`timeline-${U.year}-${U.month}`},[U.isWeekView&&U.weeks?(q(),me("div",{key:0,class:"timeline-month-weeks",style:at({width:`${(U.weeks||[]).length*60}px`})},[(q(!0),me(c2,null,ut(U.weeks||[],ce=>(q(),me("div",{key:`week-${U.year}-${U.month}-${ce.label}`,class:B2(["timeline-week",{today:ce.isToday}])},[h("div",vw,le(ce.label),1),Z[2]||(Z[2]=h("div",{class:"week-sub-days"},null,-1))],2))),128))],4)):(q(),me("div",{key:1,class:"timeline-month-days",style:at({width:`${U.days.length*30}px`})},[(q(!0),me(c2,null,ut(U.days,ce=>(q(),me("div",{key:`day-${U.year}-${U.month}-${ce.day}`,class:B2(["timeline-day",{today:ce.isToday,weekend:ce.isWeekend&&!ce.isToday}])},[h("div",Fw,le(ce.label),1)],2))),128))],4))],64))),128))])],64))]),h("div",{class:"timeline-body",onScroll:R0},[h("div",{ref_key:"bodyContentRef",ref:D2,class:"timeline-body-content"},[ht(JF,{tasks:B.value,"task-bar-positions":Pe.value,width:N2.value,height:T2.value,"offset-left":W2.value,"offset-top":_2.value,"highlighted-task-id":_.value,"highlighted-task-ids":Ne.value,"hovered-task-id":j.value,"vertical-lines":Yr.value,"show-vertical-lines":f.value===we(Ve).WEEK},null,8,["tasks","task-bar-positions","width","height","offset-left","offset-top","highlighted-task-id","highlighted-task-ids","hovered-task-id","vertical-lines","show-vertical-lines"]),ht(ew,{ref_key:"linkDragGuideRef",ref:w2,active:!!te.value&&!!Se.value,width:N2.value,height:T2.value,"offset-left":W2.value,"offset-top":_2.value},null,8,["active","width","height","offset-left","offset-top"]),st.value&&St.value>=0?(q(),me("div",{key:0,class:"today-line-year-view",style:at({left:`${St.value}px`,height:`${Rt.value}px`})},null,4)):h2("",!0),h("div",{class:"day-columns",style:at({height:`${Rt.value}px`})},[f.value===we(Ve).HOUR?(q(),me("div",{key:0,class:"hour-columns-container",style:at({width:`${Na.value}px`,height:`${Rt.value}px`,position:"relative"})},[(q(!0),me(c2,null,ut(Ua.value,U=>(q(),me(c2,{key:`day-col-${U.year}-${U.month}-${U.day}`},[(q(!0),me(c2,null,ut(U.hours,(ce,Te)=>(q(),me("div",{key:`hour-col-${U.year}-${U.month}-${U.day}-${ce.hour}`,class:B2(["hour-column",{today:ce.isToday,weekend:ce.isWeekend,"working-hour":ce.isWorkingHour,"rest-hour":!ce.isWorkingHour&&!ce.isWeekend}]),style:at({position:"absolute",width:"40px",height:`${Rt.value}px`,left:`${(U.hourOffset+Te)*40}px`})},Z[3]||(Z[3]=[h("div",{class:"quarter-hour-lines"},[h("div",{class:"quarter-line",style:{left:"10px"}}),h("div",{class:"quarter-line",style:{left:"20px"}}),h("div",{class:"quarter-line",style:{left:"30px"}})],-1)]),6))),128))],64))),128))],4)):h2("",!0),f.value===we(Ve).YEAR?(q(!0),me(c2,{key:1},ut(kr.value,U=>(q(),me(c2,{key:`year-col-${U.year}`},[(q(!0),me(c2,null,ut(U.halfYears||[],ce=>(q(),me("div",{key:`halfyear-col-${U.year}-${ce.label}`,class:"half-year-column",style:at({width:"180px",height:`${Rt.value}px`})},null,4))),128))],64))),128)):h2("",!0),f.value===we(Ve).QUARTER?(q(),me("div",{key:2,class:"quarter-columns-container",style:at({width:`${Na.value}px`,height:`${Rt.value}px`,position:"relative"})},[(q(!0),me(c2,null,ut(m2.value,(U,ce)=>(q(),me(c2,{key:`quarter-col-${U.year}`},[(q(!0),me(c2,null,ut(U.quarters,(Te,Ke)=>(q(),me("div",{key:`quarter-col-${U.year}-${Te.quarter}`,class:B2(["quarter-column",{today:Te.isToday}]),style:at({position:"absolute",width:"60px",height:`${Rt.value}px`,left:`${ce*240+Ke*60}px`})},null,6))),128))],64))),128))],4)):f.value!==we(Ve).HOUR&&f.value!==we(Ve).YEAR&&f.value!==we(Ve).QUARTER?(q(!0),me(c2,{key:3},ut(m2.value,U=>{var ce;return q(),me(c2,{key:`day-col-${U.year}-${U.month}`},[U.isMonthView?(q(),me("div",{key:0,class:B2(["month-column",{today:(ce=U.monthData)==null?void 0:ce.isToday}]),style:at({width:"59px",height:`${Rt.value}px`})},null,6)):U.isWeekView&&U.weeks?(q(),me("div",{key:1,class:"month-week-columns",style:at({width:`${(U.weeks||[]).length*60}px`,height:`${Rt.value}px`})},[(q(!0),me(c2,null,ut(U.weeks||[],Te=>(q(),me("div",{key:`week-col-${U.year}-${U.month}-${Te.label}`,class:B2(["week-column",{today:Te.isToday}]),style:at({height:`${Rt.value}px`,width:"60px"})},[(q(!0),me(c2,null,ut(Te.subDays||[],(Ke,qe)=>(q(),me("div",{key:`subday-col-${qe}`,class:B2(["sub-day-column",{weekend:Ke.dayOfWeek===0||Ke.dayOfWeek===6,today:I2(Ke.date)}]),style:at({height:`${Rt.value}px`,width:`${b.value}px`})},null,6))),128))],6))),128))],4)):(q(),me("div",{key:2,class:"month-day-columns",style:at({width:`${(U.days||[]).length*30}px`,height:`${Rt.value}px`})},[(q(!0),me(c2,null,ut(U.days||[],Te=>(q(),me("div",{key:`day-col-${U.year}-${U.month}-${Te.day}`,class:B2(["day-column",{weekend:Te.isWeekend,today:Te.isToday}]),style:at({height:`${Rt.value}px`})},null,6))),128))],4))],64)}),128)):h2("",!0)],4),h("div",{class:"task-bar-container",style:at({height:`${Rt.value}px`})},[h("div",{class:"task-rows",style:at({height:`${Rt.value}px`})},[(q(!0),me(c2,null,ut(Z0.value,({task:U,originalIndex:ce})=>{var Te,Ke,qe;return q(),me("div",{key:U.id,class:B2(["task-row",{"task-row-hovered":j.value===U.id}]),style:at({top:`${ce*51}px`}),onMouseenter:Oe=>wr(U.id),onMouseleave:Z[0]||(Z[0]=Oe=>wr(null))},[U.type==="milestone-group"&&U.children?(q(!0),me(c2,{key:0},ut(U.children,Oe=>(q(),r0(t7,{key:Oe.id,date:Oe.startDate||"","row-height":50,"day-width":b.value,"start-date":f.value===we(Ve).YEAR||f.value===we(Ve).QUARTER?F().startDate:f.value===we(Ve).MONTH?T().startDate:g.value.startDate,"timeline-start":g.value.startDate,"timeline-end":g.value.endDate,"period-width":b.value,name:Oe.name,milestone:de(Oe),"scroll-left":e2.value,"container-width":Ye.value,"milestone-id":Oe.id,"other-milestones":ea(Oe.id),"timeline-data":m2.value,"current-time-scale":f.value,"allow-drag-and-resize":r.allowDragAndResize&&!ve.value,"is-in-highlight-mode":ve.value,onMilestoneDoubleClick:X2,"onUpdate:milestone":Et,onDragEnd:Ka},null,8,["date","day-width","start-date","timeline-start","timeline-end","period-width","name","milestone","scroll-left","container-width","milestone-id","other-milestones","timeline-data","current-time-scale","allow-drag-and-resize","is-in-highlight-mode"]))),128)):U.type==="milestone"?(q(),r0(t7,{key:U.id,date:U.startDate||"","row-height":50,"day-width":b.value,"start-date":f.value===we(Ve).YEAR||f.value===we(Ve).QUARTER?F().startDate:f.value===we(Ve).MONTH?T().startDate:g.value.startDate,"timeline-start":g.value.startDate,"timeline-end":g.value.endDate,"period-width":b.value,name:U.name,milestone:de(U),"scroll-left":e2.value,"container-width":Ye.value,"milestone-id":U.id,"other-milestones":ea(U.id),"timeline-data":m2.value,"current-time-scale":f.value,"allow-drag-and-resize":r.allowDragAndResize&&!ve.value,"is-in-highlight-mode":ve.value,onMilestoneDoubleClick:X2,"onUpdate:milestone":Et,onDragEnd:Ka},null,8,["date","day-width","start-date","timeline-start","timeline-end","period-width","name","milestone","scroll-left","container-width","milestone-id","other-milestones","timeline-data","current-time-scale","allow-drag-and-resize","is-in-highlight-mode"])):U.type!=="milestone-group"&&U.type!=="milestone"?(q(),r0(_F,{key:`taskbar-${U.id}-${i2.value}`,task:U,"row-index":ce,"row-height":50,"day-width":b.value,"start-date":f.value===we(Ve).YEAR?F().startDate:f.value===we(Ve).MONTH?T().startDate:g.value.startDate,"is-parent":U.isParent,"scroll-left":e2.value,"container-width":Ye.value,"hide-bubbles":F2.value,"timeline-data":f.value===we(Ve).HOUR?Ua.value:m2.value,"current-time-scale":f.value,"task-bar-config":r.taskBarConfig,"allow-drag-and-resize":r.allowDragAndResize&&!ve.value,"is-highlighted":Ne.value.has(U.id),"is-primary-highlight":_.value===U.id,"is-in-highlight-mode":ve.value,"drag-link-mode":te.value,"is-link-drag-source":((Te=Se.value)==null?void 0:Te.id)===U.id,"is-valid-link-target":((Ke=Me.value)==null?void 0:Ke.id)===U.id&&w.value===!0,"is-invalid-link-target":((qe=Me.value)==null?void 0:qe.id)===U.id&&w.value===!1,"all-tasks":B.value,"onUpdate:task":Pt,onBarMounted:Ft,onClick:Oe=>Re(U,Oe),onDblclick:Oe=>z(U),onDragEnd:p0,onResizeEnd:Z2,onScrollToPosition:va,onContextMenu:Va,onStartTimer:l,onStopTimer:N,onAddPredecessor:v0,onAddSuccessor:O0,onDelete:D1,onDeleteLink:Br,onLongPress:oe,onLinkDragStart:Ie,onLinkDragMove:Ze,onLinkDragEnd:Le},Ei({_:2},[M.$slots["custom-task-content"]?{name:"custom-task-content",fn:z0(Oe=>[u1(M.$slots,"custom-task-content",Ln({ref_for:!0},Oe),void 0,!0)]),key:"0"}:void 0,M.$slots["task-bar-context-menu"]?{name:"task-bar-context-menu",fn:z0(Oe=>[u1(M.$slots,"task-bar-context-menu",Ln({ref_for:!0},Oe),void 0,!0)]),key:"1"}:void 0]),1032,["task","row-index","day-width","start-date","is-parent","scroll-left","container-width","hide-bubbles","timeline-data","current-time-scale","task-bar-config","allow-drag-and-resize","is-highlighted","is-primary-highlight","is-in-highlight-mode","drag-link-mode","is-link-drag-source","is-valid-link-target","is-invalid-link-target","all-tasks","onClick","onDblclick"])):h2("",!0)],46,ww)}),128))],4)],4)],512)],32)],544))}}),Qw=J0(Rw,[["__scopeId","data-v-57c6fd2e"]]),bw={class:"gantt-toolbar"},Hw={class:"toolbar-left"},Mw={key:0,class:"gantt-btn-group gantt-add-btn-group"},kw=["title"],xw=["title"],Uw={key:1,class:"gantt-btn-group gantt-expand-collapse-btn-group"},Ew=["title"],Kw=["title"],Lw={key:2,class:"gantt-btn-group"},Ww=["title"],_w=["title"],Pw={class:"toolbar-right"},Ow={key:0,class:"segmented-control time-scale-segmented"},Vw={class:"segmented-track"},jw=["title","onClick"],$w={key:1,class:"language-dropdown"},Gw=["title"],Yw={class:"lang-text"},qw={key:0,class:"language-menu"},zw=["onClick"],Xw={class:"option-text"},Jw={key:0,class:"check-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},Zw=["title"],eT=["title"],tT={key:0,class:"gantt-btn-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},aT={key:1,class:"gantt-btn-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},rT={class:"icon-fallback"},nT=["title"],sT={key:0,class:"gantt-btn-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},dT={key:1,class:"gantt-btn-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},iT={class:"icon-fallback"},oT={key:0,class:"confirm-dialog"},pT={class:"dialog-content"},DT={class:"dialog-message"},AT={class:"dialog-actions"},np="gantt-theme",gT="gantt-locale",IT=x0({__name:"GanttToolbar",props:{config:{default:()=>({})},timeScale:{default:void 0},theme:{default:void 0},fullscreen:{type:Boolean,default:void 0},expandAll:{type:Boolean,default:void 0},onAddTask:{type:Function,default:void 0},onAddMilestone:{type:Function,default:void 0},onTodayLocate:{type:Function,default:void 0},onExportCsv:{type:Function,default:void 0},onExportPdf:{type:Function,default:void 0},onLanguageChange:{type:Function,default:void 0},onThemeChange:{type:Function,default:void 0},onFullscreenChange:{type:Function,default:void 0},onTimeScaleChange:{type:Function,default:void 0},onExpandAll:{type:Function,default:void 0},onCollapseAll:{type:Function,default:void 0},onSettingsConfirm:{type:Function,default:void 0}},emits:["add-task","add-milestone","today-locate","export-csv","export-pdf","language-change","theme-change","fullscreen-change","time-scale-change","expand-all","collapse-all"],setup(e,{emit:a}){const t=e,r=a,n={zh:"zh-CN",en:"en-US"},s=()=>{if(typeof window<"u"){const Ie=localStorage.getItem(np);return Ie!==null?Ie==="dark":window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}return!1},{locale:d,setLocale:i,getTranslation:o}=Fr(),D=Ce("zh"),A=Ce(s()),m=Ce(!1),c=Ce(!1),g=Ce(Ve.DAY);Dt(()=>t.timeScale,Ie=>{Ie&&Ie!==g.value&&(g.value=Ie)},{immediate:!0}),Dt(()=>t.theme,Ie=>{if(Ie){const ae=Ie==="dark";A.value!==ae&&(A.value=ae,document.documentElement.setAttribute("data-theme",Ie))}},{immediate:!0}),Dt(()=>t.fullscreen,Ie=>{Ie!==void 0&&m.value!==Ie&&(m.value=Ie)},{immediate:!0});const f=Ie=>o(Ie),v=Ge(()=>f("language")),B=Ce(!1),C=Ce(null),E=Ce(null),b=()=>{t.onAddTask&&typeof t.onAddTask=="function"?t.onAddTask():r("add-task")},H=()=>{t.onAddMilestone&&typeof t.onAddMilestone=="function"?t.onAddMilestone():r("add-milestone")},X=()=>{t.onTodayLocate&&typeof t.onTodayLocate=="function"?t.onTodayLocate():r("today-locate")},re=()=>{t.onExportCsv&&typeof t.onExportCsv=="function"?t.onExportCsv():r("export-csv")},J=()=>{t.onExportPdf&&typeof t.onExportPdf=="function"?t.onExportPdf():r("export-pdf")},K=()=>{t.onExpandAll&&typeof t.onExpandAll=="function"?t.onExpandAll():r("expand-all")},y=()=>{t.onCollapseAll&&typeof t.onCollapseAll=="function"?t.onCollapseAll():r("collapse-all")},x=()=>{c.value=!c.value},T=Ie=>{D.value=Ie,c.value=!1;const ae=n[D.value];i(ae),t.onLanguageChange&&typeof t.onLanguageChange=="function"?t.onLanguageChange(ae):r("language-change",ae),E.value=ae,C.value="language",B.value=!0},F=async()=>{if(!C.value||E.value===null){ve();return}if(t.onSettingsConfirm&&typeof t.onSettingsConfirm=="function")try{if(!await t.onSettingsConfirm(C.value,E.value)){ve();return}}catch{ve();return}C.value==="theme"?j():C.value==="language"&&_(),ve()},j=()=>{typeof window<"u"&&typeof E.value=="boolean"&&localStorage.setItem(np,E.value?"dark":"light")},_=()=>{typeof window<"u"&&typeof E.value=="string"&&localStorage.setItem(gT,E.value)},Ne=()=>{ve()},ve=()=>{B.value=!1,C.value=null,E.value=null},ne=()=>{const Ie=!A.value;A.value=Ie,document.documentElement.setAttribute("data-theme",Ie?"dark":"light"),t.onThemeChange&&typeof t.onThemeChange=="function"?t.onThemeChange(Ie):r("theme-change",Ie),E.value=Ie,C.value="theme",B.value=!0},oe=()=>{m.value=!m.value,window.dispatchEvent(new CustomEvent("fullscreen-toggle",{detail:m.value})),t.onFullscreenChange&&typeof t.onFullscreenChange=="function"?t.onFullscreenChange(m.value):r("fullscreen-change",m.value)},te={hour:{value:Ve.HOUR,label:()=>f("timeScaleHour")},day:{value:Ve.DAY,label:()=>f("timeScaleDay")},week:{value:Ve.WEEK,label:()=>f("timeScaleWeek")},month:{value:Ve.MONTH,label:()=>f("timeScaleMonth")},quarter:{value:Ve.QUARTER,label:()=>f("timeScaleQuarter")},year:{value:Ve.YEAR,label:()=>f("timeScaleYear")}},Se=["hour","day","week","month","year"],Me=Ge(()=>{var ke;const ae=(((ke=t.config)==null?void 0:ke.timeScaleDimensions)??Se).filter(ze=>ze in te);return ae.length>0?ae:[...Se]}),w=Ge(()=>{var ke;const Ie=Me.value,ae=(ke=t.config)==null?void 0:ke.defaultTimeScale;return ae&&Ie.includes(ae)?ae:Ie.includes("day")?"day":Ie[0]??"day"}),P=Ie=>{g.value=Ie,t.onTimeScaleChange&&typeof t.onTimeScaleChange=="function"?t.onTimeScaleChange(Ie):r("time-scale-change",Ie)};let G=!1;Dt(()=>w.value,Ie=>{const ae=te[Ie].value;(g.value!==ae||!G)&&(G=!0,P(ae))},{immediate:!0});const ee=Ge(()=>Me.value.find(ae=>te[ae].value===g.value)??w.value),ue=()=>{const Ie=Me.value.findIndex(W=>W===ee.value),ae=Me.value.length;if(ae===0||Ie<0)return{transform:"translateX(0%)",width:`${100/ae||25}%`};const ke=100/ae;return{transform:`translateX(${Ie*100}%)`,width:`${ke}%`}},pe=Ie=>{!Ie.target.closest(".language-dropdown")&&c.value&&(c.value=!1)};return Ca(()=>{const Ie=d.value;D.value=Ie==="zh-CN"?"zh":"en",document.documentElement.setAttribute("data-theme",A.value?"dark":"light"),document.addEventListener("click",pe),window.matchMedia&&typeof window<"u"&&!localStorage.getItem(np)&&window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",ae=>{A.value=ae.matches,document.documentElement.setAttribute("data-theme",ae.matches?"dark":"light")})}),Da(()=>{document.removeEventListener("click",pe)}),(Ie,ae)=>(q(),me("div",bw,[h("div",Hw,[Ie.config.showAddTask!==!1||Ie.config.showAddMilestone!==!1?(q(),me("div",Mw,[Ie.config.showAddTask!==!1?(q(),me("button",{key:0,class:"gantt-btn-group-item",title:f("addTask"),onClick:b},[ae[0]||(ae[0]=h("svg",{class:"gantt-btn-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[h("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),h("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)),Ut(" "+le(f("addTask")),1)],8,kw)):h2("",!0),Ie.config.showAddMilestone!==!1?(q(),me("button",{key:1,class:"gantt-btn-group-item",title:f("addMilestone"),onClick:H},[ae[1]||(ae[1]=H1('',1)),Ut(" "+le(f("addMilestone")),1)],8,xw)):h2("",!0)])):h2("",!0),Ie.config.showExpandCollapse!==!1?(q(),me("div",Uw,[h("button",{class:"gantt-btn-group-item",title:f("expandAll"),onClick:K},[ae[2]||(ae[2]=h("svg",{class:"gantt-btn-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[h("polyline",{points:"6 9 12 15 18 9"})],-1)),Ut(" "+le(f("expandAll")),1)],8,Ew),h("button",{class:"gantt-btn-group-item",title:f("collapseAll"),onClick:y},[ae[3]||(ae[3]=h("svg",{class:"gantt-btn-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[h("polyline",{points:"18 15 12 9 6 15"})],-1)),Ut(" "+le(f("collapseAll")),1)],8,Kw)])):h2("",!0),Ie.config.showExportCsv!==!1||Ie.config.showExportPdf!==!1?(q(),me("div",Lw,[Ie.config.showExportCsv!==!1?(q(),me("button",{key:0,class:"gantt-btn-group-item",title:f("exportCsv"),onClick:re},[ae[4]||(ae[4]=H1('',1)),Ut(" "+le(f("exportCsv")),1)],8,Ww)):h2("",!0),Ie.config.showExportPdf!==!1?(q(),me("button",{key:1,class:"gantt-btn-group-item",title:f("exportPdf"),onClick:J},[ae[5]||(ae[5]=H1('',1)),Ut(" "+le(f("exportPdf")),1)],8,_w)):h2("",!0)])):h2("",!0)]),h("div",Pw,[Ie.config.showTimeScale!==!1?(q(),me("div",Ow,[h("div",Vw,[h("div",{class:"segmented-thumb",style:at(ue())},null,4)]),(q(!0),me(c2,null,ut(Me.value,ke=>(q(),me("button",{key:ke,class:B2(["segmented-item",{active:ee.value===ke}]),title:f("timeScaleTooltip"),onClick:ze=>P(te[ke].value)},le(te[ke].label()),11,jw))),128))])):h2("",!0),Ie.config.showLanguage!==!1?(q(),me("div",$w,[h("button",{class:"toolbar-lang-btn",title:f("languageTooltip"),onClick:x},[ae[6]||(ae[6]=h("svg",{class:"gantt-btn-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[h("circle",{cx:"12",cy:"12",r:"10"}),h("line",{x1:"2",y1:"12",x2:"22",y2:"12"}),h("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"})],-1)),h("span",Yw,le(v.value),1),ae[7]||(ae[7]=h("svg",{class:"dropdown-arrow",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[h("polyline",{points:"6,9 12,15 18,9"})],-1))],8,Gw),c.value?(q(),me("div",qw,[(q(),me(c2,null,ut(["zh","en"],ke=>h("div",{key:ke,class:B2(["language-option",{active:D.value===ke}]),onClick:ze=>T(ke)},[h("span",Xw,le(ke==="zh"?"中文":"English"),1),D.value===ke?(q(),me("svg",Jw,ae[8]||(ae[8]=[h("polyline",{points:"20,6 9,17 4,12"},null,-1)]))):h2("",!0)],10,zw)),64))])):h2("",!0)])):h2("",!0),Ie.config.showTodayLocate!==!1?(q(),me("button",{key:2,class:"toolbar-icon-btn today-locate-btn",title:f("todayLocateTooltip"),onClick:X},ae[9]||(ae[9]=[H1('',1)]),8,Zw)):h2("",!0),Ie.config.showTheme!==!1?(q(),me("button",{key:3,class:"toolbar-icon-btn",title:f(A.value?"lightMode":"darkMode"),onClick:ne},[A.value?(q(),me("svg",tT,ae[10]||(ae[10]=[H1('',9)]))):(q(),me("svg",aT,ae[11]||(ae[11]=[h("path",{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"},null,-1)]))),h("span",rT,le(A.value?"☀️":"🌙"),1)],8,eT)):h2("",!0),Ie.config.showFullscreen!==!1?(q(),me("button",{key:4,class:"toolbar-icon-btn",title:f(m.value?"exitFullscreen":"fullscreen"),onClick:oe},[m.value?(q(),me("svg",sT,ae[12]||(ae[12]=[h("path",{d:"M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3"},null,-1)]))):(q(),me("svg",dT,ae[13]||(ae[13]=[h("path",{d:"M8 3H5a2 2 0 00-2 2v3m18 0V5a2 2 0 00-2-2h-3m0 18h3a2 2 0 002-2v-3M3 16v3a2 2 0 002 2h3"},null,-1)]))),h("span",iT,le(m.value?"⇲":"⇱"),1)],8,nT)):h2("",!0)]),B.value?(q(),me("div",oT,[h("div",pT,[h("p",DT,le(f("confirmDialogMessage")),1),h("div",AT,[h("button",{class:"gantt-btn gantt-btn-default",onClick:Ne},le(f("cancel")),1),h("button",{class:"gantt-btn gantt-btn-primary",onClick:F},le(f("confirm")),1)])])])):h2("",!0)]))}}),mT=J0(IT,[["__scopeId","data-v-8df0c217"]]),lT={class:"multi-select-predecessor"},cT={class:"form-label",for:"predecessor-select"},uT={class:"predecessor-selector"},fT={key:0,class:"selected-tags"},hT=["onClick"],ST={class:"select-wrapper"},CT={value:""},vT=["value"],FT=x0({__name:"MultiSelectPredecessor",props:{modelValue:{default:()=>[]},tasks:{},currentTaskId:{default:void 0},label:{default:"前置任务"},placeholder:{default:"请选择前置任务"}},emits:["update:modelValue"],setup(e,{emit:a}){const t=e,r=a,n=Ce(""),s=Ge(()=>t.modelValue||[]),d=Ge(()=>s.value.map(A=>t.tasks.find(m=>m.id===A)).filter(A=>A)),i=Ge(()=>t.tasks.filter(A=>A.type==="task"&&A.id!==t.currentTaskId&&!s.value.includes(A.id))),o=()=>{if(n.value){const A=Number(n.value);if(!s.value.includes(A)){const m=[...s.value,A];r("update:modelValue",m)}n.value=""}},D=A=>{const m=s.value.filter(c=>c!==A);r("update:modelValue",m)};return Dt(()=>t.modelValue,()=>{n.value=""},{immediate:!0}),(A,m)=>(q(),me("div",lT,[h("label",cT,le(A.label),1),h("div",uT,[d.value.length>0?(q(),me("div",fT,[(q(!0),me(c2,null,ut(d.value,c=>(q(),me("span",{key:c.id,class:"predecessor-tag"},[Ut(le(c.name)+" ("+le(c.id)+") ",1),h("button",{type:"button",class:"remove-tag-btn",onClick:g=>D(c.id)}," × ",8,hT)]))),128))])):h2("",!0),h("div",ST,[Mt(h("select",{id:"predecessor-select","onUpdate:modelValue":m[0]||(m[0]=c=>n.value=c),class:"form-select",onChange:o},[h("option",CT,le(A.placeholder),1),(q(!0),me(c2,null,ut(i.value,c=>(q(),me("option",{key:c.id,value:c.id},le(c.name)+" (ID: "+le(c.id)+") ",9,vT))),128))],544),[[ui,n.value]])])])]))}}),wT=J0(FT,[["__scopeId","data-v-3a17beda"]]),TT={class:"drawer-header",style:{display:"flex","align-items":"center","justify-content":"flex-start",gap:"8px"}},BT={class:"drawer-title",style:{margin:"0"}},NT={key:0,class:"drawer-timer",style:{display:"flex","align-items":"center",gap:"6px","margin-left":"8px"}},yT={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",style:{display:"block",margin:"0 auto"}},RT={key:0,class:"timer-dot",style:{background:"#67c23a",width:"7px",height:"7px","border-radius":"50%","margin-right":"5px",animation:"pulse 1s infinite"}},QT={class:"close-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",style:{"vertical-align":"middle"}},bT={class:"drawer-body"},HT={class:"form-group"},MT={class:"form-label",for:"task-name"},kT=["placeholder"],xT={key:0,class:"error-text"},UT={class:"form-group"},ET={class:"form-label",for:"task-type"},KT={value:"story"},LT={value:"task"},WT={value:"bug"},_T={key:0,class:"error-text"},PT={class:"form-group"},OT={class:"form-label",for:"task-assignee"},VT={value:""},jT=["value"],$T={class:"form-group"},GT={class:"form-label",for:"task-parent"},YT={value:void 0},qT=["value"],zT={class:"form-row"},XT={class:"form-group"},JT={class:"form-label",for:"task-start-date"},ZT={key:0,class:"error-text"},eB={class:"form-group"},tB={class:"form-label",for:"task-end-date"},aB={key:0,class:"error-text"},rB={class:"form-row"},nB={class:"form-group"},sB={class:"form-label",for:"task-estimated-hours"},dB={class:"form-group"},iB={class:"form-label",for:"task-actual-hours"},oB={class:"form-group"},pB={class:"form-label",for:"task-progress"},DB={class:"progress-container"},AB={class:"progress-input-group"},gB={class:"form-group"},IB={class:"form-label",for:"task-description"},mB=["placeholder"],lB={class:"drawer-footer"},cB={class:"footer-left"},uB=["disabled"],fB={key:0,class:"loading-spinner"},hB={class:"footer-right"},SB=["disabled"],CB={key:0,class:"loading-spinner"},vB=x0({__name:"TaskDrawer",props:{visible:{type:Boolean,default:!1},task:{default:null},isEdit:{type:Boolean,default:!1},onDelete:{type:Function,default:void 0},assigneeOptions:{default:()=>[{value:"zhangsan",label:"张三"},{value:"lisi",label:"李四"},{value:"wangwu",label:"王五"},{value:"zhaoliu",label:"赵六"},{value:"qianqi",label:"钱七"}]}},emits:["update:visible","submit","close","delete","start-timer","stop-timer"],setup(e,{emit:a}){const t=e,r=a,{t:n}=Fr(),{showMessage:s}=p6(),d=Ce(!1),i=Ce(t.visible),o=Ce(!1),D=Ce(0),A=Ce(null),m=Ge(()=>{var O;return(O=t.task)==null?void 0:O.isTimerRunning}),c=Ge(()=>{var O;return(O=t.task)==null?void 0:O.timerStartTime}),g=Ge(()=>{var O;return((O=t.task)==null?void 0:O.timerElapsedTime)||0}),f=Ge(()=>{const O=Math.floor(D.value/1e3),ie=Math.floor(O/3600),fe=Math.floor(O%3600/60),He=O%60;return`${String(ie).padStart(2,"0")}:${String(fe).padStart(2,"0")}:${String(He).padStart(2,"0")}`}),v=()=>{m.value&&c.value?D.value=Date.now()-c.value+g.value:D.value=g.value};Dt(()=>{var O,ie,fe;return[(O=t.task)==null?void 0:O.isTimerRunning,(ie=t.task)==null?void 0:ie.timerStartTime,(fe=t.task)==null?void 0:fe.timerElapsedTime]},()=>{v()});const B=Ce(!1);Dt(()=>{var O;return(O=t.task)==null?void 0:O.isTimerRunning},O=>{B.value=!!O,!O&&A.value&&(clearInterval(A.value),A.value=null)},{immediate:!0}),Dt([B,c,g],()=>{A.value&&(clearInterval(A.value),A.value=null),B.value&&c.value?(v(),A.value=window.setInterval(v,1e3)):v()},{immediate:!0}),Da(()=>{A.value&&clearInterval(A.value)});const C=Ge(()=>{var O;return((O=t.task)==null?void 0:O.type)==="story"?"yes-no-cancel":"confirm-cancel"}),E=Ge(()=>{var O,ie,fe;return((O=t.task)==null?void 0:O.type)==="story"?n.value.confirmDeleteStory.replace("{name}",((ie=t.task)==null?void 0:ie.name)||""):n.value.confirmDeleteTask.replace("{name}",((fe=t.task)==null?void 0:fe.name)||"")}),b=gs({id:0,name:"",type:"task",assignee:"",startDate:"",endDate:"",predecessor:[],estimatedHours:0,actualHours:0,progress:0,description:"",parentId:void 0,isTimerRunning:!1,timerStartTime:void 0,timerEndTime:void 0,timerElapsedTime:0,children:void 0}),H=Ce([]),X=Ge(()=>H.value.filter(O=>{var ie;return O.id!==((ie=t.task)==null?void 0:ie.id)&&(O.type==="story"||O.type==="task")}).map(O=>({...O,displayName:`${O.name} (${re(O.type||"task")})`}))),re=O=>{var ie;return((ie=n.value.taskTypeMap)==null?void 0:ie[O])||O},J=Ge(()=>({"--progress-percent":`${b.progress||0}%`})),K=Ce("0"),y=O=>{const ie=O.target;let fe=ie.value;fe=fe.replace(/[^\d]/g,""),ie.value=fe,K.value=fe},x=()=>{const O=K.value;let ie=parseInt(O)||0;ie<0||isNaN(ie)?ie=0:ie>100&&(ie=100),b.progress=ie,K.value=ie.toString()},T=O=>{const ie=O.target;let fe=parseFloat(ie.value);isNaN(fe)||fe<0?fe=0:fe>99999&&(fe=99999),b.estimatedHours=Math.round(fe*100)/100},F=O=>{const ie=O.target;let fe=parseFloat(ie.value);isNaN(fe)||fe<0?fe=0:fe>99999&&(fe=99999),b.actualHours=Math.round(fe*100)/100},j=O=>{const ie=O.target;setTimeout(()=>{ie.select()},0)},_=O=>{const ie=O.key,fe=["Backspace","Delete","Tab","Escape","Enter","ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Home","End","Control","Meta","Alt","Shift"],He=/^\d$/.test(ie),be=fe.includes(ie);O.ctrlKey||O.metaKey||!He&&!be&&O.preventDefault()},Ne=(O,ie)=>{if(!O)return"";if(typeof O=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(O.trim())){if(ie==="start")return`${O} 00:00`;if(ie==="end"){const fe=new Date(O);fe.setDate(fe.getDate()+1);const He=fe.getFullYear(),be=String(fe.getMonth()+1).padStart(2,"0"),Ze=String(fe.getDate()).padStart(2,"0");return`${He}-${be}-${Ze} 00:00`}}return O},ve=gs({name:"",type:"",startDate:"",endDate:""});Dt(()=>t.visible,O=>{if(i.value=O,O){if(t.task&&t.isEdit){ne();const ie={...t.task};ie.startDate=Ne(ie.startDate,"start"),ie.endDate=Ne(ie.endDate,"end"),Zt(()=>{Object.assign(b,ie)})}else t.task&&!t.isEdit?(ne(),b.parentId=t.task.parentId??void 0,b.predecessor=t.task.predecessor??[]):ne();window.dispatchEvent(new CustomEvent("request-task-list"))}}),Dt(i,O=>{r("update:visible",O)}),Dt(()=>t.task,O=>{O&&!t.isEdit&&(b.parentId=O.parentId??void 0)},{immediate:!0});const ne=()=>{Object.assign(b,{name:"",type:"task",assignee:"",startDate:"",endDate:"",predecessor:[],estimatedHours:0,actualHours:0,progress:0,description:"",parentId:void 0,isTimerRunning:!1,timerStartTime:void 0,timerEndTime:void 0,timerElapsedTime:0,children:void 0}),Object.keys(ve).forEach(O=>{ve[O]=""})},oe=()=>{var ie;let O=!0;return Object.keys(ve).forEach(fe=>{ve[fe]=""}),(ie=b.name)!=null&&ie.trim()?b.name.length>50&&(ve.name=n.value.taskNameTooLong,O=!1):(ve.name=n.value.taskNameRequired,O=!1),b.type||(ve.type=n.value.taskTypeRequired,O=!1),b.startDate||(ve.startDate=n.value.startDateRequired,O=!1),b.endDate?b.startDate&&new Date(b.endDate){i.value=!1,r("close")},Se=()=>{te()},Me=async()=>{if(oe())try{d.value=!0;const O={...b,id:t.isEdit&&t.task?t.task.id:Date.now()};r("submit",O),te()}catch{}finally{d.value=!1}},w=()=>{o.value=!0},P=O=>{let ie="";O&&typeof O=="object"&&"message"in O&&typeof O.message=="string"?ie=O.message:ie=String(O),s(ie,"error",{closable:!0})},G=()=>{if(o.value=!1,t.task&&t.isEdit)try{d.value=!0,r("delete",t.task),te()}catch(O){P(O)}finally{d.value=!1}},ee=()=>{o.value=!1},ue=()=>{if(o.value=!1,t.task&&t.isEdit)try{d.value=!0,r("delete",t.task,!0),te()}catch(O){P(O)}finally{d.value=!1}},pe=()=>{if(o.value=!1,t.task&&t.isEdit)try{d.value=!0,r("delete",t.task,!1),te()}catch(O){P(O)}finally{d.value=!1}},Ie=O=>{H.value=O.detail||[]};Ca(()=>{window.addEventListener("task-list-updated",Ie),window.dispatchEvent(new CustomEvent("request-task-list"))}),Da(()=>{window.removeEventListener("task-list-updated",Ie)}),Dt(()=>b.progress,O=>{K.value=(O||0).toString()},{immediate:!0}),Dt(()=>t.visible,O=>{O&&t.task&&t.task.type!=="story"&&(D.value=t.task.timerElapsedTime||0,t.task.isTimerRunning||A.value&&(clearInterval(A.value),A.value=null))},{immediate:!0});const ae=O=>{const ie=Date.now();t.task&&typeof t.task=="object"&&(Object.assign(t.task,{timerStartTime:ie,isTimerRunning:!0,timerElapsedTime:0,timerStartDesc:O||""}),r("start-timer",t.task)),D.value=0,B.value=!0,v(),A.value&&(clearInterval(A.value),A.value=null),window.dispatchEvent(new CustomEvent("start-timer",{detail:t.task}))},ke=()=>{t.task&&typeof t.task=="object"&&r("stop-timer",t.task),B.value=!1,A.value&&(clearInterval(A.value),A.value=null),v(),window.dispatchEvent(new CustomEvent("stop-timer",{detail:t.task}))},ze=Ce(!1),W=Ce("");function $(){var O;W.value=((O=t.task)==null?void 0:O.name)||"",ze.value=!0}function Be(){ze.value=!1}function R(O){ze.value=!1,ae(O)}const ye=O=>{var He;const ie=O.target.value,fe=(He=t.assigneeOptions)==null?void 0:He.find(be=>be.value===ie);fe&&(b.assigneeName=fe.label)};return(O,ie)=>{var fe,He,be,Ze;return q(),me(c2,null,[i.value?(q(),me("div",{key:0,class:"drawer-overlay",onClick:Se},[h("div",{class:"drawer-container",onClick:ie[12]||(ie[12]=Jt(()=>{},["stop"]))},[h("div",TT,[h("h3",BT,le(O.isEdit?we(n).editTask:we(n).newTask),1),((fe=t.task)==null?void 0:fe.type)!=="story"&&O.isEdit?(q(),me("div",NT,[B.value?(q(),me("button",{key:1,class:"timer-btn stop minimal",title:"停止计时",style:{width:"24px",height:"24px",background:"#f44336",border:"none",padding:"0",margin:"0","box-shadow":"none",cursor:"pointer","border-radius":"50%",display:"flex","align-items":"center","justify-content":"center",transition:"background 0.2s"},onClick:Jt(ke,["stop"])},ie[14]||(ie[14]=[h("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none"},[h("circle",{cx:"12",cy:"12",r:"11",stroke:"#f44336","stroke-width":"2",fill:"#f44336"}),h("rect",{x:"7",y:"7",width:"10",height:"10",fill:"#fff",rx:"1.5"})],-1)]))):(q(),me("button",{key:0,class:"timer-btn start minimal",title:"开始计时",style:{width:"24px",height:"24px",background:"#4caf50",border:"none",padding:"0",margin:"0","box-shadow":"none",cursor:"pointer","border-radius":"50%",display:"flex","align-items":"center","justify-content":"center",transition:"background 0.2s"},onClick:Jt($,["stop"])},[(q(),me("svg",yT,ie[13]||(ie[13]=[h("circle",{cx:"12",cy:"12",r:"11",stroke:"#4caf50","stroke-width":"2",fill:"#4caf50"},null,-1),h("polygon",{points:"9,7 18,12 9,17",fill:"#fff"},null,-1)])))])),B.value?(q(),me("span",{key:2,class:B2(["timer-badge",{"timer-active":B.value}]),style:{"margin-left":"8px","font-size":"13px","font-weight":"700",padding:"2px 10px","border-radius":"10px",background:"#fffbe6",color:"#e6a23c","box-shadow":"0 0 0 1px #ffe58f",display:"inline-flex","align-items":"center","min-width":"80px","justify-content":"center"}},[B.value?(q(),me("span",RT)):h2("",!0),Ut(" "+le(f.value),1)],2)):h2("",!0)])):h2("",!0),ie[16]||(ie[16]=h("div",{style:{flex:"1"}},null,-1)),h("button",{class:"drawer-close-btn",type:"button",onClick:te},[(q(),me("svg",QT,ie[15]||(ie[15]=[h("line",{x1:"18",y1:"6",x2:"6",y2:"18"},null,-1),h("line",{x1:"6",y1:"6",x2:"18",y2:"18"},null,-1)])))])]),h("div",bT,[h("form",{class:"task-form",onSubmit:Jt(Me,["prevent"])},[h("div",HT,[h("label",MT,[Ut(le(we(n).taskName)+" ",1),ie[17]||(ie[17]=h("span",{class:"required"},"*",-1))]),Mt(h("input",{id:"task-name","onUpdate:modelValue":ie[0]||(ie[0]=Le=>b.name=Le),type:"text",class:B2(["form-input",{error:ve.name}]),placeholder:we(n).taskNamePlaceholder},null,10,kT),[[wa,b.name]]),ve.name?(q(),me("span",xT,le(ve.name),1)):h2("",!0)]),h("div",UT,[h("label",ET,[Ut(le(we(n).taskType)+" ",1),ie[18]||(ie[18]=h("span",{class:"required"},"*",-1))]),Mt(h("select",{id:"task-type","onUpdate:modelValue":ie[1]||(ie[1]=Le=>b.type=Le),class:B2(["form-select",{error:ve.type}])},[h("option",KT,le(we(n).taskTypeMap.story),1),h("option",LT,le(we(n).taskTypeMap.task),1),h("option",WT,le(we(n).taskTypeMap.bug),1)],2),[[ui,b.type]]),ve.type?(q(),me("span",_T,le(ve.type),1)):h2("",!0)]),h("div",PT,[h("label",OT,le(we(n).assignee),1),Mt(h("select",{id:"task-assignee","onUpdate:modelValue":ie[2]||(ie[2]=Le=>b.assignee=Le),class:"form-select",onChange:ye},[h("option",VT,le(we(n).selectAssignee),1),(q(!0),me(c2,null,ut(t.assigneeOptions,Le=>(q(),me("option",{key:Le.key??Le.value,value:Le.value},le(Le.label),9,jT))),128))],544),[[ui,b.assignee]])]),h("div",$T,[h("label",GT,le(we(n).parentTask),1),Mt(h("select",{id:"task-parent","onUpdate:modelValue":ie[3]||(ie[3]=Le=>b.parentId=Le),class:"form-select"},[h("option",YT,le(we(n).noParentTask),1),(q(!0),me(c2,null,ut(X.value,Le=>(q(),me("option",{key:Le.id,value:Le.id},le(Le.displayName),9,qT))),128))],512),[[ui,b.parentId]])]),h("div",zT,[h("div",XT,[h("label",JT,[Ut(le(we(n).startDate)+" ",1),ie[19]||(ie[19]=h("span",{class:"required"},"*",-1))]),ht(i5,{id:"task-start-date",modelValue:b.startDate,"onUpdate:modelValue":ie[4]||(ie[4]=Le=>b.startDate=Le),type:"datetime","value-format":"YYYY-MM-DD HH:mm",placeholder:we(n).startDateRequired,class:B2({error:ve.startDate})},null,8,["modelValue","placeholder","class"]),ve.startDate?(q(),me("span",ZT,le(ve.startDate),1)):h2("",!0)]),h("div",eB,[h("label",tB,[Ut(le(we(n).endDate)+" ",1),ie[20]||(ie[20]=h("span",{class:"required"},"*",-1))]),ht(i5,{id:"task-end-date",modelValue:b.endDate,"onUpdate:modelValue":ie[5]||(ie[5]=Le=>b.endDate=Le),type:"datetime","value-format":"YYYY-MM-DD HH:mm",placeholder:we(n).endDateRequired,class:B2({error:ve.endDate})},null,8,["modelValue","placeholder","class"]),ve.endDate?(q(),me("span",aB,le(ve.endDate),1)):h2("",!0)])]),ht(wT,{modelValue:b.predecessor,"onUpdate:modelValue":ie[6]||(ie[6]=Le=>b.predecessor=Le),tasks:H.value,"current-task-id":(He=t.task)==null?void 0:He.id,label:we(n).predecessor,placeholder:we(n).predecessorPlaceholder},null,8,["modelValue","tasks","current-task-id","label","placeholder"]),h("div",rB,[h("div",nB,[h("label",sB,le(we(n).estimatedHours),1),Mt(h("input",{id:"task-estimated-hours","onUpdate:modelValue":ie[7]||(ie[7]=Le=>b.estimatedHours=Le),type:"number",class:"form-input",placeholder:"0.00",min:"0",max:"99999",step:"0.01",onInput:T},null,544),[[wa,b.estimatedHours]])]),h("div",dB,[h("label",iB,le(we(n).actualHours),1),Mt(h("input",{id:"task-actual-hours","onUpdate:modelValue":ie[8]||(ie[8]=Le=>b.actualHours=Le),type:"number",class:"form-input",placeholder:"0.00",min:"0",max:"99999",step:"0.01",onInput:F},null,544),[[wa,b.actualHours]])])]),h("div",oB,[h("label",pB,le(we(n).progress),1),h("div",DB,[Mt(h("input",{id:"task-progress","onUpdate:modelValue":ie[9]||(ie[9]=Le=>b.progress=Le),type:"range",class:"progress-slider",style:at(J.value),min:"0",max:"100",step:"5"},null,4),[[wa,b.progress,void 0,{number:!0}]]),h("div",AB,[Mt(h("input",{"onUpdate:modelValue":ie[10]||(ie[10]=Le=>K.value=Le),type:"text",class:"progress-input",placeholder:"0",maxlength:"3",onBlur:x,onKeyup:jl(x,["enter"]),onInput:y,onFocus:j,onKeydown:_},null,544),[[wa,K.value]]),ie[21]||(ie[21]=h("span",{class:"progress-unit"},"%",-1))])])]),h("div",gB,[h("label",IB,le(we(n).description),1),Mt(h("textarea",{id:"task-description","onUpdate:modelValue":ie[11]||(ie[11]=Le=>b.description=Le),class:"form-textarea",placeholder:we(n).descriptionPlaceholder,rows:"3"},null,8,mB),[[wa,b.description]])])],32)]),h("div",lB,[h("div",cB,[O.isEdit&&O.task?(q(),me("button",{key:0,type:"button",class:"gantt-btn gantt-btn-danger",disabled:d.value,onClick:w},[d.value?(q(),me("span",fB)):h2("",!0),Ut(" "+le(we(n).delete),1)],8,uB)):h2("",!0),ht(o6,{visible:o.value,title:we(n).delete,type:C.value,message:E.value,"confirm-text":we(n).confirm,"cancel-text":we(n).cancel,"yes-text":we(n).storyDeleteYes,"no-text":we(n).storyDeleteNo,onConfirm:G,onYes:ue,onNo:pe,onCancel:ee},null,8,["visible","title","type","message","confirm-text","cancel-text","yes-text","no-text"])]),h("div",hB,[h("button",{type:"button",class:"gantt-btn gantt-btn-default",onClick:te},le(we(n).cancel),1),h("button",{type:"button",class:"gantt-btn gantt-btn-primary",disabled:d.value,onClick:Me},[d.value?(q(),me("span",CB)):h2("",!0),Ut(" "+le(O.isEdit?we(n).update:we(n).create),1)],8,SB)])])])])):h2("",!0),ze.value?(q(),r0(K3,{key:1,visible:ze.value,title:"确认开始计时",message:`即将为任务${(be=t.task)==null?void 0:be.name}计时,若有特殊说明请完善下面的描述`,"default-desc":((Ze=t.task)==null?void 0:Ze.name)||"",onConfirm:R,onCancel:Be},null,8,["visible","message","default-desc"])):h2("",!0)],64)}}}),FB=J0(vB,[["__scopeId","data-v-71d14202"]]);function D5(e,a,t=null){for(const r of e){if(r.id===a)return t;if(r.children&&r.children.length>0){const n=D5(r.children,a,r);if(n!==null)return n}}return null}function _3(e,a){for(let t=0;t0){const r=_3(e[t].children,a);if(r)return r}}return null}function P3(e,a,t,r){for(let n=0;n0&&P3(e[n].children,a,t,r))return!0}return!1}function wB(e,a,t,r){const n=D5(e,a),s=_3(e,a);if(!s)return null;if(!P3(e,t,s,r))return n&&n.children?n.children.push(s):e.push(s),null;const i=D5(e,a);return{movedTask:s,oldParent:n,newParent:i}}const TB="modulepreload",BB=function(e){return"/jordium-gantt-vue3/"+e},i7={},sp=function(a,t,r){let n=Promise.resolve();if(t&&t.length>0){let d=function(D){return Promise.all(D.map(A=>Promise.resolve(A).then(m=>({status:"fulfilled",value:m}),m=>({status:"rejected",reason:m}))))};document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),o=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));n=d(t.map(D=>{if(D=BB(D),D in i7)return;i7[D]=!0;const A=D.endsWith(".css"),m=A?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${D}"]${m}`))return;const c=document.createElement("link");if(c.rel=A?"stylesheet":TB,A||(c.as="script"),c.crossOrigin="",c.href=D,o&&c.setAttribute("nonce",o),document.head.appendChild(c),A)return new Promise((g,f)=>{c.addEventListener("load",g),c.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${D}`)))})}))}function s(d){const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=d,window.dispatchEvent(i),!i.defaultPrevented)throw d}return n.then(d=>{for(const i of d||[])i.status==="rejected"&&s(i.reason);return a().catch(s)})};function f0(e){"@babel/helpers - typeof";return f0=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(a){return typeof a}:function(a){return a&&typeof Symbol=="function"&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f0(e)}var S1=Uint8Array,$r=Uint16Array,D6=Int32Array,A6=new S1([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),g6=new S1([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),o7=new S1([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),O3=function(e,a){for(var t=new $r(31),r=0;r<31;++r)t[r]=a+=1<>1|($0&21845)<<1;Sn=(Sn&52428)>>2|(Sn&13107)<<2,Sn=(Sn&61680)>>4|(Sn&3855)<<4,g5[$0]=((Sn&65280)>>8|(Sn&255)<<8)>>1}var Ud=(function(e,a,t){for(var r=e.length,n=0,s=new $r(a);n>o]=D}else for(i=new $r(r),n=0;n>15-e[n]);return i}),Is=new S1(288);for(var $0=0;$0<144;++$0)Is[$0]=8;for(var $0=144;$0<256;++$0)Is[$0]=9;for(var $0=256;$0<280;++$0)Is[$0]=7;for(var $0=280;$0<288;++$0)Is[$0]=8;var _i=new S1(32);for(var $0=0;$0<32;++$0)_i[$0]=5;var RB=Ud(Is,9,0),QB=Ud(_i,5,0),j3=function(e){return(e+7)/8|0},bB=function(e,a,t){return(t==null||t>e.length)&&(t=e.length),new S1(e.subarray(a,t))},$1=function(e,a,t){t<<=a&7;var r=a/8|0;e[r]|=t,e[r+1]|=t>>8},ld=function(e,a,t){t<<=a&7;var r=a/8|0;e[r]|=t,e[r+1]|=t>>8,e[r+2]|=t>>16},dp=function(e,a){for(var t=[],r=0;rc&&(c=s[r].s);var g=new $r(c+1),f=I5(t[A-1],g,0);if(f>a){var r=0,v=0,B=f-a,C=1<a)v+=C-(1<>=B;v>0;){var b=s[r].s;g[b]=0&&v;--r){var H=s[r].s;g[H]==a&&(--g[H],++v)}f=a}return{t:new S1(g),l:f}},I5=function(e,a,t){return e.s==-1?Math.max(I5(e.l,a,t+1),I5(e.r,a,t+1)):a[e.s]=t},D7=function(e){for(var a=e.length;a&&!e[--a];);for(var t=new $r(++a),r=0,n=e[0],s=1,d=function(o){t[r++]=o},i=1;i<=a;++i)if(e[i]==n&&i!=a)++s;else{if(!n&&s>2){for(;s>138;s-=138)d(32754);s>2&&(d(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(d(n),--s;s>6;s-=6)d(8304);s>2&&(d(s-3<<5|8208),s=0)}for(;s--;)d(n);s=1,n=e[i]}return{c:t.subarray(0,r),n:a}},cd=function(e,a){for(var t=0,r=0;r>8,e[n+2]=e[n]^255,e[n+3]=e[n+1]^255;for(var s=0;s4&&!x[o7[F-1]];--F);var j=D+5<<3,_=cd(n,Is)+cd(s,_i)+d,Ne=cd(n,c)+cd(s,v)+d+14+3*F+cd(J,x)+2*J[16]+3*J[17]+7*J[18];if(o>=0&&j<=_&&j<=Ne)return $3(a,A,e.subarray(o,o+D));var ve,ne,oe,te;if($1(a,A,1+(Ne<_)),A+=2,Ne<_){ve=Ud(c,g,0),ne=c,oe=Ud(v,B,0),te=v;var Se=Ud(x,T,0);$1(a,A,b-257),$1(a,A+5,re-1),$1(a,A+10,F-4),A+=14;for(var K=0;K15&&($1(a,A,P[K]>>5&127),A+=P[K]>>12)}}else ve=RB,ne=Is,oe=QB,te=_i;for(var K=0;K255){var G=ee>>18&31;ld(a,A,ve[G+257]),A+=ne[G+257],G>7&&($1(a,A,ee>>23&31),A+=A6[G]);var ue=ee&31;ld(a,A,oe[ue]),A+=te[ue],ue>3&&(ld(a,A,ee>>5&8191),A+=g6[ue])}else ld(a,A,ve[ee]),A+=ne[ee]}return ld(a,A,ve[256]),A+ne[256]},HB=new D6([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),G3=new S1(0),MB=function(e,a,t,r,n,s){var d=s.z||e.length,i=new S1(r+d+5*(1+Math.ceil(d/7e3))+n),o=i.subarray(r,i.length-n),D=s.l,A=(s.r||0)&7;if(a){A&&(o[0]=s.r>>3);for(var m=HB[a-1],c=m>>13,g=m&8191,f=(1<7e3||x>24576)&&(ve>423||!D)){A=A7(e,o,0,H,X,re,K,x,F,y-F,A),x=J=K=0,F=y;for(var ne=0;ne<286;++ne)X[ne]=0;for(var ne=0;ne<30;++ne)re[ne]=0}var oe=2,te=0,Se=g,Me=_-Ne&32767;if(ve>2&&j==b(y-Me))for(var w=Math.min(c,ve)-1,P=Math.min(32767,y),G=Math.min(258,ve);Me<=P&&--Se&&_!=Ne;){if(e[y+oe]==e[y+oe-Me]){for(var ee=0;eeoe){if(oe=ee,te=Me,ee>w)break;for(var ue=Math.min(Me,ee-2),pe=0,ne=0;nepe&&(pe=ke,Ne=Ie)}}}_=Ne,Ne=v[_],Me+=_-Ne&32767}if(te){H[x++]=268435456|A5[oe]<<18|p7[te];var ze=A5[oe]&31,W=p7[te]&31;K+=A6[ze]+g6[W],++X[257+ze],++re[W],T=y+oe,++J}else H[x++]=e[y],++X[e[y]]}}for(y=Math.max(y,T);y=d&&(o[A/8|0]=D,$=d),A=$3(o,A+1,e.subarray(y,$))}s.i=d}return bB(i,0,r+j3(A)+n)},Y3=function(){var e=1,a=0;return{p:function(t){for(var r=e,n=a,s=t.length|0,d=0;d!=s;){for(var i=Math.min(d+2655,s);d>16),n=(n&65535)+15*(n>>16)}e=r,a=n},d:function(){return e%=65521,a%=65521,(e&255)<<24|(e&65280)<<8|(a&255)<<8|a>>8}}},kB=function(e,a,t,r,n){if(!n&&(n={l:1},a.dictionary)){var s=a.dictionary.subarray(-32768),d=new S1(s.length+e.length);d.set(s),d.set(e,s.length),e=d,n.w=s.length}return MB(e,a.level==null?6:a.level,a.mem==null?n.l?Math.ceil(Math.max(8,Math.min(13,Math.log(e.length)))*1.5):20:12+a.mem,t,r,n)},q3=function(e,a,t){for(;t;++a)e[a]=t,t>>>=8},xB=function(e,a){var t=a.level,r=t==0?0:t<6?1:t==9?3:2;if(e[0]=120,e[1]=r<<6|(a.dictionary&&32),e[1]|=31-(e[0]<<8|e[1])%31,a.dictionary){var n=Y3();n.p(a.dictionary),q3(e,2,n.d())}};function m5(e,a){a||(a={});var t=Y3();t.p(e);var r=kB(e,a,a.dictionary?6:2,4);return xB(r,a),q3(r,r.length-4,t.d()),r}var UB=typeof TextDecoder<"u"&&new TextDecoder,EB=0;try{UB.decode(G3,{stream:!0}),EB=1}catch{}function KB(e){if(Array.isArray(e))return e}function LB(e,a){var t=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(t!=null){var r,n,s,d,i=[],o=!0,D=!1;try{if(s=(t=t.call(e)).next,a!==0)for(;!(o=(r=s.call(t)).done)&&(i.push(r.value),i.length!==a);o=!0);}catch(A){D=!0,n=A}finally{try{if(!o&&t.return!=null&&(d=t.return(),Object(d)!==d))return}finally{if(D)throw n}}return i}}function g7(e,a){(a==null||a>e.length)&&(a=e.length);for(var t=0,r=Array(a);t{const{draggedTask:se,targetTask:X2,position:Et,oldParent:kt,newParent:h0}=We,ya=o(kt),Ra=o(Et==="after"?h0:{type:X2.type,name:X2.name});let ge="";const he=n.value.taskMoveConfirm.messages;Et==="after"?ge=d(he.moveAfter,{draggedTaskType:i(se.type),draggedTaskName:se.name,targetTaskType:i(X2.type),targetTaskName:X2.name}):kt&&kt.id!==X2.id?ge=d(he.moveAsChild,{draggedTaskName:se.name,oldParentName:ya,newParentName:Ra}):kt?ge=d(he.moveAsChildSameParent,{draggedTaskName:se.name,newParentName:Ra}):ge=d(he.moveAsChildNoOldParent,{draggedTaskName:se.name,newParentName:Ra});const Je=n.value.taskMoveConfirm.messages.moveSuccess;a(`${Je}: ${ge}`,"success",{closable:!0})},y0=(We,se)=>{a(`自定义操作: ${We} - 任务: ${se.name}`,"info",{closable:!0})};return(We,se)=>{var h0,ya,Ra,ge;const X2=Yo("TaskListColumn"),Et=Yo("TaskListContextMenu"),kt=Yo("GanttChart");return q(),me("div",Ff,[h("h1",wf,[h("div",Tf,[se[56]||(se[56]=H1(' Jordium Gantt Vue3 Demo ',2)),h("span",{class:"version-badge",style:{cursor:"pointer"},onClick:se[0]||(se[0]=he=>K.value=!0)},le(we(ju).version),1)]),h("div",Bf,[h("a",{href:((h0=we(n).giteeBadge)==null?void 0:h0.url)||"https://gitee.com/activity/2025opensource?ident=IOUNZP",target:"_blank",rel:"noopener noreferrer",class:"gitee-award-badge"},le(((ya=we(n).giteeBadge)==null?void 0:ya.text)||"🥇 Gitee 2025 Open Source Awards 👉 Thanks for Your Vote"),9,Nf)]),h("div",{class:"title-right docs-links"},[se[59]||(se[59]=H1('npm versionnpm total',3)),h("a",{href:"#github-docs",class:"doc-link github-link",onClick:ra},se[57]||(se[57]=[h("img",{class:"doc-icon",src:Xl,alt:"GitHub"},null,-1)])),se[60]||(se[60]=H1('starfork',3)),h("a",{href:"#gitee-docs",class:"doc-link gitee-link",onClick:_0},se[58]||(se[58]=[h("img",{class:"doc-icon",src:Jl,alt:"Gitee"},null,-1)])),se[61]||(se[61]=h("a",{href:"https://gitee.com/jordium/jordium-gantt-vue3/stargazers"},[h("img",{src:"https://gitee.com/jordium/jordium-gantt-vue3/badge/star.svg?theme=dark",alt:"star"})],-1)),se[62]||(se[62]=h("a",{href:"https://gitee.com/jordium/jordium-gantt-vue3/members"},[h("img",{src:"https://gitee.com/jordium/jordium-gantt-vue3/badge/fork.svg?theme=dark",alt:"fork"})],-1))])]),ht(af,{visible:K.value,onClose:se[1]||(se[1]=he=>K.value=!1)},null,8,["visible"]),h("div",{class:B2(["data-source-panel",{collapsed:w.value}])},[h("div",{class:"data-source-header",onClick:He},[h("h3",yf,[se[63]||(se[63]=h("svg",{class:"data-source-icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[h("path",{d:"M4 4h16a2 2 0 0 1 2 2v2H2V6a2 2 0 0 1 2-2zm16 6H4v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V10zm-5 4h4v4h-4v-4z",fill:"currentColor"})],-1)),Ut(" "+le((Ra=we(t).dataSourceSwitch)==null?void 0:Ra.title)+" - "+le((ge=we(t).dataSourceSwitch)==null?void 0:ge.subtitle),1)]),h("button",{class:B2(["collapse-button",{collapsed:w.value}])},[(q(),me("svg",Rf,[h("path",{d:w.value?"M7 14l5-5 5 5":"M7 10l5 5 5-5",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,8,Qf)]))],2)]),ht(rs,{name:"config-content"},{default:z0(()=>{var he;return[Mt(h("div",bf,[h("div",Hf,[(q(!0),me(c2,null,ut(f.value,Je=>(q(),me("button",{key:Je.key,class:B2(["data-source-button",{active:v.value===Je.key}]),disabled:B.value&&v.value===Je.key,onClick:t2=>X(Je.key)},[h("div",kf,[h("span",xf,le(Je.label),1),h("span",Uf,le(Je.badge),1)]),h("div",Ef,le(Je.description),1)],10,Mf))),128)),B.value?(q(),me("span",Kf,le((he=we(t).dataSourceSwitch)==null?void 0:he.loading),1)):h2("",!0)])],512),[[Xn,!w.value]])]}),_:1})],2),h("div",{class:B2(["config-panel",{collapsed:Me.value}])},[h("div",{class:"config-header",onClick:fe},[h("h3",Lf,[se[64]||(se[64]=h("svg",{class:"config-icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[h("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z",fill:"currentColor"})],-1)),Ut(" "+le(we(t).configDemo),1)]),h("button",{class:B2(["collapse-button",{collapsed:Me.value}])},[(q(),me("svg",Wf,[h("path",{d:Me.value?"M7 14l5-5 5 5":"M7 10l5 5 5-5",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,8,_f)]))],2)]),ht(rs,{name:"config-content"},{default:z0(()=>[Mt(h("div",Pf,[h("div",Of,[h("div",{class:"section-header",onClick:be},[h("div",Vf,[se[65]||(se[65]=h("svg",{class:"section-icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[h("path",{d:"M3 6h18v2H3V6zm0 5h18v2H3v-2zm0 5h18v2H3v-2z",fill:"currentColor"})],-1)),Ut(" "+le(we(t).taskListConfig.title),1)]),h("button",{class:B2(["section-collapse-button",{collapsed:P.value}])},se[66]||(se[66]=[h("svg",{class:"collapse-icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[h("path",{d:"M7 10l5 5 5-5",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)]),2)]),ht(rs,{name:"section-content"},{default:z0(()=>[Mt(h("div",jf,[h("div",$f,[h("h5",Gf,le(we(t).taskListConfig.width.title),1),h("div",Yf,[h("label",qf,[Mt(h("input",{"onUpdate:modelValue":se[2]||(se[2]=he=>j.value=he),type:"radio",value:"px"},null,512),[[b4,j.value]]),h("span",zf,le(we(t).taskListConfig.width.pixelsModel),1)]),h("label",Xf,[Mt(h("input",{"onUpdate:modelValue":se[3]||(se[3]=he=>j.value=he),type:"radio",value:"%"},null,512),[[b4,j.value]]),h("span",Jf,le(we(t).taskListConfig.width.percentageModel),1)])]),j.value==="px"?(q(),me("div",Zf,[h("div",eh,[h("label",th,le(we(t).taskListConfig.width.defaultWidth)+":",1),Mt(h("input",{"onUpdate:modelValue":se[4]||(se[4]=he=>F.value.defaultWidth=he),type:"number",min:F.value.minWidth,max:F.value.maxWidth,step:"10",class:"width-input"},null,8,ah),[[wa,F.value.defaultWidth,void 0,{number:!0}]]),se[67]||(se[67]=h("span",{class:"width-unit"},"px",-1))]),h("div",rh,[h("label",nh,le(we(t).taskListConfig.width.minWidth)+":",1),Mt(h("input",{"onUpdate:modelValue":se[5]||(se[5]=he=>F.value.minWidth=he),type:"number",min:"280",max:F.value.defaultWidth,step:"10",class:"width-input"},null,8,sh),[[wa,F.value.minWidth,void 0,{number:!0}]]),se[68]||(se[68]=h("span",{class:"width-unit"},"px",-1))]),h("div",dh,[h("label",ih,le(we(t).taskListConfig.width.maxWidth)+":",1),Mt(h("input",{"onUpdate:modelValue":se[6]||(se[6]=he=>F.value.maxWidth=he),type:"number",min:F.value.defaultWidth,max:"2000",step:"10",class:"width-input"},null,8,oh),[[wa,F.value.maxWidth,void 0,{number:!0}]]),se[69]||(se[69]=h("span",{class:"width-unit"},"px",-1))])])):(q(),me("div",ph,[h("div",Dh,[h("label",Ah,le(we(t).taskListConfig.width.defaultWidth)+":",1),Mt(h("input",{"onUpdate:modelValue":se[7]||(se[7]=he=>_.value.defaultWidth=he),type:"number",min:_.value.minWidth,max:_.value.maxWidth,step:"1",class:"width-input"},null,8,gh),[[wa,_.value.defaultWidth,void 0,{number:!0}]]),se[70]||(se[70]=h("span",{class:"width-unit"},"%",-1))]),h("div",Ih,[h("label",mh,le(we(t).taskListConfig.width.minWidth)+":",1),Mt(h("input",{"onUpdate:modelValue":se[8]||(se[8]=he=>_.value.minWidth=he),type:"number",min:"10",max:_.value.defaultWidth,step:"1",class:"width-input"},null,8,lh),[[wa,_.value.minWidth,void 0,{number:!0}]]),se[71]||(se[71]=h("span",{class:"width-unit"},"%",-1))]),h("div",ch,[h("label",uh,le(we(t).taskListConfig.width.maxWidth)+":",1),Mt(h("input",{"onUpdate:modelValue":se[9]||(se[9]=he=>_.value.maxWidth=he),type:"number",min:_.value.defaultWidth,max:"80",step:"1",class:"width-input"},null,8,fh),[[wa,_.value.maxWidth,void 0,{number:!0}]]),se[72]||(se[72]=h("span",{class:"width-unit"},"%",-1))])]))]),h("div",hh,[h("div",Sh,[h("h5",Ch,le(we(t).taskListConfig.columns.renderMode),1),h("div",vh,[h("label",Fh,[Mt(h("input",{"onUpdate:modelValue":se[10]||(se[10]=he=>x.value=he),type:"radio",value:"default"},null,512),[[b4,x.value]]),h("span",wh,le(we(t).taskListConfig.columns.renderModeDefault),1)]),h("label",Th,[Mt(h("input",{"onUpdate:modelValue":se[11]||(se[11]=he=>x.value=he),type:"radio",value:"declarative"},null,512),[[b4,x.value]]),h("span",Bh,le(we(t).taskListConfig.columns.renderModeDeclarative),1)])])]),h("h5",Nh,le(we(t).taskListConfig.columns.title),1),h("div",yh,[(q(!0),me(c2,null,ut(T.value,he=>(q(),me("label",{key:he.key,class:"column-control"},[h("input",{type:"checkbox",checked:he.visible,onChange:Je=>lt(he.key,Je)},null,40,Rh),h("span",Qh,le(we(t)[he.key]||he.label),1)]))),128))])])],512),[[Xn,!P.value]])]),_:1})]),h("div",bh,[h("div",{class:"section-header",onClick:Ze},[h("div",Hh,[se[73]||(se[73]=h("svg",{class:"section-icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[h("rect",{x:"2",y:"6",width:"20",height:"3",rx:"1.5",fill:"currentColor"}),h("rect",{x:"2",y:"11",width:"15",height:"3",rx:"1.5",fill:"currentColor"}),h("rect",{x:"2",y:"16",width:"18",height:"3",rx:"1.5",fill:"currentColor"})],-1)),Ut(" "+le(we(t).taskBarConfig.title),1)]),h("button",{class:B2(["section-collapse-button",{collapsed:G.value}])},se[74]||(se[74]=[h("svg",{class:"collapse-icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[h("path",{d:"M7 10l5 5 5-5",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)]),2)]),ht(rs,{name:"section-content"},{default:z0(()=>[Mt(h("div",Mh,[h("div",kh,[h("h5",xh,le(we(t).taskBarConfig.display.title),1),h("div",Uh,[h("label",Eh,[Mt(h("input",{"onUpdate:modelValue":se[12]||(se[12]=he=>te.value.showAvatar=he),type:"checkbox"},null,512),[[Cs,te.value.showAvatar]]),h("span",Kh,le(we(t).taskBarConfig.display.showAvatar),1)]),h("label",Lh,[Mt(h("input",{"onUpdate:modelValue":se[13]||(se[13]=he=>te.value.showTitle=he),type:"checkbox"},null,512),[[Cs,te.value.showTitle]]),h("span",Wh,le(we(t).taskBarConfig.display.showTitle),1)]),h("label",_h,[Mt(h("input",{"onUpdate:modelValue":se[14]||(se[14]=he=>te.value.showProgress=he),type:"checkbox"},null,512),[[Cs,te.value.showProgress]]),h("span",Ph,le(we(t).taskBarConfig.display.showProgress),1)])])]),h("div",Oh,[h("h5",Vh,le(we(t).taskBarConfig.mistouch.title),1),h("div",jh,[h("div",$h,[h("label",Gh,[Mt(h("input",{"onUpdate:modelValue":se[15]||(se[15]=he=>ve.value=he),type:"checkbox"},null,512),[[Cs,ve.value]]),h("span",Yh,le(we(t).taskBarConfig.mistouch.allowDragOnClick),1)]),h("span",qh,le(we(t).taskBarConfig.mistouch.allowDragOnClickHint),1)]),h("div",zh,[h("label",Xh,[Mt(h("input",{"onUpdate:modelValue":se[16]||(se[16]=he=>ne.value=he),type:"checkbox"},null,512),[[Cs,ne.value]]),se[75]||(se[75]=h("span",{class:"taskbar-label"}," 启用TaskRow拖拽移动 ",-1))]),se[76]||(se[76]=h("span",{class:"control-hint"}," 允许通过拖拽TaskRow来调整任务的层级和顺序 ",-1))]),h("div",Jh,[h("label",Zh,le(we(t).taskBarConfig.mistouch.dragThreshold)+": ",1),Mt(h("input",{"onUpdate:modelValue":se[17]||(se[17]=he=>te.value.dragThreshold=he),type:"number",min:"0",max:"20",step:"1",class:"control-input"},null,512),[[wa,te.value.dragThreshold,void 0,{number:!0}]]),h("span",eS,le(we(t).taskBarConfig.mistouch.dragThresholdHint),1)]),h("div",tS,[h("label",aS,le(we(t).taskBarConfig.mistouch.resizeHandleWidth)+": ",1),Mt(h("input",{"onUpdate:modelValue":se[18]||(se[18]=he=>te.value.resizeHandleWidth=he),type:"number",min:"5",max:"15",step:"1",class:"control-input"},null,512),[[wa,te.value.resizeHandleWidth,void 0,{number:!0}]]),h("span",rS,le(we(t).taskBarConfig.mistouch.resizeHandleWidthHint),1)]),h("div",nS,[h("label",sS,[Mt(h("input",{"onUpdate:modelValue":se[19]||(se[19]=he=>te.value.enableDragDelay=he),type:"checkbox"},null,512),[[Cs,te.value.enableDragDelay]]),h("span",dS,le(we(t).taskBarConfig.mistouch.enableDragDelay),1)]),h("span",iS,le(we(t).taskBarConfig.mistouch.enableDragDelayHint),1)]),te.value.enableDragDelay?(q(),me("div",oS,[h("label",pS,le(we(t).taskBarConfig.mistouch.dragDelayTime)+": ",1),Mt(h("input",{"onUpdate:modelValue":se[20]||(se[20]=he=>te.value.dragDelayTime=he),type:"number",min:"50",max:"500",step:"50",class:"control-input"},null,512),[[wa,te.value.dragDelayTime,void 0,{number:!0}]]),h("span",DS,le(we(t).taskBarConfig.mistouch.dragDelayTimeHint),1)])):h2("",!0)])])],512),[[Xn,!G.value]])]),_:1})]),h("div",AS,[h("div",{class:"section-header",onClick:Le},[h("div",gS,[se[77]||(se[77]=h("svg",{class:"section-icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[h("path",{d:"M12 15a3 3 0 100-6 3 3 0 000 6z",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"}),h("path",{d:"M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 010 2.83 2 2 0 01-2.83 0l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-2 2 2 2 0 01-2-2v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83 0 2 2 0 010-2.83l.06-.06a1.65 1.65 0 00.33-1.82 1.65 1.65 0 00-1.51-1H3a2 2 0 01-2-2 2 2 0 012-2h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 010-2.83 2 2 0 012.83 0l.06.06a1.65 1.65 0 001.82.33H9a1.65 1.65 0 001-1.51V3a2 2 0 012-2 2 2 0 012 2v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 0 2 2 0 010 2.83l-.06.06a1.65 1.65 0 00-.33 1.82V9a1.65 1.65 0 001.51 1H21a2 2 0 012 2 2 2 0 01-2 2h-.09a1.65 1.65 0 00-1.51 1z",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)),Ut(" "+le(D.value.title||"Tool 设置")+" / External Control API ",1)]),h("button",{class:B2(["section-collapse-button",{collapsed:ee.value}])},se[78]||(se[78]=[h("svg",{class:"collapse-icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[h("path",{d:"M7 10l5 5 5-5",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)]),2)]),ht(rs,{name:"section-content"},{default:z0(()=>{var he,Je,t2,$2,E2,I2,m2,u2,G2,Tt,St,st,Qt,jt,Kt,Pt,z,Re,Pe,i2,D2,w2,R2,J2,N2,T2,W2,_2,dt,Ft,p0,Z2,Va,va,Ka,$t,R0,ga,Tr,m0,ja,Qa,Bt,S0,s0,zt,C0,Fa,aa,da,$a,Mr,Ga,mr,Gr,D1,Br,Nr,K1,Yr,kr,l,N,de,Fe,Ee,r2,o2,P2,et,ct,Ct,Lt,v0,O0,M,Z,U,ce,Te,Ke,qe,Oe,g2,H2,Q2,n2,x2,It,e0,l0,d0,i0,Wt,F0,ar,Q0,G0,rr,xr,w1,lr,D0,xt,Gt,E0;return[Mt(h("div",IS,[h("div",mS,[h("h5",lS,"📊 "+le(((he=D.value.currentStatus)==null?void 0:he.title)||"Current Status"),1),h("div",cS,[h("div",uS,[h("span",fS,le(((Je=D.value.currentStatus)==null?void 0:Je.fullscreen)||"Fullscreen")+":",1),h("span",{class:B2(["status-value",{active:ue.value}])},le(ue.value?`✅ ${((t2=D.value.currentStatus)==null?void 0:t2.active)||"Active"}`:`❌ ${(($2=D.value.currentStatus)==null?void 0:$2.inactive)||"Inactive"}`),3)]),h("div",hS,[h("span",SS,le(((E2=D.value.currentStatus)==null?void 0:E2.expandAll)||"Expand All")+":",1),h("span",{class:B2(["status-value",{active:pe.value}])},le(pe.value?`✅ ${((I2=D.value.currentStatus)==null?void 0:I2.expanded)||"Expanded"}`:`❌ ${((m2=D.value.currentStatus)==null?void 0:m2.collapsed)||"Collapsed"}`),3)]),h("div",CS,[h("span",vS,le(((u2=D.value.currentStatus)==null?void 0:u2.locale)||"Locale")+":",1),h("span",FS,le(Ie.value),1)]),h("div",wS,[h("span",TS,le(((G2=D.value.currentStatus)==null?void 0:G2.timeScale)||"TimeScale")+":",1),h("span",BS,le(ae.value),1)]),h("div",NS,[h("span",yS,le(((Tt=D.value.currentStatus)==null?void 0:Tt.theme)||"Theme")+":",1),h("span",RS,le(ke.value),1)]),h("div",QS,[h("span",bS,le(((St=D.value.currentStatus)==null?void 0:St.controlMode)||"Control Mode")+":",1),h("span",{class:"status-value active",style:at({color:$.value==="props"?"#67c23a":"#409eff"})},le($.value==="props"?"📝 Props":"⚡ Expose"),5)])])]),h("div",HS,[h("h5",MS,"🎛️ "+le(((st=D.value.controlMode)==null?void 0:st.title)||"Control Mode"),1),h("div",kS,[h("button",{class:B2(["mode-button",{active:$.value==="expose"}]),onClick:se[21]||(se[21]=ft=>$.value="expose")}," ⚡ "+le(((Qt=D.value.controlMode)==null?void 0:Qt.expose)||"Expose Methods"),3),h("button",{class:B2(["mode-button",{active:$.value==="props"}]),onClick:se[22]||(se[22]=ft=>$.value="props")}," 📝 "+le(((jt=D.value.controlMode)==null?void 0:jt.props)||"Props Control"),3)]),h("p",xS,le($.value==="expose"?((Kt=D.value.controlMode)==null?void 0:Kt.exposeHint)||"通过 ref.value.method() 调用组件方法":((Pt=D.value.controlMode)==null?void 0:Pt.propsHint)||"通过修改 Props 控制组件状态"),1)]),Mt(h("div",US,[h("h4",ES,"⚡ "+le(((z=D.value.exposeMethods)==null?void 0:z.sectionTitle)||"Expose 方法控制"),1),h("div",KS,[h("div",LS,[h("h5",WS,"🖥️ "+le(((Pe=(Re=D.value.exposeMethods)==null?void 0:Re.fullscreen)==null?void 0:Pe.title)||"Fullscreen"),1),h("div",_S,[h("button",{class:"tool-button",onClick:l2},le(((D2=(i2=D.value.exposeMethods)==null?void 0:i2.fullscreen)==null?void 0:D2.enter)||"Enter"),1),h("button",{class:"tool-button",onClick:S2},le(((R2=(w2=D.value.exposeMethods)==null?void 0:w2.fullscreen)==null?void 0:R2.exit)||"Exit"),1),h("button",{class:"tool-button primary",onClick:k2},le(((N2=(J2=D.value.exposeMethods)==null?void 0:J2.fullscreen)==null?void 0:N2.toggle)||"Toggle"),1)])]),se[80]||(se[80]=h("div",{class:"tool-divider"},null,-1)),h("div",PS,[h("h5",OS,"📂 "+le(((W2=(T2=D.value.exposeMethods)==null?void 0:T2.expand)==null?void 0:W2.title)||"Expand"),1),h("div",VS,[h("button",{class:"tool-button",onClick:y2},le(((dt=(_2=D.value.exposeMethods)==null?void 0:_2.expand)==null?void 0:dt.all)||"All"),1),h("button",{class:"tool-button",onClick:v2},le(((p0=(Ft=D.value.exposeMethods)==null?void 0:Ft.expand)==null?void 0:p0.none)||"None"),1),h("button",{class:"tool-button primary",onClick:K2},le(((Va=(Z2=D.value.exposeMethods)==null?void 0:Z2.expand)==null?void 0:Va.toggle)||"Toggle"),1)])]),se[81]||(se[81]=h("div",{class:"tool-divider"},null,-1)),h("div",jS,[h("h5",$S,"📏 "+le(((Ka=(va=D.value.exposeMethods)==null?void 0:va.timeScale)==null?void 0:Ka.title)||"Scale"),1),h("div",GS,[h("button",{class:"tool-button",onClick:se[23]||(se[23]=ft=>b2("hour"))},le(((R0=($t=D.value.exposeMethods)==null?void 0:$t.timeScale)==null?void 0:R0.hour)||"Hour"),1),h("button",{class:"tool-button",onClick:se[24]||(se[24]=ft=>b2("day"))},le(((Tr=(ga=D.value.exposeMethods)==null?void 0:ga.timeScale)==null?void 0:Tr.day)||"Day"),1),h("button",{class:"tool-button",onClick:se[25]||(se[25]=ft=>b2("week"))},le(((ja=(m0=D.value.exposeMethods)==null?void 0:m0.timeScale)==null?void 0:ja.week)||"Week"),1),h("button",{class:"tool-button",onClick:se[26]||(se[26]=ft=>b2("month"))},le(((Bt=(Qa=D.value.exposeMethods)==null?void 0:Qa.timeScale)==null?void 0:Bt.month)||"Month"),1),h("button",{class:"tool-button",onClick:se[27]||(se[27]=ft=>b2("quarter"))},le(((s0=(S0=D.value.exposeMethods)==null?void 0:S0.timeScale)==null?void 0:s0.quarter)||"Quarter"),1),h("button",{class:"tool-button",onClick:se[28]||(se[28]=ft=>b2("year"))},le(((C0=(zt=D.value.exposeMethods)==null?void 0:zt.timeScale)==null?void 0:C0.year)||"Year"),1),se[79]||(se[79]=h("span",{style:{margin:"0 4px",color:"var(--gantt-border-color, #dcdfe6)"}},"|",-1)),h("button",{class:"tool-button primary",onClick:V2},"➕"),h("button",{class:"tool-button primary",onClick:_t},"➖")])]),se[82]||(se[82]=h("div",{class:"tool-divider"},null,-1)),h("div",YS,[h("h5",qS,"🌐 "+le(((aa=(Fa=D.value.exposeMethods)==null?void 0:Fa.locale)==null?void 0:aa.title)||"Locale"),1),h("div",zS,[h("button",{class:B2(["tool-button",{primary:Ie.value==="zh-CN"}]),onClick:se[29]||(se[29]=ft=>q2("zh-CN"))},le((($a=(da=D.value.exposeMethods)==null?void 0:da.locale)==null?void 0:$a.zhCN)||"中文"),3),h("button",{class:B2(["tool-button",{primary:Ie.value==="en-US"}]),onClick:se[30]||(se[30]=ft=>q2("en-US"))},le(((Ga=(Mr=D.value.exposeMethods)==null?void 0:Mr.locale)==null?void 0:Ga.enUS)||"EN"),3)])]),se[83]||(se[83]=h("div",{class:"tool-divider"},null,-1)),h("div",XS,[h("h5",JS,"🎨 "+le(((Gr=(mr=D.value.exposeMethods)==null?void 0:mr.theme)==null?void 0:Gr.title)||"Theme"),1),h("div",ZS,[h("button",{class:B2(["tool-button",{primary:ke.value==="light"}]),onClick:se[31]||(se[31]=ft=>mt("light"))}," ☀️ "+le(((Br=(D1=D.value.exposeMethods)==null?void 0:D1.theme)==null?void 0:Br.light)||"Light"),3),h("button",{class:B2(["tool-button",{primary:ke.value==="dark"}]),onClick:se[32]||(se[32]=ft=>mt("dark"))}," 🌙 "+le(((K1=(Nr=D.value.exposeMethods)==null?void 0:Nr.theme)==null?void 0:K1.dark)||"Dark"),3)])]),se[84]||(se[84]=h("div",{class:"tool-divider"},null,-1)),h("div",eC,[h("h5",tC,"🧭 "+le(((kr=(Yr=D.value.exposeMethods)==null?void 0:Yr.navigation)==null?void 0:kr.title)||"Nav"),1),h("div",aC,[h("button",{class:"tool-button primary",onClick:C2}," 📅 "),Mt(h("input",{"onUpdate:modelValue":se[33]||(se[33]=ft=>ze.value=ft),type:"text",class:"tool-input",placeholder:((N=(l=D.value.exposeMethods)==null?void 0:l.navigation)==null?void 0:N.taskIdPlaceholder)||"Task ID"},null,8,rC),[[wa,ze.value]]),h("button",{class:"tool-button",onClick:gt},le(((Fe=(de=D.value.exposeMethods)==null?void 0:de.navigation)==null?void 0:Fe.go)||"Go"),1),Mt(h("input",{"onUpdate:modelValue":se[34]||(se[34]=ft=>W.value=ft),type:"date",class:"tool-input"},null,512),[[wa,W.value]]),h("button",{class:"tool-button",onClick:it},le(((r2=(Ee=D.value.exposeMethods)==null?void 0:Ee.navigation)==null?void 0:r2.go)||"Go"),1)])])])],512),[[Xn,$.value==="expose"]]),Mt(h("div",nC,[h("h4",sC,"📝 "+le(((o2=D.value.propsControl)==null?void 0:o2.sectionTitle)||"Props 属性控制"),1),h("div",dC,[h("div",iC,[h("h5",oC,"🌐 "+le(((et=(P2=D.value.propsControl)==null?void 0:P2.locale)==null?void 0:et.title)||"Locale Prop"),1),h("div",pC,[h("button",{class:B2(["tool-button",{primary:Be.value==="zh-CN"}]),onClick:se[35]||(se[35]=ft=>Be.value="zh-CN")},le(((Ct=(ct=D.value.exposeMethods)==null?void 0:ct.locale)==null?void 0:Ct.zhCN)||"中文"),3),h("button",{class:B2(["tool-button",{primary:Be.value==="en-US"}]),onClick:se[36]||(se[36]=ft=>Be.value="en-US")},le(((v0=(Lt=D.value.exposeMethods)==null?void 0:Lt.locale)==null?void 0:v0.enUS)||"EN"),3)]),h("p",DC,':locale="'+le(Be.value)+'"',1)]),se[85]||(se[85]=h("div",{class:"tool-divider"},null,-1)),h("div",AC,[h("h5",gC,"🎨 "+le(((M=(O0=D.value.propsControl)==null?void 0:O0.theme)==null?void 0:M.title)||"Theme Prop"),1),h("div",IC,[h("button",{class:B2(["tool-button",{primary:R.value==="light"}]),onClick:se[37]||(se[37]=ft=>R.value="light")}," ☀️ "+le(((U=(Z=D.value.exposeMethods)==null?void 0:Z.theme)==null?void 0:U.light)||"Light"),3),h("button",{class:B2(["tool-button",{primary:R.value==="dark"}]),onClick:se[38]||(se[38]=ft=>R.value="dark")}," 🌙 "+le(((Te=(ce=D.value.exposeMethods)==null?void 0:ce.theme)==null?void 0:Te.dark)||"Dark"),3)]),h("p",mC,':theme="'+le(R.value)+'"',1)]),se[86]||(se[86]=h("div",{class:"tool-divider"},null,-1)),h("div",lC,[h("h5",cC,"📅 "+le(((qe=(Ke=D.value.propsControl)==null?void 0:Ke.timeScale)==null?void 0:qe.title)||"TimeScale Prop"),1),h("div",uC,[h("button",{class:B2(["tool-button",{primary:ye.value==="hour"}]),onClick:se[39]||(se[39]=ft=>ye.value="hour")},le(((g2=(Oe=D.value.exposeMethods)==null?void 0:Oe.timeScale)==null?void 0:g2.hour)||"Hour"),3),h("button",{class:B2(["tool-button",{primary:ye.value==="day"}]),onClick:se[40]||(se[40]=ft=>ye.value="day")},le(((Q2=(H2=D.value.exposeMethods)==null?void 0:H2.timeScale)==null?void 0:Q2.day)||"Day"),3),h("button",{class:B2(["tool-button",{primary:ye.value==="week"}]),onClick:se[41]||(se[41]=ft=>ye.value="week")},le(((x2=(n2=D.value.exposeMethods)==null?void 0:n2.timeScale)==null?void 0:x2.week)||"Week"),3),h("button",{class:B2(["tool-button",{primary:ye.value==="month"}]),onClick:se[42]||(se[42]=ft=>ye.value="month")},le(((e0=(It=D.value.exposeMethods)==null?void 0:It.timeScale)==null?void 0:e0.month)||"Month"),3),h("button",{class:B2(["tool-button",{primary:ye.value==="quarter"}]),onClick:se[43]||(se[43]=ft=>ye.value="quarter")},le(((d0=(l0=D.value.exposeMethods)==null?void 0:l0.timeScale)==null?void 0:d0.quarter)||"Quarter"),3),h("button",{class:B2(["tool-button",{primary:ye.value==="year"}]),onClick:se[44]||(se[44]=ft=>ye.value="year")},le(((Wt=(i0=D.value.exposeMethods)==null?void 0:i0.timeScale)==null?void 0:Wt.year)||"Year"),3)]),h("p",fC,':time-scale="'+le(ye.value)+'"',1)]),se[87]||(se[87]=h("div",{class:"tool-divider"},null,-1)),h("div",hC,[h("h5",SC,"🖥️ "+le(((ar=(F0=D.value.propsControl)==null?void 0:F0.fullscreen)==null?void 0:ar.title)||"Fullscreen Prop"),1),h("div",CC,[h("button",{class:B2(["tool-button",{primary:O.value===!0}]),onClick:se[45]||(se[45]=ft=>O.value=!0)}," ✅ "+le(((G0=(Q0=D.value.propsControl)==null?void 0:Q0.fullscreen)==null?void 0:G0.true)||"True"),3),h("button",{class:B2(["tool-button",{primary:O.value===!1}]),onClick:se[46]||(se[46]=ft=>O.value=!1)}," ❌ "+le(((xr=(rr=D.value.propsControl)==null?void 0:rr.fullscreen)==null?void 0:xr.false)||"False"),3)]),h("p",vC,':fullscreen="'+le(O.value)+'"',1)]),se[88]||(se[88]=h("div",{class:"tool-divider"},null,-1)),h("div",FC,[h("h5",wC,"📂 "+le(((lr=(w1=D.value.propsControl)==null?void 0:w1.expandAll)==null?void 0:lr.title)||"ExpandAll Prop"),1),h("div",TC,[h("button",{class:B2(["tool-button",{primary:ie.value===!0}]),onClick:se[47]||(se[47]=ft=>ie.value=!0)}," ✅ "+le(((xt=(D0=D.value.propsControl)==null?void 0:D0.expandAll)==null?void 0:xt.true)||"True"),3),h("button",{class:B2(["tool-button",{primary:ie.value===!1}]),onClick:se[48]||(se[48]=ft=>ie.value=!1)}," ❌ "+le(((E0=(Gt=D.value.propsControl)==null?void 0:Gt.expandAll)==null?void 0:E0.false)||"False"),3)]),h("p",BC,':expand-all="'+le(ie.value)+'"',1)])])],512),[[Xn,$.value==="props"]])],512),[[Xn,!ee.value]])]}),_:1})])],512),[[Xn,!Me.value]])]),_:1})],2),h("div",NC,[ht(kt,{ref_key:"gantt",ref:A,tasks:m.value,milestones:c.value,locale:$.value==="props"?Be.value:void 0,theme:$.value==="props"?R.value:void 0,"time-scale":$.value==="props"?ye.value:void 0,fullscreen:$.value==="props"?O.value:void 0,"expand-all":$.value==="props"?ie.value:void 0,"toolbar-config":y,"task-list-config":Ne.value,"task-bar-config":Se.value,"working-hours":z2,"use-default-milestone-dialog":!0,"allow-drag-and-resize":ve.value,"enable-task-row-move":ne.value,"assignee-options":oe.value,"task-list-row-class-name":U2,"task-list-row-style":Ba,"on-export-csv":qt,"on-language-change":Xe,"on-theme-change":Aa,"task-list-column-render-mode":x.value,onMilestoneSaved:B0,onMilestoneDeleted:Vt,onMilestoneIconChanged:Na,onAddTask:U0,onTaskbarDragEnd:na,onTaskbarResizeEnd:na,onMilestoneDragEnd:P0,onTaskClick:e2,onEditTask:se[49]||(se[49]=he=>we(a)(`进入任务编辑:${he.name}`)),onClose:se[50]||(se[50]=()=>we(a)("已关闭任务编辑","info")),onTimerStarted:sa,onTimerStopped:Ea,onPredecessorAdded:se[51]||(se[51]=he=>we(a)(`Demo 任务[${he.targetTask.name}] 添加前置任务 [${he.newTask.name}]`,"info")),onSuccessorAdded:se[52]||(se[52]=he=>we(a)(`Demo 任务[${he.targetTask.name}] 添加后置任务 [${he.newTask.name}]`,"info")),onTaskDeleted:Ua,onTaskAdded:N0,onTaskUpdated:o0,onTaskRowMoved:Rt},{"custom-task-content":z0(he=>[ht(of,{item:void 0,task:he.task,type:he.type,style:at(he.dynamicStyles)},null,8,["item","task","type","style"])]),"header-name":z0(()=>[h("div",yC,[se[89]||(se[89]=h("img",{src:"https://foruda.gitee.com/avatar/1764902889653058860/565633_nelson820125_1764902889.png!avatar200",width:"32",height:"32",style:{"border-radius":"50%"}},null,-1)),h("strong",RC,le(we(t).taskName),1)])]),"column-name":z0(({task:he,column:Je,value:t2})=>[h("div",QC,[se[90]||(se[90]=h("img",{src:"https://foruda.gitee.com/avatar/1764902889653058860/565633_nelson820125_1764902889.png!avatar200",width:"20",height:"20",style:{"border-radius":"50%"}},null,-1)),h("span",{innerHTML:t2},null,8,bC),he.priority?(q(),me("span",HC," P-"+le(he.priority),1)):h2("",!0)])]),"column-custom":z0(({task:he,column:Je,value:t2})=>[h("div",MC,[typeof t2=="number"?(q(),me("span",kC," 💰 "+le(t2.toLocaleString()),1)):typeof t2=="string"?(q(),me("span",xC," 📝 "+le(t2),1)):(q(),me("span",UC,"-"))])]),default:z0(()=>[ht(X2,{prop:"name",label:we(t).taskName,width:"300",align:"center"},{header:z0(()=>[se[91]||(se[91]=h("img",{src:"https://foruda.gitee.com/avatar/1764902889653058860/565633_nelson820125_1764902889.png!avatar200",width:"32",height:"32",style:{"border-radius":"50%"}},null,-1)),h("strong",EC,le(we(t).taskName),1)]),default:z0(he=>[h("div",KC,[he.row.type==="milestone-group"?(q(),me("svg",LC,se[92]||(se[92]=[h("polygon",{points:"12,2 22,12 12,22 2,12"},null,-1)]))):h2("",!0),he.row.avatar&&he.row.type==="task"?(q(),me("img",{key:1,src:he.row.avatar,width:"20",height:"20",style:{"border-radius":"50%"}},null,8,WC)):h2("",!0),h("span",{innerHTML:he.row.name},null,8,_C)])]),_:1},8,["label"]),ht(X2,{prop:"startDate",label:we(t).startDate,width:"200",align:"center"},null,8,["label"]),ht(X2,{prop:"endDate",label:we(t).endDate,width:"200",align:"center"},null,8,["label"]),ht(Et,{"task-type":["task"]},{default:z0(he=>[h("div",PC,[se[93]||(se[93]=h("div",{class:"custom-menu-header"},"声明式 TaskList 菜单",-1)),h("div",{class:"custom-menu-item",onClick:Je=>y0("extend",he.row)}," ➡️ 延长任务 ",8,OC),h("div",{class:"custom-menu-item",onClick:Je=>y0("move",he.row)}," 📅 移动任务 ",8,VC),se[94]||(se[94]=h("div",{class:"custom-menu-divider"},null,-1)),h("div",{class:"custom-menu-item",onClick:Je=>y0("copy",he.row)}," 📄 复制任务 ",8,jC)])]),_:1})]),_:1},8,["tasks","milestones","locale","theme","time-scale","fullscreen","expand-all","task-list-config","task-bar-config","allow-drag-and-resize","enable-task-row-move","assignee-options","task-list-column-render-mode"])]),se[96]||(se[96]=H1('
MIT License @ 2025 JORDIUM.COMMIT LicenseVue.jsTypeScriptNodejs
',1)),ht(E3,{visible:re.value,milestone:J.value,"onUpdate:visible":se[53]||(se[53]=he=>re.value=he),onSave:Z0,onDelete:Vt,onClose:se[54]||(se[54]=he=>re.value=!1)},null,8,["visible","milestone"]),j2.value?(q(),me("div",{key:0,class:"task-click-dialog-overlay",onClick:Ye},[h("div",{class:"task-click-dialog",onClick:se[55]||(se[55]=Jt(()=>{},["stop"]))},[h("div",{class:"task-click-dialog-header"},[se[95]||(se[95]=h("h3",null,"Task",-1)),h("button",{class:"close-button",onClick:Ye},"×")]),h("div",$C,[xe.value?(q(),me("div",GC,[(q(!0),me(c2,null,ut(Object.entries(xe.value),([he,Je])=>(q(),me("div",{key:he,class:"property-row"},[h("span",YC,le(he)+":",1),h("span",qC,le(F2(Je)),1)]))),128))])):h2("",!0)]),h("div",{class:"task-click-dialog-footer"},[h("button",{class:"confirm-button",onClick:Ye},"确认")])])])):h2("",!0)])}}}),XC=J0(zC,[["__scopeId","data-v-be176ec9"]]),JC={class:"confirm-timer-dialog-overlay"},ZC={class:"confirm-timer-dialog"},ev={class:"dialog-message"},tv={class:"task-name-highlight"},av=["placeholder"],rv={class:"dialog-actions"},nv=x0({__name:"ConfirmTimerDialog",props:{visible:Boolean,title:{type:String,default:"确认开始计时"},message:{type:String,default:""},defaultDesc:{type:String,default:""},placeholder:{type:String,default:"请输入计时说明"}},emits:["confirm","cancel"],setup(e,{emit:a}){const t=e,r=a,{getTranslation:n}=Fr(),s=Ce(t.defaultDesc);Dt(()=>t.visible,o=>{o&&(s.value=t.defaultDesc)});const d=()=>r("confirm",s.value),i=Ge(()=>{if(t.message){const o=t.message.match(/任务([\S\s]+?)计时|Task ([\S\s]+?) timing/);if(o&&(o[1]||o[2]))return o[1]||o[2]}return t.defaultDesc});return(o,D)=>(q(),me("div",JC,[h("div",ZC,[h("div",ev,[h("span",null,le(we(n)("timerConfirmPrefix")),1),h("span",tv,le(i.value),1),h("span",null,le(we(n)("timerConfirmSuffix")),1)]),Mt(h("textarea",{"onUpdate:modelValue":D[0]||(D[0]=A=>s.value=A),class:"dialog-textarea",placeholder:we(n)("timerConfirmPlaceholder"),rows:"3"},null,8,av),[[wa,s.value]]),h("div",rv,[h("button",{class:"gantt-btn gantt-btn-default",onClick:D[1]||(D[1]=A=>o.$emit("cancel"))},le(we(n)("cancel")),1),h("button",{class:"gantt-btn gantt-btn-confirm",onClick:d},le(we(n)("startTimer")),1)])])]))}}),K3=J0(nv,[["__scopeId","data-v-4244c39f"]]),sv={class:"icon-wrapper"},dv=["onClick"],iv=["innerHTML"],ov=x0({__name:"TaskContextMenu",props:{visible:{type:Boolean},position:{},task:{},allTasks:{}},emits:["start-timer","stop-timer","add-predecessor","add-successor","delete","delete-link","close"],setup(e,{emit:a}){const t=e,r=a,{t:n}=Fr(),s=Ce(null),d=Ce({x:0,y:0}),i=Ce({display:"none",left:"50%",top:"-8px",transform:"rotate(0deg)"}),o=Ce(!1),D=Ce(""),A=Ce(!1),m=Ge(()=>{var te;return((te=t.task)==null?void 0:te.type)==="story"?"yes-no-cancel":"confirm-cancel"}),c=Ge(()=>{var te,Se,Me;return((te=t.task)==null?void 0:te.type)==="story"?n.value.confirmDeleteStory.replace("{name}",((Se=t.task)==null?void 0:Se.name)||""):n.value.confirmDeleteTask.replace("{name}",((Me=t.task)==null?void 0:Me.name)||"")});function g(){var te;D.value=((te=t.task)==null?void 0:te.name)||"",o.value=!0}function f(){o.value=!1}function v(te){if(o.value=!1,t.task&&typeof t.task=="object"){r("close");const Se=Date.now();Object.assign(t.task,{timerStartDesc:te||"",isTimerRunning:!0,timerStartTime:Se,timerElapsedTime:0}),r("start-timer",t.task)}}function B(){A.value=!0}const C=()=>{A.value=!1,t.task&&(r("delete",t.task),r("close"))},E=()=>{A.value=!1},b=()=>{A.value=!1,t.task&&(r("delete",t.task,!0),x())},H=()=>{A.value=!1,t.task&&(r("delete",t.task,!1),x())},X=Ge(()=>{var te;return((te=t.task)==null?void 0:te.type)!=="story"}),re=Ce(!1);let J=null;const K=Ge(()=>{const te=[];if(!t.task||!t.allTasks)return te;if(t.task.predecessor){const Se=Vr(t.task.predecessor);for(const Me of Se){const w=t.allTasks.find(P=>P.id===Me);w&&te.push({type:"predecessor",taskId:Me,taskName:w.name||`任务 ${Me}`})}}for(const Se of t.allTasks)Se.predecessor&&Se.id!==t.task.id&&Vr(Se.predecessor).includes(t.task.id)&&te.push({type:"successor",taskId:Se.id,taskName:Se.name||`任务 ${Se.id}`});return te}),y=Ge(()=>K.value.length>0);Dt([()=>t.visible,()=>t.position],([te,Se])=>{te&&Se&&Zt(()=>{if(s.value){const Me=window.innerWidth,w=window.innerHeight,P=s.value.offsetWidth,G=s.value.offsetHeight;let ee=Se.x-P/2,ue=Se.y+10,pe="50%",Ie="-8px",ae="rotate(0deg)";if(ee+P>Me){const ke=ee+P-Me+5;ee-=ke,pe=`calc(50% + ${ke}px)`}if(ee<5){const ke=5-ee;ee=5,pe=`calc(50% - ${ke}px)`}ue+G>w&&(ue=Se.y-G-10,Ie="100%",ae="rotate(180deg)"),d.value={x:ee,y:ue},i.value={display:"block",left:pe,top:Ie,transform:ae}}})},{immediate:!0,deep:!0});const x=()=>{r("close")},T=()=>{var te;(te=t.task)!=null&&te.isTimerRunning?(r("close"),Object.assign(t.task,{isTimerRunning:!1,timerEndTime:Date.now(),timerElapsedTime:(t.task.timerElapsedTime||0)+(Date.now()-(t.task.timerStartTime||Date.now()))}),r("stop-timer",t.task)):g()},F=()=>{t.task&&(r("close"),Zt(()=>{r("add-predecessor",t.task)}))},j=()=>{t.task&&(r("close"),Zt(()=>{r("add-successor",t.task)}))},_=te=>{J&&(clearTimeout(J),J=null),re.value=!1,r("delete-link",{sourceTaskId:te.type==="predecessor"?te.taskId:t.task.id,targetTaskId:te.type==="predecessor"?t.task.id:te.taskId}),r("close")},Ne=()=>{J&&(clearTimeout(J),J=null),re.value=!0},ve=()=>{J=window.setTimeout(()=>{re.value=!1},200)},ne=te=>{s.value&&!s.value.contains(te.target)&&x()},oe=te=>{te.key==="Escape"&&x()};return Ca(()=>{document.addEventListener("mousedown",ne),document.addEventListener("keydown",oe)}),Da(()=>{document.removeEventListener("mousedown",ne),document.removeEventListener("keydown",oe),J&&clearTimeout(J)}),(te,Se)=>{var Me,w,P,G;return q(),r0(kn,{to:"body"},[te.visible?(q(),me("div",{key:0,ref_key:"menuRef",ref:s,class:"task-context-menu",style:at({left:`${d.value.x}px`,top:`${d.value.y}px`,zIndex:1e4,position:"fixed"})},[h("div",{class:"menu-arrow",style:at({display:i.value.display,left:i.value.left,top:i.value.top,transform:i.value.transform})},null,4),X.value?(q(),me("div",{key:0,class:"menu-item",onClick:T},[h("div",sv,[h("i",{class:B2(["menu-icon",(Me=t.task)!=null&&Me.isTimerRunning?"stop-icon":"timer-icon"])},null,2)]),Ut(" "+le((w=t.task)!=null&&w.isTimerRunning?we(n).stopTimer:we(n).startTimer),1)])):h2("",!0),h("div",{class:"menu-item",onClick:F},[Se[0]||(Se[0]=h("div",{class:"icon-wrapper"},[h("i",{class:"menu-icon predecessor-icon"})],-1)),Ut(" "+le(we(n).addPredecessor),1)]),h("div",{class:"menu-item",onClick:j},[Se[1]||(Se[1]=h("div",{class:"icon-wrapper"},[h("i",{class:"menu-icon successor-icon"})],-1)),Ut(" "+le(we(n).addSuccessor),1)]),y.value?(q(),me("div",{key:1,class:"menu-item menu-item-with-submenu",onMouseenter:Ne,onMouseleave:ve},[Se[2]||(Se[2]=h("div",{class:"icon-wrapper"},[h("i",{class:"menu-icon link-delete-icon"})],-1)),Ut(" "+le(we(n).deleteLinks)+" ",1),Se[3]||(Se[3]=h("i",{class:"submenu-arrow"},"›",-1)),re.value?(q(),me("div",{key:0,class:"submenu",onMouseenter:Ne,onMouseleave:ve},[(q(!0),me(c2,null,ut(K.value,ee=>(q(),me("div",{key:`${ee.type}-${ee.taskId}`,class:"menu-item submenu-item",onClick:Jt(ue=>_(ee),["stop"])},[h("span",{innerHTML:ee.type==="predecessor"?we(n).predecessorLink.replace("{name}",ee.taskName):we(n).successorLink.replace("{name}",ee.taskName)},null,8,iv)],8,dv))),128))],32)):h2("",!0)],32)):h2("",!0),Se[5]||(Se[5]=h("div",{class:"menu-divider"},null,-1)),h("div",{class:"menu-item menu-item-danger",onClick:B},[Se[4]||(Se[4]=h("div",{class:"icon-wrapper"},[h("i",{class:"menu-icon delete-icon"})],-1)),Ut(" "+le(we(n).delete),1)]),ht(o6,{visible:A.value,title:we(n).delete,type:m.value,message:c.value,"confirm-text":we(n).confirm,"cancel-text":we(n).cancel,"yes-text":we(n).storyDeleteYes,"no-text":we(n).storyDeleteNo,onConfirm:C,onYes:b,onNo:H,onCancel:E},null,8,["visible","title","type","message","confirm-text","cancel-text","yes-text","no-text"]),o.value?(q(),r0(K3,{key:2,visible:o.value,title:"确认开始计时",message:`即将为任务${(P=t.task)==null?void 0:P.name}计时,若有特殊说明请完善下面的描述`,"default-desc":((G=t.task)==null?void 0:G.name)||"",onConfirm:v,onCancel:f},null,8,["visible","message","default-desc"])):h2("",!0)],4)):h2("",!0)])}}}),L3=J0(ov,[["__scopeId","data-v-ace8cfaf"]]),pv={width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},Dv={key:0,points:"9,18 15,12 9,6"},Av={key:1,points:"18,15 12,9 6,15"},gv=x0({__name:"TaskRowCollapseButton",props:{collapsed:{type:Boolean},visible:{type:Boolean}},emits:["toggle"],setup(e){return(a,t)=>a.visible?(q(),me("span",{key:0,class:"collapse-btn",onClick:t[0]||(t[0]=Jt(r=>a.$emit("toggle"),["stop"]))},[(q(),me("svg",pv,[a.collapsed?(q(),me("polyline",Dv)):(q(),me("polyline",Av))]))])):h2("",!0)}}),qD=J0(gv,[["__scopeId","data-v-d56e1479"]]),Iv={key:0,class:"task-icon"},mv={key:0,width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",class:"milestone-group-icon"},lv={key:1,width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},cv={key:2,width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},uv=x0({__name:"TaskRowIcon",props:{isMilestoneGroup:{type:Boolean},isParentTask:{type:Boolean},hasChildren:{type:Boolean},isStoryTask:{type:Boolean},showIcon:{type:Boolean,default:!0}},setup(e){return(a,t)=>a.showIcon?(q(),me("span",Iv,[a.isMilestoneGroup?(q(),me("svg",mv,t[0]||(t[0]=[h("polygon",{points:"12,2 22,12 12,22 2,12"},null,-1)]))):a.isStoryTask||a.hasChildren?(q(),me("svg",lv,t[1]||(t[1]=[h("path",{d:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-5l-2-2H5a2 2 0 00-2 2z"},null,-1)]))):(q(),me("svg",cv,t[2]||(t[2]=[H1('',5)])))])):h2("",!0)}}),zD=J0(uv,[["__scopeId","data-v-7689b9a9"]]),fv={key:0,class:"timer-dot"},hv={key:1,class:"status-badge overtime"},Sv={key:2,class:"status-badge overdue"},Cv=x0({__name:"TaskRowBadges",props:{formattedTimer:{},isTimerRunning:{type:Boolean},timerElapsedTime:{},isOvertime:{type:Boolean},overdueDays:{},overtimeText:{},overdueText:{},daysText:{}},setup(e){return(a,t)=>(q(),me(c2,null,[a.isTimerRunning||a.timerElapsedTime?(q(),me("span",{key:0,class:B2(["timer-badge",{"timer-active":a.isTimerRunning}])},[a.isTimerRunning?(q(),me("span",fv)):h2("",!0),Ut(" "+le(a.formattedTimer),1)],2)):h2("",!0),a.isOvertime?(q(),me("span",hv,le(a.overtimeText),1)):h2("",!0),a.overdueDays>0?(q(),me("span",Sv,le(a.overdueText)+le(a.overdueDays>0?a.overdueDays+a.daysText:""),1)):h2("",!0)],64))}}),XD=J0(Cv,[["__scopeId","data-v-f020207b"]]),vv=["title"],Fv=["title"],wv=x0({__name:"TaskRowNameContent",props:{task:{},isParentTask:{type:Boolean},hasChildren:{type:Boolean},isStoryTask:{type:Boolean},isMilestoneGroup:{type:Boolean},isMilestoneTask:{type:Boolean},showTaskIcon:{type:Boolean},formattedTimer:{},isOvertime:{type:Boolean},overdueDays:{},overtimeText:{},overdueText:{},daysText:{},hasContentSlot:{type:Boolean},renderColumnSlot:{type:Function},hasColumnSlot:{type:Function}},setup(e){const a=e;return(t,r)=>{var n;return(n=t.hasColumnSlot)!=null&&n.call(t,"name")?(q(),r0(tn(()=>{var s;return(s=t.renderColumnSlot)==null?void 0:s.call(t,"name",{task:a.task,column:{key:"name"},value:a.task.name,isParentTask:t.isParentTask,hasChildren:t.hasChildren,isStoryTask:t.isStoryTask,isMilestoneGroup:t.isMilestoneGroup,isMilestoneTask:t.isMilestoneTask,showTaskIcon:t.showTaskIcon,formattedTimer:t.formattedTimer,isOvertime:t.isOvertime,overdueDays:t.overdueDays,overtimeText:t.overtimeText,overdueText:t.overdueText,daysText:t.daysText})}),{key:0})):t.hasContentSlot?(q(),me(c2,{key:1},[ht(zD,{isMilestoneGroup:t.isMilestoneGroup,isParentTask:t.isParentTask,hasChildren:t.hasChildren,isStoryTask:t.isStoryTask,showIcon:t.showTaskIcon},null,8,["isMilestoneGroup","isParentTask","hasChildren","isStoryTask","showIcon"]),h("span",{class:B2(["task-name-text",{"parent-task":t.isParentTask}]),title:t.task.name},[u1(t.$slots,"custom-task-content",{},void 0),ht(XD,{formattedTimer:t.formattedTimer,isTimerRunning:!!t.task.isTimerRunning,timerElapsedTime:t.task.timerElapsedTime,isOvertime:t.isOvertime,overdueDays:t.overdueDays,overtimeText:t.overtimeText,overdueText:t.overdueText,daysText:t.daysText},null,8,["formattedTimer","isTimerRunning","timerElapsedTime","isOvertime","overdueDays","overtimeText","overdueText","daysText"])],10,vv)],64)):(q(),me(c2,{key:2},[ht(zD,{isMilestoneGroup:t.isMilestoneGroup,isParentTask:t.isParentTask,hasChildren:t.hasChildren,isStoryTask:t.isStoryTask,showIcon:t.showTaskIcon},null,8,["isMilestoneGroup","isParentTask","hasChildren","isStoryTask","showIcon"]),h("span",{class:B2(["task-name-text",{"parent-task":t.isParentTask}]),title:t.task.name},[Ut(le(t.task.name)+" ",1),ht(XD,{formattedTimer:t.formattedTimer,isTimerRunning:!!t.task.isTimerRunning,timerElapsedTime:t.task.timerElapsedTime,isOvertime:t.isOvertime,overdueDays:t.overdueDays,overtimeText:t.overtimeText,overdueText:t.overdueText,daysText:t.daysText},null,8,["formattedTimer","isTimerRunning","timerElapsedTime","isOvertime","overdueDays","overtimeText","overdueText","daysText"])],10,Fv)],64))}}}),Tv=J0(wv,[["__scopeId","data-v-0e4d76f3"]]);function Bv(e,a,t,r,n){const d=Ge(()=>{const g=e.value.type,f=e.value.children,v=!!(f&&f.length>0),B=g==="story",C=g==="milestone-group",E=g==="milestone",b=B||v||C;return{indent:`${10+a.value*20}px`,hasChildren:v,isStoryTask:B,isMilestoneGroup:C,isMilestoneTask:E,isParentTask:b}}),i=()=>{const g=e.value.progress||0,f=new Date,v=e.value.endDate?new Date(e.value.endDate):null;return v&&f>v&&g<100?"progress-danger":g>=100?"progress-success":g>0?"progress-warning":""},o=()=>e.value.actualHours&&e.value.estimatedHours&&e.value.actualHours>e.value.estimatedHours,D=()=>{const g=new Date,f=e.value.endDate?new Date(e.value.endDate):null,v=e.value.progress||0;if(f&&g>f&&v<100){const B=new Date(g.getFullYear(),g.getMonth(),g.getDate()),C=new Date(f.getFullYear(),f.getMonth(),f.getDate());return Math.floor((B.getTime()-C.getTime())/(1e3*60*60*24))}return 0},A=Ge(()=>i()),m=Ge(()=>r!=null&&r.value?typeof r.value=="function"?r.value(e.value,(t==null?void 0:t.value)??0):r.value:""),c=Ge(()=>n!=null&&n.value?typeof n.value=="function"?n.value(e.value,(t==null?void 0:t.value)??0):n.value:{});return{indent:Ge(()=>d.value.indent),hasChildren:Ge(()=>d.value.hasChildren),isStoryTask:Ge(()=>d.value.isStoryTask),isMilestoneGroup:Ge(()=>d.value.isMilestoneGroup),isMilestoneTask:Ge(()=>d.value.isMilestoneTask),isParentTask:Ge(()=>d.value.isParentTask),getProgressClass:i,isOvertime:o,overdueDays:D,progressClass:A,customRowClass:m,customRowStyle:c}}function Nv(e,a,t,r,n,s,d){const i=A=>A===0;return{isFirstColumn:i,getDeclarativeColumnAlign:A=>({justifyContent:A.align==="center"?"center":A.align==="right"?"flex-end":"flex-start",textAlign:A.align||"left"}),renderDeclarativeColumn:(A,m)=>{if(i(m)){const c=A.prop?e.value[A.prop]:e.value.name;return A.defaultSlot?pr("div",{class:"task-name-content"},[pr("span",{class:["task-name-text",{"parent-task":a.value}],title:c},[A.defaultSlot({row:e.value,$index:d.value??-1})])]):pr("div",{class:"task-name-content"},[s.value!==!1?pr("span",{class:"task-icon"},t.value?pr("svg",{width:16,height:16,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,class:"milestone-group-icon"},pr("polygon",{points:"12,2 22,12 12,22 2,12"})):r.value||n.value?pr("svg",{width:16,height:16,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2},pr("path",{d:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-5l-2-2H5a2 2 0 00-2 2z"})):pr("svg",{width:16,height:16,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2},[pr("path",{d:"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"}),pr("polyline",{points:"14,2 14,8 20,8"}),pr("line",{x1:16,y1:13,x2:8,y2:13}),pr("line",{x1:16,y1:17,x2:8,y2:17}),pr("polyline",{points:"10,9 9,9 8,9"})])):null,pr("span",{class:["task-name-text",{"parent-task":a.value}],title:String(c)},String(c||"-"))])}if(A.defaultSlot)return A.defaultSlot({row:e.value,$index:d.value??-1});if(A.prop){const c=e.value[A.prop];return c??"-"}return"-"}}}function yv(e,a){const t=Ce(!1),r=Ce({x:0,y:0}),n=Ge(()=>e.value),s=Ce(0),d=Ce(null);let i=null;const o=Ge(()=>{const v=Math.floor(s.value/1e3),B=Math.floor(v/3600),C=Math.floor(v%3600/60),E=v%60;return`${String(B).padStart(2,"0")}:${String(C).padStart(2,"0")}:${String(E).padStart(2,"0")}`}),D=()=>{if(e.value.isTimerRunning&&e.value.timerStartTime){const v=e.value.timerElapsedTime||0;s.value=Date.now()-e.value.timerStartTime+v}else e.value.timerElapsedTime?s.value=e.value.timerElapsedTime:s.value=0},A=()=>{i||(i=Dt(()=>[e.value.isTimerRunning,e.value.timerStartTime,e.value.timerElapsedTime],()=>{d.value&&(clearInterval(d.value),d.value=null),e.value.isTimerRunning?(D(),d.value=window.setInterval(D,1e3)):D()},{immediate:!0}))};(e.value.isTimerRunning||e.value.timerElapsedTime)&&A();const m=v=>{window.dispatchEvent(new CustomEvent("close-all-taskbar-menus"));const B=e.value.type||"task";if(B!=="task"&&B!=="story"){v.preventDefault(),t.value=!1;return}v.preventDefault(),t.value=!0,r.value={x:v.clientX,y:v.clientY}},c=()=>{t.value=!1},g=v=>{if(!t.value)return;const B=v.target,C=document.querySelector(".task-context-menu");C&&C.contains(B)||c()},f=(v,B)=>{a("delete",v,B),c()};return Ca(()=>{window.addEventListener("close-all-taskbar-menus",c),document.addEventListener("click",g)}),Da(()=>{window.removeEventListener("close-all-taskbar-menus",c),document.removeEventListener("click",g),d.value&&clearInterval(d.value),i&&i()}),{contextMenuVisible:t,contextMenuPosition:r,contextMenuTask:n,handleContextMenu:m,closeContextMenu:c,handleTaskDelete:f,timerElapsed:s,formattedTimer:o}}function Rv(e,a,t,r,n,s,d,i,o,D,A){const m=()=>{o&&o("toggle",e.value)},c=()=>{(a.value||t.value)&&!r.value&&o&&o("toggle",e.value)},g=H=>{H.stopPropagation(),o&&o("dblclick",e.value)},f=()=>{n.value||i&&i(e.value.id)},v=()=>{n.value||i&&i(null)},B=()=>{n.value=!0},C=()=>{n.value=!1},E=H=>{if(!d.value)return;const X=H.target;X.tagName==="BUTTON"||X.tagName==="INPUT"||X.tagName==="SELECT"||X.tagName==="TEXTAREA"||X.closest(".collapse-btn")||X.closest(".task-context-menu")||s.value&&D&&D(e.value,s.value,H)},b=H=>{if(!d.value||!s.value||!A)return;const{taskId:X,event:re}=H.detail;X===e.value.id&&A(e.value,s.value,re)};return Ca(()=>{window.addEventListener("splitter-drag-start",B),window.addEventListener("splitter-drag-end",C),window.addEventListener("task-row-drag-over",b)}),Da(()=>{window.removeEventListener("splitter-drag-start",B),window.removeEventListener("splitter-drag-end",C),window.removeEventListener("task-row-drag-over",b)}),{handleToggle:m,handleRowClick:c,handleTaskRowDoubleClick:g,handleMouseEnter:f,handleMouseLeave:v,handleMouseDown:E}}function Qv(){const e=d1("gantt-column-slots",{});return{columnSlots:e,hasColumnSlot:r=>{const n=`column-${r}`;return!!e[n]},renderColumnSlot:(r,n)=>{const s=`column-${r}`,d=e[s];return d?d(n):null}}}const bv=["data-task-id"],Hv={key:0,class:"milestone-spacer"},Mv={key:1,class:"leaf-spacer"},kv={key:0,class:"milestone-spacer"},xv={key:1,class:"leaf-spacer"},Uv={key:0,class:"milestone-empty-col"},Ev={key:3,class:"assignee-info"},Kv={class:"avatar"},Lv={class:"assignee-name"},Wv=x0({__name:"TaskRow",props:{task:{},level:{},rowIndex:{},isHovered:{type:Boolean},hoveredTaskId:{},onHover:{},columns:{},declarativeColumns:{},renderMode:{default:"default"},getColumnWidthStyle:{},disableChildrenRender:{type:Boolean},showTaskIcon:{type:Boolean},enableDrag:{type:Boolean},dragStart:{},dragOver:{},taskListRowClassName:{},taskListRowStyle:{type:[Boolean,null,String,Object,Array,Function]}},emits:["toggle","dblclick","contextmenu","start-timer","stop-timer","add-predecessor","add-successor","delete"],setup(e,{emit:a}){const t=e,r=a,{t:n}=Fr(),s=Ge(()=>{var O;return((O=n.value)==null?void 0:O.overtime)??""}),d=Ge(()=>{var O;return((O=n.value)==null?void 0:O.overdue)??""}),i=Ge(()=>{var O;return((O=n.value)==null?void 0:O.days)??""}),o=Do(),D=Ge(()=>!!o["custom-task-content"]),A=d1("enable-task-list-context-menu",Ge(()=>!0)),m=d1("task-list-context-menu-slot",Ge(()=>!1)),c=d1("declarative-task-list-context-menu",Ge(()=>null)),g=Ge(()=>!!A.value),f=Ge(()=>A.value?!m.value:!1),v=Ge(()=>{if(!A.value||!m.value)return!1;const O=c.value;if((O==null?void 0:O.taskType)!==void 0){const ie=t.task.type||"task";return(Array.isArray(O.taskType)?O.taskType:[O.taskType]).includes(ie)}return!0}),B=pD(t,"task"),C=pD(t,"level"),{indent:E,hasChildren:b,isStoryTask:H,isMilestoneGroup:X,isMilestoneTask:re,isParentTask:J,isOvertime:K,overdueDays:y,progressClass:x,customRowClass:T,customRowStyle:F}=Bv(B,C,Ge(()=>t.rowIndex),Ge(()=>t.taskListRowClassName),Ge(()=>t.taskListRowStyle)),{hasColumnSlot:j,renderColumnSlot:_}=Qv(),{isFirstColumn:Ne,getDeclarativeColumnAlign:ve,renderDeclarativeColumn:ne}=Nv(B,J,X,H,b,Ge(()=>t.showTaskIcon),Ge(()=>t.rowIndex)),{contextMenuVisible:oe,contextMenuPosition:te,contextMenuTask:Se,handleContextMenu:Me,closeContextMenu:w,handleTaskDelete:P,timerElapsed:G,formattedTimer:ee}=yv(B,r),ue=O=>{if(!g.value){O.preventDefault();return}Me(O)},pe=Ce(null),Ie=Ce(!1),{handleToggle:ae,handleRowClick:ke,handleTaskRowDoubleClick:ze,handleMouseEnter:W,handleMouseLeave:$,handleMouseDown:Be}=Rv(B,H,b,X,Ie,pe,Ge(()=>t.enableDrag),t.onHover,r,t.dragStart,t.dragOver),R=Ge(()=>t.renderMode==="declarative"&&t.declarativeColumns?t.declarativeColumns:t.columns),ye=Ge(()=>({isRowContent:!0,task:t.task,level:t.level,indent:E.value,isHovered:t.isHovered??!1,hoveredTaskId:t.hoveredTaskId??null,isParent:J.value,hasChildren:b.value,collapsed:!!t.task.collapsed,formattedTimer:ee.value,timerRunning:!!t.task.isTimerRunning,timerElapsed:G.value,isOvertime:K(),overdueDays:y(),overtimeText:s.value,overdueText:d.value,daysText:i.value,progressClass:x.value}));return(O,ie)=>{var fe;return q(),me("div",null,[h("div",{ref_key:"taskRowRef",ref:pe,class:B2(["task-row",{"task-row-hovered":O.isHovered,"parent-task":we(J),"milestone-group-row":we(X),"task-type-story":we(H),"task-type-task":t.task.type==="task","task-type-milestone":we(re),[we(T)]:we(T)}]),"data-task-id":t.task.id,style:at(we(F)),onClick:ie[0]||(ie[0]=(...He)=>we(ke)&&we(ke)(...He)),onDblclick:ie[1]||(ie[1]=(...He)=>we(ze)&&we(ze)(...He)),onMousedown:ie[2]||(ie[2]=(...He)=>we(Be)&&we(Be)(...He)),onMouseenter:ie[3]||(ie[3]=(...He)=>we(W)&&we(W)(...He)),onMouseleave:ie[4]||(ie[4]=(...He)=>we($)&&we($)(...He)),onContextmenu:ue},[O.renderMode==="declarative"&&O.declarativeColumns?(q(!0),me(c2,{key:0},ut(R.value,(He,be)=>(q(),me("div",{key:be,class:B2(["col",[He.cssClass,{"col-name":we(Ne)(be)}]]),style:at([O.getColumnWidthStyle?O.getColumnWidthStyle(He):{},we(ve)(He)])},[we(Ne)(be)?(q(),me("div",{key:0,style:at({paddingLeft:we(E)}),class:"first-col-wrapper"},[ht(qD,{collapsed:!!t.task.collapsed,visible:(we(H)||we(b))&&!we(X),onToggle:we(ae)},null,8,["collapsed","visible","onToggle"]),we(X)?(q(),me("span",Hv)):h2("",!0),!we(J)&&!we(X)&&O.showTaskIcon===!1?(q(),me("span",Mv)):h2("",!0),(q(),r0(tn(()=>we(ne)(He,be))))],4)):(q(),r0(tn(()=>we(ne)(He,be)),{key:1}))],6))),128)):(q(),me(c2,{key:1},[h("div",{class:"col col-name",style:at({paddingLeft:we(E)})},[ht(qD,{collapsed:!!t.task.collapsed,visible:(we(H)||we(b))&&!we(X),onToggle:we(ae)},null,8,["collapsed","visible","onToggle"]),we(X)?(q(),me("span",kv)):h2("",!0),!we(J)&&!we(X)&&O.showTaskIcon===!1?(q(),me("span",xv)):h2("",!0),ht(Tv,{task:t.task,isParentTask:we(J),hasChildren:we(b),isStoryTask:we(H),isMilestoneGroup:we(X),isMilestoneTask:we(re),showTaskIcon:O.showTaskIcon!==!1,formattedTimer:we(ee),isOvertime:!!we(K)(),overdueDays:we(y)(),overtimeText:s.value,overdueText:d.value,daysText:i.value,hasContentSlot:D.value,renderColumnSlot:we(_),hasColumnSlot:we(j)},{"custom-task-content":z0(()=>[u1(O.$slots,"custom-task-content",Ln(ye.value,{type:"task-row"}),void 0,!0)]),_:3},8,["task","isParentTask","hasChildren","isStoryTask","isMilestoneGroup","isMilestoneTask","showTaskIcon","formattedTimer","isOvertime","overdueDays","overtimeText","overdueText","daysText","hasContentSlot","renderColumnSlot","hasColumnSlot"])],4),(q(!0),me(c2,null,ut(O.columns,He=>(q(),me("div",{key:He.key,class:B2(["col",He.cssClass||`col-${He.key}`]),style:at(O.getColumnWidthStyle?O.getColumnWidthStyle(He):void 0)},[we(X)?(q(),me("div",Uv)):(q(),me(c2,{key:1},[we(j)(He.key)?(q(),r0(tn(()=>we(_)(He.key,{task:t.task,column:He,value:t.task[He.key]})),{key:0})):He.formatter?(q(),me(c2,{key:1},[Ut(le(He.formatter(t.task,He)),1)],64)):He.key==="predecessor"?(q(),me(c2,{key:2},[Ut(le(we(o5)(t.task.predecessor)),1)],64)):He.key==="assignee"?(q(),me("div",Ev,[h("div",Kv,le(t.task.assignee?t.task.assignee.charAt(0):"-"),1),h("span",Lv,le(t.task.assignee||"-"),1)])):He.key==="startDate"?(q(),me(c2,{key:4},[Ut(le(t.task.startDate||"-"),1)],64)):He.key==="endDate"?(q(),me(c2,{key:5},[Ut(le(t.task.endDate||"-"),1)],64)):He.key==="estimatedHours"?(q(),me(c2,{key:6},[Ut(le(t.task.estimatedHours||"-"),1)],64)):He.key==="actualHours"?(q(),me(c2,{key:7},[Ut(le(t.task.actualHours||"-"),1)],64)):He.key==="progress"?(q(),me("span",{key:8,class:B2(["progress-value",we(x)])},le(t.task.progress!=null?t.task.progress+"%":"-"),3)):(q(),me(c2,{key:9},[Ut(le(t.task[He.key]||"-"),1)],64))],64))],6))),128))],64))],46,bv),f.value?(q(),r0(L3,{key:0,visible:we(oe),task:we(Se),position:we(te),onClose:we(w),onStartTimer:ie[5]||(ie[5]=He=>O.$emit("start-timer",t.task)),onStopTimer:ie[6]||(ie[6]=He=>O.$emit("stop-timer",t.task)),onAddPredecessor:ie[7]||(ie[7]=He=>O.$emit("add-predecessor",t.task)),onAddSuccessor:ie[8]||(ie[8]=He=>O.$emit("add-successor",t.task)),onDelete:we(P)},null,8,["visible","task","position","onClose","onDelete"])):h2("",!0),(q(),r0(kn,{to:"body"},[v.value&&we(oe)&&((fe=we(c))!=null&&fe.defaultSlot)?(q(),me("div",{key:0,class:"gantt-context-menu-wrapper",style:at({position:"fixed",left:`${we(te).x}px`,top:`${we(te).y}px`,zIndex:9999})},[(q(),r0(tn(we(c).defaultSlot),{row:we(Se),$index:t.rowIndex??-1},null,8,["row","$index"]))],4)):h2("",!0)]))])}}}),_v=J0(Wv,[["__scopeId","data-v-e6d0e186"]]),Pv=320,JD=280,Ov=1160;function tp(e,a,t){if(e==null)return t;if(typeof e=="number")return e;if(typeof e=="string"){const r=e.trim();if(r.endsWith("%")){const s=parseFloat(r);if(!isNaN(s))return Math.round(a*s/100)}const n=parseFloat(r);if(!isNaN(n))return n}return t}const ap=[{type:"name",key:"taskName",label:"任务名称",cssClass:"col-name",visible:!0},{type:"predecessor",key:"predecessor",label:"前置任务",cssClass:"col-pre",visible:!0},{type:"assignee",key:"assignee",label:"负责人",cssClass:"col-assignee",visible:!0},{type:"startDate",key:"startDate",label:"开始日期",cssClass:"col-date",visible:!0},{type:"endDate",key:"endDate",label:"结束日期",cssClass:"col-date",visible:!0},{type:"estimatedHours",key:"estimatedHours",label:"预估工时",cssClass:"col-hours",visible:!0},{type:"actualHours",key:"actualHours",label:"实际工时",cssClass:"col-hours",visible:!0},{type:"progress",key:"progress",label:"进度",cssClass:"col-progress",visible:!0}];function Vv(e){const a=e.dragThreshold??5,t=Ce({isDragging:!1,isPreparing:!1,draggedTask:null,draggedElement:null,ghostElement:null,dropTargetTask:null,dropPosition:null,startX:0,startY:0}),r=(c,g,f)=>{e.enabled&&(c.type==="milestone-group"||c.type==="milestone"||(f.preventDefault(),f.stopPropagation(),t.value.isPreparing=!0,t.value.draggedTask=c,t.value.draggedElement=g,t.value.startX=f.clientX,t.value.startY=f.clientY))},n=c=>{if(!t.value.isPreparing||t.value.isDragging)return;const g=t.value.draggedTask,f=t.value.draggedElement;t.value.isDragging=!0,t.value.isPreparing=!1;const v=f.cloneNode(!0);v.style.position="fixed",v.style.left="-9999px",v.style.top="-9999px",v.style.width=`${f.offsetWidth}px`,v.style.height=`${f.offsetHeight}px`,v.style.opacity="0.6",v.style.pointerEvents="none",v.style.zIndex="999999",v.style.boxShadow="0 8px 24px rgba(0, 0, 0, 0.3)",v.classList.add("task-row-dragging"),(document.querySelector(".gantt-fullscreen")||document.body).appendChild(v),t.value.ghostElement=v,f.style.opacity="0.4",document.body.style.userSelect="none",document.body.style.webkitUserSelect="none",document.body.style.cursor="move",window.dispatchEvent(new CustomEvent("task-row-drag-start",{detail:{task:g}})),e.onDragStart&&e.onDragStart(g),s(c)},s=c=>{if(t.value.ghostElement){const g=t.value.ghostElement;g.style.left=`${c.clientX+10}px`,g.style.top=`${c.clientY-25}px`}},d=(c,g,f)=>{if(!t.value.isDragging||!t.value.draggedTask)return;if(c.id===t.value.draggedTask.id){i();return}if(m(t.value.draggedTask,c)){i();return}f.preventDefault(),f.stopPropagation();const B=c.children&&c.children.length>0?"child":"after";t.value.dropTargetTask=c,t.value.dropPosition=B,document.querySelectorAll(".task-row-drop-target").forEach(C=>{C.classList.remove("task-row-drop-target","drop-after","drop-child")}),g.classList.add("task-row-drop-target"),B==="after"?g.classList.add("drop-after"):g.classList.add("drop-child"),e.onDragOver&&e.onDragOver(c,B)},i=()=>{t.value.dropTargetTask=null,t.value.dropPosition=null,document.querySelectorAll(".task-row-drop-target").forEach(c=>{c.classList.remove("task-row-drop-target","drop-after","drop-child")})},o=()=>{if(t.value.isPreparing&&!t.value.isDragging){t.value.isPreparing=!1,t.value.draggedTask=null,t.value.draggedElement=null;return}if(!t.value.isDragging)return;const c=t.value.draggedTask,g=t.value.dropTargetTask,f=t.value.dropPosition;t.value.draggedElement&&(t.value.draggedElement.style.opacity=""),t.value.ghostElement&&t.value.ghostElement.parentElement&&t.value.ghostElement.parentElement.removeChild(t.value.ghostElement),i(),document.body.style.userSelect="",document.body.style.webkitUserSelect="",document.body.style.cursor="",window.dispatchEvent(new CustomEvent("task-row-drag-end")),c&&g&&f&&e.onDrop&&e.onDrop(c,g,f),t.value={isDragging:!1,isPreparing:!1,draggedTask:null,draggedElement:null,ghostElement:null,dropTargetTask:null,dropPosition:null,startX:0,startY:0}},D=c=>{if(t.value.isPreparing&&!t.value.isDragging){const g=Math.abs(c.clientX-t.value.startX),f=Math.abs(c.clientY-t.value.startY);Math.sqrt(g*g+f*f)>a&&n(c);return}if(t.value.isDragging){s(c);const g=t.value.ghostElement;g&&(g.style.display="none");const f=document.elementFromPoint(c.clientX,c.clientY);if(g&&(g.style.display=""),f){const v=f.closest(".task-row");if(v&&v.dataset.taskId){const B=Number(v.dataset.taskId);window.dispatchEvent(new CustomEvent("task-row-drag-over",{detail:{taskId:B,event:c}}))}}}},A=()=>{(t.value.isDragging||t.value.isPreparing)&&o()},m=(c,g)=>{if(!c.children)return!1;for(const f of c.children)if(f.id===g.id||m(f,g))return!0;return!1};return Ca(()=>{document.addEventListener("mousemove",D),document.addEventListener("mouseup",A)}),Da(()=>{document.removeEventListener("mousemove",D),document.removeEventListener("mouseup",A),t.value.ghostElement&&t.value.ghostElement.parentElement&&t.value.ghostElement.parentElement.removeChild(t.value.ghostElement)}),{dragState:t,startDrag:r,handleDragOver:d,endDrag:o}}function jv(e){let a=!1;if(typeof e.type=="object"){const d=e.type;a=d.name==="TaskListColumn"||d.__name==="TaskListColumn"||d.__file&&d.__file.includes("TaskListColumn")}if(!a)return null;const t=e.props||{},r=e.children,n=r==null?void 0:r.header,s=r==null?void 0:r.default;return{prop:t.prop,label:t.label,width:t.width,align:t.align||"left",cssClass:t.cssClass,headerSlot:n,defaultSlot:s}}function $v(e){var n;const a=(n=e.default)==null?void 0:n.call(e);if(!a||!Array.isArray(a))return[];const t=[],r=s=>{for(const d of s){if(!d)continue;if(typeof d.type=="symbol"){d.children&&Array.isArray(d.children)&&r(d.children);continue}const i=jv(d);i&&t.push(i),d.children&&Array.isArray(d.children)&&r(d.children)}};return r(a),t}function Gv(e,a,t){const r=Ge(()=>(typeof e=="string"?e:e.value)!=="declarative"?[]:$v(a)),n=Ge(()=>(typeof e=="string"?e:e.value)==="declarative"?r.value:t||[]);return{declarativeColumns:r,finalColumns:n,getColumnWidthStyle:(i,o)=>{if(!i.width)return{};let D;if(typeof i.width=="string"&&i.width.includes("%"))if(o&&o>0){const A=parseFloat(i.width)/100;D=`${Math.floor(o*A)}px`}else return{};else typeof i.width=="number"?D=`${i.width}px`:typeof i.width=="string"?/\d+(px|rem|em|%)/.test(i.width)?D=i.width:D=`${i.width}px`:D=String(i.width);return{flex:`0 0 ${D}`,minWidth:D,maxWidth:D}},getColumnAlignStyle:i=>!i||i==="left"?{}:{justifyContent:i==="center"?"center":"flex-end",textAlign:i}}}const md=51,ZD=5;function Yv(e){const a=Ce(0),t=Ce(0),r=(A,m=0)=>{const c=[];for(const g of A)c.push({task:g,level:m}),!(g.type==="milestone-group")&&g.children&&g.children.length>0&&!g.collapsed&&c.push(...r(g.children,m+1));return c},n=Ge(()=>r(e.value)),s=Ge(()=>{const A=a.value,m=t.value||600,c=Math.floor(A/md)-ZD,g=Math.ceil((A+m)/md)+ZD,f=n.value.length,v=Math.min(Math.max(0,c),f),B=Math.min(f,Math.max(v+1,g));return{startIndex:v,endIndex:B}}),d=Ge(()=>{const{startIndex:A,endIndex:m}=s.value;return n.value.slice(A,m).map((g,f)=>({...g,rowIndex:A+f}))}),i=Ge(()=>n.value.length*md),o=Ge(()=>s.value.startIndex*md),D=Ge(()=>{const A=d.value.length*md;return Math.max(0,i.value-o.value-A)});return{taskListScrollTop:a,taskListBodyHeight:t,flattenedTasks:n,visibleTaskRange:s,visibleTasks:d,totalContentHeight:i,startSpacerHeight:o,endSpacerHeight:D,getFlattenedVisibleTasks:r}}function qv(e,a,t){const r=Ce(null),n=Ce(null),s=Ce(0);let d=null,i=null;return{taskListRef:r,taskListBodyRef:n,cachedContainerWidth:s,initializeResizeObservers:()=>{r.value&&(d=new ResizeObserver(m=>{if(!e.value)for(const c of m)s.value=c.contentRect.width}),d.observe(r.value)),n.value&&(t.value=n.value.clientHeight,a.value=n.value.scrollTop,i=new ResizeObserver(m=>{for(const c of m)t.value=c.contentRect.height}),i.observe(n.value))},cleanupResizeObservers:()=>{d&&(d.disconnect(),d=null),i&&(i.disconnect(),i=null)},updateContainerWidth:()=>{if(r.value){const m=r.value.offsetWidth;Math.abs(m-s.value)>1&&(s.value=m)}}}}function zv(e){if(!e.children||e.children.length===0)return{progress:e.progress||0,startDate:e.startDate||"",endDate:e.endDate||""};const a=[],t=A=>{A.forEach(m=>{a.push(m),m.children&&m.children.length>0&&t(m.children)})};t(e.children);const r=a.reduce((A,m)=>A+(m.progress||0),0),n=a.length>0?Math.round(r/a.length):0,s=a.filter(A=>A.startDate&&A.endDate);if(s.length===0)return{progress:n,startDate:e.startDate||"",endDate:e.endDate||""};const d=s.map(A=>new Date(A.startDate)),i=s.map(A=>new Date(A.endDate)),o=new Date(Math.min(...d.map(A=>A.getTime()))),D=new Date(Math.max(...i.map(A=>A.getTime())));return{progress:n,startDate:o.toISOString().split("T")[0],endDate:D.toISOString().split("T")[0]}}function p5(e){if(!e)return;const a=t=>{t.forEach(r=>{if(r.children&&r.children.length>0){a(r.children);const n=zv(r);r.progress=n.progress,r.startDate=n.startDate,r.endDate=n.endDate}})};a(e)}function Xv(e){const a=[],t=r=>{r.forEach(n=>{a.push(n),n.children&&n.children.length>0&&t(n.children)})};return t(e),a}function Jv(e){const{tasks:a,hoveredTaskId:t,isSplitterDragging:r,taskListScrollTop:n,taskListBodyRef:s,updateContainerWidth:d,onTaskUpdate:i}=e,o=J=>{r.value||(t.value=J,window.dispatchEvent(new CustomEvent("task-list-hover",{detail:J})))},D=J=>{t.value=J.detail},A=J=>{J.type==="milestone"||J.type==="milestone-group"||window.dispatchEvent(new CustomEvent("task-row-double-click",{detail:J}))},m=J=>{if(!a.value)return;const K=y=>{for(const x of y){if(x.id===J.id)return Object.assign(x,J),J.children,!0;if(x.children&&K(x.children))return!0}return!1};K(a.value),p5(a.value),i&&i(J)},c=J=>{const K=J.detail;m(K)},g=J=>{const K=J.detail;a.value&&a.value.push(K),p5(a.value)},f=()=>{const J=Xv(a.value);window.dispatchEvent(new CustomEvent("task-list-updated",{detail:J}))},v=J=>{const{milestoneId:K,icon:y}=J.detail,x=T=>{for(const F of T){if(F.type==="milestone-group"&&F.children){const j=F.children.find(_=>_.id===K);if(j)return j.icon=y,!0}if(F.children&&x(F.children))return!0}return!1};x(a.value)},B=J=>{const K=J.target;if(!K)return;const y=K.scrollTop;n.value=y,window.dispatchEvent(new CustomEvent("close-all-taskbar-menus")),window.dispatchEvent(new CustomEvent("task-list-vertical-scroll",{detail:{scrollTop:y}}))},C=J=>{const{scrollTop:K}=J.detail,y=s.value;n.value=K,y&&Math.abs(y.scrollTop-K)>1&&(y.scrollTop=K)},E=J=>{try{window.dispatchEvent(new CustomEvent("context-menu",{detail:J}))}catch(K){console.error("TaskList - Failed to dispatch context-menu event",K)}},b=()=>{r.value=!0},H=()=>{r.value=!1,d()};return{handleTaskRowHover:o,handleTaskRowDoubleClick:A,handleTaskListScroll:B,handleTaskRowContextMenu:E,registerEventListeners:()=>{window.addEventListener("task-updated",c),window.addEventListener("task-added",g),window.addEventListener("request-task-list",f),window.addEventListener("timeline-task-hover",D),window.addEventListener("timeline-vertical-scroll",C),window.addEventListener("milestone-icon-changed",v),window.addEventListener("splitter-drag-start",b),window.addEventListener("splitter-drag-end",H)},unregisterEventListeners:()=>{window.removeEventListener("task-updated",c),window.removeEventListener("task-added",g),window.removeEventListener("request-task-list",f),window.removeEventListener("timeline-task-hover",D),window.removeEventListener("timeline-vertical-scroll",C),window.removeEventListener("milestone-icon-changed",v),window.removeEventListener("splitter-drag-start",b),window.removeEventListener("splitter-drag-end",H)}}}const Zv={class:"task-list-header"},eF={class:"col col-name"},tF=x0({__name:"TaskList",props:{tasks:{},useDefaultDrawer:{type:Boolean},taskListConfig:{},taskListColumnRenderMode:{default:"default"},enableTaskRowMove:{type:Boolean},taskListRowClassName:{},taskListRowStyle:{type:[Boolean,null,String,Object,Array,Function]}},emits:["task-collapse-change","start-timer","stop-timer","add-predecessor","add-successor","delete","task-row-moved"],setup(e,{emit:a}){var ue;const t=e,r=a,n=Do(),s=Ge(()=>!!n["custom-task-content"]),d=d1("gantt-column-slots",{}),{t:i}=Fr(),{declarativeColumns:o,getColumnWidthStyle:D}=Gv(Ge(()=>t.taskListColumnRenderMode||"default"),n,((ue=t.taskListConfig)==null?void 0:ue.columns)||ap),A=Ge(()=>{var Ie;return t.taskListColumnRenderMode==="declarative"?o.value:(((Ie=t.taskListConfig)==null?void 0:Ie.columns)||ap).filter(ae=>ae.visible!==!1)}),m=Ge(()=>{var Ie;return t.taskListColumnRenderMode==="declarative"?[]:(((Ie=t.taskListConfig)==null?void 0:Ie.columns)||ap).filter(ae=>ae.visible!==!1)}),c=Ge(()=>t.tasks||[]),{taskListScrollTop:g,taskListBodyHeight:f,visibleTasks:v,startSpacerHeight:B,endSpacerHeight:C}=Yv(c),E=Ce(null),b=Ce(!1),{taskListRef:H,taskListBodyRef:X,cachedContainerWidth:re,initializeResizeObservers:J,cleanupResizeObservers:K,updateContainerWidth:y}=qv(b,g,f),x=pe=>{if(t.taskListColumnRenderMode==="declarative")return D(pe,re.value);if(!pe.width)return{};let Ie;if(typeof pe.width=="string"&&pe.width.includes("%")){const ae=re.value||0;if(ae>0){const ke=parseFloat(pe.width)/100;Ie=`${Math.floor(ae*ke)}px`}else return{}}else Ie=`${pe.width}px`;return{flex:`0 0 ${Ie}`,minWidth:Ie,maxWidth:Ie}},{handleTaskRowHover:T,handleTaskRowDoubleClick:F,handleTaskListScroll:j,handleTaskRowContextMenu:_,registerEventListeners:Ne,unregisterEventListeners:ve}=Jv({tasks:c,hoveredTaskId:E,isSplitterDragging:b,taskListScrollTop:g,taskListBodyRef:X,updateContainerWidth:y});function ne(pe){pe.collapsed=!pe.collapsed,r("task-collapse-change",pe)}const oe=pe=>{r("start-timer",pe)},te=pe=>{r("stop-timer",pe)},Se=pe=>{r("add-predecessor",pe)},Me=pe=>{r("add-successor",pe)},w=(pe,Ie)=>{r("delete",pe,Ie)},P=pe=>{const{draggedTask:Ie,targetTask:ae,position:ke}=pe;t.tasks&&r("task-row-moved",{draggedTask:Ie,targetTask:ae,position:ke,oldParent:null,newParent:null})},{startDrag:G,handleDragOver:ee}=Vv({enabled:t.enableTaskRowMove??!1,onDrop:(pe,Ie,ae)=>{P({draggedTask:pe,targetTask:Ie,position:ae})}});return Ca(async()=>{J(),Ne(),p5(t.tasks)}),Da(()=>{K(),ve()}),(pe,Ie)=>(q(),me("div",{ref_key:"taskListRef",ref:H,class:"task-list"},[h("div",Zv,[pe.taskListColumnRenderMode==="declarative"?(q(!0),me(c2,{key:0},ut(A.value,(ae,ke)=>(q(),me("div",{key:ke,class:B2(["col",ae.cssClass]),style:at({...x(ae),justifyContent:ae.align==="center"?"center":ae.align==="right"?"flex-end":"flex-start",textAlign:ae.align||"left"})},[ae.headerSlot?(q(),r0(tn(ae.headerSlot),{key:0})):(q(),me(c2,{key:1},[Ut(le(ae.label),1)],64))],6))),128)):(q(),me(c2,{key:1},[h("div",eF,[we(d)["header-name"]?(q(),r0(tn(we(d)["header-name"]),{key:0})):(q(),me(c2,{key:1},[Ut(le(we(i).taskName||"任务名称"),1)],64))]),(q(!0),me(c2,null,ut(m.value,ae=>(q(),me("div",{key:ae.key,class:B2(["col",ae.cssClass||`col-${ae.key}`]),style:at(x(ae))},[we(d)[`header-${ae.key}`]?(q(),r0(tn(we(d)[`header-${ae.key}`]),{key:0})):(q(),me(c2,{key:1},[Ut(le(we(i)[ae.key]||ae.label),1)],64))],6))),128))],64))]),h("div",{ref_key:"taskListBodyRef",ref:X,class:"task-list-body",onScroll:Ie[0]||(Ie[0]=(...ae)=>we(j)&&we(j)(...ae))},[h("div",{class:"task-list-body-spacer",style:at({height:`${we(B)}px`})},null,4),(q(!0),me(c2,null,ut(we(v),({task:ae,level:ke,rowIndex:ze})=>{var W;return q(),r0(_v,{key:ae.id,task:ae,level:ke,"row-index":ze,"is-hovered":E.value===ae.id,"hovered-task-id":E.value,"on-hover":we(T),columns:pe.taskListColumnRenderMode==="declarative"?[]:m.value,"declarative-columns":pe.taskListColumnRenderMode==="declarative"?A.value:void 0,"render-mode":pe.taskListColumnRenderMode,"get-column-width-style":x,"disable-children-render":!0,"show-task-icon":(W=t.taskListConfig)==null?void 0:W.showTaskIcon,"enable-drag":t.enableTaskRowMove,"drag-start":we(G),"drag-over":we(ee),"task-list-row-class-name":t.taskListRowClassName,"task-list-row-style":t.taskListRowStyle,onToggle:ne,onDblclick:we(F),onContextmenu:we(_),onStartTimer:oe,onStopTimer:te,onAddPredecessor:Se,onAddSuccessor:Me,onDelete:w},Ei({_:2},[s.value?{name:"custom-task-content",fn:z0($=>[u1(pe.$slots,"custom-task-content",Ln({ref_for:!0},$),void 0,!0)]),key:"0"}:void 0,we(n)["task-list-context-menu"]?{name:"task-list-context-menu",fn:z0($=>[u1(pe.$slots,"task-list-context-menu",Ln({ref_for:!0},$),void 0,!0)]),key:"1"}:void 0]),1032,["task","level","row-index","is-hovered","hovered-task-id","on-hover","columns","declarative-columns","render-mode","show-task-icon","enable-drag","drag-start","drag-over","task-list-row-class-name","task-list-row-style","onDblclick","onContextmenu"])}),128)),h("div",{class:"task-list-body-spacer",style:at({height:`${we(C)}px`})},null,4)],544)],512))}}),aF=J0(tF,[["__scopeId","data-v-40aec6fa"]]),Ve={HOUR:"hour",DAY:"day",WEEK:"week",MONTH:"month",QUARTER:"quarter",YEAR:"year"},rF={hour:{scale:Ve.HOUR,cellWidth:40,headerLevels:2,formatters:{primary:"yyyy年MM月dd日",secondary:"HH:mm"}},day:{scale:Ve.DAY,cellWidth:30,headerLevels:2,formatters:{primary:"yyyy年MM月",secondary:"dd"}},week:{scale:Ve.WEEK,cellWidth:120,headerLevels:2,formatters:{primary:"yyyy年MM月",secondary:"W周"}},month:{scale:Ve.MONTH,cellWidth:180,headerLevels:2,formatters:{primary:"yyyy年",secondary:"MM月"}},quarter:{scale:Ve.QUARTER,cellWidth:60,headerLevels:2,formatters:{primary:"yyyy年",secondary:"Q季度"}},year:{scale:Ve.YEAR,cellWidth:180,headerLevels:2,formatters:{primary:"yyyy年",secondary:"上半年|下半年"}}},nF={key:0,class:"anchor-tooltip"},sF=x0({__name:"LinkAnchor",props:{type:{},taskId:{},visible:{type:Boolean,default:!1},isDragSource:{type:Boolean,default:!1},isDragTarget:{type:Boolean,default:!1},isValidTarget:{type:Boolean,default:!0},enabled:{type:Boolean,default:!0},globalDragging:{type:Boolean,default:!1}},emits:["drag-start","drag-move","drag-end"],setup(e,{emit:a}){const t=e,r=a,n=Ce(!1),s=Ge(()=>t.visible||t.globalDragging||t.isDragSource||t.isDragTarget||n.value);let d=null,i=null,o=!1;function D(g){t.enabled&&(g.stopPropagation(),g.preventDefault(),o=!0,r("drag-start",{taskId:t.taskId,type:t.type,x:g.clientX,y:g.clientY}),d=f=>{o&&r("drag-move",{x:f.clientX,y:f.clientY})},i=()=>{o&&(r("drag-end",{taskId:t.taskId,type:t.type}),c())},document.addEventListener("mousemove",d),document.addEventListener("mouseup",i))}function A(){t.enabled&&(n.value=!0)}function m(){t.enabled&&(n.value=!1)}function c(){o=!1,d&&(document.removeEventListener("mousemove",d),d=null),i&&(document.removeEventListener("mouseup",i),i=null)}return Da(()=>{c()}),(g,f)=>g.enabled&&s.value?(q(),me("div",{key:0,class:B2(["link-anchor",{"anchor-predecessor":g.type==="predecessor","anchor-successor":g.type==="successor","drag-source":g.isDragSource,"drag-target":g.isDragTarget,"valid-target":g.isDragTarget&&g.isValidTarget,"invalid-target":g.isDragTarget&&!g.isValidTarget,visible:s.value}]),onMousedown:D,onMouseenter:A,onMouseleave:m},[!g.isDragSource&&!g.isDragTarget&&!g.globalDragging?(q(),me("div",nF,le(g.type==="predecessor"?"添加前置任务":"添加后置任务"),1)):h2("",!0)],34)):h2("",!0)}}),e7=J0(sF,[["__scopeId","data-v-9f128e78"]]),dF={showAvatar:!0,showTitle:!0,showProgress:!0,dragThreshold:5,resizeHandleWidth:5,enableDragDelay:!1,dragDelayTime:150},iF=["data-task-id"],oF={key:0,class:"parent-label"},pF=["src","alt"],DF={key:1,class:"avatar-text"},AF={key:2,class:"avatar-icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},gF={key:1,class:"task-name"},IF={class:"tooltip-title"},mF={class:"tooltip-content"},lF={class:"tooltip-row"},cF={class:"tooltip-label"},uF={class:"tooltip-value"},fF={class:"tooltip-row"},hF={class:"tooltip-label"},SF={class:"tooltip-value"},CF={class:"tooltip-row"},vF={class:"tooltip-label"},FF={class:"tooltip-value"},wF={class:"tooltip-row"},TF={class:"tooltip-label"},BF={class:"tooltip-value"},NF={class:"tooltip-row"},yF={class:"tooltip-label"},RF={class:"tooltip-value"},QF={class:"drag-tooltip-content"},bF={class:"tooltip-row"},HF={class:"tooltip-label"},MF={class:"tooltip-value"},kF={class:"tooltip-row"},xF={class:"tooltip-label"},UF={class:"tooltip-value"},EF=1e3,KF=100,LF=250,WF=x0({__name:"TaskBar",props:{task:{},rowHeight:{},dayWidth:{},startDate:{},isParent:{type:Boolean},onClick:{type:Function},rowIndex:{},scrollLeft:{},containerWidth:{},hideBubbles:{type:Boolean},timelineData:{},currentTimeScale:{},taskBarConfig:{},allowDragAndResize:{type:Boolean},isHighlighted:{type:Boolean},isPrimaryHighlight:{type:Boolean},isInHighlightMode:{type:Boolean},dragLinkMode:{},isLinkDragSource:{type:Boolean},isValidLinkTarget:{type:Boolean},isInvalidLinkTarget:{type:Boolean},allTasks:{}},emits:["update:task","bar-mounted","click","dblclick","drag-end","resize-end","scroll-to-position","start-timer","stop-timer","add-predecessor","add-successor","delete","delete-link","context-menu","long-press","link-drag-start","link-drag-move","link-drag-end"],setup(e,{emit:a}){const t=e,r=a,n=Do(),s=d1("enable-task-bar-context-menu",Ge(()=>!0)),d=d1("task-bar-context-menu-slot",Ge(()=>!1)),i=d1("declarative-task-bar-context-menu",Ge(()=>null)),o=Ge(()=>!!s.value),D=Ge(()=>s.value?!d.value:!1),A=Ge(()=>{if(!s.value||!d.value)return!1;const ge=i.value;if((ge==null?void 0:ge.taskType)!==void 0){const he=t.task.type||"task";return(Array.isArray(ge.taskType)?ge.taskType:[ge.taskType]).includes(he)}return!0}),{getTranslation:m}=Fr(),c=ge=>m(ge),g=Ge(()=>!!n["custom-task-content"]),f=Ge(()=>({...dF,...t.taskBarConfig})),v=ge=>{if(!ge)return null;if(ge instanceof Date)return ge;if(typeof ge=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(ge)){const[Je,t2,$2]=ge.split("-").map(Number);return new Date(Je,t2-1,$2)}if(typeof ge=="string"&&/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}$/.test(ge)){const[Je,t2]=ge.split(" "),[$2,E2,I2]=Je.split("-").map(Number),[m2,u2]=t2.split(":").map(Number);return new Date($2,E2-1,I2,m2,u2)}const he=new Date(ge);return isNaN(he.getTime())?null:he},B=()=>{const ge=new Date;return new Date(ge.getFullYear(),ge.getMonth(),ge.getDate())},C=Ce(B());let E=null;Ca(()=>{E=window.setInterval(()=>{C.value=B()},6e4)}),Da(()=>{E!==null&&(clearInterval(E),E=null)});const b=ge=>{const he=ge.getFullYear(),Je=String(ge.getMonth()+1).padStart(2,"0"),t2=String(ge.getDate()).padStart(2,"0");if(t.currentTimeScale===Ve.HOUR){const $2=String(ge.getHours()).padStart(2,"0"),E2=String(ge.getMinutes()).padStart(2,"0");return`${he}-${Je}-${t2} ${$2}:${E2}`}return`${he}-${Je}-${t2}`},H=(ge,he)=>{const Je=new Date(ge);return Je.setDate(Je.getDate()+he),Je},X=(ge,he)=>{const Je=new Date(ge);return Je.setMinutes(Je.getMinutes()+he),Je},re=(ge,he)=>Math.round((he.getTime()-ge.getTime())/(1e3*60)),J=Ge(()=>t.task.isEditable===!1?!0:t.currentTimeScale===Ve.YEAR),K=Ce(!1),y=Ce(!1),x=Ce(!1),T=Ce(!1),F=Ce(0),j=Ce(0),_=Ce(0),Ne=Ce(0),ve=Ce(0),ne=Ce(0),oe=Ce(null),te=Ce(!1),Se=Ce(!1),Me=Ge(()=>f.value.dragThreshold??5),w=Ce(!1),P=Ce(null),G=Ce(null),ee=Ce(!1),ue=Ce(0),pe=Ce(null),Ie=Ce(null),ae=Ce(null),ke=Ce(null),ze=Ce(0),W=Ge(()=>{var Tt,St;if(Ie.value&&t.currentTimeScale===Ve.QUARTER)return{left:`${Ie.value.left??0}px`,width:`${Ie.value.width??100}px`,height:`${t.rowHeight-10}px`,top:"4px"};const ge=((Tt=pe.value)==null?void 0:Tt.startDate)||t.task.startDate,he=((St=pe.value)==null?void 0:St.endDate)||t.task.endDate,Je=v(ge),t2=v(he),$2=R.value;if(!Je&&!t2)return{left:"0px",width:"0px",height:`${t.rowHeight-10}px`,top:"4px"};const E2=Je||t2,I2=t2||Je,m2=$2;if(!E2||!I2||!m2)return{left:"0px",width:"0px",height:`${t.rowHeight-10}px`,top:"4px"};let u2=0,G2=0;if(t.currentTimeScale===Ve.HOUR){const st=new Date(m2);st.setHours(0,0,0,0);let Qt=E2,jt=I2;const Kt=ge||t.task.startDate,Pt=he||t.task.endDate;typeof Kt=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(Kt.trim())&&(Qt=new Date(E2),Qt.setHours(0,0,0,0)),typeof Pt=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(Pt.trim())&&(jt=new Date(I2),jt.setDate(jt.getDate()+1),jt.setHours(0,0,0,0));const z=re(st,Qt),Re=re(st,jt),Pe=40/60;u2=Math.max(0,z*Pe),G2=Math.max(4,(Re-z)*Pe)}else{const st=new Date(E2.getFullYear(),E2.getMonth(),E2.getDate()),Qt=new Date(I2.getFullYear(),I2.getMonth(),I2.getDate()),jt=new Date(m2.getFullYear(),m2.getMonth(),m2.getDate());if(t.timelineData&&t.currentTimeScale&&(t.currentTimeScale===Ve.WEEK||t.currentTimeScale===Ve.MONTH||t.currentTimeScale===Ve.QUARTER||t.currentTimeScale===Ve.YEAR)){const Kt=P0(st,t.timelineData,t.currentTimeScale),Pt=new Date(Qt);Pt.setDate(Pt.getDate()+1);let z=P0(Pt,t.timelineData,t.currentTimeScale);if(z===Kt){let Re=2;t.currentTimeScale===Ve.WEEK?Re=60/7:t.currentTimeScale===Ve.QUARTER?Re=60/90:t.currentTimeScale===Ve.YEAR&&(Re=180/182),z=P0(Qt,t.timelineData,t.currentTimeScale)+Re}u2=Kt,G2=Math.max(z-Kt,4)}else if(t.timelineData&&t.currentTimeScale===Ve.DAY){const Kt=P0(st,t.timelineData,t.currentTimeScale),Pt=new Date(Qt);Pt.setDate(Pt.getDate()+1);let z=P0(Pt,t.timelineData,t.currentTimeScale);z===Kt&&(z=P0(Qt,t.timelineData,t.currentTimeScale)+30),u2=Kt,G2=Math.max(z-Kt,4)}else{const Kt=Math.floor((st.getTime()-jt.getTime())/864e5),Pt=Qt.getTime()-st.getTime(),z=Math.round(Pt/(1e3*60*60*24)),Re=z===0?1:z+1;u2=Kt*t.dayWidth,G2=Re*t.dayWidth}}return{left:`${u2}px`,width:`${G2}px`,height:`${t.rowHeight-10}px`,top:"4px"}}),$=Ce({left:0,top:0,width:0,height:0,timestamp:0}),Be=Ge(()=>v(t.task.endDate||"")),R=Ge(()=>v(t.startDate)),ye=Ge(()=>{var Je,t2;const ge=((Je=pe.value)==null?void 0:Je.startDate)||t.task.startDate,he=((t2=pe.value)==null?void 0:t2.endDate)||t.task.endDate;return!!(ge||he)}),O=Ge(()=>{if(t.isParent)return{type:"parent",color:"#409eff",bgColor:"#409eff",borderColor:"#409eff"};const ge=C.value,he=Be.value,Je=t.task.progress||0;return Je>=100?{type:"completed",color:"#909399",bgColor:"#f4f4f5",borderColor:"#d3d4d6"}:he&&he=ge&&Je>0?{type:"in-progress",color:"#e6a23c",bgColor:"#fdf6ec",borderColor:"#f5dab1"}:{type:"not-started",color:"#409eff",bgColor:"#ecf5ff",borderColor:"#b3d8ff"}}),ie=Ge(()=>({type:"task-bar",task:t.task,status:O.value,statusType:O.value.type,isParent:t.isParent??!1,progress:t.task.progress||0,currentTimeScale:t.currentTimeScale,rowHeight:t.rowHeight,dayWidth:t.dayWidth})),fe=Ge(()=>(t.task.progress||0)>=100),He=Ge(()=>t.isInHighlightMode&&!t.isHighlighted&&!t.isPrimaryHighlight),be=Ge(()=>{const ge=t.task.progress||0,he=parseInt(W.value.width);return`${ge/100*he}px`}),Ze=Ge(()=>t.dayWidth<=9),Le=Ge(()=>parseFloat(W.value.width||"0")<80),p2=Ge(()=>Ze.value&&Le.value),l2=(ge,he)=>{if(t.isHighlighted||t.isPrimaryHighlight||t.allowDragAndResize===!1||fe.value||t.isParent||J.value||(ge.preventDefault(),ge.stopPropagation(),pe.value=null,w.value=!1,ee.value=!1,P.value=he,te.value=!1,oe.value&&(clearTimeout(oe.value),oe.value=null),he==="drag"&&(oe.value=window.setTimeout(()=>{!w.value&&!K.value&&!y.value&&!x.value&&(te.value=!0,r("long-press",t.task.id)),oe.value=null},EF)),f.value.enableDragDelay&&f.value.dragDelayTime?G.value=window.setTimeout(()=>{ee.value=!0,G.value=null},f.value.dragDelayTime):ee.value=!0,!document.querySelector(".timeline")||!ae.value))return;const t2=ae.value.getBoundingClientRect();ue.value=ge.clientX-t2.left,F.value=ge.clientX,j.value=parseInt(W.value.left),_.value=parseInt(W.value.width),(he==="resize-left"||he==="resize-right")&&(Ne.value=ge.clientX,ve.value=parseInt(W.value.width),ne.value=parseInt(W.value.left)),window.addEventListener("timeline-auto-scroll",S2),document.addEventListener("mousemove",gt),document.addEventListener("mouseup",it)},S2=ge=>{const{scrollDelta:he}=ge.detail;K.value?F.value-=he:(y.value||x.value)&&(Ne.value-=he)};let k2=!1;function y2(){k2||(k2=!0,requestAnimationFrame(()=>{if(k2=!1,!ae.value)return;const ge=Date.now();if(ge-$.value.timestamp{if(!(t.isHighlighted||t.isPrimaryHighlight)&&!(f.value.enableDragDelay&&!ee.value)){if(!w.value){if(Math.abs(ge.clientX-F.value){if(G.value!==null&&(window.clearTimeout(G.value),G.value=null),oe.value!==null&&(clearTimeout(oe.value),oe.value=null),v2.value=!1,Ie.value=null,window.dispatchEvent(new CustomEvent("drag-boundary-check",{detail:{mouseX:0,isDragging:!1}})),w.value&&pe.value){const ge={...t.task,...pe.value};K.value?r("drag-end",ge):(y.value||x.value)&&r("resize-end",ge),r("update:task",ge),pe.value=null,Zt(()=>{y2()})}window.removeEventListener("timeline-auto-scroll",S2),(K.value||y.value||x.value)&&(T.value=!0,setTimeout(()=>{T.value=!1},200)),K.value=!1,y.value=!1,x.value=!1,w.value=!1,ee.value=!1,P.value=null,document.removeEventListener("mousemove",gt),document.removeEventListener("mouseup",it)};let q2=null;Ca(()=>{Zt(()=>{y2(),ke.value&&(q2=new ResizeObserver(Je=>{for(const t2 of Je)ze.value=t2.contentRect.width}),q2.observe(ke.value))});const ge=()=>{Zt(()=>{y2()})},he=()=>{Zt(()=>{setTimeout(()=>{y2()},10)})};window.addEventListener("timeline-scale-updated",ge),window.addEventListener("timeline-force-recalculate",he),window.addEventListener("close-all-taskbar-menus",Rt),document.addEventListener("click",y0),Da(()=>{q2&&(q2.disconnect(),q2=null),window.removeEventListener("timeline-scale-updated",ge),window.removeEventListener("timeline-force-recalculate",he),window.removeEventListener("close-all-taskbar-menus",Rt),document.removeEventListener("click",y0),oe.value!==null&&(clearTimeout(oe.value),oe.value=null),b2!==null&&(clearTimeout(b2),b2=null)})}),Dt(()=>[t.task.startDate,t.task.endDate],()=>{Zt(()=>{y2()})},{deep:!0}),Dt(()=>[t.isHighlighted,t.isPrimaryHighlight],([ge,he])=>{(ge||he)&&(K.value=!1,y.value=!1,x.value=!1,w.value=!1,ee.value=!1,P.value=null,v2.value=!1,document.removeEventListener("mousemove",gt),document.removeEventListener("mouseup",it),window.removeEventListener("timeline-auto-scroll",S2),oe.value&&(clearTimeout(oe.value),oe.value=null),G.value&&(clearTimeout(G.value),G.value=null),window.dispatchEvent(new CustomEvent("taskbar-highlighted",{detail:{taskId:t.task.id}})))});let b2=null;const mt=ge=>{if(!(K.value||y.value||x.value||T.value)){if(te.value){te.value=!1;return}b2===null&&(b2=window.setTimeout(()=>{b2=null,t.onClick&&typeof t.onClick=="function"?t.onClick(t.task,ge):r("click",t.task,ge)},LF))}},V2=ge=>{ge.stopPropagation(),ge.preventDefault(),b2!==null&&(clearTimeout(b2),b2=null),K.value=!1,y.value=!1,x.value=!1,pe.value=null,document.removeEventListener("mousemove",gt),document.removeEventListener("mouseup",it),r("dblclick",t.task,ge)},_t=Ge(()=>{const ge=t.scrollLeft||0,he=t.containerWidth||0;if(!ge&&!he)return{nameLeft:"",namePosition:"",nameTop:"",progressLeft:"",progressPosition:"",progressTop:"",avatarLeft:"",avatarPosition:""};const Je=parseInt(W.value.left),t2=parseInt(W.value.width),$2=Je+t2,E2=Je+t2/2,I2=ge,m2=ge+he;let u2="",G2="",Tt="",St="",st="",Qt="",jt="",Kt="";const Pt=Math.max(ze.value,40),z=35,Re=22,Pe=na.value,i2=Pe+3,D2=Je+i2,w2=Je+i2+Re,R2=D2I2||E2I2,J2=Math.max(Pt,z),N2=w2+J2+15>m2&&JeI2}else Ft=W2I2&&E2m2&&Jem2;if(Ft){const $t=I2-Je,R0=R2?T2:0;u2=`${$t+Pe+3+R0}px`,G2="absolute",Tt="2px"}else p0&&(u2=`${m2-Je-Pt-Pe-10}px`,G2="absolute",Tt="2px");const Z2=E2-z/2,Va=E2+z/2;let va=!1;if(dt){const $t=Z2,R0=Re+15;va=$tI2}else va=Z2I2&&E2m2&&Jem2;if(va){const $t=I2-Je,R0=R2?T2:0;St=`${$t+Pe+3+R0}px`,st="absolute",Qt="18px"}else Ka&&(St=`${m2-Je-z-Pe-3}px`,st="absolute",Qt="18px");return{nameLeft:u2,namePosition:G2,nameTop:Tt,progressLeft:St,progressPosition:st,progressTop:Qt,avatarLeft:jt,avatarPosition:Kt}}),j2=Ge(()=>{const ge=t.scrollLeft||0,he=t.containerWidth||0;if(!he||he<=0)return{show:!1,left:"0px",side:"left",color:"#409eff",animationType:"none"};if(lt.value||qt.value||t.hideBubbles)return{show:!1,left:"0px",side:"left",color:O.value.color,animationType:"none"};const Je=parseInt(W.value.left),t2=parseInt(W.value.width),$2=Je+t2,E2=ge,I2=ge+he,m2=$2<=E2,u2=Je>=I2;return m2?{show:!0,left:`${E2-Je-4}px`,side:"left",color:O.value.color,animationType:"morphToSemiCircle"}:u2?{show:!0,left:`${I2-Je-8}px`,side:"right",color:O.value.color,animationType:"morphToSemiCircle"}:{show:!1,left:"0px",side:"left",color:O.value.color,animationType:"none"}}),xe=Ce(!1),Xe=Ce({x:0,y:0}),e2=Ce(!1),Ye=Ce(null),F2=Ce(!1),lt=Ce(!0),z2=Ce(!1),qt=Ce(!1),U0=ge=>{ge.stopPropagation(),ge.preventDefault();const he=t.scrollLeft||0,Je=t.containerWidth||0;if(!he&&!Je)return;const t2=parseInt(W.value.left),$2=parseInt(W.value.width),I2=t2+$2/2-Je/2;z2.value=!0,qt.value=!0,xe.value=!1,r("scroll-to-position",I2)};Dt(()=>[t.scrollLeft,t.containerWidth],(ge,he)=>{const[Je,t2]=ge,[$2,E2]=he||[0,0],I2=Je||0,m2=t2||0,u2=$2||0,G2=E2||0;if(Math.abs(m2-G2)>1&&G2>0){F2.value=!0,Zt(()=>{}),lt.value&&setTimeout(()=>{lt.value=!1},300),setTimeout(()=>{F2.value=!1},500);return}lt.value&&I2>=0&&m2>0&&setTimeout(()=>{lt.value=!1},1e3),I2!==u2&&!F2.value&&(e2.value=!0,Ye.value&&clearTimeout(Ye.value),Ye.value=setTimeout(()=>{e2.value=!1,z2.value&&(z2.value=!1,setTimeout(()=>{qt.value=!1},300))},200))},{immediate:!0}),Dt(()=>t.hideBubbles,(ge,he)=>{he&&!ge&&Zt(()=>{})}),Dt(()=>j2.value.show,()=>{});const U2=()=>{F2.value=!0,Zt(()=>{}),setTimeout(()=>{F2.value=!1},300)};Ca(()=>{window.addEventListener("resize",U2),window.addEventListener("zoom",U2)}),Da(()=>{document.removeEventListener("mousemove",gt),document.removeEventListener("mouseup",it),window.removeEventListener("resize",U2),window.removeEventListener("zoom",U2)});const Ba=ge=>{ge.stopPropagation(),xe.value=!0;const Je=j2.value.side==="right"?-180:15;Xe.value={x:ge.clientX+Je,y:ge.clientY-10}},Aa=ge=>{ge.stopPropagation(),xe.value=!1},Z0=ge=>{ge.stopPropagation(),xe.value=!1},B0=ge=>{if(!ge)return c("dateNotSet");const he=v(ge);if(!he)return c("dateNotSet");const Je=he.getFullYear(),t2=String(he.getMonth()+1).padStart(2,"0"),$2=String(he.getDate()).padStart(2,"0");return`${Je}-${t2}-${$2}`},Vt=Ge(()=>{const ge=v(t.task.startDate),he=v(t.task.endDate);let Je=0;if(ge&&he){const E2=Math.abs(he.getTime()-ge.getTime());Je=Math.ceil(E2/(1e3*60*60*24))*8}const t2=t.task.progress||0,$2=Math.round(Je*t2/100);return{total:Je,used:$2}}),o0=Ge(()=>!0),N0=()=>{const ge=_t.value,he={};return ge.nameLeft&&(he.left=ge.nameLeft),ge.namePosition&&(he.position=ge.namePosition),ge.nameTop&&(he.top=ge.nameTop),he},Ua=()=>{const ge=_t.value,he={};return ge.progressLeft&&(he.left=ge.progressLeft),ge.progressPosition&&(he.position=ge.progressPosition),ge.progressTop&&(he.top=ge.progressTop),he},Na=()=>{const ge=_t.value,he={};return ge.avatarLeft&&(he.left=ge.avatarLeft),ge.avatarPosition&&(he.position=ge.avatarPosition),he},ra=Ge(()=>parseInt(W.value.width)-10<22),_0=Ge(()=>({width:`${Math.min(f.value.resizeHandleWidth??5,15)}px`})),na=Ge(()=>Math.min(f.value.resizeHandleWidth??5,15)),P0=(ge,he,Je)=>{var $2;let t2=0;for(const E2 of he)if(Je===Ve.DAY){const I2=E2.days||[];for(let m2=0;m2=u2&&ge<=G2){const st=60/Math.ceil((G2.getTime()-u2.getTime())/864e5),Qt=Math.ceil((ge.getTime()-u2.getTime())/(1e3*60*60*24));return t2+Qt*st}t2+=60}}else if(Je===Ve.WEEK){const I2=E2.weeks||[];for(const m2 of I2){const u2=new Date(m2.weekStart),G2=new Date(m2.weekEnd);if(ge>=u2&&ge<=G2){const St=m2.subDays||[],st=60/7;for(let jt=0;jt=I2&&ge<=m2){const Tt=60/((($2=E2.monthData)==null?void 0:$2.dayCount)||30),St=ge.getDate();return t2+(St-1)*Tt}t2+=60}else if(Je===Ve.YEAR){const I2=E2.halfYears||[];for(const m2 of I2){const u2=new Date(m2.startDate),G2=new Date(m2.endDate);if(ge>=u2&&ge<=G2){const st=180/Math.ceil((G2.getTime()-u2.getTime())/864e5),Qt=Math.ceil((ge.getTime()-u2.getTime())/(1e3*60*60*24));return t2+Qt*st}t2+=180}}return Je===Ve.WEEK?(console.warn("[Gantt Debug] 周视图定位失败,任务日期未找到 week 匹配,返回 -1",{targetDate:ge}),-1):t2},ea=(ge,he,Je)=>{var $2;if(!he)return null;let t2=0;if(Je===Ve.DAY)for(const E2 of he){const I2=E2.days||[],m2=I2.length*30;if(ge>=t2&&ge=0&&G2=t2&&ge=t2&&ge=t2&&get.task);function wr(ge){if(!o.value){ge.preventDefault();return}if(t.isHighlighted||t.isPrimaryHighlight){ge.preventDefault();return}window.dispatchEvent(new CustomEvent("close-all-taskbar-menus"));const he=t.task.type||"task";if(he!=="task"&&he!=="story"){ge.preventDefault(),ta.value=!1;return}ge.preventDefault(),ta.value=!0,sa.value={x:ge.clientX,y:ge.clientY}}function Rt(){ta.value=!1}function y0(ge){if(!ta.value)return;const he=ge.target,Je=document.querySelector(".task-context-menu");Je&&Je.contains(he)||Rt()}const We=(ge,he)=>{r("delete",ge,he),Rt()},se=ge=>{r("delete-link",ge),Rt()},X2=ge=>{r("link-drag-start",ge)},Et=ge=>{r("link-drag-move",ge)},kt=ge=>{r("link-drag-end",ge)},h0=ge=>{const he={clientX:ge.x,clientY:ge.y};X2({task:t.task,type:ge.type,mouseEvent:he})},ya=ge=>{Et({mouseX:ge.x,mouseY:ge.y})},Ra=ge=>{kt({task:t.task,type:ge.type})};return(ge,he)=>{var Je;return q(),me(c2,null,[ye.value?(q(),me("div",{key:0,ref_key:"barRef",ref:ae,class:B2(["task-bar",{dragging:K.value,resizing:y.value||x.value,completed:fe.value,"parent-task":ge.isParent,"week-view":Ze.value,"short-task-bar":Le.value,"overflow-effect":p2.value,highlighted:ge.isHighlighted,"primary-highlight":ge.isPrimaryHighlight,dimmed:He.value}]),"data-task-id":ge.task.id,style:at({...W.value,backgroundColor:O.value.bgColor,borderColor:O.value.borderColor,color:O.value.color,cursor:fe.value||ge.isParent?"default":"move","--row-height":`${ge.rowHeight}px`,"--handle-width":`${na.value}px`}),onClick:mt,onContextmenu:wr,onDblclick:V2,onMouseenter:he[7]||(he[7]=t2=>Se.value=!0),onMouseleave:he[8]||(he[8]=t2=>Se.value=!1)},[ge.isParent?(q(),me("div",oF,[g.value?u1(ge.$slots,"custom-task-content",bi(Ln({key:0},ie.value)),void 0):(q(),me(c2,{key:1},[Ut(le(ge.task.name)+" ("+le(ge.task.progress||0)+"%) ",1)],64))])):h2("",!0),!ge.isParent&&ge.task.progress&&ge.task.progress>0?(q(),me("div",{key:1,class:"progress-bar",style:at({width:be.value,backgroundColor:O.value.color})},null,4)):h2("",!0),!fe.value&&!ge.isParent&&!J.value&&t.allowDragAndResize!==!1&&!ge.isHighlighted&&!ge.isPrimaryHighlight?(q(),me("div",{key:2,class:"resize-handle resize-handle-left",style:at(_0.value),onMousedown:he[0]||(he[0]=t2=>l2(t2,"resize-left"))},null,36)):h2("",!0),ge.isParent?h2("",!0):(q(),me("div",{key:3,class:"task-bar-content",style:at({cursor:J.value||t.allowDragAndResize===!1||ge.isHighlighted||ge.isPrimaryHighlight?"grab":"move"}),onMousedown:he[1]||(he[1]=t2=>{ge.isHighlighted||ge.isPrimaryHighlight||J.value||t.allowDragAndResize===!1||l2(t2,"drag")})},[f.value.showAvatar?(q(),me("div",{key:0,class:B2(["task-avatar",{"avatar-outside":ra.value,"avatar-default":!ge.task.avatar}]),style:at(Na())},[ge.task.avatar?(q(),me("img",{key:0,src:ge.task.avatar,alt:ge.task.assignee||"avatar"},null,8,pF)):ge.task.assigneeName?(q(),me("span",DF,le(ge.task.assigneeName.charAt(0).toUpperCase()),1)):(q(),me("svg",AF,he[9]||(he[9]=[h("path",{d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z",fill:"currentColor"},null,-1)])))],6)):h2("",!0),f.value.showTitle?(q(),me("div",{key:1,ref_key:"taskBarNameRef",ref:ke,style:at(N0())},[g.value?u1(ge.$slots,"custom-task-content",bi(Ln({key:0},ie.value)),void 0):(q(),me("div",gF,le(ge.task.name),1))],4)):h2("",!0),f.value.showProgress&&o0.value?(q(),me("div",{key:2,class:"task-progress",style:at(Ua())},le(ge.task.progress||0)+"% ",5)):h2("",!0)],36)),!fe.value&&!ge.isParent&&!J.value&&t.allowDragAndResize!==!1&&!ge.isHighlighted&&!ge.isPrimaryHighlight?(q(),me("div",{key:4,class:"resize-handle resize-handle-right",style:at(_0.value),onMousedown:he[2]||(he[2]=t2=>l2(t2,"resize-right"))},null,36)):h2("",!0),!ge.isParent&&!ge.isInHighlightMode?(q(),r0(e7,{key:5,type:"predecessor","task-id":ge.task.id,visible:Se.value,"is-drag-source":ge.isLinkDragSource&&ge.dragLinkMode==="predecessor","is-drag-target":ge.isValidLinkTarget||ge.isInvalidLinkTarget,"is-valid-target":ge.isValidLinkTarget,"global-dragging":!!ge.dragLinkMode,onDragStart:h0,onDragMove:ya,onDragEnd:Ra},null,8,["task-id","visible","is-drag-source","is-drag-target","is-valid-target","global-dragging"])):h2("",!0),!ge.isParent&&!ge.isInHighlightMode?(q(),r0(e7,{key:6,type:"successor","task-id":ge.task.id,visible:Se.value,"is-drag-source":ge.isLinkDragSource&&ge.dragLinkMode==="successor","is-drag-target":ge.isValidLinkTarget||ge.isInvalidLinkTarget,"is-valid-target":ge.isValidLinkTarget,"global-dragging":!!ge.dragLinkMode,onDragStart:h0,onDragMove:ya,onDragEnd:Ra},null,8,["task-id","visible","is-drag-source","is-drag-target","is-valid-target","global-dragging"])):h2("",!0),j2.value.show&&!ge.isParent?(q(),me("div",{key:7,class:B2(["bubble-indicator",[`bubble-${j2.value.side}`,`bubble-animation-${j2.value.animationType}`]]),style:at({left:j2.value.left,backgroundColor:j2.value.color,borderColor:j2.value.color}),onMouseenter:Jt(Ba,["stop"]),onMouseleave:Jt(Aa,["stop"]),onMousedown:Jt(Z0,["stop"]),onClick:Jt(U0,["stop"])},null,38)):h2("",!0),D.value?(q(),r0(L3,{key:8,visible:ta.value,task:Ea.value,position:sa.value,"all-tasks":ge.allTasks,onClose:Rt,onStartTimer:he[3]||(he[3]=t2=>ge.$emit("start-timer",t.task)),onStopTimer:he[4]||(he[4]=t2=>ge.$emit("stop-timer",t.task)),onAddPredecessor:he[5]||(he[5]=t2=>ge.$emit("add-predecessor",t.task)),onAddSuccessor:he[6]||(he[6]=t2=>ge.$emit("add-successor",t.task)),onDelete:We,onDeleteLink:se},null,8,["visible","task","position","all-tasks"])):h2("",!0),(q(),r0(kn,{to:"body"},[A.value&&ta.value&&((Je=we(i))!=null&&Je.defaultSlot)?(q(),me("div",{key:0,class:"gantt-context-menu-wrapper",style:at({position:"fixed",left:`${sa.value.x}px`,top:`${sa.value.y}px`,zIndex:9999})},[(q(),r0(tn(we(i).defaultSlot),{row:Ea.value,$index:t.rowIndex??-1},null,8,["row","$index"]))],4)):h2("",!0)]))],46,iF)):h2("",!0),(q(),r0(kn,{to:"body"},[xe.value?(q(),me("div",{key:0,class:"task-tooltip",style:at({left:`${Xe.value.x}px`,top:`${Xe.value.y}px`})},[he[10]||(he[10]=h("div",{class:"tooltip-arrow"},null,-1)),h("div",IF,le(ge.task.name),1),h("div",mF,[h("div",lF,[h("span",cF,le(c("startDate"))+":",1),h("span",uF,le(B0(ge.task.startDate)),1)]),h("div",fF,[h("span",hF,le(c("endDate"))+":",1),h("span",SF,le(B0(ge.task.endDate)),1)]),h("div",CF,[h("span",vF,le(c("estimatedHours"))+":",1),h("span",FF,le(Vt.value.total)+"h",1)]),h("div",wF,[h("span",TF,le(c("actualHours"))+":",1),h("span",BF,le(Vt.value.used)+"h",1)]),h("div",NF,[h("span",yF,le(c("progress"))+":",1),h("span",RF,le(ge.task.progress||0)+"%",1)])])],4)):h2("",!0)])),(q(),r0(kn,{to:"body"},[v2.value?(q(),me("div",{key:0,class:"drag-tooltip",style:at({left:`${K2.value.x}px`,top:`${K2.value.y}px`})},[h("div",QF,[h("div",bF,[h("span",HF,le(c("startDate"))+":",1),h("span",MF,le(B0(C2.value.startDate)),1)]),h("div",kF,[h("span",xF,le(c("endDate"))+":",1),h("span",UF,le(B0(C2.value.endDate)),1)])])],4)):h2("",!0)]))],64)}}}),_F=J0(WF,[["__scopeId","data-v-7b051790"]]),PF=["title"],OF={key:0,transform:"rotate(45 16 16)"},VF=["fill","stroke"],jF={key:1},$F={key:2,transform:"rotate(45 16 16)"},GF=["fill","stroke"],YF={key:1,class:"milestone-label milestone-label-right"},qF={class:"tooltip-content"},zF=x0({__name:"MilestonePoint",props:{date:{},milestone:{},name:{},rowHeight:{},dayWidth:{},startDate:{},timelineStart:{},timelineEnd:{},scrollLeft:{},containerWidth:{},milestoneId:{},otherMilestones:{},currentTimeScale:{},timelineData:{},periodWidth:{},isInHighlightMode:{type:Boolean},allowDragAndResize:{type:Boolean}},emits:["milestone-double-click","update:milestone","drag-end"],setup(e,{emit:a}){const t=e,r=a,{getTranslation:n}=Fr(),s=ne=>n(ne),d=Ce(!1),i=Ce(0),o=Ce(0),D=Ce(null),A=ne=>{if(ne.preventDefault(),ne.stopPropagation(),!(K.value.isSticky||K.value.isPushedOut||!K.value.showIcon))if(d.value=!1,D.value=null,document.removeEventListener("mousemove",B),document.removeEventListener("mouseup",C),t.milestone)r("milestone-double-click",t.milestone);else{const oe={name:t.name||"里程碑",startDate:t.date,type:"milestone"};r("milestone-double-click",oe)}},m=(ne,oe)=>{const te=new Date(ne);return te.setDate(te.getDate()+oe),te},c=ne=>{const oe=ne.getFullYear(),te=String(ne.getMonth()+1).padStart(2,"0"),Se=String(ne.getDate()).padStart(2,"0");return`${oe}-${te}-${Se}`},g=(ne,oe,te)=>{var Me;if(!oe)return null;let Se=0;if(te===Ve.DAY)for(const w of oe){const P=w.days||[],G=P.length*30;if(ne>=Se&&ne=0&&ue=Se&&ne=Se&&ne{t.allowDragAndResize===!1||t.currentTimeScale===Ve.YEAR||K.value.isSticky||K.value.isPushedOut||!K.value.showIcon||(ne.preventDefault(),ne.stopPropagation(),!document.querySelector(".timeline"))||(i.value=ne.clientX,o.value=parseInt(H.value.left),D.value=null,window.addEventListener("timeline-auto-scroll",v),document.addEventListener("mousemove",B),document.addEventListener("mouseup",C))},v=ne=>{const{scrollDelta:oe}=ne.detail;d.value&&(i.value-=oe)},B=ne=>{window.dispatchEvent(new CustomEvent("drag-boundary-check",{detail:{mouseX:ne.clientX,isDragging:d.value}}));const oe=ne.clientX-i.value;if(Math.abs(oe)>3){d.value=!0;const te=Math.max(0,o.value+oe);let Se;if(t.currentTimeScale===Ve.MONTH||t.currentTimeScale===Ve.QUARTER||t.currentTimeScale===Ve.DAY)if(t.timelineData&&t.currentTimeScale){const Me=g(te,t.timelineData,t.currentTimeScale);Me?Se=Me:Se=m(t.startDate,te/t.dayWidth)}else Se=m(t.startDate,te/t.dayWidth);else Se=m(t.startDate,te/t.dayWidth);D.value={startDate:c(Se)}}},C=()=>{if(window.dispatchEvent(new CustomEvent("drag-boundary-check",{detail:{mouseX:0,isDragging:!1}})),d.value&&D.value&&t.milestone){const ne={...t.milestone,...D.value};r("update:milestone",ne),r("drag-end",ne)}window.removeEventListener("timeline-auto-scroll",v),d.value=!1,D.value=null,document.removeEventListener("mousemove",B),document.removeEventListener("mouseup",C)},E=ne=>{if(ne.preventDefault(),ne.stopPropagation(),d.value||K.value.isPushedOut||!K.value.showIcon||K.value.isFullyVisible)return;const oe=t.containerWidth||0,te=parseInt(H.value.left)+12;if(oe>0){const Se=Math.max(0,te-oe/2);window.dispatchEvent(new CustomEvent("milestone-click-locate",{detail:{scrollLeft:Se,smooth:!0}}))}},b=Ge(()=>t.isInHighlightMode===!0),H=Ge(()=>{var Me;const ne=((Me=D.value)==null?void 0:Me.startDate)||t.date,oe=Cf(ne);if(!t.startDate||!oe||isNaN(oe.getTime()))return{left:"0px",top:"0px",width:"auto",height:"auto"};let te=0,Se=24;return t.currentTimeScale===Ve.YEAR||t.currentTimeScale===Ve.QUARTER?Se=Math.min(t.rowHeight,24):t.currentTimeScale===Ve.MONTH?Se=Math.min(t.rowHeight,20):t.currentTimeScale===Ve.WEEK?Se=Math.min(t.rowHeight,Math.max(t.dayWidth*.8,16),24):Se=Math.min(t.rowHeight,t.dayWidth*1.2,24),t.currentTimeScale===Ve.HOUR?te=Ne(oe,t.startDate)-Se/2:t.timelineData&&t.currentTimeScale&&(t.currentTimeScale===Ve.WEEK||t.currentTimeScale===Ve.MONTH||t.currentTimeScale===Ve.DAY||t.currentTimeScale===Ve.QUARTER||t.currentTimeScale===Ve.YEAR)?te=ve(oe,t.timelineData,t.currentTimeScale)-Se/2:te=Math.floor((oe.getTime()-t.startDate.getTime())/864e5)*t.dayWidth+t.dayWidth/2-Se/2,{left:`${te}px`,top:`${(t.rowHeight-Se)/2}px`,width:"auto",height:"auto"}}),X=Ge(()=>"var(--gantt-danger, #f56c6c)"),re=Ge(()=>"var(--gantt-danger-light, #fab6b6)"),J=Ge(()=>{var ne;return((ne=t.milestone)==null?void 0:ne.icon)||"diamond"}),K=Ge(()=>{const ne=t.scrollLeft||0,oe=t.containerWidth||0;if(!oe||oe<=0)return{showIcon:!0,showLabel:!0,isSticky:!1,stickyPosition:"none",iconLeft:"0px",isPushedOut:!1,clipPath:"none",isFullyVisible:!0};const te=parseInt(H.value.left)+12,Se=ne,Me=ne+oe,w=24,P=te-w/2,G=te+w/2,ee=t.milestoneId,ue=P>=Se&&G<=Me,pe=t.otherMilestones||[];if(G<=Se+w/2){const Ie=pe.filter(ae=>ae.id!==ee&&ae.stickyPosition==="left"&&ae.isSticky);if(Ie.length>0){const ae=parseInt(H.value.left)+12;if(Ie.some(ze=>ze.originalLeft>ae))return{showIcon:!1,showLabel:!1,isSticky:!1,stickyPosition:"none",iconLeft:"0px",isPushedOut:!0,clipPath:"none",isFullyVisible:!1}}return{showIcon:!0,showLabel:!1,isSticky:!0,stickyPosition:"left",iconLeft:`${Se-parseInt(H.value.left)-w/2}px`,isPushedOut:!1,clipPath:"polygon(50% 0%, 100% 0%, 100% 100%, 50% 100%)",isFullyVisible:!1}}if(P>=Me-w/2){const Ie=pe.filter(ae=>ae.id!==ee&&ae.stickyPosition==="right"&&ae.isSticky);if(Ie.length>0){const ae=parseInt(H.value.left)+12;if(Ie.some(ze=>ze.originalLeft{var oe;if(K.value.isSticky&&K.value.showIcon&&!K.value.isPushedOut){y.value=!0;const te=!t.milestone||((oe=t.milestone)==null?void 0:oe.icon)==="diamond"?-300:-270,Se=K.value.stickyPosition==="left"?10:te;x.value={x:ne.clientX+Se,y:ne.clientY-10}}},F=()=>{y.value=!1},j=ne=>{if(!ne)return s("dateNotSet");try{const oe=new Date(ne);if(isNaN(oe.getTime()))return s("dateNotSet");const te=oe.getFullYear(),Se=String(oe.getMonth()+1).padStart(2,"0"),Me=String(oe.getDate()).padStart(2,"0");return`${te}-${Se}-${Me}`}catch{return s("dateNotSet")}},_=Ge(()=>{var te,Se;const ne=t.name||((te=t.milestone)==null?void 0:te.name)||s("milestone"),oe=j(t.date||((Se=t.milestone)==null?void 0:Se.startDate)||"");return`${s("milestone")}:${ne} - ${s("targetDate")}:${oe}`});Da(()=>{d.value=!1,D.value=null,document.removeEventListener("mousemove",B),document.removeEventListener("mouseup",C)});const Ne=(ne,oe)=>{const te=new Date(ne.getFullYear(),ne.getMonth(),ne.getDate()),Se=new Date(oe.getFullYear(),oe.getMonth(),oe.getDate()),Me=te.getTime()-Se.getTime(),G=Math.floor(Me/(1e3*60*60*24))*960,ue=ne.getHours()*40,Ie=ne.getMinutes()/60*40;return G+ue+Ie},ve=(ne,oe,te)=>{var Me;let Se=0;for(const w of oe)if(te===Ve.DAY){const P="days"in w&&w.days?w.days:[];for(let G=0;G=ee&&ne<=ue){const ae=60/Math.ceil((ue.getTime()-ee.getTime())/864e5),ke=Math.ceil((ne.getTime()-ee.getTime())/(1e3*60*60*24));return Se+ke*ae+ae/2}Se+=60}}else if(te===Ve.YEAR){const P="halfYears"in w&&w.halfYears?w.halfYears:[];for(const G of P){const ee=new Date(G.startDate),ue=new Date(G.endDate);if(ne>=ee&&ne<=ue){const ae=180/Math.ceil((ue.getTime()-ee.getTime())/864e5),ke=Math.ceil((ne.getTime()-ee.getTime())/(1e3*60*60*24));return Se+ke*ae+ae/2}Se+=180}}else if(te===Ve.WEEK){const P="weeks"in w&&w.weeks?w.weeks:[];for(const G of P){const ee=new Date(G.weekStart),ue=new Date(G.weekEnd);if(ne>=ee&&ne<=ue){const Ie=G.subDays||[],ae=60/7;for(let W=0;W=P&&ne<=G){const pe=60/("monthData"in w&&((Me=w.monthData)==null?void 0:Me.dayCount)||30),Ie=ne.getDate();return Se+(Ie-1)*pe+pe/2}Se+=60}return Se};return(ne,oe)=>(q(),me(c2,null,[h("div",{class:B2(["milestone",{dragging:d.value,"milestone-sticky":K.value.isSticky,"milestone-sticky-left":K.value.stickyPosition==="left","milestone-sticky-right":K.value.stickyPosition==="right","milestone-pushed-out":K.value.isPushedOut,dimmed:b.value}]),style:at(H.value),title:K.value.isSticky?"":t.name||"里程碑",onClick:Jt(E,["stop"])},[K.value.showIcon?(q(),me("svg",{key:0,width:24,height:24,viewBox:"0 0 24 24",style:at([{position:K.value.isSticky?"relative":"static",left:K.value.isSticky?K.value.iconLeft:"0px",clipPath:K.value.clipPath,zIndex:K.value.isSticky?200:120},{cursor:"pointer"}]),onMouseenter:T,onMouseleave:F,onClick:Jt(E,["stop"]),onDblclick:Jt(A,["stop"]),onMousedown:Jt(f,["stop"])},[J.value==="diamond"?(q(),me("g",OF,[h("rect",{x:"4",y:"8",width:"15",height:"15",rx:"6",ry:"6",fill:X.value,stroke:re.value,"stroke-width":"2"},null,8,VF)])):J.value==="rocket"?(q(),me("g",jF,oe[0]||(oe[0]=[h("foreignObject",{x:"0",y:"0",width:"24",height:"24"},[h("div",{class:"rocket-emoji"},"🚀")],-1)]))):(q(),me("g",$F,[h("rect",{x:"4",y:"8",width:"15",height:"15",rx:"6",ry:"6",fill:X.value,stroke:re.value,"stroke-width":"2"},null,8,GF)]))],36)):h2("",!0),t.name&&K.value.showLabel?(q(),me("span",YF,le(t.name),1)):h2("",!0)],14,PF),(q(),r0(kn,{to:"body"},[y.value&&K.value.isSticky?(q(),me("div",{key:0,class:"milestone-tooltip",style:at({left:`${x.value.x}px`,top:`${x.value.y}px`})},[h("div",qF,le(_.value),1)],4)):h2("",!0)]))],64))}}),t7=J0(zF,[["__scopeId","data-v-7405b38c"]]);class W3{constructor(){a0(this,"cachedCtx",null);a0(this,"cachedWidth",0);a0(this,"cachedHeight",0);a0(this,"isUniApp",!1);this.isUniApp=typeof window<"u"&&!!window.uni}get isUniAppEnvironment(){return this.isUniApp}getContext(a){const{canvas:t,canvasId:r,width:n,height:s,contextOptions:d}=a;if(!this.cachedCtx||this.cachedWidth!==n||this.cachedHeight!==s){let i=null;if(this.isUniApp&&window.uni)i=window.uni.createCanvasContext(r);else{if(!t)return null;const o=window.devicePixelRatio||1;if(i=t.getContext("2d",d||{alpha:!0}),!i)return null;const D=n*o,A=s*o;t.width=D,t.height=A,i.scale(o,o)}if(!i)return null;this.cachedCtx=i,this.cachedWidth=n,this.cachedHeight=s}return this.cachedCtx}clear(a,t){this.cachedCtx&&this.cachedCtx.clearRect(0,0,a,t)}draw(){var a;this.isUniApp&&((a=this.cachedCtx)!=null&&a.draw)&&this.cachedCtx.draw()}reset(){this.cachedCtx=null,this.cachedWidth=0,this.cachedHeight=0}}const XF=x0({__name:"GanttLinks",props:{tasks:{},taskBarPositions:{},width:{},height:{},offsetLeft:{default:0},offsetTop:{default:0},highlightedTaskId:{},highlightedTaskIds:{},hoveredTaskId:{},verticalLines:{default:()=>[]},showVerticalLines:{type:Boolean,default:!0}},setup(e,{expose:a}){const t=e,r=Ce(null),n=new W3;let s=null,d=!1,i=null;const o=Ce(document.documentElement.getAttribute("data-theme")==="dark"),D=()=>{o.value=document.documentElement.getAttribute("data-theme")==="dark",c()},A=()=>{const g=n.getContext({canvas:r.value,canvasId:"gantt-link-canvas",width:t.width,height:t.height,contextOptions:{alpha:!0}});if(!g){console.error("❌ Canvas context 获取失败,可能是尺寸超限");return}const f=t.width,v=t.height;if(g.clearRect(0,0,f,v),t.showVerticalLines&&t.verticalLines&&t.verticalLines.length>0){g.save();const x=o.value?"#66b1ff":"#409eff";g.strokeStyle=x,g.lineWidth=1,g.beginPath();for(const T of t.verticalLines){const F=T.left-t.offsetLeft;F>=0&&F<=f&&(g.moveTo(F,0),g.lineTo(F,v))}g.stroke(),g.restore()}const B=new Set;for(const x of t.tasks)B.add(x.id);const C=t.highlightedTaskId!==null,E=t.offsetLeft,b=t.offsetLeft+f,H=t.offsetTop,X=t.offsetTop+v,re=[],J=[],K=[],y=[];for(const x of t.tasks){if(!x.predecessor||!t.taskBarPositions[x.id])continue;const T=Vr(x.predecessor);for(const F of T){const j=t.taskBarPositions[F],_=t.taskBarPositions[x.id];if(!j||!_||!B.has(F))continue;const Ne=t.highlightedTaskId===F,ve=t.highlightedTaskId===x.id,ne=t.highlightedTaskIds.has(F),oe=t.highlightedTaskIds.has(x.id),te=ne&&oe,Se=t.hoveredTaskId===F,Me=t.hoveredTaskId===x.id,w=Se||Me,P=Ne?-8:ne?-5:0,G=ve?-8:oe?-5:0,ee=j.left+j.width,ue=j.top+j.height/2+P,pe=_.left,Ie=_.top+_.height/2+G,ae=Math.min(ee,pe),ke=Math.max(ee,pe),ze=Math.min(ue,Ie),W=Math.max(ue,Ie);if(keb||WX)continue;const $=ee-t.offsetLeft,Be=ue-t.offsetTop,R=pe-t.offsetLeft,ye=Ie-t.offsetTop,O=R-$,ie=ye-Be,fe=Math.sqrt(O*O+ie*ie),He=j.width,be=j.height,Ze=Math.abs(O)/(fe+1),Le=20;let p2=be/2+Le;Ze<.3?p2=Math.max(be/2+25,45):Ze<.6?p2=be/2+Le:p2=He/3+10;let l2=0;if(Math.abs(ie)>0){const b2=be/2+12,mt=Math.abs(ie)-be,V2=Math.min(mt*.5,100);l2=Math.max(b2,V2)}else l2=0;const k2=Ze<.3?.4:.8,y2=$+p2,v2=Be+(ie>0?l2:-l2)*k2,K2=R-p2,C2=ye-(ie>0?l2:-l2)*k2,gt=Math.atan2(ye-C2,R-K2),it={x1:$,y1:Be,x2:R,y2:ye,c1x:y2,c1y:v2,c2x:K2,c2y:C2,arrowAngle:gt};te?re.push(it):w?J.push(it):C?y.push(it):K.push(it)}}if(g.setLineDash([6,4]),re.length>0){g.strokeStyle="#409eff",g.fillStyle="#409eff",g.lineWidth=4,g.globalAlpha=1,g.beginPath();for(const x of re)g.moveTo(x.x1,x.y1),g.bezierCurveTo(x.c1x,x.c1y,x.c2x,x.c2y,x.x2,x.y2);g.stroke();for(const x of re)m(g,x.x2,x.y2,x.arrowAngle)}if(J.length>0){g.strokeStyle="#67c23a",g.fillStyle="#67c23a",g.lineWidth=3,g.globalAlpha=1,g.beginPath();for(const x of J)g.moveTo(x.x1,x.y1),g.bezierCurveTo(x.c1x,x.c1y,x.c2x,x.c2y,x.x2,x.y2);g.stroke();for(const x of J)m(g,x.x2,x.y2,x.arrowAngle)}if(K.length>0){g.strokeStyle="#c0c4cc",g.fillStyle="#c0c4cc",g.lineWidth=2,g.globalAlpha=1,g.beginPath();for(const x of K)g.moveTo(x.x1,x.y1),g.bezierCurveTo(x.c1x,x.c1y,x.c2x,x.c2y,x.x2,x.y2);g.stroke();for(const x of K)m(g,x.x2,x.y2,x.arrowAngle)}if(y.length>0){g.strokeStyle="#c0c4cc",g.fillStyle="#c0c4cc",g.lineWidth=2,g.globalAlpha=.2,g.beginPath();for(const x of y)g.moveTo(x.x1,x.y1),g.bezierCurveTo(x.c1x,x.c1y,x.c2x,x.c2y,x.x2,x.y2);g.stroke();for(const x of y)m(g,x.x2,x.y2,x.arrowAngle);g.globalAlpha=1}n.draw()},m=(g,f,v,B)=>{g.beginPath(),g.moveTo(f,v),g.lineTo(f-8*Math.cos(B)-4*Math.sin(B),v-8*Math.sin(B)+4*Math.cos(B)),g.lineTo(f-8*Math.cos(B)+4*Math.sin(B),v-8*Math.sin(B)-4*Math.cos(B)),g.closePath(),g.fill()},c=()=>{d||(d=!0,s!==null&&cancelAnimationFrame(s),s=requestAnimationFrame(()=>{d=!1,s=null,A()}))};return Dt([()=>t.taskBarPositions,()=>t.tasks,()=>t.highlightedTaskId,()=>t.highlightedTaskIds,()=>t.hoveredTaskId,()=>t.width,()=>t.height,()=>t.verticalLines,()=>t.showVerticalLines,()=>t.offsetLeft,()=>t.offsetTop],()=>{c()},{deep:!1}),Ca(()=>{i=new MutationObserver(g=>{for(const f of g)if(f.attributeName==="data-theme"){D();break}}),i.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]}),Zt(()=>{A()})}),Da(()=>{i&&(i.disconnect(),i=null),s!==null&&(cancelAnimationFrame(s),s=null)}),a({redraw:A}),(g,f)=>(q(),me("canvas",{ref_key:"canvasRef",ref:r,"canvas-id":"gantt-link-canvas",class:"gantt-links-canvas",type:"2d",hidpi:!0,style:at({position:"absolute",left:`${g.offsetLeft}px`,top:`${g.offsetTop}px`,width:`${g.width}px`,height:`${g.height}px`,zIndex:g.highlightedTaskId!==null?1001:25,pointerEvents:"none"})},null,4))}}),JF=J0(XF,[["__scopeId","data-v-7c939e26"]]),ZF=x0({__name:"LinkDragGuide",props:{active:{type:Boolean},width:{},height:{},offsetLeft:{default:0},offsetTop:{default:0}},setup(e,{expose:a}){const t=e,r=Ce(null),n=new W3,s=()=>n.getContext({canvas:r.value,canvasId:"link-drag-guide-canvas",width:t.width,height:t.height,contextOptions:{alpha:!0,willReadFrequently:!1}}),d=(o,D,A,m,c=!0,g="")=>{const f=s();if(!f){console.error("[LinkDragGuide] initCanvas returned null");return}const v=t.width,B=t.height;f.clearRect(0,0,v,B);const C=o-t.offsetLeft,E=D-t.offsetTop,b=A-t.offsetLeft,H=m-t.offsetTop,X=100;if(!((C>=-X||b>=-X)&&(C<=v+X||b<=v+X)&&(E>=-X||H>=-X)&&(E<=B+X||H<=B+X)))return;f.save();const J=c?"#67c23a":"#f56c6c";f.strokeStyle=J,f.lineWidth=3,f.globalAlpha=.8,f.beginPath(),f.moveTo(C,E),f.lineTo(b,H),f.stroke();const K=Math.atan2(H-E,b-C),y=8,x=4;if(f.fillStyle=J,f.globalAlpha=1,f.beginPath(),f.moveTo(b,H),f.lineTo(b-y*Math.cos(K)-x*Math.sin(K),H-y*Math.sin(K)+x*Math.cos(K)),f.lineTo(b-y*Math.cos(K)+x*Math.sin(K),H-y*Math.sin(K)-x*Math.cos(K)),f.closePath(),f.fill(),!c&&g){const T=(C+b)/2,F=(E+H)/2-10;f.font="12px Arial, sans-serif";const _=f.measureText(g).width,Ne=8;f.fillStyle="rgba(0, 0, 0, 0.75)",f.fillRect(T-_/2-Ne,F-12,_+Ne*2,24),f.fillStyle="#ffffff",f.textAlign="center",f.textBaseline="middle",f.fillText(g,T,F)}f.restore(),n.draw()},i=()=>{n.clear(t.width,t.height)};return Dt([()=>t.width,()=>t.height],()=>{n.reset()}),Dt(()=>t.active,o=>{o||n.reset()}),Da(()=>{n.reset()}),a({draw:d,clear:i}),(o,D)=>o.active?(q(),me("canvas",{key:0,ref_key:"canvasRef",ref:r,"canvas-id":"link-drag-guide-canvas",class:"link-drag-guide-canvas",type:"2d",hidpi:!0,style:at({position:"absolute",left:`${o.offsetLeft}px`,top:`${o.offsetTop}px`,width:`${o.width}px`,height:`${o.height}px`,zIndex:1002,pointerEvents:"none"})},null,4)):h2("",!0)}}),ew=J0(ZF,[["__scopeId","data-v-b2173cd8"]]);performance.now();const tw={class:"timeline-header"},aw={class:"timeline-header-row year-row"},rw={class:"year-label"},nw={class:"timeline-header-row half-years-row"},sw={class:"half-year-label"},dw={class:"timeline-header-row year-row"},iw={class:"year-label"},ow={class:"timeline-header-row months-row"},pw={class:"month-label"},Dw={class:"timeline-header-row year-row"},Aw={class:"year-label"},gw={class:"timeline-header-row quarters-row"},Iw={class:"quarter-label"},mw={class:"timeline-header-row date-row"},lw={class:"date-label"},cw={class:"timeline-header-row hours-row"},uw={class:"hour-label"},fw={class:"timeline-header-row year-month-row"},hw={class:"year-month-label"},Sw={class:"flag-content"},Cw={class:"timeline-header-row days-row"},vw={class:"week-label"},Fw={class:"day-label"},ww=["onMouseenter"],Tw=200,Bw=8,Nw=4,rp=40,a7=10,r7=51,n7=5,M4=5e3,yw=5e3,s7=50,d7=5,Rw=x0({__name:"Timeline",props:{tasks:{default:()=>[]},milestones:{default:()=>[]},startDate:{},endDate:{},useDefaultDrawer:{type:Boolean,default:!0},useDefaultMilestoneDialog:{type:Boolean,default:!0},onTaskDelete:{type:Function,default:void 0},onTaskUpdate:{type:Function,default:void 0},onMilestoneDelete:{type:Function,default:void 0},onMilestoneUpdate:{type:Function,default:void 0},onMilestoneSave:{type:Function,default:void 0},workingHours:{default:()=>({morning:{start:8,end:11},afternoon:{start:13,end:17}})},taskBarConfig:{default:void 0},allowDragAndResize:{type:Boolean,default:!0}},emits:["timeline-scale-changed","click-task","edit-task","milestone-double-click","start-timer","stop-timer","add-predecessor","add-successor","predecessor-added","successor-added","delete","link-deleted"],setup(e,{expose:a,emit:t}){const r=e,n=t,{formatYearMonth:s,formatMonth:d,getTranslation:i}=Fr(),o=M=>i(M),D=(()=>{const M=new Date,Z=new Date(M.getFullYear(),M.getMonth()-6,1),U=new Date(M.getFullYear(),M.getMonth()+6+1,0);return{startDate:Z,endDate:U}})(),A=()=>D,m=Ge(()=>r.startDate?new Date(r.startDate):A().startDate),c=Ge(()=>r.endDate?new Date(r.endDate):A().endDate),g=Ce({startDate:m.value,endDate:c.value,zoomLevel:1}),f=Ce(Ve.DAY);Dt([m,c],([M,Z])=>{(r.startDate||r.endDate)&&(u2||(g.value.startDate=M,g.value.endDate=Z))});const v=[],B=Ge(()=>r.tasks??v),C=Ce(null),E=Ce(null),b=Ge(()=>f.value===Ve.HOUR?960:f.value===Ve.WEEK?60/7:f.value===Ve.MONTH?2:f.value===Ve.QUARTER?60/90:f.value===Ve.YEAR?360/365:30);let H=null;const X=()=>{H=null},re=()=>{if(!B.value||B.value.length===0)return null;const M=[],Z=Te=>{if(Te.startDate&&M.push(new Date(Te.startDate)),Te.endDate&&M.push(new Date(Te.endDate)),Te.children&&Te.children.length>0)for(const Ke of Te.children)Z(Ke)};for(const Te of B.value)Z(Te);if(M.length===0)return null;let U=1/0,ce=-1/0;for(const Te of M){const Ke=Te.getTime();isNaN(Ke)||(Kece&&(ce=Ke))}return U===1/0||ce===-1/0?null:{minDate:new Date(U),maxDate:new Date(ce)}},J=()=>H||(H=re(),H),K=()=>{const M=J(),Z=Ye.value||1200,U=40;if(!M){const H2=new Date;H2.setHours(0,0,0,0);const Q2=new Date(H2);Q2.setDate(Q2.getDate()-1);const n2=new Date(H2);return n2.setDate(n2.getDate()+1),n2.setHours(23,59,59,999),{startDate:Q2,endDate:n2}}const{minDate:ce,maxDate:Te}=M,Ke=new Date(ce);Ke.setHours(0,0,0,0),Ke.setDate(Ke.getDate()-1);const qe=new Date(Te);qe.setHours(23,59,59,999),qe.setDate(qe.getDate()+1);const Oe=Math.ceil((qe.getTime()-Ke.getTime())/(1e3*60*60));if(Oe*U{const M=J(),Z=Ye.value||1200,U=30;if(!M){const H2=new Date,Q2=Math.max(Math.ceil(Z/U),60),n2=new Date(H2);n2.setDate(n2.getDate()-Math.floor(Q2/2));const x2=new Date(H2);return x2.setDate(x2.getDate()+Math.ceil(Q2/2)),{startDate:n2,endDate:x2}}const{minDate:ce,maxDate:Te}=M;let Ke=new Date(ce);Ke.setDate(Ke.getDate()-30);let qe=new Date(Te);qe.setDate(qe.getDate()+30);const Oe=Math.ceil((qe.getTime()-Ke.getTime())/(1e3*60*60*24));if(Oe*U{const M=J(),Z=Ye.value||1200,U=60;if(!M){const D0=new Date,xt=Math.max(Math.ceil(Z/U),20),Gt=new Date(D0);Gt.setDate(Gt.getDate()-Math.floor(xt/2)*7);const E0=new Date(D0);return E0.setDate(E0.getDate()+Math.ceil(xt/2)*7),{startDate:Gt,endDate:E0}}const{minDate:ce,maxDate:Te}=M;function Ke(D0){const xt=new Date(D0),Gt=xt.getDay()||7;return xt.setDate(xt.getDate()-(Gt-1)),xt}function qe(D0,xt){let Gt=1;for(;Gt<=31;){const E0=new Date(D0,xt,Gt);if(E0.getMonth()!==xt)break;const ft=Ke(E0);if(ft.getMonth()===xt)return ft;Gt++}return new Date(D0,xt,1)}function Oe(D0,xt){const Gt=new Date(D0,xt+1,0).getDate();for(let E0=Gt;E0>=1;E0--){const ft=new Date(D0,xt,E0),Ya=Ke(ft);if(Ya.getMonth()===xt)return Ya}return new Date(D0,xt,1)}function g2(D0,xt){const Gt=[],E0=qe(D0,xt),ft=Oe(D0,xt),Ya=new Date(E0);for(;Ya<=ft;)Gt.push(new Date(Ya)),Ya.setDate(Ya.getDate()+7);return Gt}const H2=Ke(ce),Q2=H2.getFullYear(),n2=H2.getMonth(),x2=n2===0?11:n2-1,It=n2===0?Q2-1:Q2,e0=g2(It,x2),l0=Ke(Te),d0=l0.getFullYear(),i0=l0.getMonth(),Wt=i0===11?0:i0+1,F0=i0===11?d0+1:d0,ar=g2(F0,Wt);let Q0=[];Q0.push(...e0);let G0=Q2,rr=n2;for(;G011&&(rr=0,G0++)}Q0.push(...ar);let xr=Q0.length*U;for(;xr=Z)break;const on=Q0[Q0.length-1],L1=on.getFullYear(),V0=on.getMonth(),us=V0===11?0:V0+1,qr=V0===11?L1+1:L1,zr=g2(qr,us);Q0=[...Q0,...zr],xr=Q0.length*U}const w1=new Date(Q0[0]),lr=new Date(Q0[Q0.length-1]);return lr.setDate(lr.getDate()+6),{startDate:w1,endDate:lr}},T=()=>{const M=J();if(!M){const Q2=new Date,n2=new Date(Q2.getFullYear()-1,0,1),x2=new Date(Q2.getFullYear()+1,11,31);return{startDate:n2,endDate:x2}}const{minDate:Z,maxDate:U}=M,ce=Ye.value||1200;let Te=new Date(Z.getFullYear()-1,0,1),Ke=new Date(U.getFullYear()+1,11,31);const Oe=(Ke.getFullYear()-Te.getFullYear())*12+(Ke.getMonth()-Te.getMonth()),g2=60;if(Oe*g2{const M=J();if(!M){const Oe=new Date,g2=Ye.value||1200;let H2=3;f.value===Ve.QUARTER?H2=Math.max(Math.ceil(g2/240)+1,5):f.value===Ve.YEAR&&(H2=Math.max(Math.ceil(g2/360)+1,5));const Q2=Oe.getFullYear()-Math.floor(H2/2),n2=Q2+H2-1,x2=new Date(Q2,0,1),It=new Date(n2,11,31);return{startDate:x2,endDate:It}}const{minDate:Z,maxDate:U}=M,ce=Ye.value||1200;let Te=new Date(Z.getFullYear()-1,0,1),Ke=new Date(U.getFullYear()+1,11,31);const qe=Ke.getFullYear()-Te.getFullYear()+1;if(f.value===Ve.QUARTER){if(qe*240_.value!==null),ne=()=>{_.value=null,Ne.value.clear()},oe=M=>{_.value=M,Ne.value.clear(),Ne.value.add(M);const Z=B.value.find(U=>U.id===M);if(Z){if(Z.predecessor){const U=Vr(Z.predecessor);for(const ce of U)Ne.value.add(ce)}for(const U of B.value)U.predecessor&&Vr(U.predecessor).includes(M)&&Ne.value.add(U.id)}},te=Ce(null),Se=N4(null),Me=N4(null),w=Ce(!1),P=Ce(""),G=Ce(null);let ee=!1,ue="";const pe=new Map,Ie=M=>{te.value=M.type,Se.value=M.task,be(M.mouseEvent.clientX,M.mouseEvent.clientY),Me.value=null,w.value=!1,P.value="",S2=null,ee=!1,ue="",C2(),document.addEventListener("mousemove",R),document.addEventListener("mouseup",ye)};let ae=null,ke=0,ze=0,W=0,$=0;const Be=()=>{ae=null,be(ke,ze),k2(ke,ze),w2.value&&Se.value&&w2.value.draw(q2(),b2(),W,$,ee,ue)},R=M=>{te.value&&(ke=M.clientX,ze=M.clientY,ae===null&&(ae=requestAnimationFrame(Be)))},ye=()=>{te.value&&(ae!==null&&(cancelAnimationFrame(ae),ae=null),Se.value&&Le({task:Se.value,type:te.value}))};let O=null,ie=0,fe=!1;const He=(M,Z)=>{if(!D2.value){W=M,$=Z;return}const U=Date.now();(!O||fe||U-ie>Tw)&&(O=D2.value.getBoundingClientRect(),ie=U,fe=!1),W=M-O.left,$=Z-O.top},be=(M,Z)=>{He(M,Z)},Ze=M=>{ke=M.mouseX,ze=M.mouseY,ae===null&&(ae=requestAnimationFrame(Be))},Le=M=>{var Z;O=null,document.removeEventListener("mousemove",R),document.removeEventListener("mouseup",ye),gt(),(Z=w2.value)==null||Z.clear(),Me.value&&w.value&&K2(M.task,Me.value,M.type),te.value=null,Se.value=null,Me.value=null,w.value=!1},p2=(M,Z)=>{O||(O=D2.value.getBoundingClientRect(),ie=Date.now());const U=M-O.left,ce=Z-O.top,Te=(Bw+Nw)/2,Ke=Te+10;for(const qe in Pe.value){const Oe=Pe.value[qe],g2=Number(qe);if(ceOe.top+Oe.height+Ke)continue;const H2=Oe.top+Oe.height/2,Q2=Oe.left;if(U>=Q2-Te&&U<=Q2+Te&&ce>=H2-Te&&ce<=H2+Te)return{taskId:g2,anchorType:"left"};const n2=Oe.left+Oe.width;if(U>=n2-Te&&U<=n2+Te&&ce>=H2-Te&&ce<=H2+Te)return{taskId:g2,anchorType:"right"}}return null},l2=(M,Z)=>{const U=(S2==null?void 0:S2.id)??null,ce=(M==null?void 0:M.id)??null;if(U!==ce)if(S2=M,M&&Se.value){const Te=y2(Se.value,M,te.value,Z);ee=Te.valid,ue=Te.error||"",w.value=Te.valid,Me.value=M}else ee=!1,ue="",w.value=!1,Me.value=null};let S2=null;const k2=(M,Z)=>{if(!Se.value||!D2.value)return;const U=p2(M,Z),ce=U!==null&&pe.get(U.taskId)||null,Te=U==null?void 0:U.anchorType;l2(ce,Te)},y2=(M,Z,U,ce)=>{if(ce){if(U==="predecessor"&&ce!=="right")return{valid:!1,error:"前置任务应连接到右侧触点"};if(U==="successor"&&ce!=="left")return{valid:!1,error:"后置任务应连接到左侧触点"}}if(M.id===Z.id)return{valid:!1,error:"不能连接到自己"};if(Z.isParent||Z.type==="milestone")return{valid:!1,error:"不能连接到父级任务或里程碑"};if(U==="predecessor"){if(v2(Z.id,M.id))return{valid:!1,error:"会产生循环依赖"}}else if(v2(M.id,Z.id))return{valid:!1,error:"会产生循环依赖"};if(U==="predecessor"){if(M.predecessor&&Vr(M.predecessor).includes(Z.id))return{valid:!1,error:"关系已存在"}}else if(Z.predecessor&&Vr(Z.predecessor).includes(M.id))return{valid:!1,error:"关系已存在"};return{valid:!0}},v2=(M,Z)=>{const U=new Set,ce=[M];for(;ce.length>0;){const Te=ce.shift();if(Te===Z)return!0;if(U.has(Te))continue;U.add(Te);const Ke=B.value.find(qe=>qe.id===Te);if(Ke&&Ke.predecessor){const qe=Vr(Ke.predecessor);ce.push(...qe)}}return!1},K2=(M,Z,U)=>{if(console.log("----> hello:",{mode:U,sourceTask:M,targetTask:Z}),U==="predecessor"){const ce=M.predecessor?Vr(M.predecessor):[];ce.includes(Z.id)||(ce.push(Z.id),M.predecessor=ce,Pt(M),n("predecessor-added",{targetTask:M,newTask:Z}))}else{const ce=Z.predecessor?Vr(Z.predecessor):[];ce.includes(M.id)||(ce.push(M.id),Z.predecessor=ce,Pt(Z),n("successor-added",{targetTask:Z,newTask:M}))}},C2=()=>{G.value=window.setInterval(()=>{if(!C.value||!D2.value)return;const M=C.value,Z=S0.value;if(!Z)return;const U=M.getBoundingClientRect(),ce=80,Te=15,Ke=ke,qe=ze;let Oe=!1;if(Ke0)M.scrollLeft-=Te,Oe=!0;else if(Ke>U.right-ce){const g2=M.scrollWidth-M.clientWidth;M.scrollLeft0)Z.scrollTop-=Te,Oe=!0;else if(qe>U.bottom-ce){const g2=Z.scrollHeight-Z.clientHeight;Z.scrollTop{G.value!==null&&(clearInterval(G.value),G.value=null)},it=()=>{var M;gt(),O=null,ae!==null&&(cancelAnimationFrame(ae),ae=null),(M=w2.value)==null||M.clear(),document.removeEventListener("mousemove",R),document.removeEventListener("mouseup",ye),te.value=null,Se.value=null,Me.value=null,w.value=!1},q2=()=>{if(!Se.value)return 0;const M=Pe.value[Se.value.id];return M?te.value==="predecessor"?M.left:M.left+M.width:0},b2=()=>{if(!Se.value)return 0;const M=Pe.value[Se.value.id];return M?M.top+M.height/2:0},mt=Ce(!1),V2=Ce(!1),_t=Ce(!1),j2=Ce(0),xe=Ce(!1);let Xe=null;const e2=Ce(0),Ye=Ce(0),F2=Ce(!0),lt=Ce(!0);let z2=null;const qt=Ce(0),U0=new Map,U2=Ce(!0),Ba=Ge(()=>{if(f.value!==Ve.HOUR)return{startHour:0,endHour:0};const M=e2.value,Z=Ye.value;if(U2.value&&M===0)return{startHour:0,endHour:168};if(U2.value){const Te=new Date,Ke=g.value.startDate,qe=Math.floor((Te.getTime()-Ke.getTime())/(1e3*60*60));return{startHour:Math.max(0,qe-168),endHour:qe+168}}const U=Math.floor(M/rp)-a7,ce=Math.ceil((M+Z)/rp)+a7;return{startHour:Math.max(0,U),endHour:Math.max(U+1,ce)}}),Aa=Ge(()=>{const M=qt.value,Z=ra.value||600,U=Math.floor(M/r7)-n7,ce=Math.ceil((M+Z)/r7)+n7;return{startIndex:Math.max(0,U),endIndex:Math.min(B.value.length,Math.max(U+1,ce))}}),Z0=Ge(()=>{const{startIndex:M,endIndex:Z}=Aa.value;return B.value.slice(M,Z).map((U,ce)=>({task:U,originalIndex:M+ce}))}),B0=(M,Z)=>{let U=null;return((...ce)=>{const Te=()=>{U=null,M(...ce)};U&&clearTimeout(U),U=window.setTimeout(Te,Z)})},Vt=B0(()=>{P0()},200),o0=B0(()=>{dt()},200),N0=()=>{const M=f.value,Z=g.value.startDate.getTime(),U=g.value.endDate.getTime(),ce=`${M}-${Z}-${U}`;if(!U0.has(ce)){let Te;M===Ve.HOUR?Te=ge():M===Ve.WEEK?Te=he():M===Ve.MONTH?Te=et():M===Ve.QUARTER?Te=ct():M===Ve.YEAR?Te=Lt():Te=ya(),U0.set(ce,Te)}return U0.get(ce)},Ua=Ge(()=>{const M=N0();if(f.value===Ve.HOUR&&Array.isArray(M)){const{startHour:Z,endHour:U}=Ba.value,ce=[],Te=new Date(g.value.startDate);Te.setHours(0,0,0,0);const Ke=Te.getTime(),qe=1e3*60*60*24;for(const Oe of M){const g2=new Date(Oe.year,Oe.month-1,Oe.day);g2.setHours(0,0,0,0);const Q2=Math.floor((g2.getTime()-Ke)/qe)*24,n2=Math.max(0,Z-Q2),x2=Math.min(Oe.hours.length,U-Q2);n2{var ce,Te;const M=N0();if(!Array.isArray(M))return 0;const Z=f.value;if(Z===Ve.HOUR){let Ke=0;for(const qe of M)Ke+=qe.hours.length;return Ke*rp}if(Z===Ve.QUARTER){let Ke=0;for(const qe of M)Ke+=qe.quarters.length;return Ke*60}if(Z===Ve.WEEK){let Ke=0;for(const qe of M)Ke+=((ce=qe.weeks)==null?void 0:ce.length)||0;return Ke*60}if(Z===Ve.MONTH)return M.length*60;if(Z===Ve.YEAR)return M.length*360;let U=0;for(const Ke of M)U+=((Te=Ke.days)==null?void 0:Te.length)||0;return U*30}),ra=Ce(0);let _0=null;const na=Ce(new Map),P0=()=>{const M=new Map,Z=g.value.startDate.getTime(),U=e2.value,ce=U+Ye.value;for(const Te of B.value)if(Te.type==="milestone-group"&&Te.children)for(const Ke of Te.children){const qe=new Date(Ke.startDate||"");if(!isNaN(qe.getTime())){const g2=Math.floor((qe.getTime()-Z)/864e5)*30+15-12,H2=g2-12,Q2=g2+12;let n2=!1,x2="none";Q2<=U+12?(n2=!0,x2="left"):H2>=ce-12&&(n2=!0,x2="right"),M.set(Ke.id,{left:g2,originalLeft:g2,isSticky:n2,stickyPosition:x2})}}else if(Te.type==="milestone"){const Ke=new Date(Te.startDate||"");if(!isNaN(Ke.getTime())){const qe=(Ke.getTime()-Z)/864e5,g2=Math.floor(qe)*30+15-12,H2=g2-12,Q2=g2+12;let n2=!1,x2="none";Q2<=U+12?(n2=!0,x2="left"):H2>=ce-12&&(n2=!0,x2="right"),M.set(Te.id,{left:g2,originalLeft:g2,isSticky:n2,stickyPosition:x2})}}na.value=M},ea=M=>{const Z=[];return na.value.forEach((U,ce)=>{ce!==M&&Z.push({id:ce,left:U.left,originalLeft:U.originalLeft,isSticky:U.isSticky,stickyPosition:U.stickyPosition,priority:U.originalLeft})}),Z},ta=()=>{mt.value=!0},sa=()=>{if(mt.value=!1,C.value){const M=C.value.clientWidth;Math.abs(M-Ye.value)>1&&(Ye.value=M)}F2.value=!0,setTimeout(()=>{F2.value=!1},300)},Ea=()=>{F2.value=!0,Pe.value={},i2.value++,z2&&clearTimeout(z2),z2=setTimeout(()=>{F2.value=!1,z2=null,dt()},300)},wr=M=>{mt.value||ga.value||(j.value=M,window.dispatchEvent(new CustomEvent("timeline-task-hover",{detail:M})))},Rt=Ge(()=>{const U=B.value.length*51;return Math.max(U,400,ra.value)}),y0=M=>{ga.value||(j.value=M.detail)},We=M=>{const Z=M.detail;z(Z)},se=()=>{m2.value=kt()},X2=M=>{ve.value||n("milestone-double-click",M)},Et=M=>{r.onMilestoneSave&&typeof r.onMilestoneSave=="function"&&r.onMilestoneSave(M),window.dispatchEvent(new CustomEvent("milestone-data-updated",{detail:{milestone:M}}))},kt=()=>N0(),h0=()=>{U0.clear()},ya=()=>{const M=[],Z=new Date(g.value.startDate);for(;Z<=g.value.endDate;){const U=Z.getFullYear(),ce=Z.getMonth()+1,Te=[],Ke=new Date(U,ce,0).getDate();for(let qe=1;qe<=Ke;qe++){const Oe=new Date(U,ce-1,qe),g2=Oe.getDay(),H2=g2===0||g2===6;Te.push({day:qe,date:Oe,label:String(qe).padStart(2,"0"),isToday:I2(Oe),isWeekend:H2})}M.push({year:U,month:ce,yearMonthLabel:s(U,ce),startDate:new Date(Z),endDate:new Date(U,ce,0),days:Te}),Z.setMonth(Z.getMonth()+1)}return M},Ra=(M,Z)=>{if(Z===0||Z===6)return!1;const U=r.workingHours;if(!U)return!1;if(U.morning){const{start:ce,end:Te}=U.morning;if(M>=ce&&M<=Te)return!0}if(U.afternoon){const{start:ce,end:Te}=U.afternoon;if(M>=ce&&M<=Te)return!0}return!1},ge=()=>{const M=[],Z=new Date(g.value.startDate);for(;Z<=g.value.endDate;){const U=Z.getFullYear(),ce=Z.getMonth()+1,Te=Z.getDate(),Ke=[],qe=Z.getDay();for(let Oe=0;Oe<24;Oe++){const g2=new Date(U,ce-1,Te,Oe);Ke.push({hour:Oe,label:`${String(Oe).padStart(2,"0")}:00`,shortLabel:String(Oe).padStart(2,"0"),date:g2,isToday:I2(g2)&&Oe===new Date().getHours(),isWorkingHour:Ra(Oe,qe),isWeekend:qe===0||qe===6})}M.push({year:U,month:ce,day:Te,date:new Date(Z),dateLabel:`${U}/${String(ce).padStart(2,"0")}/${String(Te).padStart(2,"0")}`,isToday:I2(Z),hours:Ke}),Z.setDate(Z.getDate()+1)}return M},he=()=>{const M=[],Z=new Date(g.value.startDate),U=new Date(g.value.endDate),ce=new Date(Z),Te=ce.getDay()||7;ce.setDate(ce.getDate()-(Te-1));const Ke=new Date(ce);for(;Ke<=U;){const g2=new Date(Ke);g2.setDate(g2.getDate()+6),M.push({weekStart:new Date(Ke),weekEnd:new Date(g2),label:`${Ke.getDate()}`,isToday:t2(Ke,g2),subDays:Je(Ke),belongsToYear:Ke.getFullYear(),belongsToMonth:Ke.getMonth()+1}),Ke.setDate(Ke.getDate()+7)}const qe=new Map;for(const g2 of M){const H2=g2,Q2=H2.belongsToYear,n2=H2.belongsToMonth,x2=`${Q2}-${n2}`;qe.has(x2)||qe.set(x2,{year:Q2,month:n2,yearMonthLabel:s(Q2,n2),startDate:new Date(Q2,n2-1,1),endDate:new Date(Q2,n2,0),weeks:[],isWeekView:!0}),qe.get(x2).weeks.push(g2)}return Array.from(qe.values()).sort((g2,H2)=>g2.year!==H2.year?g2.year-H2.year:g2.month-H2.month)},Je=M=>{const Z=[];for(let U=0;U<7;U++){const ce=new Date(M);ce.setDate(ce.getDate()+U),Z.push({date:new Date(ce),dayOfWeek:ce.getDay()})}return Z},t2=(M,Z)=>{const U=new Date;return U.setHours(0,0,0,0),U>=M&&U<=Z},$2=(M,Z)=>{let U=0;for(let ce=0;ce{if(f.value=M,U2.value=!0,h0(),M===Ve.HOUR){const Z=K();u2=!0,g.value={...g.value,startDate:Z.startDate,endDate:Z.endDate},u2=!1}else if(M===Ve.DAY){const Z=y();u2=!0,g.value={...g.value,startDate:Z.startDate,endDate:Z.endDate},u2=!1}if(M===Ve.WEEK){const Z=x();u2=!0,g.value={...g.value,startDate:Z.startDate,endDate:Z.endDate},u2=!1}if(M===Ve.MONTH){const Z=T();u2=!0,g.value={...g.value,startDate:Z.startDate,endDate:Z.endDate},u2=!1}if(M===Ve.QUARTER){const Z=F();u2=!0,g.value={...g.value,startDate:Z.startDate,endDate:Z.endDate},u2=!1}if(M===Ve.YEAR){const Z=F();u2=!0,g.value={...g.value,startDate:Z.startDate,endDate:Z.endDate},u2=!1}m2.value=kt(),Zt(()=>{n("timeline-scale-changed",M),window.dispatchEvent(new CustomEvent("timeline-scale-updated")),setTimeout(()=>{window.dispatchEvent(new CustomEvent("timeline-force-recalculate")),setTimeout(()=>{Tt()},100)},50)})},I2=M=>{const Z=new Date;return M.getDate()===Z.getDate()&&M.getMonth()===Z.getMonth()&&M.getFullYear()===Z.getFullYear()},m2=N4(kt());let u2=!1;Dt(()=>[g.value.startDate,g.value.endDate],()=>{u2||(h0(),m2.value=kt())});let G2=!1;Dt(()=>[m2.value,g.value.startDate,g.value.endDate],()=>{G2||Zt(()=>{Tt(),G2=!0})});const Tt=(M=0)=>{F2.value=!0,lt.value=!0;const Z=new Date,U=g.value.startDate,ce=new Date(Z.getFullYear(),Z.getMonth(),Z.getDate());let Te;if(f.value===Ve.YEAR||f.value===Ve.QUARTER){const n2=F();Te=new Date(n2.startDate.getFullYear(),n2.startDate.getMonth(),n2.startDate.getDate())}else if(f.value===Ve.MONTH){const n2=T();Te=new Date(n2.startDate.getFullYear(),n2.startDate.getMonth(),n2.startDate.getDate())}else Te=new Date(U.getFullYear(),U.getMonth(),U.getDate());const Ke=ce.getTime()-Te.getTime(),qe=Math.floor(Ke/(1e3*60*60*24));let Oe;if(f.value===Ve.HOUR){const n2=Z.getHours(),x2=Z.getMinutes(),It=qe*b.value,e0=n2*40,l0=x2/60*40;Oe=It+e0+l0}else if(f.value===Ve.QUARTER){const n2=ce.getFullYear(),x2=Te.getFullYear(),It=240,e0=60;Oe=(n2-x2)*It;const d0=ce.getMonth()+1;let i0=1;d0>=1&&d0<=3||(d0>=4&&d0<=6?i0=2:d0>=7&&d0<=9?i0=3:i0=4),Oe+=(i0-1)*e0;let Wt,F0;i0===1?(Wt=new Date(n2,0,1),F0=new Date(n2,2,31)):i0===2?(Wt=new Date(n2,3,1),F0=new Date(n2,5,30)):i0===3?(Wt=new Date(n2,6,1),F0=new Date(n2,8,30)):(Wt=new Date(n2,9,1),F0=new Date(n2,11,31));const ar=Math.floor((ce.getTime()-Wt.getTime())/(1e3*60*60*24)),Q0=Math.floor((F0.getTime()-Wt.getTime())/(1e3*60*60*24))+1,G0=ar/Q0*e0;Oe+=G0}else if(f.value===Ve.MONTH){const n2=ce.getFullYear(),x2=ce.getMonth()+1,It=Te.getFullYear(),e0=Te.getMonth()+1,l0=(n2-It)*12+(x2-e0),d0=60;Oe=l0*d0;const i0=ce.getDate(),Wt=new Date(n2,x2,0).getDate(),F0=i0/Wt*d0;Oe+=F0}else if(f.value===Ve.YEAR){const n2=m2.value;let x2=0;const It=180;let e0=!1;for(const l0 of n2){const d0=l0.halfYears||[];for(const i0 of d0){const Wt=new Date(i0.startDate),F0=new Date(i0.endDate);if(Wt.setHours(0,0,0,0),F0.setHours(0,0,0,0),ce=Wt&&ce<=F0){const ar=F0.getTime()-Wt.getTime(),G0=(ce.getTime()-Wt.getTime())/ar;x2+=G0*It,e0=!0;break}x2+=It}if(e0)break}Oe=x2}else Oe=qe*b.value;const g2=C.value;if(!g2){M<10&&setTimeout(()=>Tt(M+1),60);return}const H2=g2.clientWidth;if(H2===0&&M<10){setTimeout(()=>Tt(M+1),60);return}const Q2=Oe-H2/2+15;typeof g2.scrollTo=="function"?g2.scrollTo({left:Math.max(0,Q2),behavior:"smooth"}):g2.scrollLeft=Math.max(0,Q2),setTimeout(()=>{lt.value=!1,f.value===Ve.HOUR&&(U2.value=!1),setTimeout(()=>{F2.value=!1},300)},1500)},St=Ge(()=>{if(f.value!==Ve.YEAR)return-1;const M=new Date;M.setHours(0,0,0,0);const Z=m2.value;if(!Z||Z.length===0)return-1;let U=0;const ce=180;for(const Te of Z){const Ke=Te.halfYears||[];for(const qe of Ke){const Oe=new Date(qe.startDate),g2=new Date(qe.endDate);if(Oe.setHours(0,0,0,0),g2.setHours(0,0,0,0),M=Oe&&M<=g2){const H2=g2.getTime()-Oe.getTime(),n2=(M.getTime()-Oe.getTime())/H2;return U+n2*ce}U+=ce}}return U}),st=Ge(()=>{if(f.value!==Ve.YEAR)return!1;const M=new Date,Z=new Date(M.getFullYear(),M.getMonth(),M.getDate()),U=F(),ce=U.startDate,Te=U.endDate;return Z>=ce&&Z<=Te}),Qt=()=>{if(B.value.length===0){jt();return}const M=[];for(const Q2 of B.value)Q2.startDate&&M.push(new Date(Q2.startDate));if(M.length===0){jt();return}let Z=1/0;for(const Q2 of M){const n2=Q2.getTime();n2{const M=new Date,Z=g.value.startDate,U=new Date(M.getFullYear(),M.getMonth(),M.getDate()),ce=new Date(Z.getFullYear(),Z.getMonth(),Z.getDate()),Te=U.getTime()-ce.getTime(),Ke=Math.floor(Te/(1e3*60*60*24));if(Ke<0||U>g.value.endDate)return;const qe=Ke*30,Oe=C.value;if(!Oe)return;const g2=Oe.clientWidth,H2=qe-g2/2+15;Oe.scrollTo({left:Math.max(0,H2),behavior:"smooth"}),setTimeout(()=>{const Q2=document.querySelectorAll(".day-column.today");for(const n2 of Q2)n2.classList.add("today-highlight"),setTimeout(()=>{n2.classList.remove("today-highlight")},2e3)},500)},Kt=M=>{const Z=typeof M=="string"?new Date(M):M,U=g.value.startDate,ce=new Date(Z.getFullYear(),Z.getMonth(),Z.getDate());let Te;if(f.value===Ve.YEAR||f.value===Ve.QUARTER){const n2=F();Te=new Date(n2.startDate.getFullYear(),n2.startDate.getMonth(),n2.startDate.getDate())}else if(f.value===Ve.MONTH){const n2=T();Te=new Date(n2.startDate.getFullYear(),n2.startDate.getMonth(),n2.startDate.getDate())}else Te=new Date(U.getFullYear(),U.getMonth(),U.getDate());const Ke=ce.getTime()-Te.getTime(),qe=Math.floor(Ke/(1e3*60*60*24));let Oe;if(f.value===Ve.HOUR){const n2=Z.getHours(),x2=Z.getMinutes(),It=qe*b.value,e0=n2*40,l0=x2/60*40;Oe=It+e0+l0}else if(f.value===Ve.QUARTER){const n2=ce.getFullYear(),x2=Te.getFullYear(),It=240,e0=60;Oe=(n2-x2)*It;const d0=Math.floor(ce.getMonth()/3);Oe+=d0*e0;const i0=d0*3,Wt=new Date(n2,i0,1),F0=Math.floor((ce.getTime()-Wt.getTime())/(1e3*60*60*24));Oe+=F0/91*e0}else if(f.value===Ve.YEAR){const n2=ce.getFullYear(),x2=Te.getFullYear(),It=360;Oe=(n2-x2)*It;const l0=new Date(n2,0,1),d0=Math.floor((ce.getTime()-l0.getTime())/(1e3*60*60*24));Oe+=d0/365*It}else if(f.value===Ve.MONTH){const n2=ce.getFullYear(),x2=ce.getMonth(),It=Te.getFullYear(),e0=Te.getMonth(),l0=60;Oe=((n2-It)*12+(x2-e0))*l0;const i0=ce.getDate(),Wt=new Date(n2,x2+1,0).getDate();Oe+=i0/Wt*l0}else f.value===Ve.WEEK?Oe=qe/7*60:Oe=qe*b.value;const g2=C.value;if(!g2)return;const H2=g2.clientWidth,Q2=Oe-H2/2;g2.scrollTo({left:Math.max(0,Q2),behavior:"smooth"})},Pt=M=>{window.dispatchEvent(new CustomEvent("task-updated",{detail:M}))},z=M=>{ve.value||n("edit-task",M)},Re=(M,Z)=>{ve.value||n("click-task",M,Z)},Pe=N4({}),i2=Ce(0),D2=Ce(null),w2=Ce(null),R2=Ce(0),J2=Ce(0),N2=Ce(0),T2=Ce(0),W2=Ce(0),_2=Ce(0);function dt(){if(D2.value){const M=D2.value.offsetWidth,Z=Rt.value,U=e2.value,ce=qt.value;N2.value=M4;const Te=M4/3;let Ke=Math.max(0,U-Te);if(M<=M4)Ke=0;else{const H2=M-M4;Ke=Math.min(Ke,H2)}W2.value=Ke;const qe=Math.min(Z,yw);T2.value=qe,R2.value=N2.value,J2.value=qe;const Oe=qe/3;let g2=Math.max(0,ce-Oe);if(Z<=qe)g2=0;else{const H2=Z-qe;g2=Math.min(g2,H2)}_2.value=g2}}function Ft(M){if(!D2.value)return;const Z=D2.value.getBoundingClientRect();Pe.value={...Pe.value,[M.id]:{left:M.left-Z.left,top:M.top-Z.top,width:M.width,height:M.height}},setTimeout(()=>{dt()},200)}const p0=M=>{window.dispatchEvent(new CustomEvent("taskbar-drag-end",{detail:M}))},Z2=M=>{window.dispatchEvent(new CustomEvent("taskbar-resize-end",{detail:M}))},Va=M=>{window.dispatchEvent(new CustomEvent("context-menu",{detail:M}))},va=M=>{if(Bt.value){F2.value=!0;const Z=Bt.value.scrollWidth-Bt.value.clientWidth,U=Math.max(0,Math.min(M,Z));Bt.value.scrollTo({left:U,behavior:"smooth"}),setTimeout(()=>{F2.value=!1},1e3)}},Ka=M=>{window.dispatchEvent(new CustomEvent("milestone-drag-end",{detail:M}))};Ca(()=>{Zt(()=>{setTimeout(()=>{Tt()},60)}),window.addEventListener("task-row-double-click",We),window.addEventListener("task-list-hover",y0),window.addEventListener("task-list-vertical-scroll",$t),window.addEventListener("locale-changed",se),window.addEventListener("splitter-drag-start",ta),window.addEventListener("splitter-drag-end",sa),window.addEventListener("timeline-container-resized",Ea),window.addEventListener("milestone-click-locate",P2),window.addEventListener("drag-boundary-check",Gr),window.addEventListener("taskbar-highlighted",Fa),Zt(()=>{const M=document.querySelector(".timeline-body"),Z=document.querySelector(".timeline"),U=document.querySelector(".gantt-panel-right");if(S0.value=M,C.value=Z,E.value=U,M&&(ra.value=M.clientHeight,_0=new ResizeObserver(ce=>{for(const Te of ce)ra.value=Te.contentRect.height}),_0.observe(M)),Z){e2.value=Z.scrollLeft,Ye.value=Z.clientWidth;const ce=new ResizeObserver(Te=>{for(const Ke of Te){const qe=Ke.contentRect.width;Math.abs(qe-Ye.value)>1&&(Ye.value=qe,F2.value=!0,z2&&clearTimeout(z2),z2=setTimeout(()=>{F2.value=!1,z2=null},300))}});ce.observe(Z),_0||(_0=ce)}}),setTimeout(()=>{Tt(),dt()},200),window.addEventListener("resize",dt)});const $t=M=>{const{scrollTop:Z}=M.detail;qt.value=Z,o0(),S0.value&&Math.abs(S0.value.scrollTop-Z)>1&&(S0.value.scrollTop=Z)},R0=M=>{const Z=M.target;if(!Z)return;const U=Z.scrollTop;qt.value=U,fe=!0,o0(),!ga.value&&U>=0&&window.dispatchEvent(new CustomEvent("timeline-vertical-scroll",{detail:{scrollTop:U}}))};Dt(()=>B.value.length,()=>{Zt(()=>{dt()})},{immediate:!0}),Dt(B,M=>{pe.clear();const Z=U=>{pe.set(U.id,U),U.children&&U.children.length>0&&U.children.forEach(Z)};M.forEach(Z)},{immediate:!0});const ga=Ce(!1),Tr=Ce(0),m0=Ce(0),ja=Ce(0),Qa=Ce(0),Bt=Ce(null),S0=Ce(null);let s0=null;const zt=Ce(!1);let C0=null;const Fa=()=>{const M=Z=>{var U;Z.buttons===1&&(ga.value=!0,Tr.value=Z.pageX,ja.value=((U=Bt.value)==null?void 0:U.scrollLeft)||0,Bt.value&&(Bt.value.style.cursor="grabbing",Bt.value.style.userSelect="none"),document.addEventListener("mousemove",da),document.addEventListener("mouseup",$a)),document.removeEventListener("mousemove",M)};document.addEventListener("mousemove",M),setTimeout(()=>{document.removeEventListener("mousemove",M)},5e3)},aa=M=>{var Te,Ke;const Z=M.target,U=Z.closest(".timeline-header"),ce=Z.closest(".timeline-body");if(!(!U&&!ce)){if(ce){const qe=Z.closest(".task-bar");if(qe){const Oe=qe.classList.contains("highlighted"),g2=qe.classList.contains("primary-highlight");if(!Oe&&!g2)return}else if([".milestone","button","input","select","textarea",".custom-task-content",".progress-bar",".task-name",".task-controls"].some(H2=>Z.closest(H2)))return}ga.value=!0,Tr.value=M.pageX,m0.value=M.pageY,ja.value=((Te=Bt.value)==null?void 0:Te.scrollLeft)||0,!S0.value&&Bt.value&&(S0.value=Bt.value.querySelector(".timeline-body")),Qa.value=((Ke=S0.value)==null?void 0:Ke.scrollTop)||0,Bt.value&&(Bt.value.style.cursor="grabbing",Bt.value.style.userSelect="none"),M.preventDefault(),document.addEventListener("mousemove",da),document.addEventListener("mouseup",$a)}},da=M=>{!ga.value||!Bt.value||(M.preventDefault(),s0!==null&&cancelAnimationFrame(s0),s0=requestAnimationFrame(()=>{if(!Bt.value)return;const Z=M.pageX,U=M.pageY,ce=(Z-Tr.value)*1.5,Te=(U-m0.value)*1.5;if(Bt.value.scrollLeft=ja.value-ce,S0.value){const Ke=Qa.value-Te;S0.value.scrollTop=Ke;const qe=document.querySelector(".task-list-body");qe&&(qe.scrollTop=Ke)}s0=null}))},$a=()=>{ga.value=!1,s0!==null&&(cancelAnimationFrame(s0),s0=null),Bt.value&&(Bt.value.style.cursor="grab",Bt.value.style.userSelect="auto"),j.value=null,document.removeEventListener("mousemove",da),document.removeEventListener("mouseup",$a)},Mr=M=>{var qe;const Z=M.target;if(!Z)return;const U=Z.scrollLeft;if(e2.value=U,window.dispatchEvent(new CustomEvent("close-all-taskbar-menus")),fe=!0,Ye.value===0&&(Ye.value=Z.clientWidth),U2.value&&U>0&&(U2.value=!1),o0(),f.value===Ve.HOUR){xe.value=!0,Xe&&clearTimeout(Xe),Xe=setTimeout(()=>{xe.value=!1},200);return}const ce=Z.scrollWidth,Te=Z.clientWidth,Ke=ce-Te;j2.value=Ke>0?U/Ke:0,V2.value=U>20,_t.value=U{var Oe;xe.value=!1,(Oe=Z.classList)==null||Oe.remove("scrolling")},500)},Ga=M=>{if(zt.value||!Bt.value)return;zt.value=!0;const Z=()=>{if(!Bt.value||!zt.value)return;const U=Bt.value.scrollLeft,ce=Bt.value.scrollWidth-Bt.value.clientWidth;let Te;if(M==="left"?Te=Math.max(0,U-d7):Te=Math.min(ce,U+d7),Te===U){mr();return}Bt.value.scrollLeft=Te,window.dispatchEvent(new CustomEvent("timeline-auto-scroll",{detail:{scrollDelta:Te-U}})),C0=window.setTimeout(Z,16)};Z()},mr=()=>{zt.value=!1,C0&&(clearTimeout(C0),C0=null)},Gr=M=>{const{mouseX:Z,isDragging:U}=M.detail;if(!U||!Bt.value){mr();return}const ce=Bt.value.getBoundingClientRect(),Te=Z-ce.left;Te<=s7&&Bt.value.scrollLeft>0?Ga("left"):Te>=ce.width-s7&&Bt.value.scrollLeft{mr(),it(),window.removeEventListener("task-row-double-click",We),window.removeEventListener("task-list-hover",y0),window.removeEventListener("task-list-vertical-scroll",$t),window.removeEventListener("locale-changed",se),window.removeEventListener("splitter-drag-start",ta),window.removeEventListener("splitter-drag-end",sa),window.removeEventListener("timeline-container-resized",Ea),window.removeEventListener("milestone-click-locate",P2),window.removeEventListener("drag-boundary-check",Gr),_0&&(_0.disconnect(),_0=null),window.removeEventListener("resize",dt),document.removeEventListener("mousemove",da),document.removeEventListener("mouseup",$a)});const D1=(M,Z)=>{n("delete",M,Z)},Br=M=>{const Z=B.value.find(Ke=>Ke.id===M.targetTaskId);if(!Z||!Z.predecessor)return;const ce=Vr(Z.predecessor).filter(Ke=>Ke!==M.sourceTaskId),Te={...Z,predecessor:ce.length>0?ce:void 0};n("link-deleted",{sourceTaskId:M.sourceTaskId,targetTaskId:M.targetTaskId,updatedTask:Te}),Pt(Te),h0()},Nr=Ge(()=>{if(f.value!==Ve.MONTH)return{};const M={},Z=m2.value;for(const U of Z){const Te=U.year;M[Te]||(M[Te]=[]),M[Te].push(U)}return M}),K1=Ge(()=>{if(f.value!==Ve.WEEK)return[];const M=[],Z=m2.value;for(let U=0;U{if(f.value!==Ve.WEEK)return[];const M=[],Z=m2.value;for(let U=0;U{if(f.value!==Ve.YEAR)return[];try{const M=Lt();return Array.isArray(M)?M:[]}catch{return[]}});a({scrollToTasks:Qt,scrollToToday:jt,scrollToTodayCenter:Tt,scrollToDate:Kt,timelineConfig:g,updateTimeScale:E2,highlightedTaskId:_,clearHighlight:ne});const l=M=>{n("start-timer",M)},N=M=>{n("stop-timer",M)},de=M=>{const Z=M.startDate||M.endDate||"";return{...M,type:"milestone",startDate:Z,endDate:M.startDate||M.endDate}};Dt(()=>B.value.length,()=>{X(),P0()},{immediate:!0});let Fe=null;const Ee=(M=50)=>{Fe&&clearTimeout(Fe),Fe=setTimeout(()=>{r2(),Fe=null},M)},r2=()=>{let M=null;f.value===Ve.HOUR?M=K():f.value===Ve.DAY?M=y():f.value===Ve.WEEK?M=x():f.value===Ve.MONTH?M=T():(f.value===Ve.QUARTER||f.value===Ve.YEAR)&&(M=F()),M&&(h0(),u2=!0,g.value.startDate=M.startDate,g.value.endDate=M.endDate,u2=!1,m2.value=kt())};Dt(()=>{var M;return(M=B.value)==null?void 0:M.length},(M,Z)=>{M!==Z&&X(),Z===0&&M>0&&Ee(50)}),Dt(Ye,(M,Z)=>{mt.value||(!Z||Z===0||Math.abs(M-Z)>50)&&M>0&&Ee(100)},{immediate:!0});let o2=null;Dt([m2,Ye],()=>{mt.value||(o2&&clearTimeout(o2),o2=setTimeout(()=>{Pe.value={},i2.value++,Zt(()=>{setTimeout(()=>{dt()},200)}),o2=null},100))}),Dt(()=>B.value,M=>{X();const Z=new Set;for(const ce of M)Z.add(ce.id);const U={};for(const ce in Pe.value){const Te=parseInt(ce);Z.has(Te)&&(U[Te]=Pe.value[Te])}Pe.value=U},{deep:!0});const P2=M=>{const{scrollLeft:Z,smooth:U}=M.detail,ce=document.querySelector(".timeline"),Te=document.querySelector(".timeline-body");let Ke=null;if(ce&&ce.scrollWidth>ce.clientWidth?Ke=ce:Te&&Te.scrollWidth>Te.clientWidth&&(Ke=Te),Ke){const qe=Ke.scrollWidth-Ke.clientWidth,Oe=Math.min(Math.max(0,Z),qe);U?Ke.scrollTo({left:Oe,behavior:"smooth"}):Ke.scrollLeft=Oe}},et=()=>{let M,Z;if(f.value===Ve.MONTH){const qe=T();M=qe.startDate,Z=qe.endDate}else M=new Date(g.value.startDate),Z=new Date(g.value.endDate);const U={},ce=new Date(M);for(ce.setDate(1);ce<=Z;){const qe=ce.getFullYear(),Oe=ce.getMonth()+1,H2=new Date(qe,Oe,0).getDate(),Q2=new Date,n2=qe===Q2.getFullYear()&&Oe===Q2.getMonth()+1;U[qe]||(U[qe]={year:qe,yearLabel:`${qe}年`,months:[]}),U[qe].months.push({year:qe,month:Oe,monthLabel:d(Oe),startDate:new Date(qe,Oe-1,1),endDate:new Date(qe,Oe,0),isToday:n2,dayCount:H2}),ce.setMonth(ce.getMonth()+1)}const Te=[];let Ke=0;for(const qe of Object.values(U))for(const Oe of qe.months){const g2=[];for(let x2=1;x2<=Oe.dayCount;x2++){const It=new Date(Oe.year,Oe.month-1,x2);g2.push({day:x2,date:new Date(It),dayOfWeek:It.getDay(),isToday:I2(It),isWeekend:It.getDay()===0||It.getDay()===6})}const H2=60,Q2=Ke,n2=Ke+H2;Te.push({year:Oe.year,month:Oe.month,yearMonthLabel:s(Oe.year,Oe.month),startDate:Oe.startDate,endDate:Oe.endDate,isMonthView:!0,monthData:{monthLabel:Oe.monthLabel,isToday:Oe.isToday,dayCount:Oe.dayCount},subDays:g2,days:g2.map(x2=>({day:x2.day,date:x2.date,label:String(x2.day).padStart(2,"0"),isToday:x2.isToday,isWeekend:x2.isWeekend})),_debugInfo:{monthStartPosition:Q2,monthEndPosition:n2,monthWidth:H2}}),Ke+=H2}return Te},ct=()=>{const M=g.value.startDate,Z=g.value.endDate,U=[],ce=M.getFullYear(),Te=Z.getFullYear();for(let Ke=ce;Ke<=Te;Ke++){const qe=[];for(let Oe=1;Oe<=4;Oe++){const g2=(Oe-1)*3,H2=new Date(Ke,g2,1),Q2=g2+2,n2=new Date(Ke,Q2+1,0);qe.push({quarter:Oe,label:`Q${Oe}`,fullLabel:`${Ke}年第${Oe}季度`,startDate:H2,endDate:n2,isToday:Ct(H2,n2),year:Ke})}U.push({year:Ke,yearLabel:String(Ke),startDate:new Date(Ke,0,1),endDate:new Date(Ke,11,31),quarters:qe})}return U},Ct=(M,Z)=>{const U=new Date;return U.setHours(0,0,0,0),U>=M&&U<=Z},Lt=()=>{const M=g.value.startDate,Z=g.value.endDate,U=[],ce=M.getFullYear(),Te=Z.getFullYear();for(let Ke=ce;Ke<=Te;Ke++){const qe=[{label:o("halfYearFirst"),startDate:new Date(Ke,0,1),endDate:new Date(Ke,6,0),width:180},{label:o("halfYearSecond"),startDate:new Date(Ke,6,1),endDate:new Date(Ke,11,31),width:180}];U.push({year:Ke,startDate:new Date(Ke,0,1),endDate:new Date(Ke,11,31),halfYears:qe,width:360})}return U},v0=M=>{n("add-predecessor",M)},O0=M=>{n("add-successor",M)};return(M,Z)=>(q(),me("div",{ref_key:"timelineContainer",ref:Bt,class:"timeline",onMousedown:aa,onScroll:Mr},[h("div",tw,[f.value===we(Ve).YEAR&&kr.value&&kr.value.length>0?(q(),me(c2,{key:0},[h("div",aw,[(q(!0),me(c2,null,ut(kr.value,U=>(q(),me("div",{key:`year-${U.year}`,class:"timeline-year",style:{width:"360px"}},[h("div",rw,le(U.year),1)]))),128))]),h("div",nw,[(q(!0),me(c2,null,ut(kr.value,U=>(q(),me(c2,{key:`halfyear-${U.year}`},[(q(!0),me(c2,null,ut(U.halfYears||[],ce=>(q(),me("div",{key:`halfyear-${U.year}-${ce.label}`,class:"timeline-half-year-item",style:{width:"180px"}},[h("div",sw,le(ce.label),1)]))),128))],64))),128))])],64)):f.value===we(Ve).MONTH?(q(),me(c2,{key:1},[h("div",dw,[(q(!0),me(c2,null,ut(Nr.value,(U,ce)=>(q(),me("div",{key:`year-${ce}`,class:"timeline-year",style:{width:"720px"}},[h("div",iw,le(ce),1)]))),128))]),h("div",ow,[(q(!0),me(c2,null,ut(m2.value,U=>{var ce,Te;return q(),me("div",{key:`month-${U.year}-${U.month}`,class:B2(["timeline-month-item",{today:(ce=U.monthData)==null?void 0:ce.isToday}]),style:{width:"59px"}},[h("div",pw,le((Te=U.monthData)==null?void 0:Te.monthLabel),1)],2)}),128))])],64)):f.value===we(Ve).QUARTER?(q(),me(c2,{key:2},[h("div",Dw,[(q(!0),me(c2,null,ut(m2.value,U=>(q(),me("div",{key:`year-${U.year}`,class:"timeline-year",style:{width:"240px"}},[h("div",Aw,le(U.yearLabel),1)]))),128))]),h("div",gw,[(q(!0),me(c2,null,ut(m2.value,U=>(q(),me(c2,{key:`quarters-${U.year}`},[(q(!0),me(c2,null,ut(U.quarters,ce=>(q(),me("div",{key:`quarter-${U.year}-${ce.quarter}`,class:B2(["timeline-quarter-item",{today:ce.isToday}]),style:{width:"60px"}},[h("div",Iw,le(ce.label),1)],2))),128))],64))),128))])],64)):f.value===we(Ve).HOUR?(q(),me("div",{key:3,class:"hour-header-container",style:at({width:`${Na.value}px`})},[h("div",mw,[(q(!0),me(c2,null,ut(Ua.value,U=>(q(),me("div",{key:`date-${U.year}-${U.month}-${U.day}`,class:"timeline-day-item",style:at({position:"absolute",width:`${U.hours.length*40}px`,left:`${(U.hourOffset||0)*40}px`})},[h("div",lw,le(U.dateLabel),1)],4))),128))]),h("div",cw,[(q(!0),me(c2,null,ut(Ua.value,U=>(q(),me(c2,{key:`hours-${U.year}-${U.month}-${U.day}`},[(q(!0),me(c2,null,ut(U.hours,(ce,Te)=>(q(),me("div",{key:`hour-${U.year}-${U.month}-${U.day}-${ce.hour}`,class:B2(["timeline-hour-item",{today:ce.isToday,"non-working-hour":!ce.isWorkingHour}]),style:at({position:"absolute",width:"40px",left:`${(U.hourOffset+Te)*40}px`})},[h("div",uw,le(ce.shortLabel),1)],6))),128))],64))),128))])],4)):(q(),me(c2,{key:4},[h("div",fw,[(q(!0),me(c2,null,ut(m2.value,U=>(q(),me("div",{key:`year-month-${U.year}-${U.month}`,class:"timeline-month",style:at({width:U.isWeekView?`${(U.weeks||[]).length*60}px`:`${(U.days||[]).length*30}px`})},[h("div",hw,le(U.yearMonthLabel),1)],4))),128)),(q(!0),me(c2,null,ut(K1.value,(U,ce)=>(q(),me("div",{key:`flag-${ce}`,class:"month-first-flag",style:at({left:`${U.left}px`,transform:"translateX(-50%)"})},[Z[1]||(Z[1]=h("div",{class:"flag-pole"},null,-1)),h("div",Sw,le(U.date),1)],4))),128))]),h("div",Cw,[(q(!0),me(c2,null,ut(m2.value,U=>(q(),me(c2,{key:`timeline-${U.year}-${U.month}`},[U.isWeekView&&U.weeks?(q(),me("div",{key:0,class:"timeline-month-weeks",style:at({width:`${(U.weeks||[]).length*60}px`})},[(q(!0),me(c2,null,ut(U.weeks||[],ce=>(q(),me("div",{key:`week-${U.year}-${U.month}-${ce.label}`,class:B2(["timeline-week",{today:ce.isToday}])},[h("div",vw,le(ce.label),1),Z[2]||(Z[2]=h("div",{class:"week-sub-days"},null,-1))],2))),128))],4)):(q(),me("div",{key:1,class:"timeline-month-days",style:at({width:`${U.days.length*30}px`})},[(q(!0),me(c2,null,ut(U.days,ce=>(q(),me("div",{key:`day-${U.year}-${U.month}-${ce.day}`,class:B2(["timeline-day",{today:ce.isToday,weekend:ce.isWeekend&&!ce.isToday}])},[h("div",Fw,le(ce.label),1)],2))),128))],4))],64))),128))])],64))]),h("div",{class:"timeline-body",onScroll:R0},[h("div",{ref_key:"bodyContentRef",ref:D2,class:"timeline-body-content"},[ht(JF,{tasks:B.value,"task-bar-positions":Pe.value,width:N2.value,height:T2.value,"offset-left":W2.value,"offset-top":_2.value,"highlighted-task-id":_.value,"highlighted-task-ids":Ne.value,"hovered-task-id":j.value,"vertical-lines":Yr.value,"show-vertical-lines":f.value===we(Ve).WEEK},null,8,["tasks","task-bar-positions","width","height","offset-left","offset-top","highlighted-task-id","highlighted-task-ids","hovered-task-id","vertical-lines","show-vertical-lines"]),ht(ew,{ref_key:"linkDragGuideRef",ref:w2,active:!!te.value&&!!Se.value,width:N2.value,height:T2.value,"offset-left":W2.value,"offset-top":_2.value},null,8,["active","width","height","offset-left","offset-top"]),st.value&&St.value>=0?(q(),me("div",{key:0,class:"today-line-year-view",style:at({left:`${St.value}px`,height:`${Rt.value}px`})},null,4)):h2("",!0),h("div",{class:"day-columns",style:at({height:`${Rt.value}px`})},[f.value===we(Ve).HOUR?(q(),me("div",{key:0,class:"hour-columns-container",style:at({width:`${Na.value}px`,height:`${Rt.value}px`,position:"relative"})},[(q(!0),me(c2,null,ut(Ua.value,U=>(q(),me(c2,{key:`day-col-${U.year}-${U.month}-${U.day}`},[(q(!0),me(c2,null,ut(U.hours,(ce,Te)=>(q(),me("div",{key:`hour-col-${U.year}-${U.month}-${U.day}-${ce.hour}`,class:B2(["hour-column",{today:ce.isToday,weekend:ce.isWeekend,"working-hour":ce.isWorkingHour,"rest-hour":!ce.isWorkingHour&&!ce.isWeekend}]),style:at({position:"absolute",width:"40px",height:`${Rt.value}px`,left:`${(U.hourOffset+Te)*40}px`})},Z[3]||(Z[3]=[h("div",{class:"quarter-hour-lines"},[h("div",{class:"quarter-line",style:{left:"10px"}}),h("div",{class:"quarter-line",style:{left:"20px"}}),h("div",{class:"quarter-line",style:{left:"30px"}})],-1)]),6))),128))],64))),128))],4)):h2("",!0),f.value===we(Ve).YEAR?(q(!0),me(c2,{key:1},ut(kr.value,U=>(q(),me(c2,{key:`year-col-${U.year}`},[(q(!0),me(c2,null,ut(U.halfYears||[],ce=>(q(),me("div",{key:`halfyear-col-${U.year}-${ce.label}`,class:"half-year-column",style:at({width:"180px",height:`${Rt.value}px`})},null,4))),128))],64))),128)):h2("",!0),f.value===we(Ve).QUARTER?(q(),me("div",{key:2,class:"quarter-columns-container",style:at({width:`${Na.value}px`,height:`${Rt.value}px`,position:"relative"})},[(q(!0),me(c2,null,ut(m2.value,(U,ce)=>(q(),me(c2,{key:`quarter-col-${U.year}`},[(q(!0),me(c2,null,ut(U.quarters,(Te,Ke)=>(q(),me("div",{key:`quarter-col-${U.year}-${Te.quarter}`,class:B2(["quarter-column",{today:Te.isToday}]),style:at({position:"absolute",width:"60px",height:`${Rt.value}px`,left:`${ce*240+Ke*60}px`})},null,6))),128))],64))),128))],4)):f.value!==we(Ve).HOUR&&f.value!==we(Ve).YEAR&&f.value!==we(Ve).QUARTER?(q(!0),me(c2,{key:3},ut(m2.value,U=>{var ce;return q(),me(c2,{key:`day-col-${U.year}-${U.month}`},[U.isMonthView?(q(),me("div",{key:0,class:B2(["month-column",{today:(ce=U.monthData)==null?void 0:ce.isToday}]),style:at({width:"59px",height:`${Rt.value}px`})},null,6)):U.isWeekView&&U.weeks?(q(),me("div",{key:1,class:"month-week-columns",style:at({width:`${(U.weeks||[]).length*60}px`,height:`${Rt.value}px`})},[(q(!0),me(c2,null,ut(U.weeks||[],Te=>(q(),me("div",{key:`week-col-${U.year}-${U.month}-${Te.label}`,class:B2(["week-column",{today:Te.isToday}]),style:at({height:`${Rt.value}px`,width:"60px"})},[(q(!0),me(c2,null,ut(Te.subDays||[],(Ke,qe)=>(q(),me("div",{key:`subday-col-${qe}`,class:B2(["sub-day-column",{weekend:Ke.dayOfWeek===0||Ke.dayOfWeek===6,today:I2(Ke.date)}]),style:at({height:`${Rt.value}px`,width:`${b.value}px`})},null,6))),128))],6))),128))],4)):(q(),me("div",{key:2,class:"month-day-columns",style:at({width:`${(U.days||[]).length*30}px`,height:`${Rt.value}px`})},[(q(!0),me(c2,null,ut(U.days||[],Te=>(q(),me("div",{key:`day-col-${U.year}-${U.month}-${Te.day}`,class:B2(["day-column",{weekend:Te.isWeekend,today:Te.isToday}]),style:at({height:`${Rt.value}px`})},null,6))),128))],4))],64)}),128)):h2("",!0)],4),h("div",{class:"task-bar-container",style:at({height:`${Rt.value}px`})},[h("div",{class:"task-rows",style:at({height:`${Rt.value}px`})},[(q(!0),me(c2,null,ut(Z0.value,({task:U,originalIndex:ce})=>{var Te,Ke,qe;return q(),me("div",{key:U.id,class:B2(["task-row",{"task-row-hovered":j.value===U.id}]),style:at({top:`${ce*51}px`}),onMouseenter:Oe=>wr(U.id),onMouseleave:Z[0]||(Z[0]=Oe=>wr(null))},[U.type==="milestone-group"&&U.children?(q(!0),me(c2,{key:0},ut(U.children,Oe=>(q(),r0(t7,{key:Oe.id,date:Oe.startDate||"","row-height":50,"day-width":b.value,"start-date":f.value===we(Ve).YEAR||f.value===we(Ve).QUARTER?F().startDate:f.value===we(Ve).MONTH?T().startDate:g.value.startDate,"timeline-start":g.value.startDate,"timeline-end":g.value.endDate,"period-width":b.value,name:Oe.name,milestone:de(Oe),"scroll-left":e2.value,"container-width":Ye.value,"milestone-id":Oe.id,"other-milestones":ea(Oe.id),"timeline-data":m2.value,"current-time-scale":f.value,"allow-drag-and-resize":r.allowDragAndResize&&!ve.value,"is-in-highlight-mode":ve.value,onMilestoneDoubleClick:X2,"onUpdate:milestone":Et,onDragEnd:Ka},null,8,["date","day-width","start-date","timeline-start","timeline-end","period-width","name","milestone","scroll-left","container-width","milestone-id","other-milestones","timeline-data","current-time-scale","allow-drag-and-resize","is-in-highlight-mode"]))),128)):U.type==="milestone"?(q(),r0(t7,{key:U.id,date:U.startDate||"","row-height":50,"day-width":b.value,"start-date":f.value===we(Ve).YEAR||f.value===we(Ve).QUARTER?F().startDate:f.value===we(Ve).MONTH?T().startDate:g.value.startDate,"timeline-start":g.value.startDate,"timeline-end":g.value.endDate,"period-width":b.value,name:U.name,milestone:de(U),"scroll-left":e2.value,"container-width":Ye.value,"milestone-id":U.id,"other-milestones":ea(U.id),"timeline-data":m2.value,"current-time-scale":f.value,"allow-drag-and-resize":r.allowDragAndResize&&!ve.value,"is-in-highlight-mode":ve.value,onMilestoneDoubleClick:X2,"onUpdate:milestone":Et,onDragEnd:Ka},null,8,["date","day-width","start-date","timeline-start","timeline-end","period-width","name","milestone","scroll-left","container-width","milestone-id","other-milestones","timeline-data","current-time-scale","allow-drag-and-resize","is-in-highlight-mode"])):U.type!=="milestone-group"&&U.type!=="milestone"?(q(),r0(_F,{key:`taskbar-${U.id}-${i2.value}`,task:U,"row-index":ce,"row-height":50,"day-width":b.value,"start-date":f.value===we(Ve).YEAR?F().startDate:f.value===we(Ve).MONTH?T().startDate:g.value.startDate,"is-parent":U.isParent,"scroll-left":e2.value,"container-width":Ye.value,"hide-bubbles":F2.value,"timeline-data":f.value===we(Ve).HOUR?Ua.value:m2.value,"current-time-scale":f.value,"task-bar-config":r.taskBarConfig,"allow-drag-and-resize":r.allowDragAndResize&&!ve.value,"is-highlighted":Ne.value.has(U.id),"is-primary-highlight":_.value===U.id,"is-in-highlight-mode":ve.value,"drag-link-mode":te.value,"is-link-drag-source":((Te=Se.value)==null?void 0:Te.id)===U.id,"is-valid-link-target":((Ke=Me.value)==null?void 0:Ke.id)===U.id&&w.value===!0,"is-invalid-link-target":((qe=Me.value)==null?void 0:qe.id)===U.id&&w.value===!1,"all-tasks":B.value,"onUpdate:task":Pt,onBarMounted:Ft,onClick:Oe=>Re(U,Oe),onDblclick:Oe=>z(U),onDragEnd:p0,onResizeEnd:Z2,onScrollToPosition:va,onContextMenu:Va,onStartTimer:l,onStopTimer:N,onAddPredecessor:v0,onAddSuccessor:O0,onDelete:D1,onDeleteLink:Br,onLongPress:oe,onLinkDragStart:Ie,onLinkDragMove:Ze,onLinkDragEnd:Le},Ei({_:2},[M.$slots["custom-task-content"]?{name:"custom-task-content",fn:z0(Oe=>[u1(M.$slots,"custom-task-content",Ln({ref_for:!0},Oe),void 0,!0)]),key:"0"}:void 0,M.$slots["task-bar-context-menu"]?{name:"task-bar-context-menu",fn:z0(Oe=>[u1(M.$slots,"task-bar-context-menu",Ln({ref_for:!0},Oe),void 0,!0)]),key:"1"}:void 0]),1032,["task","row-index","day-width","start-date","is-parent","scroll-left","container-width","hide-bubbles","timeline-data","current-time-scale","task-bar-config","allow-drag-and-resize","is-highlighted","is-primary-highlight","is-in-highlight-mode","drag-link-mode","is-link-drag-source","is-valid-link-target","is-invalid-link-target","all-tasks","onClick","onDblclick"])):h2("",!0)],46,ww)}),128))],4)],4)],512)],32)],544))}}),Qw=J0(Rw,[["__scopeId","data-v-57c6fd2e"]]),bw={class:"gantt-toolbar"},Hw={class:"toolbar-left"},Mw={key:0,class:"gantt-btn-group gantt-add-btn-group"},kw=["title"],xw=["title"],Uw={key:1,class:"gantt-btn-group gantt-expand-collapse-btn-group"},Ew=["title"],Kw=["title"],Lw={key:2,class:"gantt-btn-group"},Ww=["title"],_w=["title"],Pw={class:"toolbar-right"},Ow={key:0,class:"segmented-control time-scale-segmented"},Vw={class:"segmented-track"},jw=["title","onClick"],$w={key:1,class:"language-dropdown"},Gw=["title"],Yw={class:"lang-text"},qw={key:0,class:"language-menu"},zw=["onClick"],Xw={class:"option-text"},Jw={key:0,class:"check-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},Zw=["title"],eT=["title"],tT={key:0,class:"gantt-btn-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},aT={key:1,class:"gantt-btn-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},rT={class:"icon-fallback"},nT=["title"],sT={key:0,class:"gantt-btn-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},dT={key:1,class:"gantt-btn-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},iT={class:"icon-fallback"},oT={key:0,class:"confirm-dialog"},pT={class:"dialog-content"},DT={class:"dialog-message"},AT={class:"dialog-actions"},np="gantt-theme",gT="gantt-locale",IT=x0({__name:"GanttToolbar",props:{config:{default:()=>({})},timeScale:{default:void 0},theme:{default:void 0},fullscreen:{type:Boolean,default:void 0},expandAll:{type:Boolean,default:void 0},onAddTask:{type:Function,default:void 0},onAddMilestone:{type:Function,default:void 0},onTodayLocate:{type:Function,default:void 0},onExportCsv:{type:Function,default:void 0},onExportPdf:{type:Function,default:void 0},onLanguageChange:{type:Function,default:void 0},onThemeChange:{type:Function,default:void 0},onFullscreenChange:{type:Function,default:void 0},onTimeScaleChange:{type:Function,default:void 0},onExpandAll:{type:Function,default:void 0},onCollapseAll:{type:Function,default:void 0},onSettingsConfirm:{type:Function,default:void 0}},emits:["add-task","add-milestone","today-locate","export-csv","export-pdf","language-change","theme-change","fullscreen-change","time-scale-change","expand-all","collapse-all"],setup(e,{emit:a}){const t=e,r=a,n={zh:"zh-CN",en:"en-US"},s=()=>{if(typeof window<"u"){const Ie=localStorage.getItem(np);return Ie!==null?Ie==="dark":window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}return!1},{locale:d,setLocale:i,getTranslation:o}=Fr(),D=Ce("zh"),A=Ce(s()),m=Ce(!1),c=Ce(!1),g=Ce(Ve.DAY);Dt(()=>t.timeScale,Ie=>{Ie&&Ie!==g.value&&(g.value=Ie)},{immediate:!0}),Dt(()=>t.theme,Ie=>{if(Ie){const ae=Ie==="dark";A.value!==ae&&(A.value=ae,document.documentElement.setAttribute("data-theme",Ie))}},{immediate:!0}),Dt(()=>t.fullscreen,Ie=>{Ie!==void 0&&m.value!==Ie&&(m.value=Ie)},{immediate:!0});const f=Ie=>o(Ie),v=Ge(()=>f("language")),B=Ce(!1),C=Ce(null),E=Ce(null),b=()=>{t.onAddTask&&typeof t.onAddTask=="function"?t.onAddTask():r("add-task")},H=()=>{t.onAddMilestone&&typeof t.onAddMilestone=="function"?t.onAddMilestone():r("add-milestone")},X=()=>{t.onTodayLocate&&typeof t.onTodayLocate=="function"?t.onTodayLocate():r("today-locate")},re=()=>{t.onExportCsv&&typeof t.onExportCsv=="function"?t.onExportCsv():r("export-csv")},J=()=>{t.onExportPdf&&typeof t.onExportPdf=="function"?t.onExportPdf():r("export-pdf")},K=()=>{t.onExpandAll&&typeof t.onExpandAll=="function"?t.onExpandAll():r("expand-all")},y=()=>{t.onCollapseAll&&typeof t.onCollapseAll=="function"?t.onCollapseAll():r("collapse-all")},x=()=>{c.value=!c.value},T=Ie=>{D.value=Ie,c.value=!1;const ae=n[D.value];i(ae),t.onLanguageChange&&typeof t.onLanguageChange=="function"?t.onLanguageChange(ae):r("language-change",ae),E.value=ae,C.value="language",B.value=!0},F=async()=>{if(!C.value||E.value===null){ve();return}if(t.onSettingsConfirm&&typeof t.onSettingsConfirm=="function")try{if(!await t.onSettingsConfirm(C.value,E.value)){ve();return}}catch{ve();return}C.value==="theme"?j():C.value==="language"&&_(),ve()},j=()=>{typeof window<"u"&&typeof E.value=="boolean"&&localStorage.setItem(np,E.value?"dark":"light")},_=()=>{typeof window<"u"&&typeof E.value=="string"&&localStorage.setItem(gT,E.value)},Ne=()=>{ve()},ve=()=>{B.value=!1,C.value=null,E.value=null},ne=()=>{const Ie=!A.value;A.value=Ie,document.documentElement.setAttribute("data-theme",Ie?"dark":"light"),t.onThemeChange&&typeof t.onThemeChange=="function"?t.onThemeChange(Ie):r("theme-change",Ie),E.value=Ie,C.value="theme",B.value=!0},oe=()=>{m.value=!m.value,window.dispatchEvent(new CustomEvent("fullscreen-toggle",{detail:m.value})),t.onFullscreenChange&&typeof t.onFullscreenChange=="function"?t.onFullscreenChange(m.value):r("fullscreen-change",m.value)},te={hour:{value:Ve.HOUR,label:()=>f("timeScaleHour")},day:{value:Ve.DAY,label:()=>f("timeScaleDay")},week:{value:Ve.WEEK,label:()=>f("timeScaleWeek")},month:{value:Ve.MONTH,label:()=>f("timeScaleMonth")},quarter:{value:Ve.QUARTER,label:()=>f("timeScaleQuarter")},year:{value:Ve.YEAR,label:()=>f("timeScaleYear")}},Se=["hour","day","week","month","year"],Me=Ge(()=>{var ke;const ae=(((ke=t.config)==null?void 0:ke.timeScaleDimensions)??Se).filter(ze=>ze in te);return ae.length>0?ae:[...Se]}),w=Ge(()=>{var ke;const Ie=Me.value,ae=(ke=t.config)==null?void 0:ke.defaultTimeScale;return ae&&Ie.includes(ae)?ae:Ie.includes("day")?"day":Ie[0]??"day"}),P=Ie=>{g.value=Ie,t.onTimeScaleChange&&typeof t.onTimeScaleChange=="function"?t.onTimeScaleChange(Ie):r("time-scale-change",Ie)};let G=!1;Dt(()=>w.value,Ie=>{const ae=te[Ie].value;(g.value!==ae||!G)&&(G=!0,P(ae))},{immediate:!0});const ee=Ge(()=>Me.value.find(ae=>te[ae].value===g.value)??w.value),ue=()=>{const Ie=Me.value.findIndex(W=>W===ee.value),ae=Me.value.length;if(ae===0||Ie<0)return{transform:"translateX(0%)",width:`${100/ae||25}%`};const ke=100/ae;return{transform:`translateX(${Ie*100}%)`,width:`${ke}%`}},pe=Ie=>{!Ie.target.closest(".language-dropdown")&&c.value&&(c.value=!1)};return Ca(()=>{const Ie=d.value;D.value=Ie==="zh-CN"?"zh":"en",document.documentElement.setAttribute("data-theme",A.value?"dark":"light"),document.addEventListener("click",pe),window.matchMedia&&typeof window<"u"&&!localStorage.getItem(np)&&window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",ae=>{A.value=ae.matches,document.documentElement.setAttribute("data-theme",ae.matches?"dark":"light")})}),Da(()=>{document.removeEventListener("click",pe)}),(Ie,ae)=>(q(),me("div",bw,[h("div",Hw,[Ie.config.showAddTask!==!1||Ie.config.showAddMilestone!==!1?(q(),me("div",Mw,[Ie.config.showAddTask!==!1?(q(),me("button",{key:0,class:"gantt-btn-group-item",title:f("addTask"),onClick:b},[ae[0]||(ae[0]=h("svg",{class:"gantt-btn-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[h("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),h("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)),Ut(" "+le(f("addTask")),1)],8,kw)):h2("",!0),Ie.config.showAddMilestone!==!1?(q(),me("button",{key:1,class:"gantt-btn-group-item",title:f("addMilestone"),onClick:H},[ae[1]||(ae[1]=H1('',1)),Ut(" "+le(f("addMilestone")),1)],8,xw)):h2("",!0)])):h2("",!0),Ie.config.showExpandCollapse!==!1?(q(),me("div",Uw,[h("button",{class:"gantt-btn-group-item",title:f("expandAll"),onClick:K},[ae[2]||(ae[2]=h("svg",{class:"gantt-btn-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[h("polyline",{points:"6 9 12 15 18 9"})],-1)),Ut(" "+le(f("expandAll")),1)],8,Ew),h("button",{class:"gantt-btn-group-item",title:f("collapseAll"),onClick:y},[ae[3]||(ae[3]=h("svg",{class:"gantt-btn-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[h("polyline",{points:"18 15 12 9 6 15"})],-1)),Ut(" "+le(f("collapseAll")),1)],8,Kw)])):h2("",!0),Ie.config.showExportCsv!==!1||Ie.config.showExportPdf!==!1?(q(),me("div",Lw,[Ie.config.showExportCsv!==!1?(q(),me("button",{key:0,class:"gantt-btn-group-item",title:f("exportCsv"),onClick:re},[ae[4]||(ae[4]=H1('',1)),Ut(" "+le(f("exportCsv")),1)],8,Ww)):h2("",!0),Ie.config.showExportPdf!==!1?(q(),me("button",{key:1,class:"gantt-btn-group-item",title:f("exportPdf"),onClick:J},[ae[5]||(ae[5]=H1('',1)),Ut(" "+le(f("exportPdf")),1)],8,_w)):h2("",!0)])):h2("",!0)]),h("div",Pw,[Ie.config.showTimeScale!==!1?(q(),me("div",Ow,[h("div",Vw,[h("div",{class:"segmented-thumb",style:at(ue())},null,4)]),(q(!0),me(c2,null,ut(Me.value,ke=>(q(),me("button",{key:ke,class:B2(["segmented-item",{active:ee.value===ke}]),title:f("timeScaleTooltip"),onClick:ze=>P(te[ke].value)},le(te[ke].label()),11,jw))),128))])):h2("",!0),Ie.config.showLanguage!==!1?(q(),me("div",$w,[h("button",{class:"toolbar-lang-btn",title:f("languageTooltip"),onClick:x},[ae[6]||(ae[6]=h("svg",{class:"gantt-btn-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[h("circle",{cx:"12",cy:"12",r:"10"}),h("line",{x1:"2",y1:"12",x2:"22",y2:"12"}),h("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"})],-1)),h("span",Yw,le(v.value),1),ae[7]||(ae[7]=h("svg",{class:"dropdown-arrow",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[h("polyline",{points:"6,9 12,15 18,9"})],-1))],8,Gw),c.value?(q(),me("div",qw,[(q(),me(c2,null,ut(["zh","en"],ke=>h("div",{key:ke,class:B2(["language-option",{active:D.value===ke}]),onClick:ze=>T(ke)},[h("span",Xw,le(ke==="zh"?"中文":"English"),1),D.value===ke?(q(),me("svg",Jw,ae[8]||(ae[8]=[h("polyline",{points:"20,6 9,17 4,12"},null,-1)]))):h2("",!0)],10,zw)),64))])):h2("",!0)])):h2("",!0),Ie.config.showTodayLocate!==!1?(q(),me("button",{key:2,class:"toolbar-icon-btn today-locate-btn",title:f("todayLocateTooltip"),onClick:X},ae[9]||(ae[9]=[H1('',1)]),8,Zw)):h2("",!0),Ie.config.showTheme!==!1?(q(),me("button",{key:3,class:"toolbar-icon-btn",title:f(A.value?"lightMode":"darkMode"),onClick:ne},[A.value?(q(),me("svg",tT,ae[10]||(ae[10]=[H1('',9)]))):(q(),me("svg",aT,ae[11]||(ae[11]=[h("path",{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"},null,-1)]))),h("span",rT,le(A.value?"☀️":"🌙"),1)],8,eT)):h2("",!0),Ie.config.showFullscreen!==!1?(q(),me("button",{key:4,class:"toolbar-icon-btn",title:f(m.value?"exitFullscreen":"fullscreen"),onClick:oe},[m.value?(q(),me("svg",sT,ae[12]||(ae[12]=[h("path",{d:"M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3"},null,-1)]))):(q(),me("svg",dT,ae[13]||(ae[13]=[h("path",{d:"M8 3H5a2 2 0 00-2 2v3m18 0V5a2 2 0 00-2-2h-3m0 18h3a2 2 0 002-2v-3M3 16v3a2 2 0 002 2h3"},null,-1)]))),h("span",iT,le(m.value?"⇲":"⇱"),1)],8,nT)):h2("",!0)]),B.value?(q(),me("div",oT,[h("div",pT,[h("p",DT,le(f("confirmDialogMessage")),1),h("div",AT,[h("button",{class:"gantt-btn gantt-btn-default",onClick:Ne},le(f("cancel")),1),h("button",{class:"gantt-btn gantt-btn-primary",onClick:F},le(f("confirm")),1)])])])):h2("",!0)]))}}),mT=J0(IT,[["__scopeId","data-v-8df0c217"]]),lT={class:"multi-select-predecessor"},cT={class:"form-label",for:"predecessor-select"},uT={class:"predecessor-selector"},fT={key:0,class:"selected-tags"},hT=["onClick"],ST={class:"select-wrapper"},CT={value:""},vT=["value"],FT=x0({__name:"MultiSelectPredecessor",props:{modelValue:{default:()=>[]},tasks:{},currentTaskId:{default:void 0},label:{default:"前置任务"},placeholder:{default:"请选择前置任务"}},emits:["update:modelValue"],setup(e,{emit:a}){const t=e,r=a,n=Ce(""),s=Ge(()=>t.modelValue||[]),d=Ge(()=>s.value.map(A=>t.tasks.find(m=>m.id===A)).filter(A=>A)),i=Ge(()=>t.tasks.filter(A=>A.type==="task"&&A.id!==t.currentTaskId&&!s.value.includes(A.id))),o=()=>{if(n.value){const A=Number(n.value);if(!s.value.includes(A)){const m=[...s.value,A];r("update:modelValue",m)}n.value=""}},D=A=>{const m=s.value.filter(c=>c!==A);r("update:modelValue",m)};return Dt(()=>t.modelValue,()=>{n.value=""},{immediate:!0}),(A,m)=>(q(),me("div",lT,[h("label",cT,le(A.label),1),h("div",uT,[d.value.length>0?(q(),me("div",fT,[(q(!0),me(c2,null,ut(d.value,c=>(q(),me("span",{key:c.id,class:"predecessor-tag"},[Ut(le(c.name)+" ("+le(c.id)+") ",1),h("button",{type:"button",class:"remove-tag-btn",onClick:g=>D(c.id)}," × ",8,hT)]))),128))])):h2("",!0),h("div",ST,[Mt(h("select",{id:"predecessor-select","onUpdate:modelValue":m[0]||(m[0]=c=>n.value=c),class:"form-select",onChange:o},[h("option",CT,le(A.placeholder),1),(q(!0),me(c2,null,ut(i.value,c=>(q(),me("option",{key:c.id,value:c.id},le(c.name)+" (ID: "+le(c.id)+") ",9,vT))),128))],544),[[ui,n.value]])])])]))}}),wT=J0(FT,[["__scopeId","data-v-3a17beda"]]),TT={class:"drawer-header",style:{display:"flex","align-items":"center","justify-content":"flex-start",gap:"8px"}},BT={class:"drawer-title",style:{margin:"0"}},NT={key:0,class:"drawer-timer",style:{display:"flex","align-items":"center",gap:"6px","margin-left":"8px"}},yT={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",style:{display:"block",margin:"0 auto"}},RT={key:0,class:"timer-dot",style:{background:"#67c23a",width:"7px",height:"7px","border-radius":"50%","margin-right":"5px",animation:"pulse 1s infinite"}},QT={class:"close-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",style:{"vertical-align":"middle"}},bT={class:"drawer-body"},HT={class:"form-group"},MT={class:"form-label",for:"task-name"},kT=["placeholder"],xT={key:0,class:"error-text"},UT={class:"form-group"},ET={class:"form-label",for:"task-type"},KT={value:"story"},LT={value:"task"},WT={value:"bug"},_T={key:0,class:"error-text"},PT={class:"form-group"},OT={class:"form-label",for:"task-assignee"},VT={value:""},jT=["value"],$T={class:"form-group"},GT={class:"form-label",for:"task-parent"},YT={value:void 0},qT=["value"],zT={class:"form-row"},XT={class:"form-group"},JT={class:"form-label",for:"task-start-date"},ZT={key:0,class:"error-text"},eB={class:"form-group"},tB={class:"form-label",for:"task-end-date"},aB={key:0,class:"error-text"},rB={class:"form-row"},nB={class:"form-group"},sB={class:"form-label",for:"task-estimated-hours"},dB={class:"form-group"},iB={class:"form-label",for:"task-actual-hours"},oB={class:"form-group"},pB={class:"form-label",for:"task-progress"},DB={class:"progress-container"},AB={class:"progress-input-group"},gB={class:"form-group"},IB={class:"form-label",for:"task-description"},mB=["placeholder"],lB={class:"drawer-footer"},cB={class:"footer-left"},uB=["disabled"],fB={key:0,class:"loading-spinner"},hB={class:"footer-right"},SB=["disabled"],CB={key:0,class:"loading-spinner"},vB=x0({__name:"TaskDrawer",props:{visible:{type:Boolean,default:!1},task:{default:null},isEdit:{type:Boolean,default:!1},onDelete:{type:Function,default:void 0},assigneeOptions:{default:()=>[{value:"zhangsan",label:"张三"},{value:"lisi",label:"李四"},{value:"wangwu",label:"王五"},{value:"zhaoliu",label:"赵六"},{value:"qianqi",label:"钱七"}]}},emits:["update:visible","submit","close","delete","start-timer","stop-timer"],setup(e,{emit:a}){const t=e,r=a,{t:n}=Fr(),{showMessage:s}=p6(),d=Ce(!1),i=Ce(t.visible),o=Ce(!1),D=Ce(0),A=Ce(null),m=Ge(()=>{var O;return(O=t.task)==null?void 0:O.isTimerRunning}),c=Ge(()=>{var O;return(O=t.task)==null?void 0:O.timerStartTime}),g=Ge(()=>{var O;return((O=t.task)==null?void 0:O.timerElapsedTime)||0}),f=Ge(()=>{const O=Math.floor(D.value/1e3),ie=Math.floor(O/3600),fe=Math.floor(O%3600/60),He=O%60;return`${String(ie).padStart(2,"0")}:${String(fe).padStart(2,"0")}:${String(He).padStart(2,"0")}`}),v=()=>{m.value&&c.value?D.value=Date.now()-c.value+g.value:D.value=g.value};Dt(()=>{var O,ie,fe;return[(O=t.task)==null?void 0:O.isTimerRunning,(ie=t.task)==null?void 0:ie.timerStartTime,(fe=t.task)==null?void 0:fe.timerElapsedTime]},()=>{v()});const B=Ce(!1);Dt(()=>{var O;return(O=t.task)==null?void 0:O.isTimerRunning},O=>{B.value=!!O,!O&&A.value&&(clearInterval(A.value),A.value=null)},{immediate:!0}),Dt([B,c,g],()=>{A.value&&(clearInterval(A.value),A.value=null),B.value&&c.value?(v(),A.value=window.setInterval(v,1e3)):v()},{immediate:!0}),Da(()=>{A.value&&clearInterval(A.value)});const C=Ge(()=>{var O;return((O=t.task)==null?void 0:O.type)==="story"?"yes-no-cancel":"confirm-cancel"}),E=Ge(()=>{var O,ie,fe;return((O=t.task)==null?void 0:O.type)==="story"?n.value.confirmDeleteStory.replace("{name}",((ie=t.task)==null?void 0:ie.name)||""):n.value.confirmDeleteTask.replace("{name}",((fe=t.task)==null?void 0:fe.name)||"")}),b=gs({id:0,name:"",type:"task",assignee:"",startDate:"",endDate:"",predecessor:[],estimatedHours:0,actualHours:0,progress:0,description:"",parentId:void 0,isTimerRunning:!1,timerStartTime:void 0,timerEndTime:void 0,timerElapsedTime:0,children:void 0}),H=Ce([]),X=Ge(()=>H.value.filter(O=>{var ie;return O.id!==((ie=t.task)==null?void 0:ie.id)&&(O.type==="story"||O.type==="task")}).map(O=>({...O,displayName:`${O.name} (${re(O.type||"task")})`}))),re=O=>{var ie;return((ie=n.value.taskTypeMap)==null?void 0:ie[O])||O},J=Ge(()=>({"--progress-percent":`${b.progress||0}%`})),K=Ce("0"),y=O=>{const ie=O.target;let fe=ie.value;fe=fe.replace(/[^\d]/g,""),ie.value=fe,K.value=fe},x=()=>{const O=K.value;let ie=parseInt(O)||0;ie<0||isNaN(ie)?ie=0:ie>100&&(ie=100),b.progress=ie,K.value=ie.toString()},T=O=>{const ie=O.target;let fe=parseFloat(ie.value);isNaN(fe)||fe<0?fe=0:fe>99999&&(fe=99999),b.estimatedHours=Math.round(fe*100)/100},F=O=>{const ie=O.target;let fe=parseFloat(ie.value);isNaN(fe)||fe<0?fe=0:fe>99999&&(fe=99999),b.actualHours=Math.round(fe*100)/100},j=O=>{const ie=O.target;setTimeout(()=>{ie.select()},0)},_=O=>{const ie=O.key,fe=["Backspace","Delete","Tab","Escape","Enter","ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Home","End","Control","Meta","Alt","Shift"],He=/^\d$/.test(ie),be=fe.includes(ie);O.ctrlKey||O.metaKey||!He&&!be&&O.preventDefault()},Ne=(O,ie)=>{if(!O)return"";if(typeof O=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(O.trim())){if(ie==="start")return`${O} 00:00`;if(ie==="end"){const fe=new Date(O);fe.setDate(fe.getDate()+1);const He=fe.getFullYear(),be=String(fe.getMonth()+1).padStart(2,"0"),Ze=String(fe.getDate()).padStart(2,"0");return`${He}-${be}-${Ze} 00:00`}}return O},ve=gs({name:"",type:"",startDate:"",endDate:""});Dt(()=>t.visible,O=>{if(i.value=O,O){if(t.task&&t.isEdit){ne();const ie={...t.task};ie.startDate=Ne(ie.startDate,"start"),ie.endDate=Ne(ie.endDate,"end"),Zt(()=>{Object.assign(b,ie)})}else t.task&&!t.isEdit?(ne(),b.parentId=t.task.parentId??void 0,b.predecessor=t.task.predecessor??[]):ne();window.dispatchEvent(new CustomEvent("request-task-list"))}}),Dt(i,O=>{r("update:visible",O)}),Dt(()=>t.task,O=>{O&&!t.isEdit&&(b.parentId=O.parentId??void 0)},{immediate:!0});const ne=()=>{Object.assign(b,{name:"",type:"task",assignee:"",startDate:"",endDate:"",predecessor:[],estimatedHours:0,actualHours:0,progress:0,description:"",parentId:void 0,isTimerRunning:!1,timerStartTime:void 0,timerEndTime:void 0,timerElapsedTime:0,children:void 0}),Object.keys(ve).forEach(O=>{ve[O]=""})},oe=()=>{var ie;let O=!0;return Object.keys(ve).forEach(fe=>{ve[fe]=""}),(ie=b.name)!=null&&ie.trim()?b.name.length>50&&(ve.name=n.value.taskNameTooLong,O=!1):(ve.name=n.value.taskNameRequired,O=!1),b.type||(ve.type=n.value.taskTypeRequired,O=!1),b.startDate||(ve.startDate=n.value.startDateRequired,O=!1),b.endDate?b.startDate&&new Date(b.endDate){i.value=!1,r("close")},Se=()=>{te()},Me=async()=>{if(oe())try{d.value=!0;const O={...b,id:t.isEdit&&t.task?t.task.id:Date.now()};r("submit",O),te()}catch{}finally{d.value=!1}},w=()=>{o.value=!0},P=O=>{let ie="";O&&typeof O=="object"&&"message"in O&&typeof O.message=="string"?ie=O.message:ie=String(O),s(ie,"error",{closable:!0})},G=()=>{if(o.value=!1,t.task&&t.isEdit)try{d.value=!0,r("delete",t.task),te()}catch(O){P(O)}finally{d.value=!1}},ee=()=>{o.value=!1},ue=()=>{if(o.value=!1,t.task&&t.isEdit)try{d.value=!0,r("delete",t.task,!0),te()}catch(O){P(O)}finally{d.value=!1}},pe=()=>{if(o.value=!1,t.task&&t.isEdit)try{d.value=!0,r("delete",t.task,!1),te()}catch(O){P(O)}finally{d.value=!1}},Ie=O=>{H.value=O.detail||[]};Ca(()=>{window.addEventListener("task-list-updated",Ie),window.dispatchEvent(new CustomEvent("request-task-list"))}),Da(()=>{window.removeEventListener("task-list-updated",Ie)}),Dt(()=>b.progress,O=>{K.value=(O||0).toString()},{immediate:!0}),Dt(()=>t.visible,O=>{O&&t.task&&t.task.type!=="story"&&(D.value=t.task.timerElapsedTime||0,t.task.isTimerRunning||A.value&&(clearInterval(A.value),A.value=null))},{immediate:!0});const ae=O=>{const ie=Date.now();t.task&&typeof t.task=="object"&&(Object.assign(t.task,{timerStartTime:ie,isTimerRunning:!0,timerElapsedTime:0,timerStartDesc:O||""}),r("start-timer",t.task)),D.value=0,B.value=!0,v(),A.value&&(clearInterval(A.value),A.value=null),window.dispatchEvent(new CustomEvent("start-timer",{detail:t.task}))},ke=()=>{t.task&&typeof t.task=="object"&&r("stop-timer",t.task),B.value=!1,A.value&&(clearInterval(A.value),A.value=null),v(),window.dispatchEvent(new CustomEvent("stop-timer",{detail:t.task}))},ze=Ce(!1),W=Ce("");function $(){var O;W.value=((O=t.task)==null?void 0:O.name)||"",ze.value=!0}function Be(){ze.value=!1}function R(O){ze.value=!1,ae(O)}const ye=O=>{var He;const ie=O.target.value,fe=(He=t.assigneeOptions)==null?void 0:He.find(be=>be.value===ie);fe&&(b.assigneeName=fe.label)};return(O,ie)=>{var fe,He,be,Ze;return q(),me(c2,null,[i.value?(q(),me("div",{key:0,class:"drawer-overlay",onClick:Se},[h("div",{class:"drawer-container",onClick:ie[12]||(ie[12]=Jt(()=>{},["stop"]))},[h("div",TT,[h("h3",BT,le(O.isEdit?we(n).editTask:we(n).newTask),1),((fe=t.task)==null?void 0:fe.type)!=="story"&&O.isEdit?(q(),me("div",NT,[B.value?(q(),me("button",{key:1,class:"timer-btn stop minimal",title:"停止计时",style:{width:"24px",height:"24px",background:"#f44336",border:"none",padding:"0",margin:"0","box-shadow":"none",cursor:"pointer","border-radius":"50%",display:"flex","align-items":"center","justify-content":"center",transition:"background 0.2s"},onClick:Jt(ke,["stop"])},ie[14]||(ie[14]=[h("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none"},[h("circle",{cx:"12",cy:"12",r:"11",stroke:"#f44336","stroke-width":"2",fill:"#f44336"}),h("rect",{x:"7",y:"7",width:"10",height:"10",fill:"#fff",rx:"1.5"})],-1)]))):(q(),me("button",{key:0,class:"timer-btn start minimal",title:"开始计时",style:{width:"24px",height:"24px",background:"#4caf50",border:"none",padding:"0",margin:"0","box-shadow":"none",cursor:"pointer","border-radius":"50%",display:"flex","align-items":"center","justify-content":"center",transition:"background 0.2s"},onClick:Jt($,["stop"])},[(q(),me("svg",yT,ie[13]||(ie[13]=[h("circle",{cx:"12",cy:"12",r:"11",stroke:"#4caf50","stroke-width":"2",fill:"#4caf50"},null,-1),h("polygon",{points:"9,7 18,12 9,17",fill:"#fff"},null,-1)])))])),B.value?(q(),me("span",{key:2,class:B2(["timer-badge",{"timer-active":B.value}]),style:{"margin-left":"8px","font-size":"13px","font-weight":"700",padding:"2px 10px","border-radius":"10px",background:"#fffbe6",color:"#e6a23c","box-shadow":"0 0 0 1px #ffe58f",display:"inline-flex","align-items":"center","min-width":"80px","justify-content":"center"}},[B.value?(q(),me("span",RT)):h2("",!0),Ut(" "+le(f.value),1)],2)):h2("",!0)])):h2("",!0),ie[16]||(ie[16]=h("div",{style:{flex:"1"}},null,-1)),h("button",{class:"drawer-close-btn",type:"button",onClick:te},[(q(),me("svg",QT,ie[15]||(ie[15]=[h("line",{x1:"18",y1:"6",x2:"6",y2:"18"},null,-1),h("line",{x1:"6",y1:"6",x2:"18",y2:"18"},null,-1)])))])]),h("div",bT,[h("form",{class:"task-form",onSubmit:Jt(Me,["prevent"])},[h("div",HT,[h("label",MT,[Ut(le(we(n).taskName)+" ",1),ie[17]||(ie[17]=h("span",{class:"required"},"*",-1))]),Mt(h("input",{id:"task-name","onUpdate:modelValue":ie[0]||(ie[0]=Le=>b.name=Le),type:"text",class:B2(["form-input",{error:ve.name}]),placeholder:we(n).taskNamePlaceholder},null,10,kT),[[wa,b.name]]),ve.name?(q(),me("span",xT,le(ve.name),1)):h2("",!0)]),h("div",UT,[h("label",ET,[Ut(le(we(n).taskType)+" ",1),ie[18]||(ie[18]=h("span",{class:"required"},"*",-1))]),Mt(h("select",{id:"task-type","onUpdate:modelValue":ie[1]||(ie[1]=Le=>b.type=Le),class:B2(["form-select",{error:ve.type}])},[h("option",KT,le(we(n).taskTypeMap.story),1),h("option",LT,le(we(n).taskTypeMap.task),1),h("option",WT,le(we(n).taskTypeMap.bug),1)],2),[[ui,b.type]]),ve.type?(q(),me("span",_T,le(ve.type),1)):h2("",!0)]),h("div",PT,[h("label",OT,le(we(n).assignee),1),Mt(h("select",{id:"task-assignee","onUpdate:modelValue":ie[2]||(ie[2]=Le=>b.assignee=Le),class:"form-select",onChange:ye},[h("option",VT,le(we(n).selectAssignee),1),(q(!0),me(c2,null,ut(t.assigneeOptions,Le=>(q(),me("option",{key:Le.key??Le.value,value:Le.value},le(Le.label),9,jT))),128))],544),[[ui,b.assignee]])]),h("div",$T,[h("label",GT,le(we(n).parentTask),1),Mt(h("select",{id:"task-parent","onUpdate:modelValue":ie[3]||(ie[3]=Le=>b.parentId=Le),class:"form-select"},[h("option",YT,le(we(n).noParentTask),1),(q(!0),me(c2,null,ut(X.value,Le=>(q(),me("option",{key:Le.id,value:Le.id},le(Le.displayName),9,qT))),128))],512),[[ui,b.parentId]])]),h("div",zT,[h("div",XT,[h("label",JT,[Ut(le(we(n).startDate)+" ",1),ie[19]||(ie[19]=h("span",{class:"required"},"*",-1))]),ht(i5,{id:"task-start-date",modelValue:b.startDate,"onUpdate:modelValue":ie[4]||(ie[4]=Le=>b.startDate=Le),type:"datetime","value-format":"YYYY-MM-DD HH:mm",placeholder:we(n).startDateRequired,class:B2({error:ve.startDate})},null,8,["modelValue","placeholder","class"]),ve.startDate?(q(),me("span",ZT,le(ve.startDate),1)):h2("",!0)]),h("div",eB,[h("label",tB,[Ut(le(we(n).endDate)+" ",1),ie[20]||(ie[20]=h("span",{class:"required"},"*",-1))]),ht(i5,{id:"task-end-date",modelValue:b.endDate,"onUpdate:modelValue":ie[5]||(ie[5]=Le=>b.endDate=Le),type:"datetime","value-format":"YYYY-MM-DD HH:mm",placeholder:we(n).endDateRequired,class:B2({error:ve.endDate})},null,8,["modelValue","placeholder","class"]),ve.endDate?(q(),me("span",aB,le(ve.endDate),1)):h2("",!0)])]),ht(wT,{modelValue:b.predecessor,"onUpdate:modelValue":ie[6]||(ie[6]=Le=>b.predecessor=Le),tasks:H.value,"current-task-id":(He=t.task)==null?void 0:He.id,label:we(n).predecessor,placeholder:we(n).predecessorPlaceholder},null,8,["modelValue","tasks","current-task-id","label","placeholder"]),h("div",rB,[h("div",nB,[h("label",sB,le(we(n).estimatedHours),1),Mt(h("input",{id:"task-estimated-hours","onUpdate:modelValue":ie[7]||(ie[7]=Le=>b.estimatedHours=Le),type:"number",class:"form-input",placeholder:"0.00",min:"0",max:"99999",step:"0.01",onInput:T},null,544),[[wa,b.estimatedHours]])]),h("div",dB,[h("label",iB,le(we(n).actualHours),1),Mt(h("input",{id:"task-actual-hours","onUpdate:modelValue":ie[8]||(ie[8]=Le=>b.actualHours=Le),type:"number",class:"form-input",placeholder:"0.00",min:"0",max:"99999",step:"0.01",onInput:F},null,544),[[wa,b.actualHours]])])]),h("div",oB,[h("label",pB,le(we(n).progress),1),h("div",DB,[Mt(h("input",{id:"task-progress","onUpdate:modelValue":ie[9]||(ie[9]=Le=>b.progress=Le),type:"range",class:"progress-slider",style:at(J.value),min:"0",max:"100",step:"5"},null,4),[[wa,b.progress,void 0,{number:!0}]]),h("div",AB,[Mt(h("input",{"onUpdate:modelValue":ie[10]||(ie[10]=Le=>K.value=Le),type:"text",class:"progress-input",placeholder:"0",maxlength:"3",onBlur:x,onKeyup:jl(x,["enter"]),onInput:y,onFocus:j,onKeydown:_},null,544),[[wa,K.value]]),ie[21]||(ie[21]=h("span",{class:"progress-unit"},"%",-1))])])]),h("div",gB,[h("label",IB,le(we(n).description),1),Mt(h("textarea",{id:"task-description","onUpdate:modelValue":ie[11]||(ie[11]=Le=>b.description=Le),class:"form-textarea",placeholder:we(n).descriptionPlaceholder,rows:"3"},null,8,mB),[[wa,b.description]])])],32)]),h("div",lB,[h("div",cB,[O.isEdit&&O.task?(q(),me("button",{key:0,type:"button",class:"gantt-btn gantt-btn-danger",disabled:d.value,onClick:w},[d.value?(q(),me("span",fB)):h2("",!0),Ut(" "+le(we(n).delete),1)],8,uB)):h2("",!0),ht(o6,{visible:o.value,title:we(n).delete,type:C.value,message:E.value,"confirm-text":we(n).confirm,"cancel-text":we(n).cancel,"yes-text":we(n).storyDeleteYes,"no-text":we(n).storyDeleteNo,onConfirm:G,onYes:ue,onNo:pe,onCancel:ee},null,8,["visible","title","type","message","confirm-text","cancel-text","yes-text","no-text"])]),h("div",hB,[h("button",{type:"button",class:"gantt-btn gantt-btn-default",onClick:te},le(we(n).cancel),1),h("button",{type:"button",class:"gantt-btn gantt-btn-primary",disabled:d.value,onClick:Me},[d.value?(q(),me("span",CB)):h2("",!0),Ut(" "+le(O.isEdit?we(n).update:we(n).create),1)],8,SB)])])])])):h2("",!0),ze.value?(q(),r0(K3,{key:1,visible:ze.value,title:"确认开始计时",message:`即将为任务${(be=t.task)==null?void 0:be.name}计时,若有特殊说明请完善下面的描述`,"default-desc":((Ze=t.task)==null?void 0:Ze.name)||"",onConfirm:R,onCancel:Be},null,8,["visible","message","default-desc"])):h2("",!0)],64)}}}),FB=J0(vB,[["__scopeId","data-v-71d14202"]]);function D5(e,a,t=null){for(const r of e){if(r.id===a)return t;if(r.children&&r.children.length>0){const n=D5(r.children,a,r);if(n!==null)return n}}return null}function _3(e,a){for(let t=0;t0){const r=_3(e[t].children,a);if(r)return r}}return null}function P3(e,a,t,r){for(let n=0;n0&&P3(e[n].children,a,t,r))return!0}return!1}function wB(e,a,t,r){const n=D5(e,a),s=_3(e,a);if(!s)return null;if(!P3(e,t,s,r))return n&&n.children?n.children.push(s):e.push(s),null;const i=D5(e,a);return{movedTask:s,oldParent:n,newParent:i}}const TB="modulepreload",BB=function(e){return"/jordium-gantt-vue3/"+e},i7={},sp=function(a,t,r){let n=Promise.resolve();if(t&&t.length>0){let d=function(D){return Promise.all(D.map(A=>Promise.resolve(A).then(m=>({status:"fulfilled",value:m}),m=>({status:"rejected",reason:m}))))};document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),o=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));n=d(t.map(D=>{if(D=BB(D),D in i7)return;i7[D]=!0;const A=D.endsWith(".css"),m=A?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${D}"]${m}`))return;const c=document.createElement("link");if(c.rel=A?"stylesheet":TB,A||(c.as="script"),c.crossOrigin="",c.href=D,o&&c.setAttribute("nonce",o),document.head.appendChild(c),A)return new Promise((g,f)=>{c.addEventListener("load",g),c.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${D}`)))})}))}function s(d){const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=d,window.dispatchEvent(i),!i.defaultPrevented)throw d}return n.then(d=>{for(const i of d||[])i.status==="rejected"&&s(i.reason);return a().catch(s)})};function f0(e){"@babel/helpers - typeof";return f0=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(a){return typeof a}:function(a){return a&&typeof Symbol=="function"&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f0(e)}var S1=Uint8Array,$r=Uint16Array,D6=Int32Array,A6=new S1([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),g6=new S1([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),o7=new S1([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),O3=function(e,a){for(var t=new $r(31),r=0;r<31;++r)t[r]=a+=1<>1|($0&21845)<<1;Sn=(Sn&52428)>>2|(Sn&13107)<<2,Sn=(Sn&61680)>>4|(Sn&3855)<<4,g5[$0]=((Sn&65280)>>8|(Sn&255)<<8)>>1}var Ud=(function(e,a,t){for(var r=e.length,n=0,s=new $r(a);n>o]=D}else for(i=new $r(r),n=0;n>15-e[n]);return i}),Is=new S1(288);for(var $0=0;$0<144;++$0)Is[$0]=8;for(var $0=144;$0<256;++$0)Is[$0]=9;for(var $0=256;$0<280;++$0)Is[$0]=7;for(var $0=280;$0<288;++$0)Is[$0]=8;var _i=new S1(32);for(var $0=0;$0<32;++$0)_i[$0]=5;var RB=Ud(Is,9,0),QB=Ud(_i,5,0),j3=function(e){return(e+7)/8|0},bB=function(e,a,t){return(t==null||t>e.length)&&(t=e.length),new S1(e.subarray(a,t))},$1=function(e,a,t){t<<=a&7;var r=a/8|0;e[r]|=t,e[r+1]|=t>>8},ld=function(e,a,t){t<<=a&7;var r=a/8|0;e[r]|=t,e[r+1]|=t>>8,e[r+2]|=t>>16},dp=function(e,a){for(var t=[],r=0;rc&&(c=s[r].s);var g=new $r(c+1),f=I5(t[A-1],g,0);if(f>a){var r=0,v=0,B=f-a,C=1<a)v+=C-(1<>=B;v>0;){var b=s[r].s;g[b]=0&&v;--r){var H=s[r].s;g[H]==a&&(--g[H],++v)}f=a}return{t:new S1(g),l:f}},I5=function(e,a,t){return e.s==-1?Math.max(I5(e.l,a,t+1),I5(e.r,a,t+1)):a[e.s]=t},D7=function(e){for(var a=e.length;a&&!e[--a];);for(var t=new $r(++a),r=0,n=e[0],s=1,d=function(o){t[r++]=o},i=1;i<=a;++i)if(e[i]==n&&i!=a)++s;else{if(!n&&s>2){for(;s>138;s-=138)d(32754);s>2&&(d(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(d(n),--s;s>6;s-=6)d(8304);s>2&&(d(s-3<<5|8208),s=0)}for(;s--;)d(n);s=1,n=e[i]}return{c:t.subarray(0,r),n:a}},cd=function(e,a){for(var t=0,r=0;r>8,e[n+2]=e[n]^255,e[n+3]=e[n+1]^255;for(var s=0;s4&&!x[o7[F-1]];--F);var j=D+5<<3,_=cd(n,Is)+cd(s,_i)+d,Ne=cd(n,c)+cd(s,v)+d+14+3*F+cd(J,x)+2*J[16]+3*J[17]+7*J[18];if(o>=0&&j<=_&&j<=Ne)return $3(a,A,e.subarray(o,o+D));var ve,ne,oe,te;if($1(a,A,1+(Ne<_)),A+=2,Ne<_){ve=Ud(c,g,0),ne=c,oe=Ud(v,B,0),te=v;var Se=Ud(x,T,0);$1(a,A,b-257),$1(a,A+5,re-1),$1(a,A+10,F-4),A+=14;for(var K=0;K15&&($1(a,A,P[K]>>5&127),A+=P[K]>>12)}}else ve=RB,ne=Is,oe=QB,te=_i;for(var K=0;K255){var G=ee>>18&31;ld(a,A,ve[G+257]),A+=ne[G+257],G>7&&($1(a,A,ee>>23&31),A+=A6[G]);var ue=ee&31;ld(a,A,oe[ue]),A+=te[ue],ue>3&&(ld(a,A,ee>>5&8191),A+=g6[ue])}else ld(a,A,ve[ee]),A+=ne[ee]}return ld(a,A,ve[256]),A+ne[256]},HB=new D6([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),G3=new S1(0),MB=function(e,a,t,r,n,s){var d=s.z||e.length,i=new S1(r+d+5*(1+Math.ceil(d/7e3))+n),o=i.subarray(r,i.length-n),D=s.l,A=(s.r||0)&7;if(a){A&&(o[0]=s.r>>3);for(var m=HB[a-1],c=m>>13,g=m&8191,f=(1<7e3||x>24576)&&(ve>423||!D)){A=A7(e,o,0,H,X,re,K,x,F,y-F,A),x=J=K=0,F=y;for(var ne=0;ne<286;++ne)X[ne]=0;for(var ne=0;ne<30;++ne)re[ne]=0}var oe=2,te=0,Se=g,Me=_-Ne&32767;if(ve>2&&j==b(y-Me))for(var w=Math.min(c,ve)-1,P=Math.min(32767,y),G=Math.min(258,ve);Me<=P&&--Se&&_!=Ne;){if(e[y+oe]==e[y+oe-Me]){for(var ee=0;eeoe){if(oe=ee,te=Me,ee>w)break;for(var ue=Math.min(Me,ee-2),pe=0,ne=0;nepe&&(pe=ke,Ne=Ie)}}}_=Ne,Ne=v[_],Me+=_-Ne&32767}if(te){H[x++]=268435456|A5[oe]<<18|p7[te];var ze=A5[oe]&31,W=p7[te]&31;K+=A6[ze]+g6[W],++X[257+ze],++re[W],T=y+oe,++J}else H[x++]=e[y],++X[e[y]]}}for(y=Math.max(y,T);y=d&&(o[A/8|0]=D,$=d),A=$3(o,A+1,e.subarray(y,$))}s.i=d}return bB(i,0,r+j3(A)+n)},Y3=function(){var e=1,a=0;return{p:function(t){for(var r=e,n=a,s=t.length|0,d=0;d!=s;){for(var i=Math.min(d+2655,s);d>16),n=(n&65535)+15*(n>>16)}e=r,a=n},d:function(){return e%=65521,a%=65521,(e&255)<<24|(e&65280)<<8|(a&255)<<8|a>>8}}},kB=function(e,a,t,r,n){if(!n&&(n={l:1},a.dictionary)){var s=a.dictionary.subarray(-32768),d=new S1(s.length+e.length);d.set(s),d.set(e,s.length),e=d,n.w=s.length}return MB(e,a.level==null?6:a.level,a.mem==null?n.l?Math.ceil(Math.max(8,Math.min(13,Math.log(e.length)))*1.5):20:12+a.mem,t,r,n)},q3=function(e,a,t){for(;t;++a)e[a]=t,t>>>=8},xB=function(e,a){var t=a.level,r=t==0?0:t<6?1:t==9?3:2;if(e[0]=120,e[1]=r<<6|(a.dictionary&&32),e[1]|=31-(e[0]<<8|e[1])%31,a.dictionary){var n=Y3();n.p(a.dictionary),q3(e,2,n.d())}};function m5(e,a){a||(a={});var t=Y3();t.p(e);var r=kB(e,a,a.dictionary?6:2,4);return xB(r,a),q3(r,r.length-4,t.d()),r}var UB=typeof TextDecoder<"u"&&new TextDecoder,EB=0;try{UB.decode(G3,{stream:!0}),EB=1}catch{}function KB(e){if(Array.isArray(e))return e}function LB(e,a){var t=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(t!=null){var r,n,s,d,i=[],o=!0,D=!1;try{if(s=(t=t.call(e)).next,a!==0)for(;!(o=(r=s.call(t)).done)&&(i.push(r.value),i.length!==a);o=!0);}catch(A){D=!0,n=A}finally{try{if(!o&&t.return!=null&&(d=t.return(),Object(d)!==d))return}finally{if(D)throw n}}return i}}function g7(e,a){(a==null||a>e.length)&&(a=e.length);for(var t=0,r=Array(a);t{const e=new Uint8Array(4),a=new Uint32Array(e.buffer);return!((a[0]=1)&e[0])})(),ip={int8:globalThis.Int8Array,uint8:globalThis.Uint8Array,int16:globalThis.Int16Array,uint16:globalThis.Uint16Array,int32:globalThis.Int32Array,uint32:globalThis.Uint32Array,uint64:globalThis.BigUint64Array,int64:globalThis.BigInt64Array,float32:globalThis.Float32Array,float64:globalThis.Float64Array};class I6{constructor(a=VB,t={}){a0(this,"buffer");a0(this,"byteLength");a0(this,"byteOffset");a0(this,"length");a0(this,"offset");a0(this,"lastWrittenByte");a0(this,"littleEndian");a0(this,"_data");a0(this,"_mark");a0(this,"_marks");let r=!1;typeof a=="number"?a=new ArrayBuffer(a):(r=!0,this.lastWrittenByte=a.byteLength);const n=t.offset?t.offset>>>0:0,s=a.byteLength-n;let d=n;(ArrayBuffer.isView(a)||a instanceof I6)&&(a.byteLength!==a.buffer.byteLength&&(d=a.byteOffset+n),a=a.buffer),r?this.lastWrittenByte=s:this.lastWrittenByte=0,this.buffer=a,this.length=s,this.byteLength=s,this.byteOffset=d,this.offset=0,this.littleEndian=!0,this._data=new DataView(this.buffer,d,s),this._mark=0,this._marks=[]}available(a=1){return this.offset+a<=this.length}isLittleEndian(){return this.littleEndian}setLittleEndian(){return this.littleEndian=!0,this}isBigEndian(){return!this.littleEndian}setBigEndian(){return this.littleEndian=!1,this}skip(a=1){return this.offset+=a,this}back(a=1){return this.offset-=a,this}seek(a){return this.offset=a,this}mark(){return this._mark=this.offset,this}reset(){return this.offset=this._mark,this}pushMark(){return this._marks.push(this.offset),this}popMark(){const a=this._marks.pop();if(a===void 0)throw new Error("Mark stack empty");return this.seek(a),this}rewind(){return this.offset=0,this}ensureAvailable(a=1){if(!this.available(a)){const r=(this.offset+a)*2,n=new Uint8Array(r);n.set(new Uint8Array(this.buffer)),this.buffer=n.buffer,this.length=r,this.byteLength=r,this._data=new DataView(this.buffer)}return this}readBoolean(){return this.readUint8()!==0}readInt8(){return this._data.getInt8(this.offset++)}readUint8(){return this._data.getUint8(this.offset++)}readByte(){return this.readUint8()}readBytes(a=1){return this.readArray(a,"uint8")}readArray(a,t){const r=ip[t].BYTES_PER_ELEMENT*a,n=this.byteOffset+this.offset,s=this.buffer.slice(n,n+r);if(this.littleEndian===jB&&t!=="uint8"&&t!=="int8"){const i=new Uint8Array(this.buffer.slice(n,n+r));i.reverse();const o=new ip[t](i.buffer);return this.offset+=r,o.reverse(),o}const d=new ip[t](s);return this.offset+=r,d}readInt16(){const a=this._data.getInt16(this.offset,this.littleEndian);return this.offset+=2,a}readUint16(){const a=this._data.getUint16(this.offset,this.littleEndian);return this.offset+=2,a}readInt32(){const a=this._data.getInt32(this.offset,this.littleEndian);return this.offset+=4,a}readUint32(){const a=this._data.getUint32(this.offset,this.littleEndian);return this.offset+=4,a}readFloat32(){const a=this._data.getFloat32(this.offset,this.littleEndian);return this.offset+=4,a}readFloat64(){const a=this._data.getFloat64(this.offset,this.littleEndian);return this.offset+=8,a}readBigInt64(){const a=this._data.getBigInt64(this.offset,this.littleEndian);return this.offset+=8,a}readBigUint64(){const a=this._data.getBigUint64(this.offset,this.littleEndian);return this.offset+=8,a}readChar(){return String.fromCharCode(this.readInt8())}readChars(a=1){let t="";for(let r=0;rthis.lastWrittenByte&&(this.lastWrittenByte=this.offset)}}function Js(e){let a=e.length;for(;--a>=0;)e[a]=0}const $B=3,GB=258,z3=29,YB=256,qB=YB+1+z3,X3=30,zB=512,XB=new Array((qB+2)*2);Js(XB);const JB=new Array(X3*2);Js(JB);const ZB=new Array(zB);Js(ZB);const eN=new Array(GB-$B+1);Js(eN);const tN=new Array(z3);Js(tN);const aN=new Array(X3);Js(aN);const rN=(e,a,t,r)=>{let n=e&65535|0,s=e>>>16&65535|0,d=0;for(;t!==0;){d=t>2e3?2e3:t,t-=d;do n=n+a[r++]|0,s=s+n|0;while(--d);n%=65521,s%=65521}return n|s<<16|0};var l5=rN;const nN=()=>{let e,a=[];for(var t=0;t<256;t++){e=t;for(var r=0;r<8;r++)e=e&1?3988292384^e>>>1:e>>>1;a[t]=e}return a},sN=new Uint32Array(nN()),dN=(e,a,t,r)=>{const n=sN,s=r+t;e^=-1;for(let d=r;d>>8^n[(e^a[d])&255];return e^-1};var N1=dN,c5={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},J3={Z_NO_FLUSH:0,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_DEFLATED:8};const iN=(e,a)=>Object.prototype.hasOwnProperty.call(e,a);var oN=function(e){const a=Array.prototype.slice.call(arguments,1);for(;a.length;){const t=a.shift();if(t){if(typeof t!="object")throw new TypeError(t+"must be non-object");for(const r in t)iN(t,r)&&(e[r]=t[r])}}return e},pN=e=>{let a=0;for(let r=0,n=e.length;r=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Xd[254]=Xd[254]=1;var DN=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let a,t,r,n,s,d=e.length,i=0;for(n=0;n>>6,a[s++]=128|t&63):t<65536?(a[s++]=224|t>>>12,a[s++]=128|t>>>6&63,a[s++]=128|t&63):(a[s++]=240|t>>>18,a[s++]=128|t>>>12&63,a[s++]=128|t>>>6&63,a[s++]=128|t&63);return a};const AN=(e,a)=>{if(a<65534&&e.subarray&&e9)return String.fromCharCode.apply(null,e.length===a?e:e.subarray(0,a));let t="";for(let r=0;r{const t=a||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,a));let r,n;const s=new Array(t*2);for(n=0,r=0;r4){s[n++]=65533,r+=i-1;continue}for(d&=i===2?31:i===3?15:7;i>1&&r1){s[n++]=65533;continue}d<65536?s[n++]=d:(d-=65536,s[n++]=55296|d>>10&1023,s[n++]=56320|d&1023)}return AN(s,n)},IN=(e,a)=>{a=a||e.length,a>e.length&&(a=e.length);let t=a-1;for(;t>=0&&(e[t]&192)===128;)t--;return t<0||t===0?a:t+Xd[e[t]]>a?t:a},u5={string2buf:DN,buf2string:gN,utf8border:IN};function mN(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var lN=mN;const k4=16209,cN=16191;var uN=function(a,t){let r,n,s,d,i,o,D,A,m,c,g,f,v,B,C,E,b,H,X,re,J,K,y,x;const T=a.state;r=a.next_in,y=a.input,n=r+(a.avail_in-5),s=a.next_out,x=a.output,d=s-(t-a.avail_out),i=s+(a.avail_out-257),o=T.dmax,D=T.wsize,A=T.whave,m=T.wnext,c=T.window,g=T.hold,f=T.bits,v=T.lencode,B=T.distcode,C=(1<>>24,g>>>=H,f-=H,H=b>>>16&255,H===0)x[s++]=b&65535;else if(H&16){X=b&65535,H&=15,H&&(f>>=H,f-=H),f<15&&(g+=y[r++]<>>24,g>>>=H,f-=H,H=b>>>16&255,H&16){if(re=b&65535,H&=15,fo){a.msg="invalid distance too far back",T.mode=k4;break e}if(g>>>=H,f-=H,H=s-d,re>H){if(H=re-H,H>A&&T.sane){a.msg="invalid distance too far back",T.mode=k4;break e}if(J=0,K=c,m===0){if(J+=D-H,H2;)x[s++]=K[J++],x[s++]=K[J++],x[s++]=K[J++],X-=3;X&&(x[s++]=K[J++],X>1&&(x[s++]=K[J++]))}else{J=s-re;do x[s++]=x[J++],x[s++]=x[J++],x[s++]=x[J++],X-=3;while(X>2);X&&(x[s++]=x[J++],X>1&&(x[s++]=x[J++]))}}else if((H&64)===0){b=B[(b&65535)+(g&(1<>3,r-=X,f-=X<<3,g&=(1<{const o=i.bits;let D=0,A=0,m=0,c=0,g=0,f=0,v=0,B=0,C=0,E=0,b,H,X,re,J,K=null,y;const x=new Uint16Array(vs+1),T=new Uint16Array(vs+1);let F=null,j,_,Ne;for(D=0;D<=vs;D++)x[D]=0;for(A=0;A=1&&x[c]===0;c--);if(g>c&&(g=c),c===0)return n[s++]=1<<24|64<<16|0,n[s++]=1<<24|64<<16|0,i.bits=1,0;for(m=1;m0&&(e===u7||c!==1))return-1;for(T[1]=0,D=1;Dl7||e===f7&&C>c7)return 1;for(;;){j=D-v,d[A]+1=y?(_=F[d[A]-y],Ne=K[d[A]-y]):(_=96,Ne=0),b=1<>v)+H]=j<<24|_<<16|Ne|0;while(H!==0);for(b=1<>=1;if(b!==0?(E&=b-1,E+=b):E=0,A++,--x[D]===0){if(D===c)break;D=a[t+d[A]]}if(D>g&&(E&re)!==X){for(v===0&&(v=g),J+=m,f=D-v,B=1<l7||e===f7&&C>c7)return 1;X=E&re,n[X]=g<<24|f<<16|J-s|0}}return E!==0&&(n[J+E]=D-v<<24|64<<16|0),i.bits=g,0};var Ed=vN;const FN=0,t9=1,a9=2,{Z_FINISH:h7,Z_BLOCK:wN,Z_TREES:x4,Z_OK:ms,Z_STREAM_END:TN,Z_NEED_DICT:BN,Z_STREAM_ERROR:p1,Z_DATA_ERROR:r9,Z_MEM_ERROR:n9,Z_BUF_ERROR:NN,Z_DEFLATED:S7}=J3,mo=16180,C7=16181,v7=16182,F7=16183,w7=16184,T7=16185,B7=16186,N7=16187,y7=16188,R7=16189,Pi=16190,G1=16191,pp=16192,Q7=16193,Dp=16194,b7=16195,H7=16196,M7=16197,k7=16198,U4=16199,E4=16200,x7=16201,U7=16202,E7=16203,K7=16204,L7=16205,Ap=16206,W7=16207,_7=16208,Y0=16209,s9=16210,d9=16211,yN=852,RN=592,QN=15,bN=QN,P7=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function HN(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const ls=e=>{if(!e)return 1;const a=e.state;return!a||a.strm!==e||a.moded9?1:0},i9=e=>{if(ls(e))return p1;const a=e.state;return e.total_in=e.total_out=a.total=0,e.msg="",a.wrap&&(e.adler=a.wrap&1),a.mode=mo,a.last=0,a.havedict=0,a.flags=-1,a.dmax=32768,a.head=null,a.hold=0,a.bits=0,a.lencode=a.lendyn=new Int32Array(yN),a.distcode=a.distdyn=new Int32Array(RN),a.sane=1,a.back=-1,ms},o9=e=>{if(ls(e))return p1;const a=e.state;return a.wsize=0,a.whave=0,a.wnext=0,i9(e)},p9=(e,a)=>{let t;if(ls(e))return p1;const r=e.state;return a<0?(t=0,a=-a):(t=(a>>4)+5,a<48&&(a&=15)),a&&(a<8||a>15)?p1:(r.window!==null&&r.wbits!==a&&(r.window=null),r.wrap=t,r.wbits=a,o9(e))},D9=(e,a)=>{if(!e)return p1;const t=new HN;e.state=t,t.strm=e,t.window=null,t.mode=mo;const r=p9(e,a);return r!==ms&&(e.state=null),r},MN=e=>D9(e,bN);let O7=!0,gp,Ip;const kN=e=>{if(O7){gp=new Int32Array(512),Ip=new Int32Array(32);let a=0;for(;a<144;)e.lens[a++]=8;for(;a<256;)e.lens[a++]=9;for(;a<280;)e.lens[a++]=7;for(;a<288;)e.lens[a++]=8;for(Ed(t9,e.lens,0,288,gp,0,e.work,{bits:9}),a=0;a<32;)e.lens[a++]=5;Ed(a9,e.lens,0,32,Ip,0,e.work,{bits:5}),O7=!1}e.lencode=gp,e.lenbits=9,e.distcode=Ip,e.distbits=5},A9=(e,a,t,r)=>{let n;const s=e.state;return s.window===null&&(s.wsize=1<=s.wsize?(s.window.set(a.subarray(t-s.wsize,t),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>r&&(n=r),s.window.set(a.subarray(t-r,t-r+n),s.wnext),r-=n,r?(s.window.set(a.subarray(t-r,t),0),s.wnext=r,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whave{let t,r,n,s,d,i,o,D,A,m,c,g,f,v,B=0,C,E,b,H,X,re,J,K;const y=new Uint8Array(4);let x,T;const F=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(ls(e)||!e.output||!e.input&&e.avail_in!==0)return p1;t=e.state,t.mode===G1&&(t.mode=pp),d=e.next_out,n=e.output,o=e.avail_out,s=e.next_in,r=e.input,i=e.avail_in,D=t.hold,A=t.bits,m=i,c=o,K=ms;e:for(;;)switch(t.mode){case mo:if(t.wrap===0){t.mode=pp;break}for(;A<16;){if(i===0)break e;i--,D+=r[s++]<>>8&255,t.check=N1(t.check,y,2,0),D=0,A=0,t.mode=C7;break}if(t.head&&(t.head.done=!1),!(t.wrap&1)||(((D&255)<<8)+(D>>8))%31){e.msg="incorrect header check",t.mode=Y0;break}if((D&15)!==S7){e.msg="unknown compression method",t.mode=Y0;break}if(D>>>=4,A-=4,J=(D&15)+8,t.wbits===0&&(t.wbits=J),J>15||J>t.wbits){e.msg="invalid window size",t.mode=Y0;break}t.dmax=1<>8&1),t.flags&512&&t.wrap&4&&(y[0]=D&255,y[1]=D>>>8&255,t.check=N1(t.check,y,2,0)),D=0,A=0,t.mode=v7;case v7:for(;A<32;){if(i===0)break e;i--,D+=r[s++]<>>8&255,y[2]=D>>>16&255,y[3]=D>>>24&255,t.check=N1(t.check,y,4,0)),D=0,A=0,t.mode=F7;case F7:for(;A<16;){if(i===0)break e;i--,D+=r[s++]<>8),t.flags&512&&t.wrap&4&&(y[0]=D&255,y[1]=D>>>8&255,t.check=N1(t.check,y,2,0)),D=0,A=0,t.mode=w7;case w7:if(t.flags&1024){for(;A<16;){if(i===0)break e;i--,D+=r[s++]<>>8&255,t.check=N1(t.check,y,2,0)),D=0,A=0}else t.head&&(t.head.extra=null);t.mode=T7;case T7:if(t.flags&1024&&(g=t.length,g>i&&(g=i),g&&(t.head&&(J=t.head.extra_len-t.length,t.head.extra||(t.head.extra=new Uint8Array(t.head.extra_len)),t.head.extra.set(r.subarray(s,s+g),J)),t.flags&512&&t.wrap&4&&(t.check=N1(t.check,r,g,s)),i-=g,s+=g,t.length-=g),t.length))break e;t.length=0,t.mode=B7;case B7:if(t.flags&2048){if(i===0)break e;g=0;do J=r[s+g++],t.head&&J&&t.length<65536&&(t.head.name+=String.fromCharCode(J));while(J&&g>9&1,t.head.done=!0),e.adler=t.check=0,t.mode=G1;break;case R7:for(;A<32;){if(i===0)break e;i--,D+=r[s++]<>>=A&7,A-=A&7,t.mode=Ap;break}for(;A<3;){if(i===0)break e;i--,D+=r[s++]<>>=1,A-=1,D&3){case 0:t.mode=Q7;break;case 1:if(kN(t),t.mode=U4,a===x4){D>>>=2,A-=2;break e}break;case 2:t.mode=H7;break;case 3:e.msg="invalid block type",t.mode=Y0}D>>>=2,A-=2;break;case Q7:for(D>>>=A&7,A-=A&7;A<32;){if(i===0)break e;i--,D+=r[s++]<>>16^65535)){e.msg="invalid stored block lengths",t.mode=Y0;break}if(t.length=D&65535,D=0,A=0,t.mode=Dp,a===x4)break e;case Dp:t.mode=b7;case b7:if(g=t.length,g){if(g>i&&(g=i),g>o&&(g=o),g===0)break e;n.set(r.subarray(s,s+g),d),i-=g,s+=g,o-=g,d+=g,t.length-=g;break}t.mode=G1;break;case H7:for(;A<14;){if(i===0)break e;i--,D+=r[s++]<>>=5,A-=5,t.ndist=(D&31)+1,D>>>=5,A-=5,t.ncode=(D&15)+4,D>>>=4,A-=4,t.nlen>286||t.ndist>30){e.msg="too many length or distance symbols",t.mode=Y0;break}t.have=0,t.mode=M7;case M7:for(;t.have>>=3,A-=3}for(;t.have<19;)t.lens[F[t.have++]]=0;if(t.lencode=t.lendyn,t.lenbits=7,x={bits:t.lenbits},K=Ed(FN,t.lens,0,19,t.lencode,0,t.work,x),t.lenbits=x.bits,K){e.msg="invalid code lengths set",t.mode=Y0;break}t.have=0,t.mode=k7;case k7:for(;t.have>>24,E=B>>>16&255,b=B&65535,!(C<=A);){if(i===0)break e;i--,D+=r[s++]<>>=C,A-=C,t.lens[t.have++]=b;else{if(b===16){for(T=C+2;A>>=C,A-=C,t.have===0){e.msg="invalid bit length repeat",t.mode=Y0;break}J=t.lens[t.have-1],g=3+(D&3),D>>>=2,A-=2}else if(b===17){for(T=C+3;A>>=C,A-=C,J=0,g=3+(D&7),D>>>=3,A-=3}else{for(T=C+7;A>>=C,A-=C,J=0,g=11+(D&127),D>>>=7,A-=7}if(t.have+g>t.nlen+t.ndist){e.msg="invalid bit length repeat",t.mode=Y0;break}for(;g--;)t.lens[t.have++]=J}}if(t.mode===Y0)break;if(t.lens[256]===0){e.msg="invalid code -- missing end-of-block",t.mode=Y0;break}if(t.lenbits=9,x={bits:t.lenbits},K=Ed(t9,t.lens,0,t.nlen,t.lencode,0,t.work,x),t.lenbits=x.bits,K){e.msg="invalid literal/lengths set",t.mode=Y0;break}if(t.distbits=6,t.distcode=t.distdyn,x={bits:t.distbits},K=Ed(a9,t.lens,t.nlen,t.ndist,t.distcode,0,t.work,x),t.distbits=x.bits,K){e.msg="invalid distances set",t.mode=Y0;break}if(t.mode=U4,a===x4)break e;case U4:t.mode=E4;case E4:if(i>=6&&o>=258){e.next_out=d,e.avail_out=o,e.next_in=s,e.avail_in=i,t.hold=D,t.bits=A,uN(e,c),d=e.next_out,n=e.output,o=e.avail_out,s=e.next_in,r=e.input,i=e.avail_in,D=t.hold,A=t.bits,t.mode===G1&&(t.back=-1);break}for(t.back=0;B=t.lencode[D&(1<>>24,E=B>>>16&255,b=B&65535,!(C<=A);){if(i===0)break e;i--,D+=r[s++]<>H)],C=B>>>24,E=B>>>16&255,b=B&65535,!(H+C<=A);){if(i===0)break e;i--,D+=r[s++]<>>=H,A-=H,t.back+=H}if(D>>>=C,A-=C,t.back+=C,t.length=b,E===0){t.mode=L7;break}if(E&32){t.back=-1,t.mode=G1;break}if(E&64){e.msg="invalid literal/length code",t.mode=Y0;break}t.extra=E&15,t.mode=x7;case x7:if(t.extra){for(T=t.extra;A>>=t.extra,A-=t.extra,t.back+=t.extra}t.was=t.length,t.mode=U7;case U7:for(;B=t.distcode[D&(1<>>24,E=B>>>16&255,b=B&65535,!(C<=A);){if(i===0)break e;i--,D+=r[s++]<>H)],C=B>>>24,E=B>>>16&255,b=B&65535,!(H+C<=A);){if(i===0)break e;i--,D+=r[s++]<>>=H,A-=H,t.back+=H}if(D>>>=C,A-=C,t.back+=C,E&64){e.msg="invalid distance code",t.mode=Y0;break}t.offset=b,t.extra=E&15,t.mode=E7;case E7:if(t.extra){for(T=t.extra;A>>=t.extra,A-=t.extra,t.back+=t.extra}if(t.offset>t.dmax){e.msg="invalid distance too far back",t.mode=Y0;break}t.mode=K7;case K7:if(o===0)break e;if(g=c-o,t.offset>g){if(g=t.offset-g,g>t.whave&&t.sane){e.msg="invalid distance too far back",t.mode=Y0;break}g>t.wnext?(g-=t.wnext,f=t.wsize-g):f=t.wnext-g,g>t.length&&(g=t.length),v=t.window}else v=n,f=d-t.offset,g=t.length;g>o&&(g=o),o-=g,t.length-=g;do n[d++]=v[f++];while(--g);t.length===0&&(t.mode=E4);break;case L7:if(o===0)break e;n[d++]=t.length,o--,t.mode=E4;break;case Ap:if(t.wrap){for(;A<32;){if(i===0)break e;i--,D|=r[s++]<{if(ls(e))return p1;let a=e.state;return a.window&&(a.window=null),e.state=null,ms},EN=(e,a)=>{if(ls(e))return p1;const t=e.state;return(t.wrap&2)===0?p1:(t.head=a,a.done=!1,ms)},KN=(e,a)=>{const t=a.length;let r,n,s;return ls(e)||(r=e.state,r.wrap!==0&&r.mode!==Pi)?p1:r.mode===Pi&&(n=1,n=l5(n,a,t,0),n!==r.check)?r9:(s=A9(e,a,t,t),s?(r.mode=s9,n9):(r.havedict=1,ms))};var LN=o9,WN=p9,_N=i9,PN=MN,ON=D9,VN=xN,jN=UN,$N=EN,GN=KN,YN="pako inflate (from Nodeca project)",X1={inflateReset:LN,inflateReset2:WN,inflateResetKeep:_N,inflateInit:PN,inflateInit2:ON,inflate:VN,inflateEnd:jN,inflateGetHeader:$N,inflateSetDictionary:GN,inflateInfo:YN};function qN(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var zN=qN;const g9=Object.prototype.toString,{Z_NO_FLUSH:XN,Z_FINISH:JN,Z_OK:Jd,Z_STREAM_END:mp,Z_NEED_DICT:lp,Z_STREAM_ERROR:ZN,Z_DATA_ERROR:V7,Z_MEM_ERROR:ey}=J3;function s4(e){this.options=Z3.assign({chunkSize:1024*64,windowBits:15,to:""},e||{});const a=this.options;a.raw&&a.windowBits>=0&&a.windowBits<16&&(a.windowBits=-a.windowBits,a.windowBits===0&&(a.windowBits=-15)),a.windowBits>=0&&a.windowBits<16&&!(e&&e.windowBits)&&(a.windowBits+=32),a.windowBits>15&&a.windowBits<48&&(a.windowBits&15)===0&&(a.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new lN,this.strm.avail_out=0;let t=X1.inflateInit2(this.strm,a.windowBits);if(t!==Jd)throw new Error(c5[t]);if(this.header=new zN,X1.inflateGetHeader(this.strm,this.header),a.dictionary&&(typeof a.dictionary=="string"?a.dictionary=u5.string2buf(a.dictionary):g9.call(a.dictionary)==="[object ArrayBuffer]"&&(a.dictionary=new Uint8Array(a.dictionary)),a.raw&&(t=X1.inflateSetDictionary(this.strm,a.dictionary),t!==Jd)))throw new Error(c5[t])}s4.prototype.push=function(e,a){const t=this.strm,r=this.options.chunkSize,n=this.options.dictionary;let s,d,i;if(this.ended)return!1;for(a===~~a?d=a:d=a===!0?JN:XN,g9.call(e)==="[object ArrayBuffer]"?t.input=new Uint8Array(e):t.input=e,t.next_in=0,t.avail_in=t.input.length;;){for(t.avail_out===0&&(t.output=new Uint8Array(r),t.next_out=0,t.avail_out=r),s=X1.inflate(t,d),s===lp&&n&&(s=X1.inflateSetDictionary(t,n),s===Jd?s=X1.inflate(t,d):s===V7&&(s=lp));t.avail_in>0&&s===mp&&t.state.wrap>0&&e[t.next_in]!==0;)X1.inflateReset(t),s=X1.inflate(t,d);switch(s){case ZN:case V7:case lp:case ey:return this.onEnd(s),this.ended=!0,!1}if(i=t.avail_out,t.next_out&&(t.avail_out===0||s===mp))if(this.options.to==="string"){let o=u5.utf8border(t.output,t.next_out),D=t.next_out-o,A=u5.buf2string(t.output,o);t.next_out=D,t.avail_out=r-D,D&&t.output.set(t.output.subarray(o,o+D),0),this.onData(A)}else this.onData(t.output.length===t.next_out?t.output:t.output.subarray(0,t.next_out));if(!(s===Jd&&i===0)){if(s===mp)return s=X1.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(t.avail_in===0)break}}return!0};s4.prototype.onData=function(e){this.chunks.push(e)};s4.prototype.onEnd=function(e){e===Jd&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Z3.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function ty(e,a){const t=new s4(a);if(t.push(e),t.err)throw t.msg||c5[t.err];return t.result}var ay=s4,ry=ty,ny={Inflate:ay,inflate:ry};const{Inflate:sy,inflate:dy}=ny;var j7=sy,iy=dy;const I9=[];for(let e=0;e<256;e++){let a=e;for(let t=0;t<8;t++)a&1?a=3988292384^a>>>1:a=a>>>1;I9[e]=a}const $7=4294967295;function oy(e,a,t){let r=e;for(let n=0;n>>8;return r}function py(e,a){return(oy($7,e,a)^$7)>>>0}function G7(e,a,t){const r=e.readUint32(),n=py(new Uint8Array(e.buffer,e.byteOffset+e.offset-a-4,a),a);if(n!==r)throw new Error(`CRC mismatch for chunk ${t}. Expected ${r}, found ${n}`)}function m9(e,a,t){for(let r=0;r>1)&255}else{for(;s>1)&255;for(;s>1)&255}}function f9(e,a,t,r,n){let s=0;if(t.length===0){for(;s=t||re>=r))for(let J=0;J>8&255}const uy=new Uint16Array([255]),fy=new Uint8Array(uy.buffer),hy=fy[0]===255,Sy=new Uint8Array(0);function Y7(e){const{data:a,width:t,height:r,channels:n,depth:s}=e,d=Math.ceil(s/8)*n,i=Math.ceil(s/8*n*t),o=new Uint8Array(r*i);let D=Sy,A=0,m,c;for(let g=0;g>8&255}const Si=Uint8Array.of(137,80,78,71,13,10,26,10);function q7(e){if(!vy(e.readBytes(Si.length)))throw new Error("wrong PNG signature")}function vy(e){if(e.length79)throw new Error("keyword length must be between 1 and 79")}const By=/^[\u0000-\u00FF]*$/;function Ny(e){if(!By.test(e))throw new Error("invalid latin1 text")}function yy(e,a,t){const r=S9(a);e[r]=Ry(a,t-r.length-1)}function S9(e){for(e.mark();e.readByte()!==wy;);const a=e.offset;e.reset();const t=h9.decode(e.readBytes(a-e.offset-1));return e.skip(1),Ty(t),t}function Ry(e,a){return h9.decode(e.readBytes(a))}const Pr={UNKNOWN:-1,GREYSCALE:0,TRUECOLOUR:2,INDEXED_COLOUR:3,GREYSCALE_ALPHA:4,TRUECOLOUR_ALPHA:6},cp={UNKNOWN:-1,DEFLATE:0},z7={UNKNOWN:-1,ADAPTIVE:0},up={UNKNOWN:-1,NO_INTERLACE:0,ADAM7:1},K4={NONE:0,BACKGROUND:1,PREVIOUS:2},fp={SOURCE:0,OVER:1};class Qy extends I6{constructor(t,r={}){super(t);a0(this,"_checkCrc");a0(this,"_inflator");a0(this,"_png");a0(this,"_apng");a0(this,"_end");a0(this,"_hasPalette");a0(this,"_palette");a0(this,"_hasTransparency");a0(this,"_transparency");a0(this,"_compressionMethod");a0(this,"_filterMethod");a0(this,"_interlaceMethod");a0(this,"_colorType");a0(this,"_isAnimated");a0(this,"_numberOfFrames");a0(this,"_numberOfPlays");a0(this,"_frames");a0(this,"_writingDataChunks");const{checkCrc:n=!1}=r;this._checkCrc=n,this._inflator=new j7,this._png={width:-1,height:-1,channels:-1,data:new Uint8Array(0),depth:1,text:{}},this._apng={width:-1,height:-1,channels:-1,depth:1,numberOfFrames:1,numberOfPlays:0,text:{},frames:[]},this._end=!1,this._hasPalette=!1,this._palette=[],this._hasTransparency=!1,this._transparency=new Uint16Array(0),this._compressionMethod=cp.UNKNOWN,this._filterMethod=z7.UNKNOWN,this._interlaceMethod=up.UNKNOWN,this._colorType=Pr.UNKNOWN,this._isAnimated=!1,this._numberOfFrames=1,this._numberOfPlays=0,this._frames=[],this._writingDataChunks=!1,this.setBigEndian()}decode(){for(q7(this);!this._end;){const t=this.readUint32(),r=this.readChars(4);this.decodeChunk(t,r)}return this.decodeImage(),this._png}decodeApng(){for(q7(this);!this._end;){const t=this.readUint32(),r=this.readChars(4);this.decodeApngChunk(t,r)}return this.decodeApngImage(),this._apng}decodeChunk(t,r){const n=this.offset;switch(r){case"IHDR":this.decodeIHDR();break;case"PLTE":this.decodePLTE(t);break;case"IDAT":this.decodeIDAT(t);break;case"IEND":this._end=!0;break;case"tRNS":this.decodetRNS(t);break;case"iCCP":this.decodeiCCP(t);break;case Fy:yy(this._png.text,this,t);break;case"pHYs":this.decodepHYs();break;default:this.skip(t);break}if(this.offset-n!==t)throw new Error(`Length mismatch while decoding chunk ${r}`);this._checkCrc?G7(this,t+4,r):this.skip(4)}decodeApngChunk(t,r){const n=this.offset;switch(r!=="fdAT"&&r!=="IDAT"&&this._writingDataChunks&&this.pushDataToFrame(),r){case"acTL":this.decodeACTL();break;case"fcTL":this.decodeFCTL();break;case"fdAT":this.decodeFDAT(t);break;default:this.decodeChunk(t,r),this.offset=n+t;break}if(this.offset-n!==t)throw new Error(`Length mismatch while decoding chunk ${r}`);this._checkCrc?G7(this,t+4,r):this.skip(4)}decodeIHDR(){const t=this._png;t.width=this.readUint32(),t.height=this.readUint32(),t.depth=by(this.readUint8());const r=this.readUint8();this._colorType=r;let n;switch(r){case Pr.GREYSCALE:n=1;break;case Pr.TRUECOLOUR:n=3;break;case Pr.INDEXED_COLOUR:n=1;break;case Pr.GREYSCALE_ALPHA:n=2;break;case Pr.TRUECOLOUR_ALPHA:n=4;break;case Pr.UNKNOWN:default:throw new Error(`Unknown color type: ${r}`)}if(this._png.channels=n,this._compressionMethod=this.readUint8(),this._compressionMethod!==cp.DEFLATE)throw new Error(`Unsupported compression method: ${this._compressionMethod}`);this._filterMethod=this.readUint8(),this._interlaceMethod=this.readUint8()}decodeACTL(){this._numberOfFrames=this.readUint32(),this._numberOfPlays=this.readUint32(),this._isAnimated=!0}decodeFCTL(){const t={sequenceNumber:this.readUint32(),width:this.readUint32(),height:this.readUint32(),xOffset:this.readUint32(),yOffset:this.readUint32(),delayNumber:this.readUint16(),delayDenominator:this.readUint16(),disposeOp:this.readUint8(),blendOp:this.readUint8(),data:new Uint8Array(0)};this._frames.push(t)}decodePLTE(t){if(t%3!==0)throw new RangeError(`PLTE field length must be a multiple of 3. Got ${t}`);const r=t/3;this._hasPalette=!0;const n=[];this._palette=n;for(let s=0;sthis._png.width*this._png.height)throw new Error(`tRNS chunk contains more alpha values than there are pixels (${t/2} vs ${this._png.width*this._png.height})`);this._hasTransparency=!0,this._transparency=new Uint16Array(t/2);for(let r=0;rthis._palette.length)throw new Error(`tRNS chunk contains more alpha values than there are palette colors (${t} vs ${this._palette.length})`);let r=0;for(;r{const o=((d+r.yOffset)*this._png.width+r.xOffset+i)*this._png.channels,D=(d*r.width+i)*this._png.channels;return{index:o,frameIndex:D}};switch(r.blendOp){case fp.SOURCE:for(let d=0;d=200&&a.status<=299}function L4(e){try{e.dispatchEvent(new MouseEvent("click"))}catch{var a=document.createEvent("MouseEvents");a.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(a)}}var ts=vt.saveAs||((typeof window>"u"?"undefined":f0(window))!=="object"||window!==vt?function(){}:typeof HTMLAnchorElement<"u"&&"download"in HTMLAnchorElement.prototype?function(e,a,t){var r=vt.URL||vt.webkitURL,n=document.createElement("a");a=a||e.name||"download",n.download=a,n.rel="noopener",typeof e=="string"?(n.href=e,n.origin!==location.origin?J7(n.href)?Sp(e,a,t):L4(n,n.target="_blank"):L4(n)):(n.href=r.createObjectURL(e),setTimeout(function(){r.revokeObjectURL(n.href)},4e4),setTimeout(function(){L4(n)},0))}:"msSaveOrOpenBlob"in navigator?function(e,a,t){if(a=a||e.name||"download",typeof e=="string")if(J7(e))Sp(e,a,t);else{var r=document.createElement("a");r.href=e,r.target="_blank",setTimeout(function(){L4(r)})}else navigator.msSaveOrOpenBlob((function(n,s){return s===void 0?s={autoBom:!1}:f0(s)!=="object"&&(M0.warn("Deprecated: Expected third argument to be a object"),s={autoBom:!s}),s.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(n.type)?new Blob(["\uFEFF",n],{type:n.type}):n})(e,t),a)}:function(e,a,t,r){if((r=r||open("","_blank"))&&(r.document.title=r.document.body.innerText="downloading..."),typeof e=="string")return Sp(e,a,t);var n=e.type==="application/octet-stream",s=/constructor/i.test(vt.HTMLElement)||vt.safari,d=/CriOS\/[\d]+/.test(navigator.userAgent);if((d||n&&s)&&(typeof FileReader>"u"?"undefined":f0(FileReader))==="object"){var i=new FileReader;i.onloadend=function(){var A=i.result;A=d?A:A.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=A:location=A,r=null},i.readAsDataURL(e)}else{var o=vt.URL||vt.webkitURL,D=o.createObjectURL(e);r?r.location=D:location.href=D,r=null,setTimeout(function(){o.revokeObjectURL(D)},4e4)}});/** * A class to parse color values * @author Stoyan Stefanov @@ -177,7 +177,7 @@ T* `):l.join(` Tj endobj\r `},t.outline.count_r=function(r,n){for(var s=0;s1){_=!0,ve=void 0;var ue=y*x;ne=new Uint8Array(ue);for(var pe=new DataView(T.buffer),Ie=0;Ie=0;e--){for(var r=this.bottom_up?e:this.height-1-e,n=0;n>7-i&1];this.data[d+4*i]=o.blue,this.data[d+4*i+1]=o.green,this.data[d+4*i+2]=o.red,this.data[d+4*i+3]=255}t!==0&&(this.pos+=4-t)}},m1.prototype.bit4=function(){for(var e=Math.ceil(this.width/2),a=e%4,t=this.height-1;t>=0;t--){for(var r=this.bottom_up?t:this.height-1-t,n=0;n>4,o=15&s,D=this.palette[i];if(this.data[d]=D.blue,this.data[d+1]=D.green,this.data[d+2]=D.red,this.data[d+3]=255,2*n+1>=this.width)break;D=this.palette[o],this.data[d+4]=D.blue,this.data[d+4+1]=D.green,this.data[d+4+2]=D.red,this.data[d+4+3]=255}a!==0&&(this.pos+=4-a)}},m1.prototype.bit8=function(){for(var e=this.width%4,a=this.height-1;a>=0;a--){for(var t=this.bottom_up?a:this.height-1-a,r=0;r=0;t--){for(var r=this.bottom_up?t:this.height-1-t,n=0;n>5&a)/a*255|0,o=(s>>10&a)/a*255|0,D=s>>15?255:0,A=r*this.width*4+4*n;this.data[A]=o,this.data[A+1]=i,this.data[A+2]=d,this.data[A+3]=D}this.pos+=e}},m1.prototype.bit16=function(){for(var e=this.width%3,a=parseInt("11111",2),t=parseInt("111111",2),r=this.height-1;r>=0;r--){for(var n=this.bottom_up?r:this.height-1-r,s=0;s>5&t)/t*255|0,D=(d>>11)/a*255|0,A=n*this.width*4+4*s;this.data[A]=D,this.data[A+1]=o,this.data[A+2]=i,this.data[A+3]=255}this.pos+=e}},m1.prototype.bit24=function(){for(var e=this.height-1;e>=0;e--){for(var a=this.bottom_up?e:this.height-1-e,t=0;t=0;e--)for(var a=this.bottom_up?e:this.height-1-e,t=0;tr&&(n.push(e.slice(o,s)),i=0,o=s),i+=a[s],s++;return o!==s&&n.push(e.slice(o,s)),n},gA=function(e,a,t){t||(t={});var r,n,s,d,i,o,D,A=[],m=[A],c=t.textIndent||0,g=0,f=0,v=e.split(" "),B=P4.apply(this,[" ",t])[0];if(o=t.lineIndent===-1?v[0].length+2:t.lineIndent||0){var C=Array(o).join(" "),E=[];v.map(function(H){(H=H.split(/\s*\n/)).length>1?E=E.concat(H.map(function(X,re){return(re&&X.length?` `:"")+X})):E.push(H[0])}),v=E,o=DA.apply(this,[C,t])}for(s=0,d=v.length;sa||b){if(f>a){for(i=AA.apply(this,[r,n,a-(c+g),a]),A.push(i.shift()),A=[i.pop()];i.length;)m.push([i.shift()]);f=n.slice(r.length-(A[0]?A[0].length:0)).reduce(function(H,X){return H+X},0)}else A=[r];m.push(A),c=f+o,g=B}else A.push(r),c+=g+f,g=B}return D=o?function(H,X){return(X?C:"")+H.join(" ")}:function(H){return H.join(" ")},m.map(D)},ws.splitTextToSize=function(e,a,t){var r,n=(t=t||{}).fontSize||this.internal.getFontSize(),s=(function(A){if(A.widths&&A.kerning)return{widths:A.widths,kerning:A.kerning};var m=this.internal.getFont(A.fontName,A.fontStyle),c="Unicode";return m.metadata[c]?{widths:m.metadata[c].widths||{0:1},kerning:m.metadata[c].kerning||{}}:{font:m.metadata,fontSize:this.internal.getFontSize(),charSpace:this.internal.getCharSpace()}}).call(this,t);r=Array.isArray(e)?e:String(e).split(/\r?\n/);var d=1*this.internal.scaleFactor*a/n;s.textIndent=t.textIndent?1*t.textIndent*this.internal.scaleFactor/n:0,s.lineIndent=t.lineIndent;var i,o,D=[];for(i=0,o=r.length;iimport("./index.es-DBXQb5D8.js"),[])).catch(function(c){return Promise.reject(new Error("Could not load canvg: "+c))}).then(function(c){return c.default?c.default:c}).then(function(c){return c.fromString(D,e,A)},function(){return Promise.reject(new Error("Could not load canvg."))}).then(function(c){return c.render(A)}).then(function(){m.addImage(o.toDataURL("image/jpeg",1),a,t,r,n,d,i)})},pt.API.putTotalPages=function(e){var a,t=0;parseInt(this.internal.getFont().id.substr(1),10)<15?(a=new RegExp(e,"g"),t=this.internal.getNumberOfPages()):(a=new RegExp(this.pdfEscape16(e,this.internal.getFont()),"g"),t=this.pdfEscape16(this.internal.getNumberOfPages()+"",this.internal.getFont()));for(var r=1;r<=this.internal.getNumberOfPages();r++)for(var n=0;n1){for(A=0;Aa||b){if(f>a){for(i=AA.apply(this,[r,n,a-(c+g),a]),A.push(i.shift()),A=[i.pop()];i.length;)m.push([i.shift()]);f=n.slice(r.length-(A[0]?A[0].length:0)).reduce(function(H,X){return H+X},0)}else A=[r];m.push(A),c=f+o,g=B}else A.push(r),c+=g+f,g=B}return D=o?function(H,X){return(X?C:"")+H.join(" ")}:function(H){return H.join(" ")},m.map(D)},ws.splitTextToSize=function(e,a,t){var r,n=(t=t||{}).fontSize||this.internal.getFontSize(),s=(function(A){if(A.widths&&A.kerning)return{widths:A.widths,kerning:A.kerning};var m=this.internal.getFont(A.fontName,A.fontStyle),c="Unicode";return m.metadata[c]?{widths:m.metadata[c].widths||{0:1},kerning:m.metadata[c].kerning||{}}:{font:m.metadata,fontSize:this.internal.getFontSize(),charSpace:this.internal.getCharSpace()}}).call(this,t);r=Array.isArray(e)?e:String(e).split(/\r?\n/);var d=1*this.internal.scaleFactor*a/n;s.textIndent=t.textIndent?1*t.textIndent*this.internal.scaleFactor/n:0,s.lineIndent=t.lineIndent;var i,o,D=[];for(i=0,o=r.length;iimport("./index.es-jljh7oB8.js"),[])).catch(function(c){return Promise.reject(new Error("Could not load canvg: "+c))}).then(function(c){return c.default?c.default:c}).then(function(c){return c.fromString(D,e,A)},function(){return Promise.reject(new Error("Could not load canvg."))}).then(function(c){return c.render(A)}).then(function(){m.addImage(o.toDataURL("image/jpeg",1),a,t,r,n,d,i)})},pt.API.putTotalPages=function(e){var a,t=0;parseInt(this.internal.getFont().id.substr(1),10)<15?(a=new RegExp(e,"g"),t=this.internal.getNumberOfPages()):(a=new RegExp(this.pdfEscape16(e,this.internal.getFont()),"g"),t=this.pdfEscape16(this.internal.getNumberOfPages()+"",this.internal.getFont()));for(var r=1;r<=this.internal.getNumberOfPages();r++)for(var n=0;n1){for(A=0;A') no-repeat center center;background-size:contain}.menu-divider[data-v-ace8cfaf]{height:1px;background:#ececec;width:92%;margin:4px 0 4px 4%}.menu-item-with-submenu[data-v-ace8cfaf]{position:relative;padding-right:30px}.submenu-arrow[data-v-ace8cfaf]{position:absolute;right:12px;font-style:normal;font-size:16px;color:#999}.submenu[data-v-ace8cfaf]{position:absolute;left:100%;top:0;margin-left:4px;background:#fff;border-radius:8px;box-shadow:0 2px 12px #00000026;padding:4px 0;min-width:200px;z-index:10001;border:1px solid #e4e7ed;animation:fadeIn-ace8cfaf .15s ease-out}.submenu-item[data-v-ace8cfaf]{padding:8px 16px;font-size:13px;white-space:nowrap}.submenu-item[data-v-ace8cfaf]:hover{background-color:#fef0f0;color:#f56c6c}.link-delete-icon[data-v-ace8cfaf]{width:20px;height:20px;position:relative}.link-delete-icon[data-v-ace8cfaf]:before{content:"";position:absolute;width:14px;height:2px;background-color:currentColor;top:50%;left:3px;transform:translateY(-50%) rotate(45deg)}.link-delete-icon[data-v-ace8cfaf]:after{content:"";position:absolute;width:14px;height:2px;background-color:currentColor;top:50%;left:3px;transform:translateY(-50%) rotate(-45deg)}html[data-theme=dark]{background-color:#2c2c2c;border-color:#444;box-shadow:0 2px 12px #00000059}html[data-theme=dark]{background-color:#3a1f1f;color:#f56c6c}.collapse-btn[data-v-d56e1479]{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;cursor:pointer;margin-right:4px;color:var(--gantt-primary);border-radius:2px;transition:background-color .2s ease}.collapse-btn[data-v-d56e1479]:hover{background-color:var(--gantt-primary-light)}.collapse-btn svg[data-v-d56e1479]{transition:transform .2s ease}.task-icon[data-v-7689b9a9]{margin-right:4px;color:var(--gantt-text-muted)}.task-icon svg[data-v-7689b9a9]{vertical-align:middle}.milestone-group-icon[data-v-7689b9a9]{color:var(--gantt-danger, #f56c6c);fill:var(--gantt-danger, #f56c6c)}html[data-theme=dark]{color:var(--gantt-danger, #f67c7c);fill:var(--gantt-danger, #f67c7c)}.status-badge[data-v-f020207b]{display:inline-block;padding:2px 6px;border-radius:2px;font-size:10px;font-weight:700;margin-left:6px;color:#fff}.status-badge.overtime[data-v-f020207b]{background-color:transparent;border:1px solid var(--gantt-danger);color:var(--gantt-danger)}.status-badge.overdue[data-v-f020207b]{background-color:var(--gantt-danger)}.timer-badge[data-v-f020207b]{display:inline-block;padding:2px 6px;border-radius:2px;font-size:10px;font-weight:700;margin-left:6px;background-color:var(--gantt-info, #909399);color:#fff}.timer-badge.timer-active[data-v-f020207b]{background-color:var(--gantt-success, #67c23a)}.timer-dot[data-v-f020207b]{display:inline-block;width:6px;height:6px;border-radius:50%;background-color:#fff;margin-right:4px;animation:timer-pulse-f020207b 1.5s ease-in-out infinite}@keyframes timer-pulse-f020207b{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}.task-name-text[data-v-0e4d76f3]{display:inline-block;max-width:calc(100% - 24px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.task-name-text.parent-task[data-v-0e4d76f3]{font-weight:700;color:var(--gantt-text-parent, var(--gantt-text-primary))}[data-v-e6d0e186]:root{--gantt-bg-primary: #ffffff;--gantt-bg-secondary: #f5f7fa;--gantt-bg-tertiary: #f9f9f9;--gantt-bg-hover: rgba(225, 228, 231, .2);--gantt-bg-hover-parent: rgba(245, 247, 250, .8);--gantt-bg-toolbar: #f8f9fa;--gantt-text-primary: #333333;--gantt-text-secondary: #8d9095;--gantt-text-muted: #909399;--gantt-text-white: #ffffff;--gantt-text-header: #333333;--gantt-border-light: #ebeef5;--gantt-border-medium: #dcdfe6;--gantt-border-dark: #c0c4cc;--gantt-border-color: #dcdfe6;--gantt-primary: #409eff;--gantt-primary-light: #ecf5ff;--gantt-success: #67c23a;--gantt-warning: #e6a23c;--gantt-warning-light: #f5dab1;--gantt-danger: #f56c6c;--gantt-danger-light: #fab6b6;--gantt-scrollbar-thumb: #c1c1c1;--gantt-scrollbar-thumb-hover: #a8a8a8}html[data-theme=dark][data-v-e6d0e186]{--gantt-bg-primary: #6b6b6b;--gantt-bg-secondary: #4b4b4b;--gantt-bg-tertiary: #7b7b7b;--gantt-bg-hover: rgba(180, 180, 180, .35);--gantt-bg-hover-parent: rgba(140, 140, 140, .8);--gantt-bg-toolbar: #5b5b5b;--gantt-text-primary: #ffffff;--gantt-text-secondary: #f8f8f8;--gantt-text-muted: #e0e0e0;--gantt-text-white: #ffffff;--gantt-text-parent: #ffffff;--gantt-text-header: #ffffff;--gantt-border-light: #888888;--gantt-border-medium: #666666;--gantt-border-dark: #999999;--gantt-border-color: #808080;--gantt-primary: #3399ff;--gantt-primary-light: #4d6699;--gantt-success: #66cc33;--gantt-warning: #ff9933;--gantt-warning-light: #cc7722;--gantt-danger: #ff4444;--gantt-danger-light: #cc3333;--gantt-scrollbar-thumb: #888888;--gantt-scrollbar-thumb-hover: #999999}.col[data-v-e6d0e186]{display:flex;align-items:center;justify-content:center;height:100%;border-right:1px solid var(--gantt-border-light);box-sizing:border-box;overflow:hidden;flex:1 0 120px;min-width:120px;max-width:120px}.col-name[data-v-e6d0e186]{flex:2 0 300px;min-width:300px;max-width:300px;justify-content:flex-start}.col-pre[data-v-e6d0e186],.col-assignee[data-v-e6d0e186]{flex:1 0 120px;min-width:120px;max-width:120px}.col-date[data-v-e6d0e186]{flex:1.2 0 140px;min-width:140px;max-width:140px}.col-hours[data-v-e6d0e186],.col-progress[data-v-e6d0e186]{flex:1 0 100px;min-width:100px;max-width:100px}.col-taskName[data-v-e6d0e186]{flex:2 0 300px;min-width:300px;max-width:300px;justify-content:flex-start}.col-predecessor[data-v-e6d0e186]{flex:1 0 120px;min-width:120px;max-width:120px}.col-startDate[data-v-e6d0e186],.col-endDate[data-v-e6d0e186]{flex:1.2 0 140px;min-width:140px;max-width:140px}.col-estimatedHours[data-v-e6d0e186],.col-actualHours[data-v-e6d0e186]{flex:1 0 100px;min-width:100px;max-width:100px}.col[data-v-e6d0e186]:last-child{border-right:none}.task-row[data-v-e6d0e186]{display:flex;border-bottom:1px solid var(--gantt-border-light);height:51px;box-sizing:border-box;background:var(--gantt-bg-primary);align-items:center;color:var(--gantt-text-secondary);cursor:pointer;transition:all .3s ease;transform:scale(1);transform-origin:5px center;z-index:1;position:relative}.task-row[data-v-e6d0e186]:hover{background-color:var(--gantt-bg-hover);transform:scale(1.02);box-shadow:0 4px 12px #00000026;z-index:10}.task-row-hovered[data-v-e6d0e186]{background-color:var(--gantt-bg-hover)!important;transform:scale(1.02)!important;box-shadow:0 4px 12px #00000026!important;z-index:10!important}.task-row.parent-task[data-v-e6d0e186]{background:var(--gantt-bg-tertiary);font-weight:600}.task-row.parent-task[data-v-e6d0e186]:hover{background:var(--gantt-bg-hover-parent, var(--gantt-bg-hover));transform:scale(1.02);box-shadow:0 6px 16px #0003;z-index:10}.task-row.parent-task.task-row-hovered[data-v-e6d0e186]{background:var(--gantt-bg-hover-parent, var(--gantt-bg-hover))!important;transform:scale(1.02)!important;box-shadow:0 6px 16px #0003!important;z-index:10!important}.milestone-group-row[data-v-e6d0e186]{border-left:3px solid var(--gantt-danger, #f56c6c);background:linear-gradient(90deg,var(--gantt-bg-tertiary) 0%,var(--gantt-bg-primary) 100%)}.milestone-group-row[data-v-e6d0e186]:hover{background:linear-gradient(90deg,var(--gantt-bg-hover-parent) 0%,var(--gantt-bg-hover) 100%);transform:scale(1.02);box-shadow:0 6px 16px #f56c6c4d,0 2px 8px #0000001a;z-index:10;border-left-color:var(--gantt-danger, #f56c6c);border-left-width:4px}.task-type-story[data-v-e6d0e186]{border-left:3px solid var(--gantt-primary, #409eff)}.task-type-task[data-v-e6d0e186]{border-left:3px solid var(--gantt-warning, #e6a23c)}.task-type-milestone[data-v-e6d0e186]{border-left:3px solid var(--gantt-danger, #f56c6c)}.task-type-story[data-v-e6d0e186]:hover{border-left:5px solid var(--gantt-primary, #409eff)}.task-type-task[data-v-e6d0e186]:hover{border-left:5px solid var(--gantt-warning, #e6a23c)}.task-type-milestone[data-v-e6d0e186]:hover{border-left:5px solid var(--gantt-danger, #f56c6c)}.task-row-hovered.task-type-story[data-v-e6d0e186]{border-left:5px solid var(--gantt-primary, #409eff)!important}.task-row-hovered.task-type-task[data-v-e6d0e186]{border-left:5px solid var(--gantt-warning, #e6a23c)!important}.task-row-hovered.task-type-milestone[data-v-e6d0e186]{border-left:5px solid var(--gantt-danger, #f56c6c)!important}html[data-theme=dark]{border-left-color:var(--gantt-primary, #7db4f0)}html[data-theme=dark]{border-left-color:var(--gantt-warning, #f0b83c)}html[data-theme=dark]{border-left-color:var(--gantt-danger, #f67c7c)}.collapse-btn[data-v-e6d0e186]:hover{background-color:var(--gantt-primary-light)}.collapse-btn svg[data-v-e6d0e186]{transition:transform .2s ease}.milestone-spacer[data-v-e6d0e186]{display:inline-flex;width:18px;height:18px;margin-right:4px}.leaf-spacer[data-v-e6d0e186]{display:inline-flex;width:20px;height:18px}.assignee-info[data-v-e6d0e186]{display:flex;align-items:center;gap:8px}.avatar[data-v-e6d0e186]{min-width:25px;min-height:25px;border-radius:50%;background:var(--gantt-primary);color:var(--gantt-text-white);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:500;border:2px solid var(--gantt-border-medium);box-sizing:border-box}.assignee-name[data-v-e6d0e186]{font-size:14px;color:var(--gantt-text-secondary)}.progress-value[data-v-e6d0e186]{font-weight:500;color:var(--gantt-text-secondary)}.progress-success[data-v-e6d0e186]{color:var(--gantt-success)}.progress-warning[data-v-e6d0e186]{color:var(--gantt-warning)}.progress-danger[data-v-e6d0e186]{color:var(--gantt-danger)}.milestone-item-icon[data-v-e6d0e186]{color:var(--gantt-danger, #f56c6c)}.milestone-empty-col[data-v-e6d0e186]{color:var(--gantt-text-disabled, #c0c4cc);border-right-color:var(--gantt-border-light)!important}.milestone-empty-col[data-v-e6d0e186]:after{content:"-"}html[data-theme=dark]{color:var(--gantt-danger, #f67c7c)}html[data-theme=dark]{color:var(--gantt-text-disabled, #606266);border-right-color:var(--gantt-border-light)!important}html[data-theme=dark]{box-shadow:0 4px 12px #ffffff1a,0 2px 8px #0000004d}html[data-theme=dark]{background-color:var(--gantt-bg-hover)!important;box-shadow:0 4px 12px #ffffff1a,0 2px 8px #0000004d!important}html[data-theme=dark]{box-shadow:0 6px 16px #ffffff26,0 2px 8px #0006}html[data-theme=dark]{background:var(--gantt-bg-hover-parent)!important;box-shadow:0 6px 16px #ffffff26,0 2px 8px #0006!important}html[data-theme=dark]{box-shadow:0 6px 16px #f67c7c66,0 2px 8px #ffffff1a}.task-row-dragging[data-v-e6d0e186]{opacity:.6!important;cursor:move!important}.task-row-drop-target.drop-after[data-v-e6d0e186]{border-bottom:3px solid var(--gantt-primary, #409eff)!important;background-color:#409eff0d!important}.task-row-drop-target.drop-child[data-v-e6d0e186]{border:2px solid var(--gantt-primary, #409eff)!important;background-color:#409eff0d!important}html[data-theme=dark]{background-color:#7db4f01a!important}.first-col-wrapper[data-v-e6d0e186]{display:flex;align-items:center;width:100%;box-sizing:border-box}.task-row .col[data-v-e6d0e186]{padding:0 10px}[data-v-40aec6fa]:root{--gantt-bg-primary: #ffffff;--gantt-bg-secondary: #f5f7fa;--gantt-bg-tertiary: #f9f9f9;--gantt-bg-hover: rgba(225, 228, 231, .2);--gantt-bg-hover-parent: rgba(245, 247, 250, .8);--gantt-bg-toolbar: #f8f9fa;--gantt-text-primary: #333333;--gantt-text-secondary: #8d9095;--gantt-text-muted: #909399;--gantt-text-white: #ffffff;--gantt-text-header: #333333;--gantt-border-light: #ebeef5;--gantt-border-medium: #dcdfe6;--gantt-border-dark: #c0c4cc;--gantt-border-color: #dcdfe6;--gantt-primary: #409eff;--gantt-primary-light: #ecf5ff;--gantt-success: #67c23a;--gantt-warning: #e6a23c;--gantt-warning-light: #f5dab1;--gantt-danger: #f56c6c;--gantt-danger-light: #fab6b6;--gantt-scrollbar-thumb: #c1c1c1;--gantt-scrollbar-thumb-hover: #a8a8a8}html[data-theme=dark][data-v-40aec6fa]{--gantt-bg-primary: #6b6b6b;--gantt-bg-secondary: #4b4b4b;--gantt-bg-tertiary: #7b7b7b;--gantt-bg-hover: rgba(180, 180, 180, .35);--gantt-bg-hover-parent: rgba(140, 140, 140, .8);--gantt-bg-toolbar: #5b5b5b;--gantt-text-primary: #ffffff;--gantt-text-secondary: #f8f8f8;--gantt-text-muted: #e0e0e0;--gantt-text-white: #ffffff;--gantt-text-parent: #ffffff;--gantt-text-header: #ffffff;--gantt-border-light: #888888;--gantt-border-medium: #666666;--gantt-border-dark: #999999;--gantt-border-color: #808080;--gantt-primary: #3399ff;--gantt-primary-light: #4d6699;--gantt-success: #66cc33;--gantt-warning: #ff9933;--gantt-warning-light: #cc7722;--gantt-danger: #ff4444;--gantt-danger-light: #cc3333;--gantt-scrollbar-thumb: #888888;--gantt-scrollbar-thumb-hover: #999999}.col[data-v-40aec6fa]{display:flex;align-items:center;justify-content:center;height:100%;border-right:1px solid var(--gantt-border-light);box-sizing:border-box;overflow:hidden;flex:1 0 120px;min-width:120px;max-width:120px}.col-name[data-v-40aec6fa]{flex:2 0 300px;min-width:300px;max-width:300px;justify-content:flex-start}.col-pre[data-v-40aec6fa],.col-assignee[data-v-40aec6fa]{flex:1 0 120px;min-width:120px;max-width:120px}.col-date[data-v-40aec6fa]{flex:1.2 0 140px;min-width:140px;max-width:140px}.col-hours[data-v-40aec6fa],.col-progress[data-v-40aec6fa]{flex:1 0 100px;min-width:100px;max-width:100px}.col-taskName[data-v-40aec6fa]{flex:2 0 300px;min-width:300px;max-width:300px;justify-content:flex-start}.col-predecessor[data-v-40aec6fa]{flex:1 0 120px;min-width:120px;max-width:120px}.col-startDate[data-v-40aec6fa],.col-endDate[data-v-40aec6fa]{flex:1.2 0 140px;min-width:140px;max-width:140px}.col-estimatedHours[data-v-40aec6fa],.col-actualHours[data-v-40aec6fa]{flex:1 0 100px;min-width:100px;max-width:100px}.col[data-v-40aec6fa]:last-child{border-right:none}.task-list[data-v-40aec6fa]{width:100%;height:100%;font-size:15px;color:var(--gantt-text-primary);background:var(--gantt-bg-primary);display:flex;flex-direction:column;overflow-x:auto;scrollbar-width:thin;scrollbar-color:var(--gantt-scrollbar-thumb) transparent}.task-list-header[data-v-40aec6fa]{display:flex;background:var(--gantt-bg-secondary);border-bottom:1px solid var(--gantt-border-medium);border-left:3px solid transparent;font-weight:700;padding:0;height:80px;align-items:center;width:max-content;flex-shrink:0;position:sticky;top:0;z-index:10}.task-list-header .col[data-v-40aec6fa]{justify-content:center;font-weight:700;background:var(--gantt-bg-secondary);color:var(--gantt-text-header);border-right-color:var(--gantt-border-medium);padding:0 10px;box-sizing:border-box}.task-list-body[data-v-40aec6fa]{width:max-content;background:var(--gantt-bg-primary);flex:1;overflow-x:hidden;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--gantt-scrollbar-thumb) transparent}.task-list-body-spacer[data-v-40aec6fa]{width:100%}.task-list-body[data-v-40aec6fa]::-webkit-scrollbar{width:8px;height:8px}.task-list-body[data-v-40aec6fa]::-webkit-scrollbar-track{background:transparent}.task-list-body[data-v-40aec6fa]::-webkit-scrollbar-thumb{background-color:var(--gantt-scrollbar-thumb);border-radius:4px;border:2px solid transparent;background-clip:content-box}.task-list-body[data-v-40aec6fa]::-webkit-scrollbar-thumb:hover{background-color:var(--gantt-scrollbar-thumb-hover)}.task-list-body[data-v-40aec6fa]::-webkit-scrollbar-corner{background:transparent}.link-anchor[data-v-9f128e78]{position:absolute;top:50%;width:8px;height:8px;border-radius:50%;background:#409eff;border:2px solid #fff;cursor:pointer;opacity:0;transition:opacity .2s,transform .2s;z-index:200;transform:translateY(-50%) scale(1)}.link-anchor.anchor-predecessor[data-v-9f128e78]{left:-4px}.link-anchor.anchor-successor[data-v-9f128e78]{right:-4px}.link-anchor.visible[data-v-9f128e78]{opacity:1}.link-anchor[data-v-9f128e78]:hover{transform:translateY(-50%) scale(1.3);box-shadow:0 0 8px #409eff99;opacity:1!important}.link-anchor.drag-source[data-v-9f128e78]{opacity:1;transform:translateY(-50%) scale(1)}.link-anchor.drag-target[data-v-9f128e78]{opacity:1;transform:translateY(-50%) scale(1.5);animation:pulse-9f128e78 .8s infinite}.link-anchor.valid-target[data-v-9f128e78]{background:#67c23a;border-color:#fff}.link-anchor.invalid-target[data-v-9f128e78]{background:#f56c6c;border-color:#fff}.anchor-tooltip[data-v-9f128e78]{position:absolute;bottom:100%;left:50%;transform:translate(-50%) translateY(-4px);padding:4px 8px;background:#000c;color:#fff;font-size:12px;white-space:nowrap;border-radius:4px;opacity:0;pointer-events:none;transition:opacity .2s}.link-anchor:hover .anchor-tooltip[data-v-9f128e78]{opacity:1}@keyframes pulse-9f128e78{0%,to{box-shadow:0 0 8px #409eff99}50%{box-shadow:0 0 16px #409eff}}html[data-theme=dark]{border-color:#1a1a1a}html[data-theme=dark]{background:#ffffffe6;color:#1a1a1a}.task-bar[data-v-7b051790]{position:absolute;border-radius:4px;-webkit-user-select:none;user-select:none;box-shadow:0 2px 8px #00000026;transition:box-shadow .2s,transform .3s,filter .3s;z-index:100;border:2px solid;overflow:visible}.task-bar[data-v-7b051790]:hover{box-shadow:0 4px 12px #0003;cursor:pointer}.task-bar.completed[data-v-7b051790]{cursor:pointer!important}.task-bar.completed[data-v-7b051790]:hover{box-shadow:0 2px 8px #00000026;cursor:pointer}.task-bar.dragging[data-v-7b051790]{opacity:.8;z-index:1000}.task-bar.resizing[data-v-7b051790]{z-index:1000}.task-bar.dimmed[data-v-7b051790]{opacity:.35!important;filter:grayscale(.3)!important;transition:all .3s ease!important}.task-bar.highlighted[data-v-7b051790]{z-index:1002!important;box-shadow:0 8px 24px #409eff80,0 6px 16px #0000004d!important;transform:translateY(-5px) scale(1.05)!important;transition:all .3s ease!important;cursor:grab!important}.task-bar.highlighted .task-bar-content[data-v-7b051790]{font-weight:700!important}.task-bar.primary-highlight[data-v-7b051790]{z-index:1003!important;box-shadow:0 12px 32px #409eff99,0 8px 20px #00000059!important;transform:translateY(-8px) scale(1.08)!important;transition:all .3s ease!important;cursor:grab!important}.task-bar.primary-highlight .task-bar-content[data-v-7b051790]{font-weight:700!important}.task-bar.parent-task[data-v-7b051790]{position:relative;border-radius:0;margin-bottom:20px;height:10px!important;border:none;background:#409eff!important;box-shadow:none;top:50%!important;transform:translateY(-50%);cursor:pointer!important;overflow:visible}.task-bar.parent-task.highlighted[data-v-7b051790]{box-shadow:0 8px 24px #409eff80,0 6px 16px #0000004d!important;filter:brightness(1.2) drop-shadow(0 0 8px rgba(64,158,255,.4))!important;transform:translateY(-50%) translateY(-5px) scale(1.05)!important}.task-bar.parent-task.primary-highlight[data-v-7b051790]{box-shadow:0 12px 32px #409eff99,0 8px 20px #00000059!important;filter:brightness(1.25) drop-shadow(0 0 12px rgba(64,158,255,.6))!important;transform:translateY(-50%) translateY(-8px) scale(1.08)!important}.task-bar.parent-task .parent-label[data-v-7b051790]{position:absolute;top:-8px;left:50%;transform:translate(-50%);background:#409eff;color:#fff;padding:4px 10px;border-radius:4px;font-size:11px;font-weight:600;white-space:nowrap;z-index:20}.task-bar.parent-task[data-v-7b051790]:before{content:"";position:absolute;top:10px;left:0;width:0;height:0;border-right:6px solid transparent;border-top:10px solid #409eff;z-index:15}.task-bar.parent-task[data-v-7b051790]:after{content:"";position:absolute;top:10px;right:0;width:0;height:0;border-left:6px solid transparent;border-top:10px solid #409eff;z-index:15}.progress-bar[data-v-7b051790]{position:absolute;top:0;left:0;height:100%;opacity:.3;transition:width .3s ease}.task-bar-content[data-v-7b051790]{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:0 8px;font-size:12px;font-weight:500;text-align:center;overflow:visible;position:relative;z-index:1}.task-avatar[data-v-7b051790]{position:absolute;left:calc(var(--handle-width, 5px) + 3px);top:50%;transform:translateY(-50%);width:22px;height:22px;border-radius:50%;overflow:hidden;background:#f0f0f0;border:2px solid rgba(255,255,255,.9);box-shadow:0 1px 3px #0003;z-index:15;pointer-events:none;flex-shrink:0;display:flex;align-items:center;justify-content:center}.task-avatar img[data-v-7b051790]{width:100%;height:100%;object-fit:cover;display:block}.task-avatar.avatar-default[data-v-7b051790]{background:var(--gantt-bg-tertiary, #e0e0e0);color:var(--gantt-text-tertiary, #9e9e9e)}.task-avatar .avatar-text[data-v-7b051790]{font-size:11px;font-weight:600;color:var(--gantt-text-white, #ffffff);background:var(--gantt-primary-color, #409eff);width:100%;height:100%;display:flex;align-items:center;justify-content:center;border-radius:50%}.task-avatar .avatar-icon[data-v-7b051790]{width:14px;height:14px;color:var(--gantt-text-tertiary, #9e9e9e)}.task-avatar.avatar-outside[data-v-7b051790]{left:-12px;z-index:20;border-width:2px;box-shadow:0 2px 6px #0000004d}.task-bar-content[data-v-7b051790]:has(.task-avatar){padding-left:36px}.task-bar-content[data-v-7b051790]:has(.task-avatar.avatar-outside){padding-left:8px}.task-name[data-v-7b051790]{white-space:nowrap;overflow:visible;line-height:1.2;font-size:12px;font-weight:700;z-index:10}.task-progress[data-v-7b051790]{opacity:.9;font-size:11px;font-weight:700;z-index:10}.resize-handle[data-v-7b051790]{position:absolute;top:0;height:100%;cursor:ew-resize;background:#0000001a;border-radius:2px;transition:all .2s;z-index:2}.resize-handle[data-v-7b051790]:hover{background:#00000040;transform:scaleX(1.2)}.resize-handle-left[data-v-7b051790]{left:0}.resize-handle-right[data-v-7b051790]{right:0}.task-bar.overflow-effect .resize-handle[data-v-7b051790]{z-index:20;background:#00000026}.task-bar.overflow-effect .resize-handle[data-v-7b051790]:hover{background:#0000004d;transform:scaleX(1.3)}.task-bar.overflow-effect .resize-handle-left[data-v-7b051790]{left:0}.task-bar.overflow-effect .resize-handle-right[data-v-7b051790]{right:0}.bubble-indicator[data-v-7b051790]{position:absolute;top:50%;width:8px;height:16px;z-index:15;cursor:pointer;border:2px solid;transform:translateY(-50%);box-shadow:0 2px 8px #00000026,0 1px 3px #0000004d;transition:all .3s cubic-bezier(.4,0,.2,1)}.bubble-left[data-v-7b051790]{border-radius:0 8px 8px 0;border-left:none;transform:translateY(-50%)}.bubble-right[data-v-7b051790]{border-radius:8px 0 0 8px;border-right:none;transform:translateY(-50%)}.bubble-indicator[data-v-7b051790]:hover{transform:translateY(-50%) scale(1.2);box-shadow:0 4px 12px #0003,0 2px 6px #0006}.bubble-left[data-v-7b051790]:hover,.bubble-right[data-v-7b051790]:hover{transform:translateY(-50%) scale(1.2)}@keyframes morphToLeftSemiCircle-7b051790{0%{width:60px;height:30px;border-radius:4px 0 0 4px;border-right:2px solid;border-left:none;opacity:.8;transform:translateY(-50%)}30%{width:30px;height:28px;border-radius:6px 0 0 6px;opacity:.9;transform:translateY(-50%)}70%{width:12px;height:20px;border-radius:0 10px 10px 0;border-right:2px solid;border-left:none;opacity:1;transform:translateY(-50%)}to{width:8px;height:16px;border-radius:0 8px 8px 0;border-right:2px solid;border-left:none;opacity:1;transform:translateY(-50%)}}@keyframes morphToRightSemiCircle-7b051790{0%{width:60px;height:30px;border-radius:0 4px 4px 0;border-left:2px solid;border-right:none;opacity:.8;transform:translateY(-50%)}30%{width:30px;height:28px;border-radius:0 6px 6px 0;opacity:.9;transform:translateY(-50%)}70%{width:12px;height:20px;border-radius:10px 0 0 10px;border-left:2px solid;border-right:none;opacity:1;transform:translateY(-50%)}to{width:8px;height:16px;border-radius:8px 0 0 8px;border-left:2px solid;border-right:none;opacity:1;transform:translateY(-50%)}}@keyframes semiCirclePulse-7b051790{0%{opacity:.8;transform:translateY(-50%) scale(1);box-shadow:0 2px 8px #00000026}50%{opacity:1;transform:translateY(-50%) scale(1.1);box-shadow:0 4px 12px #00000040}to{opacity:.8;transform:translateY(-50%) scale(1);box-shadow:0 2px 8px #00000026}}@keyframes leftSemiCirclePulse-7b051790{0%{opacity:.8;transform:translateY(-50%) scale(1);box-shadow:0 2px 8px #00000026}50%{opacity:1;transform:translateY(-50%) scale(1.1);box-shadow:0 4px 12px #00000040}to{opacity:.8;transform:translateY(-50%) scale(1);box-shadow:0 2px 8px #00000026}}@keyframes rightSemiCirclePulse-7b051790{0%{opacity:.8;transform:translateY(-50%) scale(1);box-shadow:0 2px 8px #00000026}50%{opacity:1;transform:translateY(-50%) scale(1.1);box-shadow:0 4px 12px #00000040}to{opacity:.8;transform:translateY(-50%) scale(1);box-shadow:0 2px 8px #00000026}}.bubble-animation-morphToSemiCircle[data-v-7b051790]{animation:semiCirclePulse-7b051790 2s ease-in-out infinite}.bubble-left.bubble-animation-morphToSemiCircle[data-v-7b051790]{animation:morphToLeftSemiCircle-7b051790 .8s cubic-bezier(.25,.46,.45,.94) forwards,leftSemiCirclePulse-7b051790 2s ease-in-out .8s infinite}.bubble-right.bubble-animation-morphToSemiCircle[data-v-7b051790]{animation:morphToRightSemiCircle-7b051790 .8s cubic-bezier(.25,.46,.45,.94) forwards,rightSemiCirclePulse-7b051790 2s ease-in-out .8s infinite}.task-tooltip[data-v-7b051790]{position:fixed;background:#000000e6;color:#fff;padding:12px;border-radius:8px;font-size:12px;z-index:9999999999;max-width:250px;box-shadow:0 8px 24px #0006,0 4px 12px #0000004d;pointer-events:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1px solid rgba(255,255,255,.1)}.tooltip-title[data-v-7b051790]{font-weight:700;font-size:13px;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid rgba(255,255,255,.2);color:#fff}.tooltip-content[data-v-7b051790]{display:flex;flex-direction:column;gap:4px}.tooltip-row[data-v-7b051790]{display:flex;justify-content:space-between;align-items:center;min-height:18px}.tooltip-label[data-v-7b051790]{opacity:.8;min-width:60px;color:#e5e5e5}.tooltip-value[data-v-7b051790]{font-weight:600;text-align:right;color:#fff}.drag-tooltip[data-v-7b051790]{position:fixed;background:#007bfff2;color:#fff;padding:8px 12px;border-radius:6px;font-size:12px;font-weight:500;z-index:999999999;box-shadow:0 2px 12px #007bff66;pointer-events:none;border:1px solid rgba(255,255,255,.2);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.drag-tooltip .tooltip-row[data-v-7b051790]{display:flex;justify-content:space-between;align-items:center;margin-bottom:2px}.drag-tooltip .tooltip-row[data-v-7b051790]:last-child{margin-bottom:0}.drag-tooltip .tooltip-label[data-v-7b051790]{opacity:.9;min-width:55px;font-size:11px}.drag-tooltip .tooltip-value[data-v-7b051790]{font-weight:600;text-align:right;font-size:11px;margin-left:8px}.sticky-text[data-v-7b051790]{position:absolute;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;line-height:1.2;z-index:10}html[data-theme=dark]{border-color:#111827!important;box-shadow:0 4px 12px #000000b3,0 2px 4px #0000004d!important}html[data-theme=dark]{box-shadow:0 6px 20px #000c,0 4px 8px #0006!important;transform:translateY(-2px);transition:all .2s ease}html[data-theme=dark]{background:#070a0ffa!important;color:#f9fafb!important;box-shadow:0 4px 12px #0009!important}html[data-theme=dark]{background:linear-gradient(135deg,#1e40af,#1e3a8a)!important;border-color:#1e3a8a!important}html[data-theme=dark]{background:linear-gradient(135deg,#c2410c,#9a3412)!important;border-color:#9a3412!important}html[data-theme=dark]{background:linear-gradient(135deg,#14532d,#16a34a)!important;border-color:#14532d!important}html[data-theme=dark]{background:linear-gradient(135deg,#991b1b,#dc2626)!important;border-color:#991b1b!important}html[data-theme=dark]{background:linear-gradient(135deg,#581c87,#7c3aed)!important;border-color:#581c87!important}html[data-theme=dark]{background:#fff3!important}html[data-theme=dark]{background:#fffc!important}html[data-theme=dark]{background:#ffffff1a!important}html[data-theme=dark]{background:#ffffff4d!important}.task-bar.week-view.short-task-bar[data-v-7b051790]{position:relative;overflow:visible}.task-bar.overflow-effect .task-bar-content[data-v-7b051790]{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:0 8px;font-size:12px;font-weight:500;text-align:center;overflow:visible;position:relative;z-index:10;pointer-events:auto}.task-bar.overflow-effect .task-name[data-v-7b051790]{white-space:nowrap;overflow:visible;line-height:1.2;font-size:12px;font-weight:700;z-index:15;pointer-events:none;min-width:max-content}.task-bar.overflow-effect .task-progress[data-v-7b051790]{opacity:.9;font-size:11px;font-weight:700;z-index:16;pointer-events:none;padding:1px 3px;border-radius:2px}.task-bar.week-view[data-v-7b051790]{min-width:4px;border-width:1px;border-radius:2px}html[data-theme=dark]{background:#ffffff26}html[data-theme=dark]{background:#ffffff4d}html[data-theme=dark]{background:#000000e6;color:#fff}html[data-theme=dark]{border-color:var(--gantt-border-light, #555555)}html[data-theme=dark]{border-color:#ffffff4d;box-shadow:0 1px 3px #00000080}html[data-theme=dark]{background:var(--gantt-bg-tertiary, #4a5568);color:var(--gantt-text-tertiary, #718096)}html[data-theme=dark]{color:var(--gantt-text-tertiary, #718096)}html[data-theme=dark]{border-color:#fff6;box-shadow:0 2px 8px #000000b3}[data-v-7405b38c]:root{--gantt-bg-primary: #ffffff;--gantt-bg-secondary: #f5f7fa;--gantt-bg-tertiary: #f9f9f9;--gantt-bg-hover: rgba(225, 228, 231, .2);--gantt-bg-hover-parent: rgba(245, 247, 250, .8);--gantt-bg-toolbar: #f8f9fa;--gantt-text-primary: #333333;--gantt-text-secondary: #8d9095;--gantt-text-muted: #909399;--gantt-text-white: #ffffff;--gantt-text-header: #333333;--gantt-border-light: #ebeef5;--gantt-border-medium: #dcdfe6;--gantt-border-dark: #c0c4cc;--gantt-border-color: #dcdfe6;--gantt-primary: #409eff;--gantt-primary-light: #ecf5ff;--gantt-success: #67c23a;--gantt-warning: #e6a23c;--gantt-warning-light: #f5dab1;--gantt-danger: #f56c6c;--gantt-danger-light: #fab6b6;--gantt-scrollbar-thumb: #c1c1c1;--gantt-scrollbar-thumb-hover: #a8a8a8}html[data-theme=dark][data-v-7405b38c]{--gantt-bg-primary: #6b6b6b;--gantt-bg-secondary: #4b4b4b;--gantt-bg-tertiary: #7b7b7b;--gantt-bg-hover: rgba(180, 180, 180, .35);--gantt-bg-hover-parent: rgba(140, 140, 140, .8);--gantt-bg-toolbar: #5b5b5b;--gantt-text-primary: #ffffff;--gantt-text-secondary: #f8f8f8;--gantt-text-muted: #e0e0e0;--gantt-text-white: #ffffff;--gantt-text-parent: #ffffff;--gantt-text-header: #ffffff;--gantt-border-light: #888888;--gantt-border-medium: #666666;--gantt-border-dark: #999999;--gantt-border-color: #808080;--gantt-primary: #3399ff;--gantt-primary-light: #4d6699;--gantt-success: #66cc33;--gantt-warning: #ff9933;--gantt-warning-light: #cc7722;--gantt-danger: #ff4444;--gantt-danger-light: #cc3333;--gantt-scrollbar-thumb: #888888;--gantt-scrollbar-thumb-hover: #999999}.milestone[data-v-7405b38c]{position:absolute;z-index:120;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;cursor:pointer;-webkit-user-select:none;user-select:none}.milestone.dimmed[data-v-7405b38c]{opacity:.35!important;filter:grayscale(.3)!important;transition:all .3s ease!important}.milestone svg[data-v-7405b38c]{filter:drop-shadow(0 0 8px var(--gantt-danger, #f56c6c));animation:milestone-glow-7405b38c 2s ease-in-out infinite alternate}@keyframes milestone-glow-7405b38c{0%{filter:drop-shadow(0 0 4px var(--gantt-danger, #f56c6c))}to{filter:drop-shadow(0 0 12px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 20px rgba(245,108,108,.3))}}.milestone:hover svg[data-v-7405b38c]{filter:drop-shadow(0 0 16px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 24px rgba(245,108,108,.4));animation:milestone-glow-intense-7405b38c 1.5s ease-in-out infinite alternate}@keyframes milestone-glow-intense-7405b38c{0%{filter:drop-shadow(0 0 12px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 20px rgba(245,108,108,.4))}to{filter:drop-shadow(0 0 20px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 32px rgba(245,108,108,.6))}}.milestone-label[data-v-7405b38c]{font-size:12px;font-weight:700;color:var(--gantt-text-primary, #222);white-space:nowrap;z-index:10}.milestone-label-right[data-v-7405b38c]{margin-left:5px;align-self:center}.milestone-label[style*="position: absolute"][data-v-7405b38c]{background:#ffffffe6;padding:2px 6px;border-radius:4px;box-shadow:0 2px 4px #0000001a;border:1px solid rgba(245,108,108,.2);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.rocket-emoji[data-v-7405b38c]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:20px;line-height:1;transform:rotate(-45deg);transition:transform .3s ease}.milestone:hover .rocket-emoji[data-v-7405b38c]{transform:rotate(-45deg) scale(1.1)}html[data-theme=dark]{color:var(--gantt-text-white, #ffffff)!important}html[data-theme=dark]{background:#1e1e1ee6!important;border-color:#f67c7c4d!important;color:#fff!important}html[data-theme=dark]{filter:drop-shadow(0 0 8px var(--gantt-danger, #f67c7c));animation:milestone-glow-dark-7405b38c 2s ease-in-out infinite alternate}html[data-theme=dark]{filter:drop-shadow(0 0 16px var(--gantt-danger, #f67c7c)) drop-shadow(0 0 24px rgba(246,124,124,.4));animation:milestone-glow-intense-dark-7405b38c 1.5s ease-in-out infinite alternate}@keyframes milestone-glow-dark-7405b38c{0%{filter:drop-shadow(0 0 4px var(--gantt-danger, #f67c7c))}to{filter:drop-shadow(0 0 12px var(--gantt-danger, #f67c7c)) drop-shadow(0 0 20px rgba(246,124,124,.3))}}@keyframes milestone-glow-intense-dark-7405b38c{0%{filter:drop-shadow(0 0 12px var(--gantt-danger, #f67c7c)) drop-shadow(0 0 20px rgba(246,124,124,.4))}to{filter:drop-shadow(0 0 20px var(--gantt-danger, #f67c7c)) drop-shadow(0 0 32px rgba(246,124,124,.6))}}.milestone.dragging[data-v-7405b38c]{z-index:1000;opacity:.8;transform:scale(1.1);cursor:grabbing}.milestone.dragging svg[data-v-7405b38c]{filter:drop-shadow(0 0 20px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 32px rgba(245,108,108,.6));animation:none}html[data-theme=dark]{filter:drop-shadow(0 0 20px var(--gantt-danger, #f67c7c)) drop-shadow(0 0 32px rgba(246,124,124,.6))}.milestone-sticky svg[data-v-7405b38c]{z-index:150;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1)}.milestone-sticky-left svg[data-v-7405b38c]{animation:milestone-glow-sticky-7405b38c 3s ease-in-out infinite alternate}.milestone-sticky-right svg[data-v-7405b38c]{animation:milestone-glow-sticky-7405b38c 3s ease-in-out infinite alternate}.milestone-sticky-left svg[style*=clip-path][data-v-7405b38c],.milestone-sticky-right svg[style*=clip-path][data-v-7405b38c]{animation:none;filter:none}@keyframes milestone-glow-sticky-7405b38c{0%{filter:drop-shadow(0 0 6px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 12px rgba(245,108,108,.4))}to{filter:drop-shadow(0 0 10px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 20px rgba(245,108,108,.6))}}html[data-theme=dark]{animation:milestone-glow-sticky-dark-7405b38c 3s ease-in-out infinite alternate}html[data-theme=dark]{animation:none;filter:none}@keyframes milestone-glow-sticky-dark-7405b38c{0%{filter:drop-shadow(0 0 6px var(--gantt-danger, #f67c7c)) drop-shadow(0 0 12px rgba(246,124,124,.4))}to{filter:drop-shadow(0 0 10px var(--gantt-danger, #f67c7c)) drop-shadow(0 0 20px rgba(246,124,124,.6))}}.milestone-sticky svg[style*=clip-path][data-v-7405b38c]{transition:clip-path .4s cubic-bezier(.4,0,.2,1),transform .3s cubic-bezier(.4,0,.2,1),filter .3s ease-in-out}.milestone-sticky-left svg[style*=clip-path][data-v-7405b38c]{transform-origin:100% 50%}.milestone-sticky-right svg[style*=clip-path][data-v-7405b38c]{transform-origin:0% 50%}.milestone-sticky svg[style*=clip-path][data-v-7405b38c]:hover{transform:scale(1.15);filter:drop-shadow(0 0 18px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 30px rgba(245,108,108,.8))}.milestone-sticky.milestone-pushing svg[data-v-7405b38c]{transform:scale(1.1);filter:drop-shadow(0 0 15px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 25px rgba(245,108,108,.7))}.milestone-sticky-left svg[data-v-7405b38c],.milestone-sticky-right svg[data-v-7405b38c]{animation:milestone-glow-sticky-enhanced-7405b38c 2s ease-in-out infinite alternate}@keyframes milestone-glow-sticky-enhanced-7405b38c{0%{filter:drop-shadow(0 0 8px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 16px rgba(245,108,108,.5))}to{filter:drop-shadow(0 0 12px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 24px rgba(245,108,108,.7)) drop-shadow(0 0 32px rgba(245,108,108,.3))}}.milestone-tooltip[data-v-7405b38c]{position:fixed;background:#000000e6;color:#fff;padding:8px 12px;border-radius:6px;font-size:12px;z-index:10000;max-width:300px;box-shadow:0 4px 12px #0000004d,0 2px 6px #0003;pointer-events:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.milestone-tooltip .tooltip-content[data-v-7405b38c]{font-weight:600;color:#fff;line-height:1.4}html[data-theme=dark]{background:#1e1e1ef2!important;color:#fff!important}.milestone-pushing[data-v-7405b38c]{animation:milestone-pushing-pulse-7405b38c .6s ease-in-out}@keyframes milestone-pushing-pulse-7405b38c{0%{transform:scale(1)}50%{transform:scale(1.1);filter:drop-shadow(0 0 12px var(--gantt-danger, #f56c6c)) drop-shadow(0 0 20px rgba(245,108,108,.6))}to{transform:scale(1)}}.milestone-pushed-out[data-v-7405b38c]{opacity:0;transform:scale(.6) translateY(-10px);transition:all .4s cubic-bezier(.4,0,.2,1);pointer-events:none}.milestone-sticky svg[data-v-7405b38c]:hover{transform:scale(1.05);cursor:pointer}.milestone-sticky svg[data-v-7405b38c]:active{transform:scale(.95)}.gantt-links-canvas[data-v-7c939e26],.link-drag-guide-canvas[data-v-b2173cd8]{display:block;background:transparent;opacity:1}[data-v-57c6fd2e]:root{--gantt-bg-primary: #ffffff;--gantt-bg-secondary: #f5f7fa;--gantt-bg-tertiary: #f9f9f9;--gantt-bg-hover: rgba(225, 228, 231, .2);--gantt-bg-hover-parent: rgba(245, 247, 250, .8);--gantt-bg-toolbar: #f8f9fa;--gantt-text-primary: #333333;--gantt-text-secondary: #8d9095;--gantt-text-muted: #909399;--gantt-text-white: #ffffff;--gantt-text-header: #333333;--gantt-border-light: #ebeef5;--gantt-border-medium: #dcdfe6;--gantt-border-dark: #c0c4cc;--gantt-border-color: #dcdfe6;--gantt-primary: #409eff;--gantt-primary-light: #ecf5ff;--gantt-success: #67c23a;--gantt-warning: #e6a23c;--gantt-warning-light: #f5dab1;--gantt-danger: #f56c6c;--gantt-danger-light: #fab6b6;--gantt-scrollbar-thumb: #c1c1c1;--gantt-scrollbar-thumb-hover: #a8a8a8}html[data-theme=dark][data-v-57c6fd2e]{--gantt-bg-primary: #6b6b6b;--gantt-bg-secondary: #4b4b4b;--gantt-bg-tertiary: #7b7b7b;--gantt-bg-hover: rgba(180, 180, 180, .35);--gantt-bg-hover-parent: rgba(140, 140, 140, .8);--gantt-bg-toolbar: #5b5b5b;--gantt-text-primary: #ffffff;--gantt-text-secondary: #f8f8f8;--gantt-text-muted: #e0e0e0;--gantt-text-white: #ffffff;--gantt-text-parent: #ffffff;--gantt-text-header: #ffffff;--gantt-border-light: #888888;--gantt-border-medium: #666666;--gantt-border-dark: #999999;--gantt-border-color: #808080;--gantt-primary: #3399ff;--gantt-primary-light: #4d6699;--gantt-success: #66cc33;--gantt-warning: #ff9933;--gantt-warning-light: #cc7722;--gantt-danger: #ff4444;--gantt-danger-light: #cc3333;--gantt-scrollbar-thumb: #888888;--gantt-scrollbar-thumb-hover: #999999}.timeline[data-v-57c6fd2e]{height:100%;display:flex;flex-direction:column;background:var(--gantt-bg-primary, #ffffff);overflow-x:auto;overflow-y:auto;width:100%;cursor:grab;transition:background-color .3s ease;position:relative;scrollbar-width:thin;scrollbar-color:var(--gantt-scrollbar-thumb) transparent}.timeline[data-v-57c6fd2e]:active{cursor:grabbing}.timeline[data-v-57c6fd2e]::-webkit-scrollbar{width:8px;height:8px}.timeline[data-v-57c6fd2e]::-webkit-scrollbar-track{background:transparent}.timeline[data-v-57c6fd2e]::-webkit-scrollbar-thumb{background-color:var(--gantt-scrollbar-thumb);border-radius:4px;border:2px solid transparent;background-clip:content-box}.timeline[data-v-57c6fd2e]::-webkit-scrollbar-thumb:hover{background-color:var(--gantt-scrollbar-thumb-hover)}.timeline[data-v-57c6fd2e]::-webkit-scrollbar-corner{background:transparent}.timeline-header[data-v-57c6fd2e]{height:80px;background:var(--gantt-bg-secondary);width:fit-content;display:flex;flex-direction:column}.timeline-header-row[data-v-57c6fd2e]{display:flex;height:50%;border-bottom:1px solid var(--gantt-border-medium);min-width:fit-content}.timeline-header-row[data-v-57c6fd2e]:last-child{border-bottom:none}.year-month-row[data-v-57c6fd2e]{align-items:center;position:relative}.days-row[data-v-57c6fd2e]{align-items:center}.timeline-month[data-v-57c6fd2e]{display:flex;align-items:center;justify-content:center;border-right:1px solid var(--gantt-border-medium);box-sizing:border-box;height:100%;min-width:60px}.timeline-month[data-v-57c6fd2e]:last-child{border-right:none}.year-month-label[data-v-57c6fd2e]{font-size:14px;font-weight:600;color:var(--gantt-text-header);text-align:center}.timeline-month-days[data-v-57c6fd2e]{display:flex;height:100%;border-right:1px solid var(--gantt-border-medium);box-sizing:border-box;min-width:120px}.timeline-month-days[data-v-57c6fd2e]:last-child{border-right:none}.timeline-day[data-v-57c6fd2e]{display:flex;align-items:center;justify-content:center;border-right:1px solid var(--gantt-border-light);width:30px;box-sizing:border-box;border-bottom:1px solid var(--gantt-border-medium);transition:background-color .2s}.timeline-day[data-v-57c6fd2e]:last-child{border-right:none}.timeline-day.today[data-v-57c6fd2e]{background-color:var(--gantt-primary);color:var(--gantt-text-white)}.timeline-day.today .day-label[data-v-57c6fd2e]{color:var(--gantt-text-white);font-weight:600}.timeline-day.weekend[data-v-57c6fd2e]{background-color:var(--gantt-bg-secondary);opacity:.6}.timeline-day.weekend .day-label[data-v-57c6fd2e]{color:var(--gantt-border-dark)}.day-label[data-v-57c6fd2e]{font-size:12px;color:var(--gantt-text-header);text-align:center}.timeline-month-weeks[data-v-57c6fd2e]{display:flex;height:100%;border-right:1px solid var(--gantt-border-medium);box-sizing:border-box;min-width:60px}.timeline-month-weeks[data-v-57c6fd2e]:last-child{border-right:none}.timeline-week[data-v-57c6fd2e]{display:flex;flex-direction:column;align-items:center;justify-content:center;border-right:1px solid var(--gantt-border-light);width:60px;box-sizing:border-box;border-bottom:1px solid var(--gantt-border-medium);transition:background-color .2s;position:relative}.timeline-week[data-v-57c6fd2e]:last-child{border-right:none}.timeline-week.today[data-v-57c6fd2e]{background-color:var(--gantt-primary);color:var(--gantt-text-white)}.timeline-week.today .week-label[data-v-57c6fd2e]{color:var(--gantt-text-white);font-weight:600}.week-label[data-v-57c6fd2e]{font-size:12px;color:var(--gantt-text-header);text-align:center;margin-bottom:2px}.week-sub-days[data-v-57c6fd2e]{width:100%;height:100%;position:absolute;top:0;left:0;pointer-events:none}.month-first-flag[data-v-57c6fd2e]{position:absolute;bottom:-40px;z-index:1;pointer-events:none;display:flex;flex-direction:column;align-items:center}.flag-content[data-v-57c6fd2e]{background-color:var(--gantt-primary, #409eff);color:#fff;font-size:10px;font-weight:600;padding:1px 4px;border-radius:2px;text-align:center;min-width:12px;box-shadow:0 1px 3px #0003;order:1}.flag-pole[data-v-57c6fd2e]{width:1px;height:50px;background-color:var(--gantt-primary, #409eff);order:2}html[data-theme=dark]{background-color:var(--gantt-primary-light, #66b1ff)}html[data-theme=dark]{background-color:var(--gantt-primary-light, #66b1ff);box-shadow:0 1px 3px #0006}.month-week-columns[data-v-57c6fd2e]{display:flex;position:relative}.week-column[data-v-57c6fd2e]{position:relative;border-right:1px solid var(--gantt-border-light, #e4e7ed);box-sizing:border-box;display:grid;grid-template-columns:repeat(7,1fr);gap:0}.week-column[data-v-57c6fd2e]:last-child{border-right:none}.week-column.today[data-v-57c6fd2e]{background-color:#409eff1a}.sub-day-column[data-v-57c6fd2e]{position:relative;box-sizing:border-box}.sub-day-column.weekend[data-v-57c6fd2e]{background-color:var(--gantt-bg-secondary, #f5f7fa);opacity:.6}.sub-day-column.today[data-v-57c6fd2e]{background-color:var(--gantt-primary-light, rgba(64, 158, 255, .2))}.timeline-body[data-v-57c6fd2e]{flex:1;overflow-x:hidden;overflow-y:auto;position:relative;width:fit-content;background:var(--gantt-bg-primary, #ffffff);cursor:grab;transition:background-color .3s ease;scrollbar-width:none;-ms-overflow-style:none}.timeline-body[data-v-57c6fd2e]::-webkit-scrollbar{display:none}.timeline-body-content[data-v-57c6fd2e]{width:100%;height:100%;position:relative;background:var(--gantt-bg-primary, #ffffff);transition:background-color .3s ease}.task-bar-container[data-v-57c6fd2e]{position:absolute;top:0;left:0;width:100%;z-index:100;pointer-events:none}.task-rows[data-v-57c6fd2e]{position:relative;width:100%}.task-row[data-v-57c6fd2e]{position:absolute;left:0;width:100%;height:51px;pointer-events:auto;z-index:11;transition:background-color .2s ease}.timeline-body .task-row-hovered[data-v-57c6fd2e]{background-color:var(--gantt-bg-hover);z-index:11}.timeline-body .task-row-hovered[data-v-57c6fd2e]>*{pointer-events:auto}.task-bar-placeholder[data-v-57c6fd2e]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:#909399;pointer-events:auto}.placeholder-text[data-v-57c6fd2e]{font-size:18px;font-weight:600;margin-bottom:8px}.placeholder-desc[data-v-57c6fd2e]{font-size:14px;color:#c0c4cc}.day-columns[data-v-57c6fd2e]{display:flex;border-right:1px solid var(--gantt-border-light, #ebeef5);box-sizing:border-box;min-width:120px}.day-columns[data-v-57c6fd2e]:last-child{border-right:none}.month-day-columns[data-v-57c6fd2e]{display:flex;border-right:1px dashed var(--gantt-border-light, #ebeef5);box-sizing:border-box;min-width:120px}.month-day-columns[data-v-57c6fd2e]:last-child{border-right:none}.day-column[data-v-57c6fd2e]{width:30px;border-right:1px dashed var(--gantt-border-light, #f0f0f0);box-sizing:border-box;transition:background-color .2s;position:relative}.day-column[data-v-57c6fd2e]:last-child{border-right:none}.day-column.weekend[data-v-57c6fd2e]{background-color:var(--gantt-bg-secondary, #f5f7fa);opacity:.6}.day-column.today[data-v-57c6fd2e]{border-left:3px solid var(--gantt-primary-color, #409eff);background-color:var(--gantt-primary-color, #409eff);opacity:.15;position:relative}.day-column.today[data-v-57c6fd2e]:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(to bottom,#409eff1a,#409eff0d,#409eff1a);pointer-events:none}.day-column.today.weekend[data-v-57c6fd2e]{background-color:var(--gantt-primary-color, #409eff);opacity:.2}.day-column.today-highlight[data-v-57c6fd2e]{background-color:var(--gantt-primary-color, #409eff)!important;opacity:.5!important;animation:today-pulse-57c6fd2e 2s ease-in-out;border-left:3px solid var(--gantt-primary-color, #409eff)!important;box-shadow:0 0 8px #409eff66}.day-column.today-highlight[data-v-57c6fd2e]:before{background:linear-gradient(to bottom,#409eff4d,#409eff33,#409eff4d)!important}@keyframes today-pulse-57c6fd2e{0%{opacity:.8;transform:scale(1);box-shadow:0 0 8px #409eff99}50%{opacity:.9;transform:scale(1.02);box-shadow:0 0 12px #409effcc}to{opacity:.5;transform:scale(1);box-shadow:0 0 8px #409eff66}}html[data-theme=dark]{background:var(--gantt-bg-primary, #3a3a3a)!important;color:var(--gantt-text-primary, #e5e5e5)!important}html[data-theme=dark]{background:var(--gantt-bg-secondary, #1a1a1a)!important}html[data-theme=dark]{border-bottom-color:var(--gantt-border-medium, #333333)!important}html[data-theme=dark]{background:#1a365d!important;color:#e3f2fd!important}html[data-theme=dark]{background:var(--gantt-bg-secondary, #1a1a1a)!important;color:var(--gantt-text-muted, #b0b0b0)!important}html[data-theme=dark]{background:var(--gantt-bg-primary, #6b6b6b)!important}html[data-theme=dark]{border-left-color:var(--gantt-primary, #409eff)!important;background-color:var(--gantt-primary, #409eff)!important}html[data-theme=dark]{background:linear-gradient(to bottom,#409eff26,#409eff14,#409eff26)!important}html[data-theme=dark]{background-color:var(--gantt-primary-color, #409eff)!important}html[data-theme=dark]{background-color:var(--gantt-primary-color, #409eff)!important;box-shadow:0 0 8px #409eff99!important}html[data-theme=dark]{background:linear-gradient(to bottom,#409eff66,#409eff40,#409eff66)!important}html[data-theme=dark]{background-color:var(--gantt-bg-hover)!important;z-index:11!important}html[data-theme=dark]{pointer-events:auto!important}html[data-theme=dark]{color:var(--gantt-text-muted, #b0b0b0)!important}.year-row[data-v-57c6fd2e]{min-height:36px;border-bottom:1px solid var(--gantt-border-medium, #e1e4e8);position:relative}.timeline-year[data-v-57c6fd2e]{border-right:1px solid var(--gantt-border-medium, #e1e4e8);display:flex;align-items:center;justify-content:center;min-height:36px;box-sizing:border-box}.year-label[data-v-57c6fd2e]{color:var(--gantt-text-header, #24292e);font-weight:600;font-size:14px;line-height:1.5;text-align:center;white-space:nowrap}.months-row[data-v-57c6fd2e]{min-height:36px;border-bottom:1px solid var(--gantt-border-light, #d1d5da)}.timeline-month-item[data-v-57c6fd2e]{border-right:1px solid var(--gantt-border-light, #d1d5da);border-bottom:1px solid var(--gantt-border-light, #d1d5da);display:flex;align-items:center;justify-content:center;min-height:36px;transition:background-color .2s ease}.timeline-month-item.today[data-v-57c6fd2e]{background-color:var(--gantt-primary)}.month-label[data-v-57c6fd2e]{color:var(--gantt-text-primary, #24292e);font-weight:500;font-size:13px;line-height:1.5;text-align:center}.month-column[data-v-57c6fd2e]{border-right:1px solid var(--gantt-border-light, #d1d5da);position:relative;transition:background-color .2s ease}.month-column.today[data-v-57c6fd2e]{background-color:var(--gantt-primary-color, #409eff);opacity:.15}.quarter-header-container[data-v-57c6fd2e]{position:relative;overflow:hidden}.quarters-row[data-v-57c6fd2e]{min-height:36px;background:var(--gantt-bg-secondary, #f6f8fa);border-bottom:1px solid var(--gantt-border-light, #d1d5da);position:relative}.timeline-quarter-item[data-v-57c6fd2e]{border-right:1px solid var(--gantt-border-light, #d1d5da);border-bottom:1px solid var(--gantt-border-light, #d1d5da);display:flex;align-items:center;justify-content:center;min-height:36px;height:100%;transition:background-color .2s ease;box-sizing:border-box}.timeline-quarter-item.today[data-v-57c6fd2e]{background-color:var(--gantt-primary-color, #409eff);color:#fff}.quarter-label[data-v-57c6fd2e]{color:var(--gantt-text-primary, #24292e);font-weight:500;font-size:13px;line-height:1.5;text-align:center;white-space:nowrap}.timeline-quarter-item.today .quarter-label[data-v-57c6fd2e]{color:#fff}.quarter-columns-container[data-v-57c6fd2e]{position:relative;overflow:hidden}.quarter-column[data-v-57c6fd2e]{border-right:1px solid var(--gantt-border-light, #d1d5da);position:absolute;transition:background-color .2s ease;box-sizing:border-box}.quarter-column.today[data-v-57c6fd2e]{background-color:var(--gantt-primary-color, #409eff);opacity:.15}.half-years-row[data-v-57c6fd2e]{min-height:36px;border-bottom:1px solid var(--gantt-border-light, #d1d5da)}.timeline-half-year-item[data-v-57c6fd2e]{border-right:1px solid var(--gantt-border-light, #d1d5da);border-bottom:1px solid var(--gantt-border-light, #d1d5da);display:flex;align-items:center;justify-content:center;min-height:36px;transition:background-color .2s ease;box-sizing:border-box}.half-year-label[data-v-57c6fd2e]{color:var(--gantt-text-primary, #24292e);font-weight:500;font-size:13px;line-height:1.5;text-align:center}.half-year-column[data-v-57c6fd2e]{border-right:1px solid var(--gantt-border-light, #d1d5da);position:relative;transition:background-color .2s ease;background-color:var(--gantt-bg-primary, #ffffff);box-sizing:border-box}.half-year-column[data-v-57c6fd2e]:hover{background-color:var(--gantt-bg-hover, rgba(64, 158, 255, .05))}html[data-theme=dark]{background-color:var(--gantt-primary);border-left-color:var(--gantt-primary, #409eff)!important}html[data-theme=dark]{background-color:var(--gantt-primary, #409eff)!important}html[data-theme=dark]{background-color:var(--gantt-primary-color, #409eff);border-left-color:var(--gantt-primary-color, #409eff)!important}html[data-theme=dark]{border-right-color:var(--gantt-border-light, #555555)!important;background-color:var(--gantt-bg-primary, #6b6b6b)!important}html[data-theme=dark]{background-color:var(--gantt-bg-hover, rgba(64, 158, 255, .1))!important}.today-line-year-view[data-v-57c6fd2e]{position:absolute;top:0;width:2px;background-color:var(--gantt-primary, #409eff);z-index:30;pointer-events:none;box-shadow:0 0 4px #409eff4d}html[data-theme=dark]{background-color:var(--gantt-primary, #66b1ff);box-shadow:0 0 4px #66b1ff66}.hour-header-container[data-v-57c6fd2e]{position:relative;min-width:100%}.date-row[data-v-57c6fd2e]{min-height:40px;border-bottom:1px solid var(--gantt-border-light, #d1d5da);position:relative;overflow:hidden}.timeline-day-item[data-v-57c6fd2e]{top:0;height:100%;border-right:1px solid var(--gantt-border-medium, #e1e4e8);background-color:var(--gantt-bg-secondary, #f6f8fa);display:flex;align-items:center;justify-content:center;min-height:40px;box-sizing:border-box}.timeline-day-item.hour-view-day[data-v-57c6fd2e]{position:absolute;top:0;height:100%;border-right:1px solid var(--gantt-border-medium, #e1e4e8);background-color:var(--gantt-bg-secondary, #f6f8fa)}.date-label[data-v-57c6fd2e]{color:var(--gantt-text-header, #24292e);font-weight:600;font-size:14px;line-height:1.5;text-align:center}.hours-row[data-v-57c6fd2e]{min-height:40px;border-bottom:1px solid var(--gantt-border-light, #d1d5da);position:relative;overflow:hidden;display:flex}.hour-label[data-v-57c6fd2e]{color:var(--gantt-text-primary, #24292e);font-weight:600;font-size:13px;line-height:1.3;text-align:center;letter-spacing:0px}.quarter-hour-lines[data-v-57c6fd2e]{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none}.quarter-line[data-v-57c6fd2e]{position:absolute;top:0;bottom:0;width:1px;background-color:var(--gantt-border-light, #d1d5da);opacity:.5}.timeline-hour-item[data-v-57c6fd2e]{top:0;height:100%;border-right:1px solid var(--gantt-border-light, #d1d5da);display:flex;align-items:center;justify-content:center;min-height:40px;transition:background-color .2s ease;box-sizing:border-box;flex-shrink:0}.timeline-hour-item.today[data-v-57c6fd2e]{background-color:var(--gantt-primary);color:var(--gantt-text-white)}.timeline-hour-item.today .hour-label[data-v-57c6fd2e]{color:var(--gantt-text-white)}.timeline-hour-item.non-working-hour[data-v-57c6fd2e]{background-color:var(--gantt-bg-secondary)}.timeline-hour-item.non-working-hour .hour-label[data-v-57c6fd2e]{color:var(--gantt-border-dark)}.hour-columns-container[data-v-57c6fd2e]{position:relative;min-width:100%;min-height:100px;display:flex}.hour-column[data-v-57c6fd2e]{position:absolute;top:0;bottom:0;border-right:1px solid var(--gantt-border-light, #e0e6ed);background-color:var(--gantt-bg-primary, #ffffff);transition:background-color .2s ease;box-sizing:border-box;flex-shrink:0;pointer-events:none;z-index:1}.hour-column.weekend[data-v-57c6fd2e],.hour-column.rest-hour[data-v-57c6fd2e]{background-color:var(--gantt-bg-secondary, #f5f7fa);opacity:.6}.hour-column.working-hour[data-v-57c6fd2e]{background-color:var(--gantt-bg-primary, #ffffff)}.hour-column.today[data-v-57c6fd2e]{background-color:var(--gantt-primary-color, #409eff);opacity:.2;border-left:2px solid var(--gantt-primary-color, #409eff)}.hour-column[data-v-57c6fd2e]:hover{background-color:var(--gantt-bg-hover, rgba(64, 158, 255, .05))}html[data-theme=dark]{border-right-color:var(--gantt-border-medium, #333333)!important}html[data-theme=dark]{color:var(--gantt-text-header, #ffffff)!important}html[data-theme=dark]{background:var(--gantt-bg-secondary, #1a1a1a)!important;border-bottom-color:var(--gantt-border-medium, #333333)!important}html[data-theme=dark]{border-right-color:var(--gantt-border-light, #555555)!important;border-bottom-color:var(--gantt-border-light, #555555)!important}html[data-theme=dark]{background-color:var(--gantt-primary, #1a365d)!important;color:var(--gantt-text-white, #e3f2fd)!important}html[data-theme=dark]{color:var(--gantt-text-primary, #e5e5e5)!important}html[data-theme=dark]{color:var(--gantt-text-white, #e3f2fd)!important}html[data-theme=dark]{border-right-color:var(--gantt-border-light, #555555)!important}html[data-theme=dark]{background-color:var(--gantt-bg-secondary, #1a1a1a)!important}html[data-theme=dark]{background-color:var(--gantt-bg-primary, #6b6b6b)!important}html[data-theme=dark]{background-color:var(--gantt-primary-color, #409eff)!important;border-left-color:var(--gantt-primary-color, #409eff)!important}html[data-theme=dark]{background-color:var(--gantt-border-light, #555555)!important}[data-v-8df0c217]:root{--gantt-bg-primary: #ffffff;--gantt-bg-secondary: #f5f7fa;--gantt-bg-tertiary: #f9f9f9;--gantt-bg-hover: rgba(225, 228, 231, .2);--gantt-bg-hover-parent: rgba(245, 247, 250, .8);--gantt-bg-toolbar: #f8f9fa;--gantt-text-primary: #333333;--gantt-text-secondary: #8d9095;--gantt-text-muted: #909399;--gantt-text-white: #ffffff;--gantt-text-header: #333333;--gantt-border-light: #ebeef5;--gantt-border-medium: #dcdfe6;--gantt-border-dark: #c0c4cc;--gantt-border-color: #dcdfe6;--gantt-primary: #409eff;--gantt-primary-light: #ecf5ff;--gantt-success: #67c23a;--gantt-warning: #e6a23c;--gantt-warning-light: #f5dab1;--gantt-danger: #f56c6c;--gantt-danger-light: #fab6b6;--gantt-scrollbar-thumb: #c1c1c1;--gantt-scrollbar-thumb-hover: #a8a8a8}html[data-theme=dark][data-v-8df0c217]{--gantt-bg-primary: #6b6b6b;--gantt-bg-secondary: #4b4b4b;--gantt-bg-tertiary: #7b7b7b;--gantt-bg-hover: rgba(180, 180, 180, .35);--gantt-bg-hover-parent: rgba(140, 140, 140, .8);--gantt-bg-toolbar: #5b5b5b;--gantt-text-primary: #ffffff;--gantt-text-secondary: #f8f8f8;--gantt-text-muted: #e0e0e0;--gantt-text-white: #ffffff;--gantt-text-parent: #ffffff;--gantt-text-header: #ffffff;--gantt-border-light: #888888;--gantt-border-medium: #666666;--gantt-border-dark: #999999;--gantt-border-color: #808080;--gantt-primary: #3399ff;--gantt-primary-light: #4d6699;--gantt-success: #66cc33;--gantt-warning: #ff9933;--gantt-warning-light: #cc7722;--gantt-danger: #ff4444;--gantt-danger-light: #cc3333;--gantt-scrollbar-thumb: #888888;--gantt-scrollbar-thumb-hover: #999999}.gantt-toolbar[data-v-8df0c217]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--gantt-bg-toolbar, #f8f9fa);border-bottom:1px solid var(--gantt-border-color, #ebeef5);box-shadow:0 1px 3px #0000001a}.toolbar-left[data-v-8df0c217]{display:flex;align-items:center;gap:12px}.toolbar-right[data-v-8df0c217]{display:flex;align-items:center;gap:8px}.toolbar-icon-btn[data-v-8df0c217]{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;margin-right:8px;padding:0;border:none;border-radius:4px;background:transparent;color:var(--gantt-text-primary, #606266);cursor:pointer;outline:none}.toolbar-icon-btn[data-v-8df0c217]:hover{background:var(--gantt-bg-hover, rgba(0, 0, 0, .2));color:var(--gantt-primary, #409eff)}.toolbar-icon-btn[data-v-8df0c217]:focus{outline:none;background:var(--gantt-bg-hover, rgba(0, 0, 0, .2));color:var(--gantt-primary, #409eff)}.toolbar-icon-btn[data-v-8df0c217]:active{background:var(--gantt-bg-active, rgba(0, 0, 0, .3))}.toolbar-icon-btn .gantt-btn-icon[data-v-8df0c217]{width:18px;height:18px}.gantt-btn-icon[data-v-8df0c217]{width:16px;height:16px;stroke-width:2;fill:none;stroke:currentColor;display:block;flex-shrink:0}.icon-fallback[data-v-8df0c217]{position:absolute;font-size:16px;opacity:0;pointer-events:none;transition:opacity .2s ease;-webkit-user-select:none;user-select:none;top:50%;left:50%;transform:translate(-50%,-50%)}.language-dropdown[data-v-8df0c217]{position:relative;display:inline-block}.toolbar-lang-btn[data-v-8df0c217]{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:36px;padding:0 12px;border-radius:4px;background:transparent;border:1px solid var(--gantt-border-color, #dcdfe6);color:var(--gantt-text-primary, #606266);cursor:pointer;outline:none;font-size:14px;white-space:nowrap}.toolbar-lang-btn[data-v-8df0c217]:hover{background:var(--gantt-bg-hover, #f5f7fa);border-color:var(--gantt-primary-color, #409eff);color:var(--gantt-primary-color, #409eff)}.toolbar-lang-btn[data-v-8df0c217]:focus{outline:none;background:var(--gantt-bg-hover, #f5f7fa);border-color:var(--gantt-primary-color, #409eff);color:var(--gantt-primary-color, #409eff);box-shadow:0 0 0 2px #409eff33}.toolbar-lang-btn[data-v-8df0c217]:active{background:var(--gantt-bg-active, rgba(64, 158, 255, .1))}.toolbar-lang-btn .gantt-btn-icon[data-v-8df0c217]{width:16px;height:16px;stroke-width:2}.lang-text[data-v-8df0c217]{font-size:14px;font-weight:500}.dropdown-arrow[data-v-8df0c217]{width:12px;height:12px;stroke-width:2;transition:transform .2s ease}.language-dropdown[aria-expanded=true] .dropdown-arrow[data-v-8df0c217],.language-dropdown:has(.language-menu) .dropdown-arrow[data-v-8df0c217]{transform:rotate(180deg)}.language-menu[data-v-8df0c217]{position:absolute;top:100%;right:0;margin-top:4px;min-width:120px;background:var(--gantt-bg-primary, #ffffff);border:1px solid var(--gantt-border-color, #dcdfe6);border-radius:4px;box-shadow:0 4px 12px #0000001a;z-index:1000;overflow:hidden;animation:dropdown-appear-8df0c217 .2s ease}@keyframes dropdown-appear-8df0c217{0%{opacity:0;transform:translateY(-8px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.language-option[data-v-8df0c217]{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;cursor:pointer;color:var(--gantt-text-primary, #606266);transition:all .2s ease;border-bottom:1px solid var(--gantt-border-color, #f0f0f0)}.language-option[data-v-8df0c217]:last-child{border-bottom:none}.language-option[data-v-8df0c217]:hover{background:var(--gantt-bg-hover, #f5f7fa);color:var(--gantt-primary-color, #409eff)}.language-option.active[data-v-8df0c217]{background:var(--gantt-primary-color, #409eff);color:#fff}.language-option.active[data-v-8df0c217]:hover{background:var(--gantt-primary-hover, #66b1ff)}.check-icon[data-v-8df0c217]{width:14px;height:14px;stroke-width:2.5;opacity:.9;flex-shrink:0}.confirm-dialog[data-v-8df0c217]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000;animation:dialog-fade-in-8df0c217 .2s ease-out}.dialog-content[data-v-8df0c217]{background:var(--gantt-bg-primary, #ffffff);border-radius:8px;padding:24px;min-width:320px;box-shadow:0 8px 32px #0000001f;animation:dialog-slide-up-8df0c217 .2s ease-out}.dialog-message[data-v-8df0c217]{font-size:16px;color:var(--gantt-text-primary, #303133);margin:0 0 20px;text-align:center;line-height:1.5}.dialog-actions[data-v-8df0c217]{display:flex;justify-content:center;gap:12px}.dialog-actions .btn+.btn[data-v-8df0c217]{margin-left:12px}html[data-theme=dark]{background:var(--gantt-bg-hover, rgba(255, 255, 255, .08));color:var(--gantt-primary, #66b1ff)}html[data-theme=dark]{background:var(--gantt-bg-hover, rgba(255, 255, 255, .1));color:var(--gantt-primary, #66b1ff)}html[data-theme=dark]{background:var(--gantt-bg-hover, rgba(255, 255, 255, .06));border-color:var(--gantt-primary, #66b1ff);color:var(--gantt-primary, #66b1ff)}html[data-theme=dark]{background:var(--gantt-bg-hover, rgba(255, 255, 255, .08));border-color:var(--gantt-primary, #66b1ff);color:var(--gantt-primary, #66b1ff);box-shadow:0 0 0 2px #66b1ff66}html[data-theme=dark]{background:var(--gantt-bg-secondary, #2c2c2c)}html[data-theme=dark]{color:var(--gantt-text-primary, #e5eaf3)}@keyframes dialog-fade-in-8df0c217{0%{opacity:0}to{opacity:1}}@keyframes dialog-slide-up-8df0c217{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@media(max-width:768px){.toolbar-lang-btn[data-v-8df0c217]{padding:0 8px;gap:4px}.lang-text[data-v-8df0c217]{display:none}.language-menu[data-v-8df0c217]{right:0;min-width:100px}.language-option[data-v-8df0c217]{padding:10px 12px}.dialog-content[data-v-8df0c217]{padding:16px}.dialog-message[data-v-8df0c217]{font-size:14px}.gantt-btn[data-v-8df0c217]{padding:8px 12px;font-size:13px}}.gantt-btn-group[data-v-8df0c217]{display:inline-flex;margin-right:8px;overflow:hidden;transition:all .2s ease}.gantt-btn-group[data-v-8df0c217]:hover,.gantt-btn-group[data-v-8df0c217]:focus-within{transform:translateY(-1px);box-shadow:0 4px 12px #00000026}.gantt-btn-group-item[data-v-8df0c217]{display:inline-flex;align-items:center;gap:6px;padding:10px 16px;border:1px solid;background:#fff;color:#606266;font-size:14px;font-weight:500;cursor:pointer;outline:none;line-height:1;white-space:nowrap;position:relative;border-radius:0;margin:0;border-left:none;transition:all .2s ease}.gantt-btn-group-item[data-v-8df0c217]:first-child{border-left:1px solid;border-right:none;border-top-left-radius:4px;border-bottom-left-radius:4px}.gantt-btn-group-item[data-v-8df0c217]:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}.gantt-btn-group-item[data-v-8df0c217]:not(:last-child):after{content:"";position:absolute;right:0;top:25%;height:50%;width:1px;background:var(--gantt-border-color, #dcdfe6);transition:opacity .2s ease}.gantt-add-btn-group .gantt-btn-group-item[data-v-8df0c217]{background:#409eff;border-color:#409eff;color:#fff}.gantt-add-btn-group .gantt-btn-group-item[data-v-8df0c217]:after{background:#ffffff4d}.gantt-add-btn-group .gantt-btn-group-item[data-v-8df0c217]:hover{background:#66b1ff;border-color:#66b1ff;z-index:1}.gantt-add-btn-group .gantt-btn-group-item[data-v-8df0c217]:focus{background:#3a8ee6;border-color:#3a8ee6;z-index:1;box-shadow:inset 0 0 0 1px #ffffff4d}.gantt-add-btn-group .gantt-btn-group-item[data-v-8df0c217]:active{background:#337ecc;border-color:#337ecc}.gantt-btn-group:hover .gantt-btn-group-item[data-v-8df0c217]:after,.gantt-btn-group:focus-within .gantt-btn-group-item[data-v-8df0c217]:after{opacity:0}.gantt-btn-group:not(.gantt-add-btn-group) .gantt-btn-group-item[data-v-8df0c217]{border-color:#dcdfe6}.gantt-btn-group:not(.gantt-add-btn-group) .gantt-btn-group-item[data-v-8df0c217]:hover{background:#ecf5ff;border-color:#b3d8ff;color:#409eff;z-index:1}.gantt-btn-group:not(.gantt-add-btn-group) .gantt-btn-group-item[data-v-8df0c217]:focus{background:#ecf5ff;border-color:#409eff;color:#409eff;z-index:1;box-shadow:inset 0 0 0 1px #409eff}.gantt-btn-group:not(.gantt-add-btn-group) .gantt-btn-group-item[data-v-8df0c217]:active{background:#d9ecff;border-color:#409eff;color:#409eff}.gantt-btn-group-item .gantt-btn-icon[data-v-8df0c217]{width:16px;height:16px;stroke-width:2}html[data-theme=dark]{box-shadow:0 1px 3px #0000004d,0 1px 2px -1px #0000004d}html[data-theme=dark]{box-shadow:0 4px 12px #00000080}html[data-theme=dark]{background:#337ecc;border-color:#337ecc;color:#fff}html[data-theme=dark]{background:#4d94d4;border-color:#4d94d4}html[data-theme=dark]{background:#2c5aa0;border-color:#2c5aa0;box-shadow:inset 0 0 0 1px #ffffff4d}html[data-theme=dark]{background:#1f4872;border-color:#1f4872}html[data-theme=dark]{background:#2c2c2c;border-color:#4c4c4c;color:#e5e5e5}.segmented-control[data-v-8df0c217]{position:relative;display:inline-flex;background:var(--gantt-bg-primary, #ffffff);border:1px solid var(--gantt-border-color, #dcdfe6);border-radius:6px;padding:1px;margin-right:8px;overflow:hidden;transition:border-color .2s ease;height:36px}.segmented-control[data-v-8df0c217]:hover{border-color:var(--gantt-primary-light, #79bbff)}.segmented-track[data-v-8df0c217]{position:absolute;top:1px;left:1px;right:1px;bottom:1px;pointer-events:none}.segmented-thumb[data-v-8df0c217]{position:absolute;top:0;left:0;width:25%;height:100%;background:var(--gantt-primary, #409eff);border-radius:5px;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 1px 2px #0000001a,0 1px 6px -1px #0000001a}.segmented-item[data-v-8df0c217]{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:1;height:34px;padding:0 12px;border:none;background:transparent;font-size:14px;font-weight:500;cursor:pointer;outline:none;transition:all .2s cubic-bezier(.4,0,.2,1);min-width:40px;z-index:1;border-radius:5px;-webkit-user-select:none;user-select:none}.segmented-item[data-v-8df0c217]:hover:not(.active){color:var(--gantt-primary, #409eff);background:var(--gantt-bg-hover, rgba(64, 158, 255, .06))}.segmented-item[data-v-8df0c217]:active:not(.active){background:var(--gantt-bg-active, rgba(64, 158, 255, .12))}.segmented-item.active[data-v-8df0c217]{color:#fff;font-weight:600}.time-scale-segmented[data-v-8df0c217]{height:36px}.time-scale-segmented .segmented-item[data-v-8df0c217]{height:34px;font-size:13px;min-width:36px}html[data-theme=dark]{background:var(--gantt-bg-secondary, #4b4b4b);border-color:var(--gantt-border-color, #808080)}html[data-theme=dark]{border-color:var(--gantt-primary, #3399ff)}html[data-theme=dark]{background:var(--gantt-primary, #3399ff);box-shadow:0 1px 2px #0000004d,0 1px 6px -1px #0000004d}html[data-theme=dark]{color:#fff!important}html[data-theme=dark]{color:var(--gantt-primary, #3399ff);background:#3399ff1f}html[data-theme=dark]{background:#39f3}.multi-select-predecessor[data-v-3a17beda]{display:flex;flex-direction:column;gap:8px}.form-label[data-v-3a17beda]{font-size:14px;font-weight:500;color:var(--gantt-text-secondary, #606266);line-height:1.4}.predecessor-selector[data-v-3a17beda]{display:flex;flex-direction:column;gap:8px}.selected-tags[data-v-3a17beda]{display:flex;flex-wrap:wrap;gap:6px}.predecessor-tag[data-v-3a17beda]{display:inline-flex;align-items:center;padding:4px 8px;background:var(--gantt-primary, #409eff);color:#fff;font-size:12px;border-radius:14px;gap:6px}.remove-tag-btn[data-v-3a17beda]{background:none;border:none;color:#fff;font-size:14px;font-weight:700;cursor:pointer;padding:0;width:16px;height:16px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background-color .2s}.remove-tag-btn[data-v-3a17beda]:hover{background:#fff3}.select-wrapper[data-v-3a17beda]{width:100%}.form-select[data-v-3a17beda]{padding:12px 16px;border:1px solid var(--gantt-border-medium, #dcdfe6);border-radius:4px;font-size:14px;color:var(--gantt-text-primary, #303133);background:var(--gantt-bg-primary, white);transition:border-color .2s;outline:none;width:100%}.form-select[data-v-3a17beda]:focus{border-color:var(--gantt-primary, #409eff)}html[data-theme=dark]{background:var(--gantt-primary-dark, #337ecc)}html[data-theme=dark]{background:var(--gantt-bg-primary, #2b2b2b);border-color:var(--gantt-border-medium, #4c4d4f);color:var(--gantt-text-primary, #e5eaf3)}[data-v-71d14202]:root{--gantt-bg-primary: #ffffff;--gantt-bg-secondary: #f5f7fa;--gantt-bg-tertiary: #f9f9f9;--gantt-bg-hover: rgba(225, 228, 231, .2);--gantt-bg-hover-parent: rgba(245, 247, 250, .8);--gantt-bg-toolbar: #f8f9fa;--gantt-text-primary: #333333;--gantt-text-secondary: #8d9095;--gantt-text-muted: #909399;--gantt-text-white: #ffffff;--gantt-text-header: #333333;--gantt-border-light: #ebeef5;--gantt-border-medium: #dcdfe6;--gantt-border-dark: #c0c4cc;--gantt-border-color: #dcdfe6;--gantt-primary: #409eff;--gantt-primary-light: #ecf5ff;--gantt-success: #67c23a;--gantt-warning: #e6a23c;--gantt-warning-light: #f5dab1;--gantt-danger: #f56c6c;--gantt-danger-light: #fab6b6;--gantt-scrollbar-thumb: #c1c1c1;--gantt-scrollbar-thumb-hover: #a8a8a8}html[data-theme=dark][data-v-71d14202]{--gantt-bg-primary: #6b6b6b;--gantt-bg-secondary: #4b4b4b;--gantt-bg-tertiary: #7b7b7b;--gantt-bg-hover: rgba(180, 180, 180, .35);--gantt-bg-hover-parent: rgba(140, 140, 140, .8);--gantt-bg-toolbar: #5b5b5b;--gantt-text-primary: #ffffff;--gantt-text-secondary: #f8f8f8;--gantt-text-muted: #e0e0e0;--gantt-text-white: #ffffff;--gantt-text-parent: #ffffff;--gantt-text-header: #ffffff;--gantt-border-light: #888888;--gantt-border-medium: #666666;--gantt-border-dark: #999999;--gantt-border-color: #808080;--gantt-primary: #3399ff;--gantt-primary-light: #4d6699;--gantt-success: #66cc33;--gantt-warning: #ff9933;--gantt-warning-light: #cc7722;--gantt-danger: #ff4444;--gantt-danger-light: #cc3333;--gantt-scrollbar-thumb: #888888;--gantt-scrollbar-thumb-hover: #999999}.drawer-overlay[data-v-71d14202]{height:100%;position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:10000;display:flex;justify-content:flex-end;align-items:stretch}.drawer-container[data-v-71d14202]{width:500px;background:var(--gantt-bg-primary, white);box-shadow:-2px 0 8px #0000001a;display:flex;flex-direction:column;animation:slideIn-71d14202 .3s ease-out;color:var(--gantt-text-primary, #303133)}@keyframes slideIn-71d14202{0%{transform:translate(100%)}to{transform:translate(0)}}.drawer-header[data-v-71d14202]{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--gantt-border-light, #ebeef5);background:var(--gantt-bg-secondary, #f5f7fa)}.drawer-title[data-v-71d14202]{margin:0;font-size:18px;font-weight:600;color:var(--gantt-text-primary, #303133)}.drawer-close-btn[data-v-71d14202]{background:none;border:none;cursor:pointer;padding:4px;color:var(--gantt-text-muted, #909399);transition:color .2s}.drawer-close-btn[data-v-71d14202]:hover{color:var(--gantt-text-secondary, #606266)}.close-icon[data-v-71d14202]{width:16px;height:16px;stroke-width:2}.drawer-body[data-v-71d14202]{flex:1;padding:24px;overflow-y:auto}.task-form[data-v-71d14202]{display:flex;flex-direction:column;gap:20px}.form-group[data-v-71d14202]{display:flex;flex-direction:column;gap:8px}.form-row[data-v-71d14202]{display:flex;gap:16px}.form-row .form-group[data-v-71d14202]{flex:1}.form-label[data-v-71d14202]{font-size:14px;font-weight:500;color:var(--gantt-text-secondary, #606266);line-height:1.4}.required[data-v-71d14202]{color:var(--gantt-danger, #f56c6c);margin-left:2px}.form-input[data-v-71d14202],.form-select[data-v-71d14202],.form-textarea[data-v-71d14202]{padding:12px 16px;border:1px solid var(--gantt-border-medium, #dcdfe6);border-radius:4px;font-size:14px;color:var(--gantt-text-primary, #303133);background:var(--gantt-bg-primary, white);transition:border-color .2s;outline:none}.form-input[data-v-71d14202]:focus,.form-select[data-v-71d14202]:focus,.form-textarea[data-v-71d14202]:focus{border-color:var(--gantt-primary, #409eff)}.form-input.error[data-v-71d14202],.form-select.error[data-v-71d14202]{border-color:var(--gantt-danger, #f56c6c)}.form-input[data-v-71d14202]::placeholder,.form-select[data-v-71d14202]::placeholder,.form-textarea[data-v-71d14202]::placeholder{color:var(--gantt-text-placeholder, #c0c4cc)}.form-textarea[data-v-71d14202]{resize:vertical;min-height:80px}.error-text[data-v-71d14202]{color:var(--gantt-danger, #f56c6c);font-size:12px;line-height:1.4}.progress-container[data-v-71d14202]{display:flex;align-items:center;gap:12px}.progress-slider[data-v-71d14202]{flex:1;height:6px;border-radius:3px;background:var(--gantt-border-light, #e4e7ed);outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;position:relative;vertical-align:middle}.progress-slider[data-v-71d14202]::-webkit-slider-runnable-track{height:6px;border-radius:3px;background:linear-gradient(to right,var(--gantt-primary, #409eff) 0%,var(--gantt-primary, #409eff) var(--progress-percent, 0%),var(--gantt-border-light, #e4e7ed) var(--progress-percent, 0%),var(--gantt-border-light, #e4e7ed) 100%)}.progress-slider[data-v-71d14202]::-moz-range-track{height:6px;border-radius:3px;background:linear-gradient(to right,var(--gantt-primary, #409eff) 0%,var(--gantt-primary, #409eff) var(--progress-percent, 0%),var(--gantt-border-light, #e4e7ed) var(--progress-percent, 0%),var(--gantt-border-light, #e4e7ed) 100%);border:none}.progress-slider[data-v-71d14202]::-moz-range-progress{height:6px;border-radius:3px;background:var(--gantt-primary, #409eff)}.progress-slider[data-v-71d14202]:before{content:"";position:absolute;top:0;left:0;height:6px;width:var(--progress-percent, 0%);background:var(--gantt-primary, #409eff);border-radius:3px;pointer-events:none;transition:width .2s ease}.progress-slider[data-v-71d14202]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--gantt-primary, #409eff);cursor:pointer;position:relative;z-index:2;box-shadow:0 2px 4px #0000001a;transition:box-shadow .2s ease;margin-top:-5px}.progress-slider[data-v-71d14202]::-webkit-slider-thumb:hover{box-shadow:0 4px 8px #00000026}.progress-slider[data-v-71d14202]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--gantt-primary, #409eff);cursor:pointer;border:none;position:relative;z-index:2;box-shadow:0 2px 4px #0000001a;transition:box-shadow .2s ease;margin-top:-5px}.progress-slider[data-v-71d14202]::-moz-range-thumb:hover{box-shadow:0 4px 8px #00000026}.progress-input-group[data-v-71d14202]{display:flex;align-items:center;border:1px solid var(--gantt-border-medium, #dcdfe6);border-radius:4px;background:var(--gantt-bg-primary, white);overflow:hidden;transition:border-color .2s ease;width:70px}.progress-input-group[data-v-71d14202]:hover{border-color:var(--gantt-primary, #409eff)}.progress-input-group[data-v-71d14202]:focus-within{border-color:var(--gantt-primary, #409eff)}.progress-input[data-v-71d14202]{flex:1;font-size:14px;color:var(--gantt-text-primary, #303133);text-align:center;border:none;outline:none;background:transparent;padding:12px 8px;min-width:0}.progress-input[data-v-71d14202]::placeholder{color:var(--gantt-text-placeholder, #c0c4cc)}.progress-unit[data-v-71d14202]{font-size:14px;color:var(--gantt-text-secondary, #606266);padding:12px 12px 12px 4px;-webkit-user-select:none;user-select:none;flex-shrink:0}html[data-theme=dark]{border-color:var(--gantt-border-medium, #4c4d4f);background:var(--gantt-bg-primary, #2b2b2b)}html[data-theme=dark]{border-color:var(--gantt-primary, #409eff)}html[data-theme=dark]{color:var(--gantt-text-primary, #e5eaf3);background:transparent}html[data-theme=dark]{color:var(--gantt-text-placeholder, #8b949e)}html[data-theme=dark]{color:var(--gantt-text-secondary, #a8a8a8)}.drawer-footer[data-v-71d14202]{padding:16px 24px;border-top:1px solid var(--gantt-border-light, #ebeef5);background:var(--gantt-bg-toolbar, #fafafa);display:flex;justify-content:space-between;align-items:center}.footer-left[data-v-71d14202]{display:flex;align-items:center}.footer-right[data-v-71d14202]{display:flex;align-items:center;gap:12px}.loading-spinner[data-v-71d14202]{width:12px;height:12px;border:2px solid transparent;border-top:2px solid currentColor;border-radius:50%;animation:spin-71d14202 1s linear infinite}@keyframes spin-71d14202{to{transform:rotate(360deg)}}.message[data-v-71d14202]{animation:messageSlideIn-71d14202 .3s ease-out}@keyframes messageSlideIn-71d14202{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}html[data-theme=dark]{background:#000000b3!important}html[data-theme=dark]{box-shadow:-4px 0 15px #0006!important}html[data-theme=dark]{background:var(--gantt-bg-hover, rgba(255, 255, 255, .1))!important;border-radius:4px}html[data-theme=dark]{box-shadow:0 0 0 2px #409eff33!important}html[data-theme=dark]{color:var(--gantt-text-muted, #9e9e9e)!important}[data-v-80f4d61d]:root{--gantt-bg-primary: #ffffff;--gantt-bg-secondary: #f5f7fa;--gantt-bg-tertiary: #f9f9f9;--gantt-bg-hover: rgba(225, 228, 231, .2);--gantt-bg-hover-parent: rgba(245, 247, 250, .8);--gantt-bg-toolbar: #f8f9fa;--gantt-text-primary: #333333;--gantt-text-secondary: #8d9095;--gantt-text-muted: #909399;--gantt-text-white: #ffffff;--gantt-text-header: #333333;--gantt-border-light: #ebeef5;--gantt-border-medium: #dcdfe6;--gantt-border-dark: #c0c4cc;--gantt-border-color: #dcdfe6;--gantt-primary: #409eff;--gantt-primary-light: #ecf5ff;--gantt-success: #67c23a;--gantt-warning: #e6a23c;--gantt-warning-light: #f5dab1;--gantt-danger: #f56c6c;--gantt-danger-light: #fab6b6;--gantt-scrollbar-thumb: #c1c1c1;--gantt-scrollbar-thumb-hover: #a8a8a8}html[data-theme=dark][data-v-80f4d61d]{--gantt-bg-primary: #6b6b6b;--gantt-bg-secondary: #4b4b4b;--gantt-bg-tertiary: #7b7b7b;--gantt-bg-hover: rgba(180, 180, 180, .35);--gantt-bg-hover-parent: rgba(140, 140, 140, .8);--gantt-bg-toolbar: #5b5b5b;--gantt-text-primary: #ffffff;--gantt-text-secondary: #f8f8f8;--gantt-text-muted: #e0e0e0;--gantt-text-white: #ffffff;--gantt-text-parent: #ffffff;--gantt-text-header: #ffffff;--gantt-border-light: #888888;--gantt-border-medium: #666666;--gantt-border-dark: #999999;--gantt-border-color: #808080;--gantt-primary: #3399ff;--gantt-primary-light: #4d6699;--gantt-success: #66cc33;--gantt-warning: #ff9933;--gantt-warning-light: #cc7722;--gantt-danger: #ff4444;--gantt-danger-light: #cc3333;--gantt-scrollbar-thumb: #888888;--gantt-scrollbar-thumb-hover: #999999}.gantt-root[data-v-80f4d61d]{display:flex;flex-direction:column;width:100%;height:100%;background:#f5f7fa;box-shadow:0 6px 32px #0000001a,0 1.5px 6px #00000014;border-radius:12px;overflow:hidden}.gantt-body[data-v-80f4d61d]{display:flex;flex:1;min-height:0}.gantt-panel[data-v-80f4d61d]{height:100%;background:#fff;box-shadow:0 1px 4px #0000000a;display:flex;flex-direction:column}.gantt-panel-left[data-v-80f4d61d]{min-width:320px;transition:width .1s}.gantt-panel-right[data-v-80f4d61d]{flex:1;min-width:0;position:relative}.gantt-panel-right.full-width[data-v-80f4d61d]{flex:1;width:100%}.focus-close-button[data-v-80f4d61d]{position:absolute;bottom:20px;left:50%;transform:translate(-50%);z-index:1004;display:flex;align-items:center;gap:8px;padding:10px 20px;background:#f56c6c;border:1px solid #f56c6c;border-radius:20px;box-shadow:0 4px 12px #f56c6c66;cursor:pointer;transition:all .3s ease;-webkit-user-select:none;user-select:none}.focus-close-button[data-v-80f4d61d]:hover{background:#f78989;border-color:#f78989;box-shadow:0 6px 16px #f56c6c80;transform:translate(-50%) translateY(-2px)}.focus-close-button .close-icon[data-v-80f4d61d]{width:18px;height:18px;color:#fff;transition:color .3s ease}.focus-close-button:hover .close-icon[data-v-80f4d61d]{color:#fff}.focus-close-button .close-text[data-v-80f4d61d]{font-size:14px;color:#fff;font-weight:500;transition:color .3s ease}.focus-close-button:hover .close-text[data-v-80f4d61d]{color:#fff}.gantt-splitter[data-v-80f4d61d]{position:relative;width:6px;cursor:col-resize;background:var(--gantt-border-light, #e4e7ed);transition:all .2s ease;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;touch-action:none}.gantt-splitter[data-v-80f4d61d]:hover{background:var(--gantt-border-dark, #c0c4cc)}.placeholder[data-v-80f4d61d]{color:#909399;text-align:center;margin:auto;font-size:18px}@keyframes slideLeftImpact-80f4d61d{0%{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(2px)}60%{transform:translate(-3px)}80%{transform:translate(1px)}to{transform:translate(0)}}@keyframes slideRightImpact-80f4d61d{0%{transform:translate(0)}20%{transform:translate(8px)}40%{transform:translate(-2px)}60%{transform:translate(3px)}80%{transform:translate(-1px)}to{transform:translate(0)}}.task-list-toggle[data-v-80f4d61d]{position:absolute;top:0;left:6px;width:15px;height:35px;display:flex;align-items:center;justify-content:center;background:#fffffff2;border:1px solid #d9d9d9;border-radius:0 6px 6px 0;cursor:pointer;z-index:1000;color:#666;transition:all .2s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:1px 1px 4px #00000026}.task-list-toggle.collapsed[data-v-80f4d61d]:hover{box-shadow:-1px 2px 8px #409eff40}.task-list-toggle[data-v-80f4d61d]:active{transform:scale(1)}.task-list-toggle svg[data-v-80f4d61d]{transition:transform .2s ease}.task-list-toggle:hover svg[data-v-80f4d61d]{transform:scale(1.1)}html[data-theme=dark]{background:#1e1e1e!important;color:#e5e5e5!important}html[data-theme=dark]{background:#2c2c2c!important}html[data-theme=dark]{border-right-color:#4c4c4c!important}html[data-theme=dark]{background:#d85555;border-color:#d85555;box-shadow:0 4px 12px #d8555566}html[data-theme=dark]{background:#e67676;border-color:#e67676;box-shadow:0 6px 16px #d8555580}html[data-theme=dark]{color:#fff}html[data-theme=dark]{background:linear-gradient(to right,transparent,var(--gantt-border-dark, #666666) 20%,var(--gantt-border-dark, #666666) 80%,transparent)!important;box-shadow:inset 0 0 2px #ffffff1a!important}html[data-theme=dark]{background:linear-gradient(to right,transparent,var(--gantt-primary, #409eff) 20%,var(--gantt-primary, #409eff) 80%,transparent)!important;border-left-color:var(--gantt-primary, #409eff)!important;border-right-color:var(--gantt-primary, #409eff)!important;box-shadow:inset 0 0 4px #409eff4d,0 0 8px #409eff33!important}html[data-theme=dark]{background:#2a2a2af2!important;border-color:#555!important;color:#ccc!important;box-shadow:1px 1px 4px #0006!important}html[data-theme=dark]{box-shadow:-1px 1px 4px #0006!important}html[data-theme=dark]{background:#2a2a2a!important;color:#569cd6!important;box-shadow:1px 2px 8px #569cd64d!important}html[data-theme=dark]{box-shadow:-1px 2px 8px #569cd64d!important}.task-list-toggle.impact-left[data-v-80f4d61d]{animation:slideLeftImpact-80f4d61d .4s ease-out}.task-list-toggle.impact-right[data-v-80f4d61d]{animation:slideRightImpact-80f4d61d .4s ease-out}.gantt-fullscreen[data-v-80f4d61d]{position:fixed!important;top:0!important;left:0!important;right:0!important;bottom:0!important;width:100vw!important;height:100vh!important;z-index:9999!important;background:#f5f7fa!important;border-radius:0!important;box-shadow:none!important;margin:0!important;padding:0!important;transition:all .3s ease-in-out;animation:ganttFullscreenEnter-80f4d61d .3s ease-out}@keyframes ganttFullscreenEnter-80f4d61d{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.gantt-fullscreen .gantt-body[data-v-80f4d61d]{height:calc(100vh - 60px)}.gantt-fullscreen .gantt-toolbar[data-v-80f4d61d]{border-radius:0!important;box-shadow:0 2px 8px #0000001a!important}html[data-theme=dark]{background:#1e1e1e!important}html[data-theme=dark]{box-shadow:0 2px 8px #0000004d!important}.gantt-root.splitter-dragging[data-v-80f4d61d]{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.gantt-root.splitter-dragging .gantt-panel-right[data-v-80f4d61d]{background:#ffffff1a}.gantt-root.splitter-dragging[data-v-80f4d61d] *{cursor:col-resize!important} diff --git a/dist/assets/index.es-DBXQb5D8.js b/dist/assets/index.es-jljh7oB8.js similarity index 99% rename from dist/assets/index.es-DBXQb5D8.js rename to dist/assets/index.es-jljh7oB8.js index 42544fb..21355c1 100644 --- a/dist/assets/index.es-DBXQb5D8.js +++ b/dist/assets/index.es-jljh7oB8.js @@ -1,4 +1,4 @@ -import{_ as Da}from"./index-0sGHotAG.js";var Va=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function il(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var fn={},cn={},cr,vn;function Q(){if(vn)return cr;vn=1;var n=function(e){return e&&e.Math===Math&&e};return cr=n(typeof globalThis=="object"&&globalThis)||n(typeof window=="object"&&window)||n(typeof self=="object"&&self)||n(typeof Va=="object"&&Va)||n(typeof cr=="object"&&cr)||(function(){return this})()||Function("return this")(),cr}var Qr={},Zr,gn;function Z(){return gn||(gn=1,Zr=function(n){try{return!!n()}catch{return!0}}),Zr}var Jr,dn;function we(){if(dn)return Jr;dn=1;var n=Z();return Jr=!n(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7}),Jr}var et,pn;function Ar(){if(pn)return et;pn=1;var n=Z();return et=!n(function(){var e=(function(){}).bind();return typeof e!="function"||e.hasOwnProperty("prototype")}),et}var rt,yn;function ne(){if(yn)return rt;yn=1;var n=Ar(),e=Function.prototype.call;return rt=n?e.bind(e):function(){return e.apply(e,arguments)},rt}var tt={},mn;function Yl(){if(mn)return tt;mn=1;var n={}.propertyIsEnumerable,e=Object.getOwnPropertyDescriptor,r=e&&!n.call({1:2},1);return tt.f=r?function(i){var a=e(this,i);return!!a&&a.enumerable}:n,tt}var it,bn;function Fa(){return bn||(bn=1,it=function(n,e){return{enumerable:!(n&1),configurable:!(n&2),writable:!(n&4),value:e}}),it}var at,xn;function J(){if(xn)return at;xn=1;var n=Ar(),e=Function.prototype,r=e.call,t=n&&e.bind.bind(r,r);return at=n?t:function(i){return function(){return r.apply(i,arguments)}},at}var nt,On;function er(){if(On)return nt;On=1;var n=J(),e=n({}.toString),r=n("".slice);return nt=function(t){return r(e(t),8,-1)},nt}var st,Tn;function al(){if(Tn)return st;Tn=1;var n=J(),e=Z(),r=er(),t=Object,i=n("".split);return st=e(function(){return!t("z").propertyIsEnumerable(0)})?function(a){return r(a)==="String"?i(a,""):t(a)}:t,st}var ot,Sn;function Ir(){return Sn||(Sn=1,ot=function(n){return n==null}),ot}var ut,En;function Pe(){if(En)return ut;En=1;var n=Ir(),e=TypeError;return ut=function(r){if(n(r))throw new e("Can't call method on "+r);return r},ut}var lt,Rn;function dr(){if(Rn)return lt;Rn=1;var n=al(),e=Pe();return lt=function(r){return n(e(r))},lt}var ht,Cn;function re(){if(Cn)return ht;Cn=1;var n=typeof document=="object"&&document.all;return ht=typeof n>"u"&&n!==void 0?function(e){return typeof e=="function"||e===n}:function(e){return typeof e=="function"},ht}var ft,wn;function pe(){if(wn)return ft;wn=1;var n=re();return ft=function(e){return typeof e=="object"?e!==null:n(e)},ft}var ct,Pn;function rr(){if(Pn)return ct;Pn=1;var n=Q(),e=re(),r=function(t){return e(t)?t:void 0};return ct=function(t,i){return arguments.length<2?r(n[t]):n[t]&&n[t][i]},ct}var vt,An;function Nr(){if(An)return vt;An=1;var n=J();return vt=n({}.isPrototypeOf),vt}var gt,In;function pr(){if(In)return gt;In=1;var n=Q(),e=n.navigator,r=e&&e.userAgent;return gt=r?String(r):"",gt}var dt,Nn;function Ua(){if(Nn)return dt;Nn=1;var n=Q(),e=pr(),r=n.process,t=n.Deno,i=r&&r.versions||t&&t.version,a=i&&i.v8,s,o;return a&&(s=a.split("."),o=s[0]>0&&s[0]<4?1:+(s[0]+s[1])),!o&&e&&(s=e.match(/Edge\/(\d+)/),(!s||s[1]>=74)&&(s=e.match(/Chrome\/(\d+)/),s&&(o=+s[1]))),dt=o,dt}var pt,_n;function nl(){if(_n)return pt;_n=1;var n=Ua(),e=Z(),r=Q(),t=r.String;return pt=!!Object.getOwnPropertySymbols&&!e(function(){var i=Symbol("symbol detection");return!t(i)||!(Object(i)instanceof Symbol)||!Symbol.sham&&n&&n<41}),pt}var yt,Mn;function sl(){if(Mn)return yt;Mn=1;var n=nl();return yt=n&&!Symbol.sham&&typeof Symbol.iterator=="symbol",yt}var mt,qn;function ol(){if(qn)return mt;qn=1;var n=rr(),e=re(),r=Nr(),t=sl(),i=Object;return mt=t?function(a){return typeof a=="symbol"}:function(a){var s=n("Symbol");return e(s)&&r(s.prototype,i(a))},mt}var bt,Dn;function _r(){if(Dn)return bt;Dn=1;var n=String;return bt=function(e){try{return n(e)}catch{return"Object"}},bt}var xt,Vn;function Fe(){if(Vn)return xt;Vn=1;var n=re(),e=_r(),r=TypeError;return xt=function(t){if(n(t))return t;throw new r(e(t)+" is not a function")},xt}var Ot,Ln;function nr(){if(Ln)return Ot;Ln=1;var n=Fe(),e=Ir();return Ot=function(r,t){var i=r[t];return e(i)?void 0:n(i)},Ot}var Tt,kn;function Xl(){if(kn)return Tt;kn=1;var n=ne(),e=re(),r=pe(),t=TypeError;return Tt=function(i,a){var s,o;if(a==="string"&&e(s=i.toString)&&!r(o=n(s,i))||e(s=i.valueOf)&&!r(o=n(s,i))||a!=="string"&&e(s=i.toString)&&!r(o=n(s,i)))return o;throw new t("Can't convert object to primitive value")},Tt}var St={exports:{}},Et,jn;function Me(){return jn||(jn=1,Et=!1),Et}var Rt,Bn;function Ga(){if(Bn)return Rt;Bn=1;var n=Q(),e=Object.defineProperty;return Rt=function(r,t){try{e(n,r,{value:t,configurable:!0,writable:!0})}catch{n[r]=t}return t},Rt}var Fn;function $a(){if(Fn)return St.exports;Fn=1;var n=Me(),e=Q(),r=Ga(),t="__core-js_shared__",i=St.exports=e[t]||r(t,{});return(i.versions||(i.versions=[])).push({version:"3.43.0",mode:n?"pure":"global",copyright:"© 2014-2025 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.43.0/LICENSE",source:"https://github.com/zloirock/core-js"}),St.exports}var Ct,Un;function za(){if(Un)return Ct;Un=1;var n=$a();return Ct=function(e,r){return n[e]||(n[e]=r||{})},Ct}var wt,Gn;function Mr(){if(Gn)return wt;Gn=1;var n=Pe(),e=Object;return wt=function(r){return e(n(r))},wt}var Pt,$n;function Ae(){if($n)return Pt;$n=1;var n=J(),e=Mr(),r=n({}.hasOwnProperty);return Pt=Object.hasOwn||function(i,a){return r(e(i),a)},Pt}var At,zn;function ul(){if(zn)return At;zn=1;var n=J(),e=0,r=Math.random(),t=n(1.1.toString);return At=function(i){return"Symbol("+(i===void 0?"":i)+")_"+t(++e+r,36)},At}var It,Hn;function ae(){if(Hn)return It;Hn=1;var n=Q(),e=za(),r=Ae(),t=ul(),i=nl(),a=sl(),s=n.Symbol,o=e("wks"),u=a?s.for||s:s&&s.withoutSetter||t;return It=function(l){return r(o,l)||(o[l]=i&&r(s,l)?s[l]:u("Symbol."+l)),o[l]},It}var Nt,Wn;function Kl(){if(Wn)return Nt;Wn=1;var n=ne(),e=pe(),r=ol(),t=nr(),i=Xl(),a=ae(),s=TypeError,o=a("toPrimitive");return Nt=function(u,l){if(!e(u)||r(u))return u;var h=t(u,o),c;if(h){if(l===void 0&&(l="default"),c=n(h,u,l),!e(c)||r(c))return c;throw new s("Can't convert object to primitive value")}return l===void 0&&(l="number"),i(u,l)},Nt}var _t,Yn;function ll(){if(Yn)return _t;Yn=1;var n=Kl(),e=ol();return _t=function(r){var t=n(r,"string");return e(t)?t:t+""},_t}var Mt,Xn;function qr(){if(Xn)return Mt;Xn=1;var n=Q(),e=pe(),r=n.document,t=e(r)&&e(r.createElement);return Mt=function(i){return t?r.createElement(i):{}},Mt}var qt,Kn;function hl(){if(Kn)return qt;Kn=1;var n=we(),e=Z(),r=qr();return qt=!n&&!e(function(){return Object.defineProperty(r("div"),"a",{get:function(){return 7}}).a!==7}),qt}var Qn;function Dr(){if(Qn)return Qr;Qn=1;var n=we(),e=ne(),r=Yl(),t=Fa(),i=dr(),a=ll(),s=Ae(),o=hl(),u=Object.getOwnPropertyDescriptor;return Qr.f=n?u:function(h,c){if(h=i(h),c=a(c),o)try{return u(h,c)}catch{}if(s(h,c))return t(!e(r.f,h,c),h[c])},Qr}var Dt={},Vt,Zn;function fl(){if(Zn)return Vt;Zn=1;var n=we(),e=Z();return Vt=n&&e(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42}),Vt}var Lt,Jn;function le(){if(Jn)return Lt;Jn=1;var n=pe(),e=String,r=TypeError;return Lt=function(t){if(n(t))return t;throw new r(e(t)+" is not an object")},Lt}var es;function Ye(){if(es)return Dt;es=1;var n=we(),e=hl(),r=fl(),t=le(),i=ll(),a=TypeError,s=Object.defineProperty,o=Object.getOwnPropertyDescriptor,u="enumerable",l="configurable",h="writable";return Dt.f=n?r?function(v,f,g){if(t(v),f=i(f),t(g),typeof v=="function"&&f==="prototype"&&"value"in g&&h in g&&!g[h]){var d=o(v,f);d&&d[h]&&(v[f]=g.value,g={configurable:l in g?g[l]:d[l],enumerable:u in g?g[u]:d[u],writable:!1})}return s(v,f,g)}:s:function(v,f,g){if(t(v),f=i(f),t(g),e)try{return s(v,f,g)}catch{}if("get"in g||"set"in g)throw new a("Accessors not supported");return"value"in g&&(v[f]=g.value),v},Dt}var kt,rs;function yr(){if(rs)return kt;rs=1;var n=we(),e=Ye(),r=Fa();return kt=n?function(t,i,a){return e.f(t,i,r(1,a))}:function(t,i,a){return t[i]=a,t},kt}var jt={exports:{}},Bt,ts;function Vr(){if(ts)return Bt;ts=1;var n=we(),e=Ae(),r=Function.prototype,t=n&&Object.getOwnPropertyDescriptor,i=e(r,"name"),a=i&&(function(){}).name==="something",s=i&&(!n||n&&t(r,"name").configurable);return Bt={EXISTS:i,PROPER:a,CONFIGURABLE:s},Bt}var Ft,is;function Ha(){if(is)return Ft;is=1;var n=J(),e=re(),r=$a(),t=n(Function.toString);return e(r.inspectSource)||(r.inspectSource=function(i){return t(i)}),Ft=r.inspectSource,Ft}var Ut,as;function Ql(){if(as)return Ut;as=1;var n=Q(),e=re(),r=n.WeakMap;return Ut=e(r)&&/native code/.test(String(r)),Ut}var Gt,ns;function Wa(){if(ns)return Gt;ns=1;var n=za(),e=ul(),r=n("keys");return Gt=function(t){return r[t]||(r[t]=e(t))},Gt}var $t,ss;function Ya(){return ss||(ss=1,$t={}),$t}var zt,os;function Lr(){if(os)return zt;os=1;var n=Ql(),e=Q(),r=pe(),t=yr(),i=Ae(),a=$a(),s=Wa(),o=Ya(),u="Object already initialized",l=e.TypeError,h=e.WeakMap,c,v,f,g=function(m){return f(m)?v(m):c(m,{})},d=function(m){return function(b){var x;if(!r(b)||(x=v(b)).type!==m)throw new l("Incompatible receiver, "+m+" required");return x}};if(n||a.state){var p=a.state||(a.state=new h);p.get=p.get,p.has=p.has,p.set=p.set,c=function(m,b){if(p.has(m))throw new l(u);return b.facade=m,p.set(m,b),b},v=function(m){return p.get(m)||{}},f=function(m){return p.has(m)}}else{var y=s("state");o[y]=!0,c=function(m,b){if(i(m,y))throw new l(u);return b.facade=m,t(m,y,b),b},v=function(m){return i(m,y)?m[y]:{}},f=function(m){return i(m,y)}}return zt={set:c,get:v,has:f,enforce:g,getterFor:d},zt}var us;function cl(){if(us)return jt.exports;us=1;var n=J(),e=Z(),r=re(),t=Ae(),i=we(),a=Vr().CONFIGURABLE,s=Ha(),o=Lr(),u=o.enforce,l=o.get,h=String,c=Object.defineProperty,v=n("".slice),f=n("".replace),g=n([].join),d=i&&!e(function(){return c(function(){},"length",{value:8}).length!==8}),p=String(String).split("String"),y=jt.exports=function(m,b,x){v(h(b),0,7)==="Symbol("&&(b="["+f(h(b),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),x&&x.getter&&(b="get "+b),x&&x.setter&&(b="set "+b),(!t(m,"name")||a&&m.name!==b)&&(i?c(m,"name",{value:b,configurable:!0}):m.name=b),d&&x&&t(x,"arity")&&m.length!==x.arity&&c(m,"length",{value:x.arity});try{x&&t(x,"constructor")&&x.constructor?i&&c(m,"prototype",{writable:!1}):m.prototype&&(m.prototype=void 0)}catch{}var S=u(m);return t(S,"source")||(S.source=g(p,typeof b=="string"?b:"")),m};return Function.prototype.toString=y(function(){return r(this)&&l(this).source||s(this)},"toString"),jt.exports}var Ht,ls;function tr(){if(ls)return Ht;ls=1;var n=re(),e=Ye(),r=cl(),t=Ga();return Ht=function(i,a,s,o){o||(o={});var u=o.enumerable,l=o.name!==void 0?o.name:a;if(n(s)&&r(s,l,o),o.global)u?i[a]=s:t(a,s);else{try{o.unsafe?i[a]&&(u=!0):delete i[a]}catch{}u?i[a]=s:e.f(i,a,{value:s,enumerable:!1,configurable:!o.nonConfigurable,writable:!o.nonWritable})}return i},Ht}var Wt={},Yt,hs;function Zl(){if(hs)return Yt;hs=1;var n=Math.ceil,e=Math.floor;return Yt=Math.trunc||function(t){var i=+t;return(i>0?e:n)(i)},Yt}var Xt,fs;function kr(){if(fs)return Xt;fs=1;var n=Zl();return Xt=function(e){var r=+e;return r!==r||r===0?0:n(r)},Xt}var Kt,cs;function Jl(){if(cs)return Kt;cs=1;var n=kr(),e=Math.max,r=Math.min;return Kt=function(t,i){var a=n(t);return a<0?e(a+i,0):r(a,i)},Kt}var Qt,vs;function sr(){if(vs)return Qt;vs=1;var n=kr(),e=Math.min;return Qt=function(r){var t=n(r);return t>0?e(t,9007199254740991):0},Qt}var Zt,gs;function Xa(){if(gs)return Zt;gs=1;var n=sr();return Zt=function(e){return n(e.length)},Zt}var Jt,ds;function vl(){if(ds)return Jt;ds=1;var n=dr(),e=Jl(),r=Xa(),t=function(i){return function(a,s,o){var u=n(a),l=r(u);if(l===0)return!i&&-1;var h=e(o,l),c;if(i&&s!==s){for(;l>h;)if(c=u[h++],c!==c)return!0}else for(;l>h;h++)if((i||h in u)&&u[h]===s)return i||h||0;return!i&&-1}};return Jt={includes:t(!0),indexOf:t(!1)},Jt}var ei,ps;function gl(){if(ps)return ei;ps=1;var n=J(),e=Ae(),r=dr(),t=vl().indexOf,i=Ya(),a=n([].push);return ei=function(s,o){var u=r(s),l=0,h=[],c;for(c in u)!e(i,c)&&e(u,c)&&a(h,c);for(;o.length>l;)e(u,c=o[l++])&&(~t(h,c)||a(h,c));return h},ei}var ri,ys;function Ka(){return ys||(ys=1,ri=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]),ri}var ms;function eh(){if(ms)return Wt;ms=1;var n=gl(),e=Ka(),r=e.concat("length","prototype");return Wt.f=Object.getOwnPropertyNames||function(i){return n(i,r)},Wt}var ti={},bs;function rh(){return bs||(bs=1,ti.f=Object.getOwnPropertySymbols),ti}var ii,xs;function th(){if(xs)return ii;xs=1;var n=rr(),e=J(),r=eh(),t=rh(),i=le(),a=e([].concat);return ii=n("Reflect","ownKeys")||function(o){var u=r.f(i(o)),l=t.f;return l?a(u,l(o)):u},ii}var ai,Os;function ih(){if(Os)return ai;Os=1;var n=Ae(),e=th(),r=Dr(),t=Ye();return ai=function(i,a,s){for(var o=e(a),u=t.f,l=r.f,h=0;hP;P++)if(A=C(f[P]),A&&s(v,A))return A;return new c(!1)}E=o(f,O)}for(q=m?f.next:E.next;!(I=e(q,E)).done;){try{A=C(I.value)}catch(w){l(E,"throw",w)}if(typeof A=="object"&&A&&s(v,A))return A}return new c(!1)},Hi}var Wi,co;function Rh(){if(co)return Wi;co=1;var n=ae(),e=n("iterator"),r=!1;try{var t=0,i={next:function(){return{done:!!t++}},return:function(){r=!0}};i[e]=function(){return this},Array.from(i,function(){throw 2})}catch{}return Wi=function(a,s){try{if(!s&&!r)return!1}catch{return!1}var o=!1;try{var u={};u[e]=function(){return{next:function(){return{done:o=!0}}}},a(u)}catch{}return o},Wi}var Yi,vo;function Cl(){if(vo)return Yi;vo=1;var n=mr(),e=Rh(),r=br().CONSTRUCTOR;return Yi=r||!e(function(t){n.all(t).then(void 0,function(){})}),Yi}var go;function Ch(){if(go)return no;go=1;var n=he(),e=ne(),r=Fe(),t=xr(),i=Ja(),a=Rl(),s=Cl();return n({target:"Promise",stat:!0,forced:s},{all:function(u){var l=this,h=t.f(l),c=h.resolve,v=h.reject,f=i(function(){var g=r(l.resolve),d=[],p=0,y=1;a(u,function(m){var b=p++,x=!1;y++,e(g,l,m).then(function(S){x||(x=!0,d[b]=S,--y||c(d))},v)}),--y||c(d)});return f.error&&v(f.value),h.promise}}),no}var po={},yo;function wh(){if(yo)return po;yo=1;var n=he(),e=Me(),r=br().CONSTRUCTOR,t=mr(),i=rr(),a=re(),s=tr(),o=t&&t.prototype;if(n({target:"Promise",proto:!0,forced:r,real:!0},{catch:function(l){return this.then(void 0,l)}}),!e&&a(t)){var u=i("Promise").prototype.catch;o.catch!==u&&s(o,"catch",u,{unsafe:!0})}return po}var mo={},bo;function Ph(){if(bo)return mo;bo=1;var n=he(),e=ne(),r=Fe(),t=xr(),i=Ja(),a=Rl(),s=Cl();return n({target:"Promise",stat:!0,forced:s},{race:function(u){var l=this,h=t.f(l),c=h.reject,v=i(function(){var f=r(l.resolve);a(u,function(g){e(f,l,g).then(h.resolve,c)})});return v.error&&c(v.value),h.promise}}),mo}var xo={},Oo;function Ah(){if(Oo)return xo;Oo=1;var n=he(),e=xr(),r=br().CONSTRUCTOR;return n({target:"Promise",stat:!0,forced:r},{reject:function(i){var a=e.f(this),s=a.reject;return s(i),a.promise}}),xo}var To={},Xi,So;function Ih(){if(So)return Xi;So=1;var n=le(),e=pe(),r=xr();return Xi=function(t,i){if(n(t),e(i)&&i.constructor===t)return i;var a=r.f(t),s=a.resolve;return s(i),a.promise},Xi}var Eo;function Nh(){if(Eo)return To;Eo=1;var n=he(),e=rr(),r=Me(),t=mr(),i=br().CONSTRUCTOR,a=Ih(),s=e("Promise"),o=r&&!i;return n({target:"Promise",stat:!0,forced:r||i},{resolve:function(l){return a(o&&this===s?t:this,l)}}),To}var Ro;function _h(){return Ro||(Ro=1,Oh(),Ch(),wh(),Ph(),Ah(),Nh()),fn}_h();function Co(n,e,r,t,i,a,s){try{var o=n[a](s),u=o.value}catch(l){return void r(l)}o.done?e(u):Promise.resolve(u).then(t,i)}function Be(n){return function(){var e=this,r=arguments;return new Promise(function(t,i){var a=n.apply(e,r);function s(u){Co(a,t,i,s,o,"next",u)}function o(u){Co(a,t,i,s,o,"throw",u)}s(void 0)})}}var wo={},Po={},Ki,Ao;function qe(){if(Ao)return Ki;Ao=1;var n=Qa(),e=String;return Ki=function(r){if(n(r)==="Symbol")throw new TypeError("Cannot convert a Symbol value to a string");return e(r)},Ki}var Qi,Io;function wl(){if(Io)return Qi;Io=1;var n=le();return Qi=function(){var e=n(this),r="";return e.hasIndices&&(r+="d"),e.global&&(r+="g"),e.ignoreCase&&(r+="i"),e.multiline&&(r+="m"),e.dotAll&&(r+="s"),e.unicode&&(r+="u"),e.unicodeSets&&(r+="v"),e.sticky&&(r+="y"),r},Qi}var Zi,No;function Pl(){if(No)return Zi;No=1;var n=Z(),e=Q(),r=e.RegExp,t=n(function(){var s=r("a","y");return s.lastIndex=2,s.exec("abcd")!==null}),i=t||n(function(){return!r("a","y").sticky}),a=t||n(function(){var s=r("^r","gy");return s.lastIndex=2,s.exec("str")!==null});return Zi={BROKEN_CARET:a,MISSED_STICKY:i,UNSUPPORTED_Y:t},Zi}var Ji={},ea,_o;function Mh(){if(_o)return ea;_o=1;var n=gl(),e=Ka();return ea=Object.keys||function(t){return n(t,e)},ea}var Mo;function qh(){if(Mo)return Ji;Mo=1;var n=we(),e=fl(),r=Ye(),t=le(),i=dr(),a=Mh();return Ji.f=n&&!e?Object.defineProperties:function(o,u){t(o);for(var l=i(u),h=a(u),c=h.length,v=0,f;c>v;)r.f(o,f=h[v++],l[f]);return o},Ji}var ra,qo;function Ur(){if(qo)return ra;qo=1;var n=le(),e=qh(),r=Ka(),t=Ya(),i=xl(),a=qr(),s=Wa(),o=">",u="<",l="prototype",h="script",c=s("IE_PROTO"),v=function(){},f=function(m){return u+h+o+m+u+"/"+h+o},g=function(m){m.write(f("")),m.close();var b=m.parentWindow.Object;return m=null,b},d=function(){var m=a("iframe"),b="java"+h+":",x;return m.style.display="none",i.appendChild(m),m.src=String(b),x=m.contentWindow.document,x.open(),x.write(f("document.F=Object")),x.close(),x.F},p,y=function(){try{p=new ActiveXObject("htmlfile")}catch{}y=typeof document<"u"?document.domain&&p?g(p):d():g(p);for(var m=r.length;m--;)delete y[l][r[m]];return y()};return t[c]=!0,ra=Object.create||function(b,x){var S;return b!==null?(v[l]=n(b),S=new v,v[l]=null,S[c]=b):S=y(),x===void 0?S:e.f(S,x)},ra}var ta,Do;function Dh(){if(Do)return ta;Do=1;var n=Z(),e=Q(),r=e.RegExp;return ta=n(function(){var t=r(".","s");return!(t.dotAll&&t.test(` +import{_ as Da}from"./index-DBfszOX9.js";var Va=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function il(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var fn={},cn={},cr,vn;function Q(){if(vn)return cr;vn=1;var n=function(e){return e&&e.Math===Math&&e};return cr=n(typeof globalThis=="object"&&globalThis)||n(typeof window=="object"&&window)||n(typeof self=="object"&&self)||n(typeof Va=="object"&&Va)||n(typeof cr=="object"&&cr)||(function(){return this})()||Function("return this")(),cr}var Qr={},Zr,gn;function Z(){return gn||(gn=1,Zr=function(n){try{return!!n()}catch{return!0}}),Zr}var Jr,dn;function we(){if(dn)return Jr;dn=1;var n=Z();return Jr=!n(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7}),Jr}var et,pn;function Ar(){if(pn)return et;pn=1;var n=Z();return et=!n(function(){var e=(function(){}).bind();return typeof e!="function"||e.hasOwnProperty("prototype")}),et}var rt,yn;function ne(){if(yn)return rt;yn=1;var n=Ar(),e=Function.prototype.call;return rt=n?e.bind(e):function(){return e.apply(e,arguments)},rt}var tt={},mn;function Yl(){if(mn)return tt;mn=1;var n={}.propertyIsEnumerable,e=Object.getOwnPropertyDescriptor,r=e&&!n.call({1:2},1);return tt.f=r?function(i){var a=e(this,i);return!!a&&a.enumerable}:n,tt}var it,bn;function Fa(){return bn||(bn=1,it=function(n,e){return{enumerable:!(n&1),configurable:!(n&2),writable:!(n&4),value:e}}),it}var at,xn;function J(){if(xn)return at;xn=1;var n=Ar(),e=Function.prototype,r=e.call,t=n&&e.bind.bind(r,r);return at=n?t:function(i){return function(){return r.apply(i,arguments)}},at}var nt,On;function er(){if(On)return nt;On=1;var n=J(),e=n({}.toString),r=n("".slice);return nt=function(t){return r(e(t),8,-1)},nt}var st,Tn;function al(){if(Tn)return st;Tn=1;var n=J(),e=Z(),r=er(),t=Object,i=n("".split);return st=e(function(){return!t("z").propertyIsEnumerable(0)})?function(a){return r(a)==="String"?i(a,""):t(a)}:t,st}var ot,Sn;function Ir(){return Sn||(Sn=1,ot=function(n){return n==null}),ot}var ut,En;function Pe(){if(En)return ut;En=1;var n=Ir(),e=TypeError;return ut=function(r){if(n(r))throw new e("Can't call method on "+r);return r},ut}var lt,Rn;function dr(){if(Rn)return lt;Rn=1;var n=al(),e=Pe();return lt=function(r){return n(e(r))},lt}var ht,Cn;function re(){if(Cn)return ht;Cn=1;var n=typeof document=="object"&&document.all;return ht=typeof n>"u"&&n!==void 0?function(e){return typeof e=="function"||e===n}:function(e){return typeof e=="function"},ht}var ft,wn;function pe(){if(wn)return ft;wn=1;var n=re();return ft=function(e){return typeof e=="object"?e!==null:n(e)},ft}var ct,Pn;function rr(){if(Pn)return ct;Pn=1;var n=Q(),e=re(),r=function(t){return e(t)?t:void 0};return ct=function(t,i){return arguments.length<2?r(n[t]):n[t]&&n[t][i]},ct}var vt,An;function Nr(){if(An)return vt;An=1;var n=J();return vt=n({}.isPrototypeOf),vt}var gt,In;function pr(){if(In)return gt;In=1;var n=Q(),e=n.navigator,r=e&&e.userAgent;return gt=r?String(r):"",gt}var dt,Nn;function Ua(){if(Nn)return dt;Nn=1;var n=Q(),e=pr(),r=n.process,t=n.Deno,i=r&&r.versions||t&&t.version,a=i&&i.v8,s,o;return a&&(s=a.split("."),o=s[0]>0&&s[0]<4?1:+(s[0]+s[1])),!o&&e&&(s=e.match(/Edge\/(\d+)/),(!s||s[1]>=74)&&(s=e.match(/Chrome\/(\d+)/),s&&(o=+s[1]))),dt=o,dt}var pt,_n;function nl(){if(_n)return pt;_n=1;var n=Ua(),e=Z(),r=Q(),t=r.String;return pt=!!Object.getOwnPropertySymbols&&!e(function(){var i=Symbol("symbol detection");return!t(i)||!(Object(i)instanceof Symbol)||!Symbol.sham&&n&&n<41}),pt}var yt,Mn;function sl(){if(Mn)return yt;Mn=1;var n=nl();return yt=n&&!Symbol.sham&&typeof Symbol.iterator=="symbol",yt}var mt,qn;function ol(){if(qn)return mt;qn=1;var n=rr(),e=re(),r=Nr(),t=sl(),i=Object;return mt=t?function(a){return typeof a=="symbol"}:function(a){var s=n("Symbol");return e(s)&&r(s.prototype,i(a))},mt}var bt,Dn;function _r(){if(Dn)return bt;Dn=1;var n=String;return bt=function(e){try{return n(e)}catch{return"Object"}},bt}var xt,Vn;function Fe(){if(Vn)return xt;Vn=1;var n=re(),e=_r(),r=TypeError;return xt=function(t){if(n(t))return t;throw new r(e(t)+" is not a function")},xt}var Ot,Ln;function nr(){if(Ln)return Ot;Ln=1;var n=Fe(),e=Ir();return Ot=function(r,t){var i=r[t];return e(i)?void 0:n(i)},Ot}var Tt,kn;function Xl(){if(kn)return Tt;kn=1;var n=ne(),e=re(),r=pe(),t=TypeError;return Tt=function(i,a){var s,o;if(a==="string"&&e(s=i.toString)&&!r(o=n(s,i))||e(s=i.valueOf)&&!r(o=n(s,i))||a!=="string"&&e(s=i.toString)&&!r(o=n(s,i)))return o;throw new t("Can't convert object to primitive value")},Tt}var St={exports:{}},Et,jn;function Me(){return jn||(jn=1,Et=!1),Et}var Rt,Bn;function Ga(){if(Bn)return Rt;Bn=1;var n=Q(),e=Object.defineProperty;return Rt=function(r,t){try{e(n,r,{value:t,configurable:!0,writable:!0})}catch{n[r]=t}return t},Rt}var Fn;function $a(){if(Fn)return St.exports;Fn=1;var n=Me(),e=Q(),r=Ga(),t="__core-js_shared__",i=St.exports=e[t]||r(t,{});return(i.versions||(i.versions=[])).push({version:"3.43.0",mode:n?"pure":"global",copyright:"© 2014-2025 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.43.0/LICENSE",source:"https://github.com/zloirock/core-js"}),St.exports}var Ct,Un;function za(){if(Un)return Ct;Un=1;var n=$a();return Ct=function(e,r){return n[e]||(n[e]=r||{})},Ct}var wt,Gn;function Mr(){if(Gn)return wt;Gn=1;var n=Pe(),e=Object;return wt=function(r){return e(n(r))},wt}var Pt,$n;function Ae(){if($n)return Pt;$n=1;var n=J(),e=Mr(),r=n({}.hasOwnProperty);return Pt=Object.hasOwn||function(i,a){return r(e(i),a)},Pt}var At,zn;function ul(){if(zn)return At;zn=1;var n=J(),e=0,r=Math.random(),t=n(1.1.toString);return At=function(i){return"Symbol("+(i===void 0?"":i)+")_"+t(++e+r,36)},At}var It,Hn;function ae(){if(Hn)return It;Hn=1;var n=Q(),e=za(),r=Ae(),t=ul(),i=nl(),a=sl(),s=n.Symbol,o=e("wks"),u=a?s.for||s:s&&s.withoutSetter||t;return It=function(l){return r(o,l)||(o[l]=i&&r(s,l)?s[l]:u("Symbol."+l)),o[l]},It}var Nt,Wn;function Kl(){if(Wn)return Nt;Wn=1;var n=ne(),e=pe(),r=ol(),t=nr(),i=Xl(),a=ae(),s=TypeError,o=a("toPrimitive");return Nt=function(u,l){if(!e(u)||r(u))return u;var h=t(u,o),c;if(h){if(l===void 0&&(l="default"),c=n(h,u,l),!e(c)||r(c))return c;throw new s("Can't convert object to primitive value")}return l===void 0&&(l="number"),i(u,l)},Nt}var _t,Yn;function ll(){if(Yn)return _t;Yn=1;var n=Kl(),e=ol();return _t=function(r){var t=n(r,"string");return e(t)?t:t+""},_t}var Mt,Xn;function qr(){if(Xn)return Mt;Xn=1;var n=Q(),e=pe(),r=n.document,t=e(r)&&e(r.createElement);return Mt=function(i){return t?r.createElement(i):{}},Mt}var qt,Kn;function hl(){if(Kn)return qt;Kn=1;var n=we(),e=Z(),r=qr();return qt=!n&&!e(function(){return Object.defineProperty(r("div"),"a",{get:function(){return 7}}).a!==7}),qt}var Qn;function Dr(){if(Qn)return Qr;Qn=1;var n=we(),e=ne(),r=Yl(),t=Fa(),i=dr(),a=ll(),s=Ae(),o=hl(),u=Object.getOwnPropertyDescriptor;return Qr.f=n?u:function(h,c){if(h=i(h),c=a(c),o)try{return u(h,c)}catch{}if(s(h,c))return t(!e(r.f,h,c),h[c])},Qr}var Dt={},Vt,Zn;function fl(){if(Zn)return Vt;Zn=1;var n=we(),e=Z();return Vt=n&&e(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42}),Vt}var Lt,Jn;function le(){if(Jn)return Lt;Jn=1;var n=pe(),e=String,r=TypeError;return Lt=function(t){if(n(t))return t;throw new r(e(t)+" is not an object")},Lt}var es;function Ye(){if(es)return Dt;es=1;var n=we(),e=hl(),r=fl(),t=le(),i=ll(),a=TypeError,s=Object.defineProperty,o=Object.getOwnPropertyDescriptor,u="enumerable",l="configurable",h="writable";return Dt.f=n?r?function(v,f,g){if(t(v),f=i(f),t(g),typeof v=="function"&&f==="prototype"&&"value"in g&&h in g&&!g[h]){var d=o(v,f);d&&d[h]&&(v[f]=g.value,g={configurable:l in g?g[l]:d[l],enumerable:u in g?g[u]:d[u],writable:!1})}return s(v,f,g)}:s:function(v,f,g){if(t(v),f=i(f),t(g),e)try{return s(v,f,g)}catch{}if("get"in g||"set"in g)throw new a("Accessors not supported");return"value"in g&&(v[f]=g.value),v},Dt}var kt,rs;function yr(){if(rs)return kt;rs=1;var n=we(),e=Ye(),r=Fa();return kt=n?function(t,i,a){return e.f(t,i,r(1,a))}:function(t,i,a){return t[i]=a,t},kt}var jt={exports:{}},Bt,ts;function Vr(){if(ts)return Bt;ts=1;var n=we(),e=Ae(),r=Function.prototype,t=n&&Object.getOwnPropertyDescriptor,i=e(r,"name"),a=i&&(function(){}).name==="something",s=i&&(!n||n&&t(r,"name").configurable);return Bt={EXISTS:i,PROPER:a,CONFIGURABLE:s},Bt}var Ft,is;function Ha(){if(is)return Ft;is=1;var n=J(),e=re(),r=$a(),t=n(Function.toString);return e(r.inspectSource)||(r.inspectSource=function(i){return t(i)}),Ft=r.inspectSource,Ft}var Ut,as;function Ql(){if(as)return Ut;as=1;var n=Q(),e=re(),r=n.WeakMap;return Ut=e(r)&&/native code/.test(String(r)),Ut}var Gt,ns;function Wa(){if(ns)return Gt;ns=1;var n=za(),e=ul(),r=n("keys");return Gt=function(t){return r[t]||(r[t]=e(t))},Gt}var $t,ss;function Ya(){return ss||(ss=1,$t={}),$t}var zt,os;function Lr(){if(os)return zt;os=1;var n=Ql(),e=Q(),r=pe(),t=yr(),i=Ae(),a=$a(),s=Wa(),o=Ya(),u="Object already initialized",l=e.TypeError,h=e.WeakMap,c,v,f,g=function(m){return f(m)?v(m):c(m,{})},d=function(m){return function(b){var x;if(!r(b)||(x=v(b)).type!==m)throw new l("Incompatible receiver, "+m+" required");return x}};if(n||a.state){var p=a.state||(a.state=new h);p.get=p.get,p.has=p.has,p.set=p.set,c=function(m,b){if(p.has(m))throw new l(u);return b.facade=m,p.set(m,b),b},v=function(m){return p.get(m)||{}},f=function(m){return p.has(m)}}else{var y=s("state");o[y]=!0,c=function(m,b){if(i(m,y))throw new l(u);return b.facade=m,t(m,y,b),b},v=function(m){return i(m,y)?m[y]:{}},f=function(m){return i(m,y)}}return zt={set:c,get:v,has:f,enforce:g,getterFor:d},zt}var us;function cl(){if(us)return jt.exports;us=1;var n=J(),e=Z(),r=re(),t=Ae(),i=we(),a=Vr().CONFIGURABLE,s=Ha(),o=Lr(),u=o.enforce,l=o.get,h=String,c=Object.defineProperty,v=n("".slice),f=n("".replace),g=n([].join),d=i&&!e(function(){return c(function(){},"length",{value:8}).length!==8}),p=String(String).split("String"),y=jt.exports=function(m,b,x){v(h(b),0,7)==="Symbol("&&(b="["+f(h(b),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),x&&x.getter&&(b="get "+b),x&&x.setter&&(b="set "+b),(!t(m,"name")||a&&m.name!==b)&&(i?c(m,"name",{value:b,configurable:!0}):m.name=b),d&&x&&t(x,"arity")&&m.length!==x.arity&&c(m,"length",{value:x.arity});try{x&&t(x,"constructor")&&x.constructor?i&&c(m,"prototype",{writable:!1}):m.prototype&&(m.prototype=void 0)}catch{}var S=u(m);return t(S,"source")||(S.source=g(p,typeof b=="string"?b:"")),m};return Function.prototype.toString=y(function(){return r(this)&&l(this).source||s(this)},"toString"),jt.exports}var Ht,ls;function tr(){if(ls)return Ht;ls=1;var n=re(),e=Ye(),r=cl(),t=Ga();return Ht=function(i,a,s,o){o||(o={});var u=o.enumerable,l=o.name!==void 0?o.name:a;if(n(s)&&r(s,l,o),o.global)u?i[a]=s:t(a,s);else{try{o.unsafe?i[a]&&(u=!0):delete i[a]}catch{}u?i[a]=s:e.f(i,a,{value:s,enumerable:!1,configurable:!o.nonConfigurable,writable:!o.nonWritable})}return i},Ht}var Wt={},Yt,hs;function Zl(){if(hs)return Yt;hs=1;var n=Math.ceil,e=Math.floor;return Yt=Math.trunc||function(t){var i=+t;return(i>0?e:n)(i)},Yt}var Xt,fs;function kr(){if(fs)return Xt;fs=1;var n=Zl();return Xt=function(e){var r=+e;return r!==r||r===0?0:n(r)},Xt}var Kt,cs;function Jl(){if(cs)return Kt;cs=1;var n=kr(),e=Math.max,r=Math.min;return Kt=function(t,i){var a=n(t);return a<0?e(a+i,0):r(a,i)},Kt}var Qt,vs;function sr(){if(vs)return Qt;vs=1;var n=kr(),e=Math.min;return Qt=function(r){var t=n(r);return t>0?e(t,9007199254740991):0},Qt}var Zt,gs;function Xa(){if(gs)return Zt;gs=1;var n=sr();return Zt=function(e){return n(e.length)},Zt}var Jt,ds;function vl(){if(ds)return Jt;ds=1;var n=dr(),e=Jl(),r=Xa(),t=function(i){return function(a,s,o){var u=n(a),l=r(u);if(l===0)return!i&&-1;var h=e(o,l),c;if(i&&s!==s){for(;l>h;)if(c=u[h++],c!==c)return!0}else for(;l>h;h++)if((i||h in u)&&u[h]===s)return i||h||0;return!i&&-1}};return Jt={includes:t(!0),indexOf:t(!1)},Jt}var ei,ps;function gl(){if(ps)return ei;ps=1;var n=J(),e=Ae(),r=dr(),t=vl().indexOf,i=Ya(),a=n([].push);return ei=function(s,o){var u=r(s),l=0,h=[],c;for(c in u)!e(i,c)&&e(u,c)&&a(h,c);for(;o.length>l;)e(u,c=o[l++])&&(~t(h,c)||a(h,c));return h},ei}var ri,ys;function Ka(){return ys||(ys=1,ri=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]),ri}var ms;function eh(){if(ms)return Wt;ms=1;var n=gl(),e=Ka(),r=e.concat("length","prototype");return Wt.f=Object.getOwnPropertyNames||function(i){return n(i,r)},Wt}var ti={},bs;function rh(){return bs||(bs=1,ti.f=Object.getOwnPropertySymbols),ti}var ii,xs;function th(){if(xs)return ii;xs=1;var n=rr(),e=J(),r=eh(),t=rh(),i=le(),a=e([].concat);return ii=n("Reflect","ownKeys")||function(o){var u=r.f(i(o)),l=t.f;return l?a(u,l(o)):u},ii}var ai,Os;function ih(){if(Os)return ai;Os=1;var n=Ae(),e=th(),r=Dr(),t=Ye();return ai=function(i,a,s){for(var o=e(a),u=t.f,l=r.f,h=0;hP;P++)if(A=C(f[P]),A&&s(v,A))return A;return new c(!1)}E=o(f,O)}for(q=m?f.next:E.next;!(I=e(q,E)).done;){try{A=C(I.value)}catch(w){l(E,"throw",w)}if(typeof A=="object"&&A&&s(v,A))return A}return new c(!1)},Hi}var Wi,co;function Rh(){if(co)return Wi;co=1;var n=ae(),e=n("iterator"),r=!1;try{var t=0,i={next:function(){return{done:!!t++}},return:function(){r=!0}};i[e]=function(){return this},Array.from(i,function(){throw 2})}catch{}return Wi=function(a,s){try{if(!s&&!r)return!1}catch{return!1}var o=!1;try{var u={};u[e]=function(){return{next:function(){return{done:o=!0}}}},a(u)}catch{}return o},Wi}var Yi,vo;function Cl(){if(vo)return Yi;vo=1;var n=mr(),e=Rh(),r=br().CONSTRUCTOR;return Yi=r||!e(function(t){n.all(t).then(void 0,function(){})}),Yi}var go;function Ch(){if(go)return no;go=1;var n=he(),e=ne(),r=Fe(),t=xr(),i=Ja(),a=Rl(),s=Cl();return n({target:"Promise",stat:!0,forced:s},{all:function(u){var l=this,h=t.f(l),c=h.resolve,v=h.reject,f=i(function(){var g=r(l.resolve),d=[],p=0,y=1;a(u,function(m){var b=p++,x=!1;y++,e(g,l,m).then(function(S){x||(x=!0,d[b]=S,--y||c(d))},v)}),--y||c(d)});return f.error&&v(f.value),h.promise}}),no}var po={},yo;function wh(){if(yo)return po;yo=1;var n=he(),e=Me(),r=br().CONSTRUCTOR,t=mr(),i=rr(),a=re(),s=tr(),o=t&&t.prototype;if(n({target:"Promise",proto:!0,forced:r,real:!0},{catch:function(l){return this.then(void 0,l)}}),!e&&a(t)){var u=i("Promise").prototype.catch;o.catch!==u&&s(o,"catch",u,{unsafe:!0})}return po}var mo={},bo;function Ph(){if(bo)return mo;bo=1;var n=he(),e=ne(),r=Fe(),t=xr(),i=Ja(),a=Rl(),s=Cl();return n({target:"Promise",stat:!0,forced:s},{race:function(u){var l=this,h=t.f(l),c=h.reject,v=i(function(){var f=r(l.resolve);a(u,function(g){e(f,l,g).then(h.resolve,c)})});return v.error&&c(v.value),h.promise}}),mo}var xo={},Oo;function Ah(){if(Oo)return xo;Oo=1;var n=he(),e=xr(),r=br().CONSTRUCTOR;return n({target:"Promise",stat:!0,forced:r},{reject:function(i){var a=e.f(this),s=a.reject;return s(i),a.promise}}),xo}var To={},Xi,So;function Ih(){if(So)return Xi;So=1;var n=le(),e=pe(),r=xr();return Xi=function(t,i){if(n(t),e(i)&&i.constructor===t)return i;var a=r.f(t),s=a.resolve;return s(i),a.promise},Xi}var Eo;function Nh(){if(Eo)return To;Eo=1;var n=he(),e=rr(),r=Me(),t=mr(),i=br().CONSTRUCTOR,a=Ih(),s=e("Promise"),o=r&&!i;return n({target:"Promise",stat:!0,forced:r||i},{resolve:function(l){return a(o&&this===s?t:this,l)}}),To}var Ro;function _h(){return Ro||(Ro=1,Oh(),Ch(),wh(),Ph(),Ah(),Nh()),fn}_h();function Co(n,e,r,t,i,a,s){try{var o=n[a](s),u=o.value}catch(l){return void r(l)}o.done?e(u):Promise.resolve(u).then(t,i)}function Be(n){return function(){var e=this,r=arguments;return new Promise(function(t,i){var a=n.apply(e,r);function s(u){Co(a,t,i,s,o,"next",u)}function o(u){Co(a,t,i,s,o,"throw",u)}s(void 0)})}}var wo={},Po={},Ki,Ao;function qe(){if(Ao)return Ki;Ao=1;var n=Qa(),e=String;return Ki=function(r){if(n(r)==="Symbol")throw new TypeError("Cannot convert a Symbol value to a string");return e(r)},Ki}var Qi,Io;function wl(){if(Io)return Qi;Io=1;var n=le();return Qi=function(){var e=n(this),r="";return e.hasIndices&&(r+="d"),e.global&&(r+="g"),e.ignoreCase&&(r+="i"),e.multiline&&(r+="m"),e.dotAll&&(r+="s"),e.unicode&&(r+="u"),e.unicodeSets&&(r+="v"),e.sticky&&(r+="y"),r},Qi}var Zi,No;function Pl(){if(No)return Zi;No=1;var n=Z(),e=Q(),r=e.RegExp,t=n(function(){var s=r("a","y");return s.lastIndex=2,s.exec("abcd")!==null}),i=t||n(function(){return!r("a","y").sticky}),a=t||n(function(){var s=r("^r","gy");return s.lastIndex=2,s.exec("str")!==null});return Zi={BROKEN_CARET:a,MISSED_STICKY:i,UNSUPPORTED_Y:t},Zi}var Ji={},ea,_o;function Mh(){if(_o)return ea;_o=1;var n=gl(),e=Ka();return ea=Object.keys||function(t){return n(t,e)},ea}var Mo;function qh(){if(Mo)return Ji;Mo=1;var n=we(),e=fl(),r=Ye(),t=le(),i=dr(),a=Mh();return Ji.f=n&&!e?Object.defineProperties:function(o,u){t(o);for(var l=i(u),h=a(u),c=h.length,v=0,f;c>v;)r.f(o,f=h[v++],l[f]);return o},Ji}var ra,qo;function Ur(){if(qo)return ra;qo=1;var n=le(),e=qh(),r=Ka(),t=Ya(),i=xl(),a=qr(),s=Wa(),o=">",u="<",l="prototype",h="script",c=s("IE_PROTO"),v=function(){},f=function(m){return u+h+o+m+u+"/"+h+o},g=function(m){m.write(f("")),m.close();var b=m.parentWindow.Object;return m=null,b},d=function(){var m=a("iframe"),b="java"+h+":",x;return m.style.display="none",i.appendChild(m),m.src=String(b),x=m.contentWindow.document,x.open(),x.write(f("document.F=Object")),x.close(),x.F},p,y=function(){try{p=new ActiveXObject("htmlfile")}catch{}y=typeof document<"u"?document.domain&&p?g(p):d():g(p);for(var m=r.length;m--;)delete y[l][r[m]];return y()};return t[c]=!0,ra=Object.create||function(b,x){var S;return b!==null?(v[l]=n(b),S=new v,v[l]=null,S[c]=b):S=y(),x===void 0?S:e.f(S,x)},ra}var ta,Do;function Dh(){if(Do)return ta;Do=1;var n=Z(),e=Q(),r=e.RegExp;return ta=n(function(){var t=r(".","s");return!(t.dotAll&&t.test(` `)&&t.flags==="s")}),ta}var ia,Vo;function Vh(){if(Vo)return ia;Vo=1;var n=Z(),e=Q(),r=e.RegExp;return ia=n(function(){var t=r("(?b)","g");return t.exec("b").groups.a!=="b"||"b".replace(t,"$c")!=="bc"}),ia}var aa,Lo;function en(){if(Lo)return aa;Lo=1;var n=ne(),e=J(),r=qe(),t=wl(),i=Pl(),a=za(),s=Ur(),o=Lr().get,u=Dh(),l=Vh(),h=a("native-string-replace",String.prototype.replace),c=RegExp.prototype.exec,v=c,f=e("".charAt),g=e("".indexOf),d=e("".replace),p=e("".slice),y=(function(){var S=/a/,E=/b*/g;return n(c,S,"a"),n(c,E,"a"),S.lastIndex!==0||E.lastIndex!==0})(),m=i.BROKEN_CARET,b=/()??/.exec("")[1]!==void 0,x=y||b||m||u||l;return x&&(v=function(E){var O=this,P=o(O),_=r(E),A=P.raw,q,I,j,C,w,U,L;if(A)return A.lastIndex=O.lastIndex,q=n(v,A,_),O.lastIndex=A.lastIndex,q;var V=P.groups,M=m&&O.sticky,N=n(t,O),k=O.source,z=0,H=_;if(M&&(N=d(N,"y",""),g(N,"g")===-1&&(N+="g"),H=p(_,O.lastIndex),O.lastIndex>0&&(!O.multiline||O.multiline&&f(_,O.lastIndex-1)!==` `)&&(k="(?: "+k+")",H=" "+H,z++),I=new RegExp("^(?:"+k+")",N)),b&&(I=new RegExp("^"+k+"$(?!\\s)",N)),y&&(j=O.lastIndex),C=n(c,M?I:O,H),M?C?(C.input=p(C.input,z),C[0]=p(C[0],z),C.index=O.lastIndex,O.lastIndex+=C[0].length):O.lastIndex=0:y&&C&&(O.lastIndex=O.global?C.index+C[0].length:j),b&&C&&C.length>1&&n(h,C[0],I,function(){for(w=1;w=f?u?"":void 0:(g=a(c,v),g<55296||g>56319||v+1===f||(d=a(c,v+1))<56320||d>57343?u?i(c,v):g:u?s(c,v,v+2):(g-55296<<10)+(d-56320)+65536)}};return sa={codeAt:o(!1),charAt:o(!0)},sa}var oa,Fo;function tn(){if(Fo)return oa;Fo=1;var n=kh().charAt;return oa=function(e,r,t){return r+(t?n(e,r).length:1)},oa}var ua,Uo;function jh(){if(Uo)return ua;Uo=1;var n=Q(),e=Z(),r=n.RegExp,t=!e(function(){var i=!0;try{r(".","d")}catch{i=!1}var a={},s="",o=i?"dgimsy":"gimsy",u=function(v,f){Object.defineProperty(a,v,{get:function(){return s+=f,!0}})},l={dotAll:"s",global:"g",ignoreCase:"i",multiline:"m",sticky:"y"};i&&(l.hasIndices="d");for(var h in l)u(h,l[h]);var c=Object.getOwnPropertyDescriptor(r.prototype,"flags").get.call(a);return c!==o||s!==o});return ua={correct:t},ua}var la,Go;function an(){if(Go)return la;Go=1;var n=ne(),e=Ae(),r=Nr(),t=jh(),i=wl(),a=RegExp.prototype;return la=t.correct?function(s){return s.flags}:function(s){return!t.correct&&r(a,s)&&!e(s,"flags")?n(i,s):s.flags},la}var ha,$o;function nn(){if($o)return ha;$o=1;var n=ne(),e=le(),r=re(),t=er(),i=en(),a=TypeError;return ha=function(s,o){var u=s.exec;if(r(u)){var l=n(u,s,o);return l!==null&&e(l),l}if(t(s)==="RegExp")return n(i,s,o);throw new a("RegExp#exec called on incompatible receiver")},ha}var zo;function Bh(){if(zo)return wo;zo=1;var n=ne(),e=J(),r=rn(),t=le(),i=pe(),a=sr(),s=qe(),o=Pe(),u=nr(),l=tn(),h=an(),c=nn(),v=e("".indexOf);return r("match",function(f,g,d){return[function(y){var m=o(this),b=i(y)?u(y,f):void 0;return b?n(b,y,m):new RegExp(y)[f](s(m))},function(p){var y=t(this),m=s(p),b=d(g,y,m);if(b.done)return b.value;var x=s(h(y));if(v(x,"g")===-1)return c(y,m);var S=v(x,"u")!==-1;y.lastIndex=0;for(var E=[],O=0,P;(P=c(y,m))!==null;){var _=s(P[0]);E[O]=_,_===""&&(y.lastIndex=l(m,a(y.lastIndex),S)),O++}return O===0?null:E}]}),wo}Bh();var Ho={},fa,Wo;function Fh(){if(Wo)return fa;Wo=1;var n=J(),e=Mr(),r=Math.floor,t=n("".charAt),i=n("".replace),a=n("".slice),s=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,o=/\$([$&'`]|\d{1,2})/g;return fa=function(u,l,h,c,v,f){var g=h+u.length,d=c.length,p=o;return v!==void 0&&(v=e(v),p=s),i(f,p,function(y,m){var b;switch(t(m,0)){case"$":return"$";case"&":return u;case"`":return a(l,0,h);case"'":return a(l,g);case"<":b=v[a(m,1,-1)];break;default:var x=+m;if(x===0)return y;if(x>d){var S=r(x/10);return S===0?y:S<=d?c[S-1]===void 0?t(m,1):c[S-1]+t(m,1):y}b=c[x-1]}return b===void 0?"":b})},fa}var Yo;function Uh(){if(Yo)return Ho;Yo=1;var n=bl(),e=ne(),r=J(),t=rn(),i=Z(),a=le(),s=re(),o=pe(),u=kr(),l=sr(),h=qe(),c=Pe(),v=tn(),f=nr(),g=Fh(),d=an(),p=nn(),y=ae(),m=y("replace"),b=Math.max,x=Math.min,S=r([].concat),E=r([].push),O=r("".indexOf),P=r("".slice),_=function(j){return j===void 0?j:String(j)},A=(function(){return"a".replace(/./,"$0")==="$0"})(),q=(function(){return/./[m]?/./[m]("a","$0")==="":!1})(),I=!i(function(){var j=/./;return j.exec=function(){var C=[];return C.groups={a:"7"},C},"".replace(j,"$")!=="7"});return t("replace",function(j,C,w){var U=q?"$":"$0";return[function(V,M){var N=c(this),k=o(V)?f(V,m):void 0;return k?e(k,V,N,M):e(C,h(N),V,M)},function(L,V){var M=a(this),N=h(L);if(typeof V=="string"&&O(V,U)===-1&&O(V,"$<")===-1){var k=w(C,M,N,V);if(k.done)return k.value}var z=s(V);z||(V=h(V));var H=h(d(M)),X=O(H,"g")!==-1,se;X&&(se=O(H,"u")!==-1,M.lastIndex=0);for(var be=[],oe;oe=p(M,N),!(oe===null||(E(be,oe),!X));){var Ue=h(oe[0]);Ue===""&&(M.lastIndex=v(N,l(M.lastIndex),se))}for(var Ge="",fe=0,Ne=0;Ne=fe&&(Ge+=P(N,fe,me)+xe,fe=me+_e.length)}return Ge+P(N,fe)}]},!I||!A||q),Ho}Uh();var Xo={},ca,Ko;function Gh(){if(Ko)return ca;Ko=1;var n=pe(),e=er(),r=ae(),t=r("match");return ca=function(i){var a;return n(i)&&((a=i[t])!==void 0?!!a:e(i)==="RegExp")},ca}var va,Qo;function sn(){if(Qo)return va;Qo=1;var n=Gh(),e=TypeError;return va=function(r){if(n(r))throw new e("The method doesn't accept regular expressions");return r},va}var ga,Zo;function on(){if(Zo)return ga;Zo=1;var n=ae(),e=n("match");return ga=function(r){var t=/./;try{"/./"[r](t)}catch{try{return t[e]=!1,"/./"[r](t)}catch{}}return!1},ga}var Jo;function $h(){if(Jo)return Xo;Jo=1;var n=he(),e=Fr(),r=Dr().f,t=sr(),i=qe(),a=sn(),s=Pe(),o=on(),u=Me(),l=e("".slice),h=Math.min,c=o("startsWith"),v=!u&&!c&&!!(function(){var f=r(String.prototype,"startsWith");return f&&!f.writable})();return n({target:"String",proto:!0,forced:!v&&!c},{startsWith:function(g){var d=i(s(this));a(g);var p=t(h(arguments.length>1?arguments[1]:void 0,d.length)),y=i(g);return l(d,p,p+y.length)===y}}),Xo}$h();var da,eu;function zh(){if(eu)return da;eu=1;var n=ae(),e=Ur(),r=Ye().f,t=n("unscopables"),i=Array.prototype;return i[t]===void 0&&r(i,t,{configurable:!0,value:e(null)}),da=function(a){i[t][a]=!0},da}var pa,ru;function Hh(){if(ru)return pa;ru=1;var n=Z();return pa=!n(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}),pa}var ya,tu;function Al(){if(tu)return ya;tu=1;var n=Ae(),e=re(),r=Mr(),t=Wa(),i=Hh(),a=t("IE_PROTO"),s=Object,o=s.prototype;return ya=i?s.getPrototypeOf:function(u){var l=r(u);if(n(l,a))return l[a];var h=l.constructor;return e(h)&&l instanceof h?h.prototype:l instanceof s?o:null},ya}var ma,iu;function Il(){if(iu)return ma;iu=1;var n=Z(),e=re(),r=pe(),t=Ur(),i=Al(),a=tr(),s=ae(),o=Me(),u=s("iterator"),l=!1,h,c,v;[].keys&&(v=[].keys(),"next"in v?(c=i(i(v)),c!==Object.prototype&&(h=c)):l=!0);var f=!r(h)||n(function(){var g={};return h[u].call(g)!==g});return f?h={}:o&&(h=t(h)),e(h[u])||a(h,u,function(){return this}),ma={IteratorPrototype:h,BUGGY_SAFARI_ITERATORS:l},ma}var ba,au;function Wh(){if(au)return ba;au=1;var n=Il().IteratorPrototype,e=Ur(),r=Fa(),t=Br(),i=Or(),a=function(){return this};return ba=function(s,o,u,l){var h=o+" Iterator";return s.prototype=e(n,{next:r(+!l,u)}),t(s,h,!1,!0),i[h]=a,s},ba}var xa,nu;function Yh(){if(nu)return xa;nu=1;var n=he(),e=ne(),r=Me(),t=Vr(),i=re(),a=Wh(),s=Al(),o=yl(),u=Br(),l=yr(),h=tr(),c=ae(),v=Or(),f=Il(),g=t.PROPER,d=t.CONFIGURABLE,p=f.IteratorPrototype,y=f.BUGGY_SAFARI_ITERATORS,m=c("iterator"),b="keys",x="values",S="entries",E=function(){return this};return xa=function(O,P,_,A,q,I,j){a(_,P,A);var C=function(X){if(X===q&&M)return M;if(!y&&X&&X in L)return L[X];switch(X){case b:return function(){return new _(this,X)};case x:return function(){return new _(this,X)};case S:return function(){return new _(this,X)}}return function(){return new _(this)}},w=P+" Iterator",U=!1,L=O.prototype,V=L[m]||L["@@iterator"]||q&&L[q],M=!y&&V||C(q),N=P==="Array"&&L.entries||V,k,z,H;if(N&&(k=s(N.call(new O)),k!==Object.prototype&&k.next&&(!r&&s(k)!==p&&(o?o(k,p):i(k[m])||h(k,m,E)),u(k,w,!0,!0),r&&(v[w]=E))),g&&q===x&&V&&V.name!==x&&(!r&&d?l(L,"name",x):(U=!0,M=function(){return e(V,this)})),q)if(z={values:C(x),keys:I?M:C(b),entries:C(S)},j)for(H in z)(y||U||!(H in L))&&h(L,H,z[H]);else n({target:P,proto:!0,forced:y||U},z);return(!r||j)&&L[m]!==M&&h(L,m,M,{name:q}),v[P]=M,z},xa}var Oa,su;function Xh(){return su||(su=1,Oa=function(n,e){return{value:n,done:e}}),Oa}var Ta,ou;function Nl(){if(ou)return Ta;ou=1;var n=dr(),e=zh(),r=Or(),t=Lr(),i=Ye().f,a=Yh(),s=Xh(),o=Me(),u=we(),l="Array Iterator",h=t.set,c=t.getterFor(l);Ta=a(Array,"Array",function(f,g){h(this,{type:l,target:n(f),index:0,kind:g})},function(){var f=c(this),g=f.target,d=f.index++;if(!g||d>=g.length)return f.target=null,s(void 0,!0);switch(f.kind){case"keys":return s(d,!1);case"values":return s(g[d],!1)}return s([d,g[d]],!1)},"values");var v=r.Arguments=r.Array;if(e("keys"),e("values"),e("entries"),!o&&u&&v.name!=="values")try{i(v,"name",{value:"values"})}catch{}return Ta}Nl();var uu={},Sa,lu;function Kh(){return lu||(lu=1,Sa={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}),Sa}var Ea,hu;function Qh(){if(hu)return Ea;hu=1;var n=qr(),e=n("span").classList,r=e&&e.constructor&&e.constructor.prototype;return Ea=r===Object.prototype?void 0:r,Ea}var fu;function Zh(){if(fu)return uu;fu=1;var n=Q(),e=Kh(),r=Qh(),t=Nl(),i=yr(),a=Br(),s=ae(),o=s("iterator"),u=t.values,l=function(c,v){if(c){if(c[o]!==u)try{i(c,o,u)}catch{c[o]=u}if(a(c,v,!0),e[v]){for(var f in t)if(c[f]!==t[f])try{i(c,f,t[f])}catch{c[f]=t[f]}}}};for(var h in e)l(n[h]&&n[h].prototype,h);return l(r,"DOMTokenList"),uu}Zh();function Jh(n,e){if(Da(n)!="object"||!n)return n;var r=n[Symbol.toPrimitive];if(r!==void 0){var t=r.call(n,e);if(Da(t)!="object")return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(n)}function ef(n){var e=Jh(n,"string");return Da(e)=="symbol"?e:e+""}function un(n,e,r){return(e=ef(e))in n?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r,n}var cu={},Ra,vu;function rf(){if(vu)return Ra;vu=1;var n=Fe(),e=Mr(),r=al(),t=Xa(),i=TypeError,a="Reduce of empty array with no initial value",s=function(o){return function(u,l,h,c){var v=e(u),f=r(v),g=t(v);if(n(l),g===0&&h<2)throw new i(a);var d=o?g-1:0,p=o?-1:1;if(h<2)for(;;){if(d in f){c=f[d],d+=p;break}if(d+=p,o?d<0:g<=d)throw new i(a)}for(;o?d>=0:g>d;d+=p)d in f&&(c=l(c,f[d],d,v));return c}};return Ra={left:s(!1),right:s(!0)},Ra}var Ca,gu;function _l(){if(gu)return Ca;gu=1;var n=Z();return Ca=function(e,r){var t=[][e];return!!t&&n(function(){t.call(null,r||function(){return 1},1)})},Ca}var du;function tf(){if(du)return cu;du=1;var n=he(),e=rf().left,r=_l(),t=Ua(),i=jr(),a=!i&&t>79&&t<83,s=a||!r("reduce");return n({target:"Array",proto:!0,forced:s},{reduce:function(u){var l=arguments.length;return e(this,u,l,l>1?arguments[1]:void 0)}}),cu}tf();var pu={},yu;function af(){if(yu)return pu;yu=1;var n=he(),e=Fr(),r=Dr().f,t=sr(),i=qe(),a=sn(),s=Pe(),o=on(),u=Me(),l=e("".slice),h=Math.min,c=o("endsWith"),v=!u&&!c&&!!(function(){var f=r(String.prototype,"endsWith");return f&&!f.writable})();return n({target:"String",proto:!0,forced:!v&&!c},{endsWith:function(g){var d=i(s(this));a(g);var p=arguments.length>1?arguments[1]:void 0,y=d.length,m=p===void 0?y:h(t(p),y),b=i(g);return l(d,m-b.length,m)===b}}),pu}af();var mu={},bu;function nf(){if(bu)return mu;bu=1;var n=ne(),e=J(),r=rn(),t=le(),i=pe(),a=Pe(),s=ml(),o=tn(),u=sr(),l=qe(),h=nr(),c=nn(),v=Pl(),f=Z(),g=v.UNSUPPORTED_Y,d=4294967295,p=Math.min,y=e([].push),m=e("".slice),b=!f(function(){var S=/(?:)/,E=S.exec;S.exec=function(){return E.apply(this,arguments)};var O="ab".split(S);return O.length!==2||O[0]!=="a"||O[1]!=="b"}),x="abbc".split(/(b)*/)[1]==="c"||"test".split(/(?:)/,-1).length!==4||"ab".split(/(?:ab)*/).length!==2||".".split(/(.?)(.?)/).length!==4||".".split(/()()/).length>1||"".split(/.?/).length;return r("split",function(S,E,O){var P="0".split(void 0,0).length?function(_,A){return _===void 0&&A===0?[]:n(E,this,_,A)}:E;return[function(A,q){var I=a(this),j=i(A)?h(A,S):void 0;return j?n(j,A,I,q):n(P,l(I),A,q)},function(_,A){var q=t(this),I=l(_);if(!x){var j=O(P,q,I,A,P!==E);if(j.done)return j.value}var C=s(q,RegExp),w=q.unicode,U=(q.ignoreCase?"i":"")+(q.multiline?"m":"")+(q.unicode?"u":"")+(g?"g":"y"),L=new C(g?"^(?:"+q.source+")":q,U),V=A===void 0?d:A>>>0;if(V===0)return[];if(I.length===0)return c(L,I)===null?[I]:[];for(var M=0,N=0,k=[];N"u"?Va:window,r=["moz","webkit"],t="AnimationFrame",i=e["request"+t],a=e["cancel"+t]||e["cancelRequest"+t],s=0;!i&&s3&&(this.alpha=o[3]),this.ok=!0}}this.r=this.r<0||isNaN(this.r)?0:this.r>255?255:this.r,this.g=this.g<0||isNaN(this.g)?0:this.g>255?255:this.g,this.b=this.b<0||isNaN(this.b)?0:this.b>255?255:this.b,this.alpha=this.alpha<0?0:this.alpha>1||isNaN(this.alpha)?1:this.alpha,this.toRGB=function(){return"rgb("+this.r+", "+this.g+", "+this.b+")"},this.toRGBA=function(){return"rgba("+this.r+", "+this.g+", "+this.b+", "+this.alpha+")"},this.toHex=function(){var u=this.r.toString(16),l=this.g.toString(16),h=this.b.toString(16);return u.length==1&&(u="0"+u),l.length==1&&(l="0"+l),h.length==1&&(h="0"+h),"#"+u+l+h},this.getHelpXML=function(){for(var u=new Array,l=0;l "+d.toRGB()+" -> "+d.toHex());g.appendChild(p),g.appendChild(y),f.appendChild(g)}catch{}return f}}),Na}var gf=vf();const La=il(gf);var Pu={},Au;function df(){if(Au)return Pu;Au=1;var n=he(),e=Fr(),r=vl().indexOf,t=_l(),i=e([].indexOf),a=!!i&&1/i([1],1,-0)<0,s=a||!t("indexOf");return n({target:"Array",proto:!0,forced:s},{indexOf:function(u){var l=arguments.length>1?arguments[1]:void 0;return a?i(this,u,l)||0:r(this,u,l)}}),Pu}df();var Iu={},Nu;function pf(){if(Nu)return Iu;Nu=1;var n=he(),e=J(),r=sn(),t=Pe(),i=qe(),a=on(),s=e("".indexOf);return n({target:"String",proto:!0,forced:!a("includes")},{includes:function(u){return!!~s(i(t(this)),i(r(u)),arguments.length>1?arguments[1]:void 0)}}),Iu}pf();var _u={},_a,Mu;function yf(){if(Mu)return _a;Mu=1;var n=er();return _a=Array.isArray||function(r){return n(r)==="Array"},_a}var qu;function mf(){if(qu)return _u;qu=1;var n=he(),e=J(),r=yf(),t=e([].reverse),i=[1,2];return n({target:"Array",proto:!0,forced:String(i)===String(i.reverse())},{reverse:function(){return r(this)&&(this.length=this.length),t(this)}}),_u}mf();/*! ***************************************************************************** diff --git a/dist/index.html b/dist/index.html index 89f2f03..ef3e87b 100644 --- a/dist/index.html +++ b/dist/index.html @@ -62,8 +62,8 @@ "license": "https://opensource.org/licenses/MIT" } - - + +