@billtaofbj/fishbone 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 @yourcompany
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,2 @@
1
+ .ai-chat-panel[data-v-01960100]{z-index:2000;background:#fff;border-left:1px solid #e4e7ed;flex-direction:column;height:100vh;display:flex;position:fixed;top:0;right:0;box-shadow:-2px 0 12px #0000001a}.chat-header[data-v-01960100]{background:linear-gradient(#fff,#fafafa);border-bottom:1px solid #e4e7ed;justify-content:space-between;align-items:center;min-height:44px;padding:10px 16px;display:flex}.chat-header-left[data-v-01960100]{align-items:center;gap:8px;display:flex}.chat-title[data-v-01960100]{color:#303133;font-size:14px;font-weight:600}.chat-header-right[data-v-01960100]{align-items:center;gap:2px;display:flex}.online-tag[data-v-01960100]{cursor:pointer}.mention-bell[data-v-01960100]{cursor:pointer;justify-content:center;align-items:center;padding:2px;animation:.8s ease-in-out infinite bellShake-01960100;display:flex}.mention-bell[data-v-01960100]:hover{opacity:.8}@keyframes bellShake-01960100{0%,to{transform:rotate(0)}15%{transform:rotate(15deg)}30%{transform:rotate(-15deg)}45%{transform:rotate(10deg)}60%{transform:rotate(-10deg)}75%{transform:rotate(5deg)}}.online-users-list[data-v-01960100]{flex-direction:column;gap:8px;max-height:280px;display:flex;overflow-y:auto}.online-user-item[data-v-01960100]{align-items:center;gap:10px;display:flex}.online-user-avatar[data-v-01960100]{color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:13px;font-weight:600;display:flex}.online-user-name[data-v-01960100]{color:#303133;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;overflow:hidden}.role-tag[data-v-01960100]{flex-shrink:0}.self-tag[data-v-01960100]{color:#909399;flex-shrink:0;font-size:12px}.chat-messages[data-v-01960100]{flex-direction:column;flex:1;gap:12px;padding:16px;display:flex;overflow-y:auto}.chat-empty[data-v-01960100]{color:#909399;flex-direction:column;justify-content:center;align-items:center;height:100%;display:flex}.chat-empty p[data-v-01960100]{margin:8px 0 0;font-size:14px}.chat-empty-hint[data-v-01960100]{color:#c0c4cc!important;font-size:12px!important}.chat-message[data-v-01960100]{gap:10px;max-width:90%;display:flex}.chat-message-user[data-v-01960100]{flex-direction:row-reverse;align-self:flex-end}.chat-message-ai[data-v-01960100],.chat-message-other[data-v-01960100]{align-self:flex-start}.message-avatar[data-v-01960100]{color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:13px;font-weight:600;display:flex}.message-avatar.ai[data-v-01960100]{background:linear-gradient(135deg,#409eff,#337ecc)}.message-content[data-v-01960100]{flex-direction:column;gap:4px;display:flex}.chat-message-user .message-content[data-v-01960100]{align-items:flex-end}.message-meta[data-v-01960100]{align-items:center;gap:6px;padding:0 4px;display:flex}.message-sender[data-v-01960100]{font-size:11px;font-weight:600}.message-mention[data-v-01960100]{color:#409eff;font-size:11px;font-weight:600}.message-text[data-v-01960100]{word-break:break-word;border-radius:12px;padding:10px 14px;font-size:13px;line-height:1.6}.chat-message-ai .message-text[data-v-01960100]{color:#303133;background:#f4f4f5;border-top-left-radius:4px}.chat-message-user .message-text[data-v-01960100]{color:#fff;background:linear-gradient(135deg,#409eff,#337ecc);border-top-right-radius:4px}.chat-message-other .message-text[data-v-01960100]{color:#303133;background:#f0f9ff;border:1px solid #d9ecff;border-top-left-radius:4px}.message-time[data-v-01960100]{color:#c0c4cc;padding:0 4px;font-size:11px}.chat-input-area[data-v-01960100]{background:#fafafa;border-top:1px solid #e4e7ed;padding:12px 16px}.chat-input-wrapper[data-v-01960100]{align-items:flex-end;gap:8px;display:flex;position:relative}.chat-input-wrapper[data-v-01960100] .el-textarea__inner{border:1px solid #dcdfe6;border-radius:10px;padding:8px 12px;font-size:13px;box-shadow:0 1px 4px #0000000f}.chat-input-wrapper[data-v-01960100] .el-textarea__inner:focus{border-color:#409eff;box-shadow:0 1px 6px #409eff26}.send-btn[data-v-01960100]{flex-shrink:0;width:34px;height:34px}.mention-popup[data-v-01960100]{z-index:10;background:#fff;border:1px solid #e4e7ed;border-radius:8px;min-width:160px;max-height:200px;margin-bottom:4px;position:absolute;bottom:100%;left:0;overflow-y:auto;box-shadow:0 4px 12px #0000001a}.mention-item[data-v-01960100]{cursor:pointer;align-items:center;gap:8px;padding:8px 12px;font-size:13px;display:flex}.mention-item[data-v-01960100]:hover,.mention-item.active[data-v-01960100]{background:#f5f7fa}.mention-avatar[data-v-01960100]{color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;font-weight:600;display:flex}.typing-indicator[data-v-01960100]{align-items:center;gap:4px;display:flex;padding:12px 16px!important}.typing-indicator span[data-v-01960100]{background:#c0c4cc;border-radius:50%;width:6px;height:6px;animation:1.2s infinite typingBounce-01960100}.typing-indicator span[data-v-01960100]:nth-child(2){animation-delay:.2s}.typing-indicator span[data-v-01960100]:nth-child(3){animation-delay:.4s}@keyframes typingBounce-01960100{0%,60%,to{opacity:.4;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}.version-history-panel[data-v-87924b7c]{flex-direction:column;height:100%;display:flex}.loading-state[data-v-87924b7c],.empty-state[data-v-87924b7c]{color:#909399;flex-direction:column;justify-content:center;align-items:center;height:200px;display:flex}.empty-state p[data-v-87924b7c]{margin-top:12px}.version-list[data-v-87924b7c]{flex:1;padding:0 4px;overflow-y:auto}.current-version[data-v-87924b7c]{background:#f0f9eb;border-radius:6px;flex-direction:column;gap:4px;margin-bottom:16px;padding:8px 12px;display:flex}.current-version-header[data-v-87924b7c]{align-items:center;gap:8px;display:flex}.version-meta[data-v-87924b7c]{color:#606266;font-size:13px}.version-item[data-v-87924b7c]{cursor:pointer;border-radius:6px;align-items:center;gap:20px;padding:8px 12px;transition:background .2s;display:flex}.version-item[data-v-87924b7c]:hover{background:#f5f7fa}.version-item.active[data-v-87924b7c]{background:#ecf5ff}.version-number[data-v-87924b7c]{color:#409eff;font-size:14px;font-weight:600}.version-user[data-v-87924b7c]{color:#303133;font-size:14px}.version-time[data-v-87924b7c]{color:#909399;margin-top:2px;font-size:12px}.panel-footer[data-v-87924b7c]{justify-content:flex-end;padding:12px 0;display:flex}.theme-picker[data-v-49d0deee]{padding:8px;overflow:hidden}.theme-picker[data-v-49d0deee] *,.theme-picker[data-v-49d0deee] .el-button:focus-visible{outline:none!important}.theme-header[data-v-49d0deee]{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.theme-header h4[data-v-49d0deee]{color:#303133;margin:0;font-size:14px}.theme-count[data-v-49d0deee]{color:#909399;font-size:12px}.theme-grid[data-v-49d0deee]{grid-template-columns:repeat(5,1fr);gap:6px;display:grid;overflow:visible}.theme-item[data-v-49d0deee]{cursor:pointer;border-radius:8px;flex-direction:column;align-items:center;gap:4px;padding:6px;transition:all .2s;display:flex}.theme-item[data-v-49d0deee]:hover{background:#f5f7fa}.theme-item.active[data-v-49d0deee]{background:#ecf5ff}.theme-preview[data-v-49d0deee]{border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;display:flex;box-shadow:0 2px 8px #0000001a}.theme-spine[data-v-49d0deee]{border-radius:2px;width:24px;height:3px}.theme-name[data-v-49d0deee]{color:#606266;text-align:center;font-size:10px}.style-picker[data-v-0387ce0f]{padding:8px;overflow:hidden}.style-header[data-v-0387ce0f]{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.style-header h4[data-v-0387ce0f]{color:#303133;margin:0;font-size:14px}.style-count[data-v-0387ce0f]{color:#909399;font-size:12px}.style-grid[data-v-0387ce0f]{grid-template-columns:repeat(5,1fr);gap:6px;display:grid}.style-item[data-v-0387ce0f]{cursor:pointer;border:2px solid #0000;border-radius:8px;flex-direction:column;align-items:center;gap:4px;padding:6px 4px;transition:all .2s;display:flex}.style-item[data-v-0387ce0f]:hover{background:#f5f7fa;border-color:#e4e7ed}.style-item.active[data-v-0387ce0f]{background:#ecf5ff;border-color:#409eff}.style-preview[data-v-0387ce0f]{background:#fafbfc;border-radius:6px;justify-content:center;align-items:center;width:72px;height:40px;display:flex;overflow:hidden}.style-svg[data-v-0387ce0f]{width:100%;height:100%}.style-name[data-v-0387ce0f]{color:#606266;text-align:center;font-size:10px;line-height:1.2}.toolbar[data-v-7f095050]{background:linear-gradient(#fff,#f8f9fa);border-bottom:1px solid #e4e7ed;outline:none;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:12px 20px;display:flex;box-shadow:0 2px 8px #0000000d}.toolbar[data-v-7f095050] .el-button,.toolbar[data-v-7f095050] .el-button:focus-visible,.toolbar[data-v-7f095050] .el-input__wrapper{outline:none}.toolbar[data-v-7f095050] .el-input__inner{caret-color:#0000}.toolbar[data-v-7f095050] .el-input__wrapper.is-focus,.toolbar[data-v-7f095050] .el-input.is-focus .el-input__wrapper{box-shadow:none}.toolbar[data-v-7f095050] .el-input.is-focus .el-input__inner{caret-color:#409eff}.toolbar-left[data-v-7f095050],.toolbar-center[data-v-7f095050],.toolbar-right[data-v-7f095050]{align-items:center;gap:8px;display:flex}.toolbar-left[data-v-7f095050]{flex:1;min-width:200px}.toolbar-center[data-v-7f095050]{flex:2;justify-content:center}.toolbar-right[data-v-7f095050]{flex-wrap:nowrap;flex:1;justify-content:flex-end;min-width:0}.title-input[data-v-7f095050],.effect-input[data-v-7f095050]{width:280px}.author-input[data-v-7f095050]{width:120px}.zoom-value[data-v-7f095050]{color:#606266;text-align:center;min-width:40px;font-size:12px}.connection-status[data-v-7f095050]{color:#909399;white-space:nowrap;flex-shrink:0;align-items:center;gap:6px;font-size:12px;display:flex}.connection-status.connected[data-v-7f095050]{color:#67c23a}.status-dot[data-v-7f095050]{background:#909399;border-radius:50%;width:8px;height:8px}.connection-status.connected .status-dot[data-v-7f095050]{background:#67c23a;animation:2s infinite pulse-7f095050}@keyframes pulse-7f095050{0%,to{opacity:1}50%{opacity:.5}}.online-users[data-v-7f095050]{align-items:center;display:flex}.more-users[data-v-7f095050]{color:#909399;margin-left:4px;font-size:12px}.ai-dialog[data-v-7f095050] .el-dialog{flex-direction:column;max-height:calc(100vh - 100px);display:flex}.ai-dialog[data-v-7f095050] .el-dialog__body{flex-direction:column;flex:1;display:flex;overflow:hidden}.ai-textarea[data-v-7f095050] .el-textarea__inner{resize:none;height:calc(100vh - 250px)!important}.fishbone-wrapper[data-v-52439ed0]{width:100%;height:100%;position:absolute;top:0;left:0}.fishbone-svg[data-v-52439ed0]{cursor:default;border-radius:8px;outline:none;width:100%;height:100%;display:block}.fishbone-svg text[data-v-52439ed0]{pointer-events:none;cursor:default!important;-webkit-user-select:none!important;user-select:none!important}.tooltip-content{color:#fff;word-break:break-all;white-space:pre-wrap;text-shadow:0 1px 2px #0000004d;max-height:188px;font-size:13px;line-height:1.5;overflow-y:auto}.format-group[data-v-5a858b26]{flex-wrap:wrap;gap:4px;display:flex}.format-group[data-v-5a858b26] .el-radio-button__inner{align-items:center;gap:4px;padding:8px 12px;display:flex}.size-preview[data-v-5a858b26]{color:#606266;gap:16px;font-size:13px;display:flex}.theme-ocean{--primary:#1e90ff;--secondary:#00ced1;--bg:#f0f8ff;--spine-gradient:linear-gradient(90deg, #1e90ff, #00ced1);--node-bg:linear-gradient(135deg, #e3f2fd, #e1f5fe);--text-color:#1565c0;--shadow:0 4px 12px #1e90ff4d}.theme-deep-sea{--primary:#036;--secondary:#006994;--bg:#e6f3ff;--spine-gradient:linear-gradient(90deg, #036, #006994);--node-bg:linear-gradient(135deg, #e3f2fd, #bbdefb);--text-color:#0d47a1;--shadow:0 4px 12px #0033664d}.theme-coral{--primary:coral;--secondary:#ff6b6b;--bg:#fff5f5;--spine-gradient:linear-gradient(90deg, coral, #ff6b6b);--node-bg:linear-gradient(135deg, #ffebee, #ffcdd2);--text-color:#c62828;--shadow:0 4px 12px #ff7f504d}.theme-ice{--primary:#add8e6;--secondary:#87ceeb;--bg:azure;--spine-gradient:linear-gradient(90deg, #add8e6, #87ceeb);--node-bg:linear-gradient(135deg, #e0f7fa, #b2ebf2);--text-color:#006064;--shadow:0 4px 12px #add8e666}.theme-mint{--primary:#3eb489;--secondary:#00fa9a;--bg:#f0fff0;--spine-gradient:linear-gradient(90deg, #3eb489, #00fa9a);--node-bg:linear-gradient(135deg, #e8f5e9, #c8e6c9);--text-color:#1b5e20;--shadow:0 4px 12px #3eb4894d}.theme-sunset{--primary:#ff6b35;--secondary:#f7931e;--bg:#fff8f0;--spine-gradient:linear-gradient(90deg, #ff6b35, #f7931e);--node-bg:linear-gradient(135deg, #fff3e0, #ffe0b2);--text-color:#e65100;--shadow:0 4px 12px #ff6b354d}.theme-dawn{--primary:#ffb347;--secondary:#fc3;--bg:#fffaf0;--spine-gradient:linear-gradient(90deg, #ffb347, #fc3);--node-bg:linear-gradient(135deg, #fffde7, #fff9c4);--text-color:#f57f17;--shadow:0 4px 12px #ffb3474d}.theme-autumn{--primary:#d2691e;--secondary:peru;--bg:#fff8dc;--spine-gradient:linear-gradient(90deg, #d2691e, peru);--node-bg:linear-gradient(135deg, #efebe9, #d7ccc8);--text-color:#4e342e;--shadow:0 4px 12px #d2691e4d}.theme-rust{--primary:#b7410e;--secondary:#c50;--bg:#fff5ee;--spine-gradient:linear-gradient(90deg, #b7410e, #c50);--node-bg:linear-gradient(135deg, #fbe9e7, #ffccbc);--text-color:#bf360c;--shadow:0 4px 12px #b7410e4d}.theme-amber{--primary:#ffbf00;--secondary:gold;--bg:ivory;--spine-gradient:linear-gradient(90deg, #ffbf00, gold);--node-bg:linear-gradient(135deg, #fffde7, #fff9c4);--text-color:#f57f17;--shadow:0 4px 12px #ffbf004d}.theme-forest{--primary:#228b22;--secondary:#32cd32;--bg:#f0fff0;--spine-gradient:linear-gradient(90deg, #228b22, #32cd32);--node-bg:linear-gradient(135deg, #e8f5e9, #c8e6c9);--text-color:#1b5e20;--shadow:0 4px 12px #228b224d}.theme-emerald{--primary:#50c878;--secondary:#98fb98;--bg:#f5fffa;--spine-gradient:linear-gradient(90deg, #50c878, #98fb98);--node-bg:linear-gradient(135deg, #e8f5e9, #a5d6a7);--text-color:#2e7d32;--shadow:0 4px 12px #50c8784d}.theme-olive{--primary:olive;--secondary:#9acd32;--bg:#fafad2;--spine-gradient:linear-gradient(90deg, olive, #9acd32);--node-bg:linear-gradient(135deg, #f1f8e9, #dcedc8);--text-color:#33691e;--shadow:0 4px 12px #8080004d}.theme-sage{--primary:#8fbc8f;--secondary:#90ee90;--bg:#f0fff0;--spine-gradient:linear-gradient(90deg, #8fbc8f, #90ee90);--node-bg:linear-gradient(135deg, #e8f5e9, #c8e6c9);--text-color:#388e3c;--shadow:0 4px 12px #8fbc8f4d}.theme-moss{--primary:#8a9a5b;--secondary:#bdb76b;--bg:ivory;--spine-gradient:linear-gradient(90deg, #8a9a5b, #bdb76b);--node-bg:linear-gradient(135deg, #f1f8e9, #e6eec3);--text-color:#558b2f;--shadow:0 4px 12px #8a9a5b4d}.theme-violet{--primary:#8a2be2;--secondary:#9370db;--bg:#f8f0ff;--spine-gradient:linear-gradient(90deg, #8a2be2, #9370db);--node-bg:linear-gradient(135deg, #f3e5f5, #e1bee7);--text-color:#6a1b9a;--shadow:0 4px 12px #8a2be24d}.theme-lavender{--primary:#9c27b0;--secondary:#ce93d8;--bg:#faf0ff;--spine-gradient:linear-gradient(90deg, #9c27b0, #ce93d8);--node-bg:linear-gradient(135deg, #f3e5f5, #e1bee7);--text-color:#7b1fa2;--shadow:0 4px 12px #9c27b04d}.theme-plum{--primary:#8e4585;--secondary:plum;--bg:#fff0f5;--spine-gradient:linear-gradient(90deg, #8e4585, plum);--node-bg:linear-gradient(135deg, #fce4ec, #f8bbd0);--text-color:#ad1457;--shadow:0 4px 12px #8e45854d}.theme-mauve{--primary:#e0b0ff;--secondary:orchid;--bg:#faf0ff;--spine-gradient:linear-gradient(90deg, #e0b0ff, orchid);--node-bg:linear-gradient(135deg, #f3e5f5, #e1bee7);--text-color:#8e24aa;--shadow:0 4px 12px #e0b0ff66}.theme-orchid{--primary:orchid;--secondary:violet;--bg:#fff0ff;--spine-gradient:linear-gradient(90deg, orchid, violet);--node-bg:linear-gradient(135deg, #f3e5f5, #f8bbd0);--text-color:#c2185b;--shadow:0 4px 12px #da70d64d}.theme-modern{--primary:#333;--secondary:#555;--bg:#fafafa;--spine-gradient:linear-gradient(90deg, #333, #555);--node-bg:linear-gradient(135deg, #f5f5f5, #eee);--text-color:#212121;--shadow:0 4px 12px #00000026}.theme-minimal{--primary:#2c3e50;--secondary:#34495e;--bg:#ecf0f1;--spine-gradient:linear-gradient(90deg, #2c3e50, #34495e);--node-bg:linear-gradient(135deg, #eceff1, #cfd8dc);--text-color:#263238;--shadow:0 4px 12px #2c3e5033}.theme-corporate{--primary:#2c3e50;--secondary:#3498db;--bg:#f5f6fa;--spine-gradient:linear-gradient(90deg, #2c3e50, #3498db);--node-bg:linear-gradient(135deg, #e3f2fd, #bbdefb);--text-color:#1565c0;--shadow:0 4px 12px #3498db4d}.theme-tech{--primary:#00d4ff;--secondary:#7b2fbe;--bg:#f0f8ff;--spine-gradient:linear-gradient(90deg, #00d4ff, #7b2fbe);--node-bg:linear-gradient(135deg, #e0f7fa, #b2ebf2);--text-color:#006064;--shadow:0 4px 12px #00d4ff4d}.theme-neon{--primary:#0f8;--secondary:#f0f;--bg:#1a1a2e;--spine-gradient:linear-gradient(90deg, #0f8, #f0f);--node-bg:linear-gradient(135deg, #16213e, #0f3460);--text-color:#0f8;--shadow:0 4px 12px #0f86}.theme-pastel{--primary:#ffb3ba;--secondary:#baffc9;--bg:#fff5f5;--spine-gradient:linear-gradient(90deg, #ffb3ba, #baffc9);--node-bg:linear-gradient(135deg, #fff0f5, #f1f8e9);--text-color:#880e4f;--shadow:0 4px 12px #ffb3ba66}.theme-candy{--primary:#ffb6c1;--secondary:#ff69b4;--bg:#fff0f5;--spine-gradient:linear-gradient(90deg, #ffb6c1, #ff69b4);--node-bg:linear-gradient(135deg, #fce4ec, #f8bbd0);--text-color:#c2185b;--shadow:0 4px 12px #ffb6c166}.theme-bubblegum{--primary:pink;--secondary:#ff1493;--bg:#fff5ff;--spine-gradient:linear-gradient(90deg, pink, #ff1493);--node-bg:linear-gradient(135deg, #fce4ec, #f8bbd0);--text-color:#ad1457;--shadow:0 4px 12px #ffc0cb66}.theme-sakura{--primary:#ffb7c5;--secondary:#ff69b4;--bg:#fff5f5;--spine-gradient:linear-gradient(90deg, #ffb7c5, #ff69b4);--node-bg:linear-gradient(135deg, #fff0f5, #fce4ec);--text-color:#c2185b;--shadow:0 4px 12px #ffb7c566}.theme-peach{--primary:#ffdab9;--secondary:#ffa07a;--bg:#fffaf0;--spine-gradient:linear-gradient(90deg, #ffdab9, #ffa07a);--node-bg:linear-gradient(135deg, #fff3e0, #ffe0b2);--text-color:#e65100;--shadow:0 4px 12px #ffdab966}.fishbone-editor{background-color:var(--bg,#f0f8ff);transition:background-color .3s}.fishbone-spine{stroke:var(--primary,#1e90ff);stroke-width:4px;fill:none;stroke-linecap:round}.fishbone-branch{stroke:var(--secondary,#00ced1);stroke-width:2px;fill:none;stroke-linecap:round}.category-node{fill:var(--node-bg,linear-gradient(135deg, #e3f2fd, #e1f5fe));stroke:var(--primary,#1e90ff);stroke-width:2px;filter:drop-shadow(var(--shadow,0 4px 12px #1e90ff4d));cursor:pointer;transition:all .3s}.category-node:hover{filter:drop-shadow(0 6px 16px #1e90ff66);transform:scale(1.05)}.category-text{fill:var(--text-color,#1565c0);pointer-events:none;font-size:14px;font-weight:600}.cause-node{fill:var(--node-bg,linear-gradient(135deg, #e3f2fd, #e1f5fe));stroke:var(--primary,#1e90ff);stroke-width:1.5px;filter:drop-shadow(var(--shadow,0 4px 12px #1e90ff4d));cursor:pointer;transition:all .3s}.cause-node:hover{filter:drop-shadow(0 6px 16px #1e90ff66);transform:scale(1.05)}.cause-text{fill:var(--text-color,#1565c0);pointer-events:none;font-size:12px}.child-node{fill:var(--primary,#1e90ff);opacity:.8;cursor:pointer;transition:all .3s}.child-node:hover{opacity:1;transform:scale(1.2)}.child-text{fill:var(--text-color,#1565c0);pointer-events:none;font-size:10px}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.9;transform:scale(1.05)}}@keyframes flow{0%{stroke-dashoffset:20px}to{stroke-dashoffset:0}}.fishbone-head{animation:2s ease-in-out infinite pulse}.fishbone-spine-animated{stroke-dasharray:10 5;animation:1s linear infinite flow}.right-panel input,.right-panel textarea{caret-color:#0000!important}.fishbone-editor[data-v-4ae43629]{background:var(--bg,#f0f2f5);flex-direction:column;height:100vh;display:flex}.ai-chat-fab[data-v-4ae43629]{z-index:1000;position:fixed;bottom:24px;right:24px;box-shadow:0 4px 12px #00000026}.editor-main[data-v-4ae43629]{flex:1;min-height:0;display:flex;overflow:hidden}.side-panel[data-v-4ae43629]{background:#fff;border-right:1px solid #e4e7ed;flex-direction:column;width:260px;transition:width .3s;display:flex;overflow:hidden}.side-panel.collapsed[data-v-4ae43629]{width:40px}.side-panel.collapsed .panel-content[data-v-4ae43629],.side-panel.collapsed .panel-header h4[data-v-4ae43629]{display:none}.right-panel[data-v-4ae43629]{border-left:1px solid #e4e7ed;border-right:none}.panel-header[data-v-4ae43629]{-webkit-user-select:none;user-select:none;background:#fafafa;border-bottom:1px solid #e4e7ed;justify-content:space-between;align-items:center;padding:16px;display:flex}.panel-header h4[data-v-4ae43629]{color:#303133;margin:0;font-size:14px}.panel-toggle-icon[data-v-4ae43629]{color:#909399;font-size:16px;transition:transform .3s}.panel-header:hover .panel-toggle-icon[data-v-4ae43629]{color:#409eff}.panel-content[data-v-4ae43629]{flex:1;padding:12px;overflow-y:auto}.category-item[data-v-4ae43629]{cursor:pointer;border-radius:8px;align-items:center;gap:8px;margin-bottom:8px;padding:10px 12px;transition:all .2s;display:flex}.category-item[data-v-4ae43629]:hover{background:#f5f7fa}.category-item.active[data-v-4ae43629]{background:#ecf5ff}.category-color[data-v-4ae43629]{border-radius:50%;flex-shrink:0;width:12px;height:12px}.category-name[data-v-4ae43629]{color:#303133;flex:1;font-size:13px}.cause-count[data-v-4ae43629]{color:#909399;background:#f0f2f5;border-radius:10px;padding:2px 8px;font-size:12px}.delete-btn[data-v-4ae43629]{opacity:0;transition:opacity .2s}.category-item:hover .delete-btn[data-v-4ae43629]{opacity:1}.add-btn[data-v-4ae43629]{width:100%;margin-top:8px}.canvas-container[data-v-4ae43629]{flex-direction:column;flex:1;min-width:0;padding:12px;display:flex;overflow:hidden}.diagram-title-area[data-v-4ae43629]{cursor:pointer;border:2px solid #0000;border-radius:8px;flex-shrink:0;padding:12px 20px;transition:all .2s}.diagram-title-area[data-v-4ae43629]:hover{border-color:#c0c4cc}.diagram-title-area.selected-title[data-v-4ae43629]{border-color:#409eff;box-shadow:0 0 0 2px #409eff4d}.diagram-title[data-v-4ae43629]{letter-spacing:1px;margin:0;font-weight:600;transition:all .3s}.diagram-effect[data-v-4ae43629]{color:#909399;margin:4px 0 0;font-size:13px}.canvas-wrapper[data-v-4ae43629]{transform-origin:50%;flex:1;min-width:0;min-height:0;transition:transform .3s;position:relative}.detail-form[data-v-4ae43629]{padding:8px 0}.children-list[data-v-4ae43629]{flex-direction:column;gap:8px;display:flex}.child-item[data-v-4ae43629]{align-items:center;gap:8px;display:flex}.node-name-display[data-v-4ae43629]{color:#303133;cursor:pointer;background:#f5f7fa;border:1px solid #dcdfe6;border-radius:4px;min-height:32px;padding:5px 12px;font-size:14px;line-height:22px}.node-name-display[data-v-4ae43629]:hover{border-color:#c0c4cc}.node-name-input[data-v-4ae43629]{color:#303133;caret-color:#0000;box-sizing:border-box;background:#fff;border:1px solid #dcdfe6;border-radius:4px;outline:none;width:100%;height:32px;padding:5px 12px;font-size:14px;line-height:22px}.node-name-input[data-v-4ae43629]:focus{caret-color:#0000;border-color:#409eff}.node-name-input[data-v-4ae43629]:hover{border-color:#c0c4cc}.node-font-select[data-v-4ae43629]{color:#303133;cursor:pointer;box-sizing:border-box;background:#fff;border:1px solid #dcdfe6;border-radius:4px;outline:none;width:100%;height:32px;padding:5px 12px;font-size:14px}.node-font-select[data-v-4ae43629]:focus{border-color:#409eff}.node-font-select[data-v-4ae43629]:hover{border-color:#c0c4cc}.no-selection[data-v-4ae43629]{color:#909399;flex-direction:column;justify-content:center;align-items:center;height:200px;display:flex}.no-selection p[data-v-4ae43629]{margin-top:12px;font-size:14px}.textbox-rect[data-v-4ae43629]{pointer-events:auto;z-index:10;cursor:grab;border:1px solid #ccc;border-radius:4px;position:absolute;overflow:visible}.textbox-rect[data-v-4ae43629]:active{cursor:grabbing}.textbox-rect.selected[data-v-4ae43629]{border:2px solid #409eff;box-shadow:0 2px 8px #409eff4d}.textbox-content[data-v-4ae43629]{resize:none;box-sizing:border-box;background:0 0;border:none;outline:none;width:100%;height:100%;padding:4px 8px}.textbox-rect:not(.selected) .textbox-content[data-v-4ae43629]{pointer-events:none}.textbox-rect.selected .textbox-content[data-v-4ae43629]{pointer-events:none;cursor:grab}.textbox-rect.editing .textbox-content[data-v-4ae43629]{pointer-events:auto;cursor:text}.textbox-delete-btn[data-v-4ae43629]{color:#fff;cursor:pointer;z-index:11;background:#f56c6c;border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;font-size:14px;font-weight:700;display:flex;position:absolute;top:-10px;right:-10px}.textbox-delete-btn[data-v-4ae43629]:hover{background:#f78989}.anchor-dot[data-v-4ae43629]{z-index:12;opacity:0;pointer-events:auto;cursor:crosshair;background:#409eff;border:1px solid #fff;border-radius:50%;width:8px;height:8px;transition:opacity .2s,transform .15s;position:absolute;transform:translate(-50%,-50%)}.anchor-dot[data-v-4ae43629]:hover{opacity:1;transform:translate(-50%,-50%)scale(1.5)}.textbox-rect.selected .anchor-dot[data-v-4ae43629],.textbox-rect:hover .anchor-dot[data-v-4ae43629],.textbox-rect.show-anchors .anchor-dot[data-v-4ae43629]{opacity:.7}.resize-handle[data-v-4ae43629]{z-index:11;background:#409eff;border:1px solid #fff;border-radius:2px;width:10px;height:10px;position:absolute}.resize-handle-se[data-v-4ae43629]{cursor:se-resize;bottom:-5px;right:-5px}.resize-handle-sw[data-v-4ae43629]{cursor:sw-resize;bottom:-5px;left:-5px}.resize-handle-ne[data-v-4ae43629]{cursor:ne-resize;top:-5px;right:-5px}.resize-handle-nw[data-v-4ae43629]{cursor:nw-resize;top:-5px;left:-5px}.arrow-lines-svg[data-v-4ae43629]{z-index:5;width:100%;height:100%;position:absolute;top:0;left:0;overflow:visible}.arrow-lines-svg circle[data-v-4ae43629]{pointer-events:auto}
2
+ /*$vite$:1*/
@@ -0,0 +1,27 @@
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?module.exports=t(require("vue"),require("@billtaofbj/core"),require("vue-router"),require("element-plus"),require("@element-plus/icons-vue"),require("axios"),require("yjs"),require("@hocuspocus/provider")):typeof define==`function`&&define.amd?define([`vue`,`@billtaofbj/core`,`vue-router`,`element-plus`,`@element-plus/icons-vue`,`axios`,`yjs`,`@hocuspocus/provider`],t):(e=typeof globalThis<`u`?globalThis:e||self,e.YourCompanyFishbone=t(e.Vue,e._billtaofbj_core,e.VueRouter,e.ElementPlus,e.ElementPlusIconsVue,e.axios,e.yjs,e._hocuspocus_provider))})(this,function(e,t,n,r,i,a,o,s){var c=Object.create,l=Object.defineProperty,u=Object.getOwnPropertyDescriptor,d=Object.getOwnPropertyNames,f=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty,m=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=d(t),a=0,o=i.length,s;a<o;a++)s=i[a],!p.call(e,s)&&s!==n&&l(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=u(t,s))||r.enumerable});return e},h=(e,t,n)=>(n=e==null?{}:c(f(e)),m(t||!e||!e.__esModule?l(n,`default`,{value:e,enumerable:!0}):n,e));a=h(a,1),o=h(o,1);var g=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},_={class:`chat-header`},v={class:`chat-header-left`},y={class:`chat-title`},b={class:`online-users-list`},x={class:`online-user-item`},S={class:`online-user-name`},C={key:1},w={class:`online-user-name`},ee={class:`chat-header-right`},te={key:0,class:`chat-empty`},T={class:`chat-empty-hint`},ne={key:1},re={class:`message-content`},E={key:0,class:`message-meta`},ie={key:0,class:`message-mention`},D=[`innerHTML`],O={class:`message-time`},k={key:1,class:`chat-message chat-message-ai`},ae={class:`message-avatar ai`},oe={class:`chat-input-area`},A={key:0,class:`mention-popup`},se=[`onClick`,`onMouseenter`],j={key:1},ce=g({__name:`AiChatPanel`,props:{visible:{type:Boolean,default:!1},messages:{type:Array,default:()=>[]},loading:{type:Boolean,default:!1},panelWidth:{type:Number,default:360},isCollab:{type:Boolean,default:!1},collabUsers:{type:Array,default:()=>[]},currentUser:{type:Object,default:()=>({id:``,name:``,color:``})},isOwner:{type:Boolean,default:!0},unreadMention:{type:Boolean,default:!1}},emits:[`send`,`close`,`clear`,`clear-unread`],setup(t,{emit:n}){let r=t,a=n,o=(0,e.ref)(``),s=(0,e.ref)(null),c=(0,e.ref)(null),l=(0,e.ref)(!1),u=(0,e.ref)([]),d=(0,e.ref)(0),f=``,p=-1,m={id:`ai-assistant`,name:`AI助手`,color:`#409EFF`,isAi:!0},h=(0,e.computed)(()=>{let e=r.currentUser.id,t=new Set;return[m,...r.collabUsers.filter(n=>{let r=n.clientId||n.id||``;if(r&&r===e)return!1;let i=String(r||n.name||``);return t.has(i)?!1:(t.add(i),!0)})]}),g=(0,e.computed)(()=>h.value.length+1),ce=e=>e.role===`ai`?`chat-message-ai`:r.isCollab&&e.user_id&&e.user_id!==r.currentUser.id?`chat-message-other`:`chat-message-user`,le=e=>e.role===`ai`?{background:`linear-gradient(135deg, #409EFF, #337ECC)`}:{background:e.user_color||`#67C23A`},M=e=>(e.user_name||`U`).charAt(0),N=e=>{if(!r.isCollab)return;let t=typeof e==`string`?e:e.target?.value||o.value,n=t.length,i=t.lastIndexOf(`@`,n);if(i!==-1&&i<n){let e=t.slice(i+1,n);if(!e.includes(` `)&&!e.includes(`
2
+ `)){f=e,p=i,u.value=h.value.filter(t=>t.name&&t.name.toLowerCase().includes(e.toLowerCase())),l.value=u.value.length>0,d.value=0;return}}l.value=!1},ue=()=>{l.value&&(d.value=Math.min(d.value+1,u.value.length-1))},de=()=>{l.value&&(d.value=Math.max(d.value-1,0))},P=e=>{let t=o.value.slice(0,p),n=o.value.slice(p+f.length+1);o.value=`${t}@${e.name} ${n}`,l.value=!1},F=e=>{if(e){if(e.shiftKey)return;if(l.value){let t=u.value[d.value];if(t){e.preventDefault(),P(t);return}}e.preventDefault()}let t=o.value.trim();if(!t||r.loading)return;let n=null;if(r.isCollab){let e=t.match(/@(\S+)/);e&&(n=e[1])}a(`send`,t,{mentionedUser:n}),o.value=``,l.value=!1},I=()=>{(0,e.nextTick)(()=>{s.value&&(s.value.scrollTop=s.value.scrollHeight)})};return(0,e.watch)(()=>r.messages.length,I),(0,e.watch)(()=>r.messages,I,{deep:!0}),(n,r)=>{let f=(0,e.resolveComponent)(`el-icon`),p=(0,e.resolveComponent)(`el-tag`),m=(0,e.resolveComponent)(`el-popover`),I=(0,e.resolveComponent)(`el-button`),L=(0,e.resolveComponent)(`el-input`);return t.visible?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`ai-chat-panel`,style:(0,e.normalizeStyle)({width:t.panelWidth+`px`})},[(0,e.createElementVNode)(`div`,_,[(0,e.createElementVNode)(`div`,v,[(0,e.createVNode)(f,{size:18,color:`#409EFF`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Monitor))]),_:1}),(0,e.createElementVNode)(`span`,y,(0,e.toDisplayString)(t.isCollab?`协作聊天`:`AI 助手`),1),t.isCollab?((0,e.openBlock)(),(0,e.createBlock)(m,{key:0,width:200,placement:`bottom-start`,trigger:`click`},{reference:(0,e.withCtx)(()=>[(0,e.createVNode)(p,{size:`small`,type:`success`,effect:`plain`,class:`online-tag`},{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(g.value)+`人在线 `,1)]),_:1})]),default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,b,[(0,e.createElementVNode)(`div`,x,[(0,e.createElementVNode)(`div`,{class:`online-user-avatar`,style:(0,e.normalizeStyle)({background:t.currentUser.color||`#409EFF`})},(0,e.toDisplayString)((t.currentUser.name||`U`).charAt(0)),5),(0,e.createElementVNode)(`span`,S,(0,e.toDisplayString)(t.currentUser.name||`我`),1),(0,e.createVNode)(p,{size:`small`,type:t.isOwner?`warning`:`success`,effect:`plain`,class:`role-tag`},{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(t.isOwner?`发起人`:`协作人`),1)]),_:1},8,[`type`]),r[4]||=(0,e.createElementVNode)(`span`,{class:`self-tag`},`(我)`,-1)]),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(h.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t.id||t.clientId,class:`online-user-item`},[(0,e.createElementVNode)(`div`,{class:`online-user-avatar`,style:(0,e.normalizeStyle)({background:t.color||`#909399`})},[t.isAi?((0,e.openBlock)(),(0,e.createBlock)(f,{key:0,size:14},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Monitor))]),_:1})):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,C,(0,e.toDisplayString)((t.name||`U`).charAt(0)),1))],4),(0,e.createElementVNode)(`span`,w,(0,e.toDisplayString)(t.name||`未知用户`),1),t.isAi?((0,e.openBlock)(),(0,e.createBlock)(p,{key:0,size:`small`,type:`primary`,effect:`plain`,class:`role-tag`},{default:(0,e.withCtx)(()=>[...r[5]||=[(0,e.createTextVNode)(`AI助手`,-1)]]),_:1})):((0,e.openBlock)(),(0,e.createBlock)(p,{key:1,size:`small`,type:`success`,effect:`plain`,class:`role-tag`},{default:(0,e.withCtx)(()=>[...r[6]||=[(0,e.createTextVNode)(`协作人`,-1)]]),_:1}))]))),128))])]),_:1})):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`div`,ee,[t.isCollab&&t.unreadMention?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`mention-bell`,title:`有新消息`,onClick:r[0]||=e=>a(`clear-unread`)},[(0,e.createVNode)(f,{size:18,color:`#F56C6C`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Bell))]),_:1})])):(0,e.createCommentVNode)(``,!0),(0,e.createVNode)(I,{text:``,circle:``,size:`small`,onClick:r[1]||=e=>n.$emit(`clear`),title:`清空对话`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(f,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Delete))]),_:1})]),_:1}),(0,e.createVNode)(I,{text:``,circle:``,size:`small`,onClick:r[2]||=e=>n.$emit(`close`),title:`关闭`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(f,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Close))]),_:1})]),_:1})])]),(0,e.createElementVNode)(`div`,{class:`chat-messages`,ref_key:`messagesRef`,ref:s},[t.messages.length===0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,te,[(0,e.createVNode)(f,{size:40,color:`#c0c4cc`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Monitor))]),_:1}),(0,e.createElementVNode)(`p`,null,(0,e.toDisplayString)(t.isCollab?`协作聊天室`:`你好!我是 AI 助手`),1),(0,e.createElementVNode)(`p`,T,(0,e.toDisplayString)(t.isCollab?`与团队成员和AI助手实时聊天`:`可以问我任何关于文档编辑的问题`),1)])):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.messages,n=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:n._msgId||n.time+n.content,class:(0,e.normalizeClass)([`chat-message`,ce(n)])},[(0,e.createElementVNode)(`div`,{class:`message-avatar`,style:(0,e.normalizeStyle)(le(n))},[n.role===`ai`?((0,e.openBlock)(),(0,e.createBlock)(f,{key:0,size:16},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Monitor))]),_:1})):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,ne,(0,e.toDisplayString)(M(n)),1))],4),(0,e.createElementVNode)(`div`,re,[t.isCollab&&n.role===`user`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,E,[(0,e.createElementVNode)(`span`,{class:`message-sender`,style:(0,e.normalizeStyle)({color:n.user_color||`#67C23A`})},(0,e.toDisplayString)(n.user_name||`用户`),5),n.mentioned_user?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,ie,`@`+(0,e.toDisplayString)(n.mentioned_user),1)):(0,e.createCommentVNode)(``,!0)])):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,{class:`message-text`,innerHTML:n.content},null,8,D),(0,e.createElementVNode)(`div`,O,(0,e.toDisplayString)(n.time),1)])],2))),128)),t.loading?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,k,[(0,e.createElementVNode)(`div`,ae,[(0,e.createVNode)(f,{size:16},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Monitor))]),_:1})]),r[7]||=(0,e.createElementVNode)(`div`,{class:`message-content`},[(0,e.createElementVNode)(`div`,{class:`message-text typing-indicator`},[(0,e.createElementVNode)(`span`),(0,e.createElementVNode)(`span`),(0,e.createElementVNode)(`span`)])],-1)])):(0,e.createCommentVNode)(``,!0)],512),(0,e.createElementVNode)(`div`,oe,[(0,e.createElementVNode)(`div`,{class:`chat-input-wrapper`,ref_key:`inputWrapperRef`,ref:c},[(0,e.createVNode)(L,{modelValue:o.value,"onUpdate:modelValue":r[3]||=e=>o.value=e,type:`textarea`,autosize:{minRows:1,maxRows:4},placeholder:t.isCollab?`输入消息... @提及成员`:`输入消息...`,onKeydown:[(0,e.withKeys)((0,e.withModifiers)(F,[`exact`]),[`enter`]),(0,e.withKeys)((0,e.withModifiers)(ue,[`prevent`]),[`down`]),(0,e.withKeys)((0,e.withModifiers)(de,[`prevent`]),[`up`])],onInput:N,resize:`none`},null,8,[`modelValue`,`placeholder`,`onKeydown`]),l.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,A,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(u.value,(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t.id||t.clientId,class:(0,e.normalizeClass)([`mention-item`,{active:n===d.value}]),onClick:e=>P(t),onMouseenter:e=>d.value=n},[(0,e.createElementVNode)(`div`,{class:`mention-avatar`,style:(0,e.normalizeStyle)({background:t.color||`#909399`})},[t.isAi?((0,e.openBlock)(),(0,e.createBlock)(f,{key:0,size:12},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Monitor))]),_:1})):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,j,(0,e.toDisplayString)((t.name||`U`).charAt(0)),1))],4),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(t.name),1)],42,se))),128))])):(0,e.createCommentVNode)(``,!0),(0,e.createVNode)(I,{class:`send-btn`,type:`primary`,circle:``,disabled:!o.value.trim()||t.loading,onClick:F},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(f,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Promotion))]),_:1})]),_:1},8,[`disabled`])],512)])],4)):(0,e.createCommentVNode)(``,!0)}}},[[`__scopeId`,`data-v-01960100`]]);function le(){let t=(0,e.ref)([]),n=(0,e.ref)(!1),r=(0,e.ref)(!1),i=(0,e.ref)([]),o=(0,e.ref)({id:``,name:``,color:``}),s=(0,e.ref)(!1),c=null,l=null,u=null,d=new Set,f=`/api/chat`,p=null,m=({ydoc:n,provider:a,onlineUsers:l})=>{if(n){r.value=!0,u=l,p&&p(),p=(0,e.watch)(u,e=>{i.value=Array.isArray(e)?e:[]},{immediate:!0,deep:!0});try{c=n.getArray(`chat-messages`),c.observe(e=>{try{e.changes.added.forEach(e=>{e.content.getContent().forEach(e=>{e&&e._msgId&&!d.has(e._msgId)&&(d.add(e._msgId),t.value=[...t.value,e],e.mentioned_user&&e.user_id!==o.value.id&&(s.value=!0))})})}catch(e){console.warn(`[useChat] Y.Array observer error:`,e)}})}catch(e){console.warn(`[useChat] Failed to create Y.Array:`,e)}}},h=e=>{o.value={...o.value,...e}},g=e=>{i.value=e||[]},_=()=>{let e=new Date;return`${e.getHours().toString().padStart(2,`0`)}:${e.getMinutes().toString().padStart(2,`0`)}`},v=async(n,i={})=>{let s={_msgId:`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,role:`user`,content:n,time:_(),user_id:o.value.id,user_name:o.value.name,user_color:o.value.color,mentioned_user:i.mentionedUser||null};if(d.add(s._msgId),t.value=[...t.value,s],c&&(0,e.unref)(r))try{c.push([s])}catch(e){console.warn(`[useChat] Failed to push to Y.Array:`,e)}if(i.roomId)try{await a.default.post(f,{room_id:i.roomId,role:`user`,content:n,user_id:o.value.id,user_name:o.value.name,mentioned_user:i.mentionedUser||null})}catch(e){console.warn(`[useChat] Failed to persist message:`,e)}},y=async(n,i)=>{let o={_msgId:`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,role:`ai`,content:n,time:_(),user_id:`ai-assistant`,user_name:`AI助手`};if(d.add(o._msgId),t.value=[...t.value,o],c&&(0,e.unref)(r))try{c.push([o])}catch(e){console.warn(`[useChat] Failed to push AI message to Y.Array:`,e)}if(i)try{await a.default.post(f,{room_id:i,role:`ai`,content:n,user_id:`ai-assistant`,user_name:`AI助手`})}catch(e){console.warn(`[useChat] Failed to persist AI message:`,e)}},b=async e=>{if(e)try{let n=await a.default.get(f,{params:{room_id:e}});if(Array.isArray(n.data)){let e=n.data.map(e=>({_msgId:e._msgId||`hist-${e.id||Date.now()}`,role:e.role,content:e.content,time:e.time||_(),user_id:e.user_id||``,user_name:e.user_name||``,user_color:e.user_color||``,mentioned_user:e.mentioned_user||null}));e.forEach(e=>d.add(e._msgId)),t.value=[...e,...t.value]}}catch(e){console.warn(`[useChat] Failed to load history:`,e)}},x=async e=>{if(t.value=[],d.clear(),e)try{await a.default.delete(f,{params:{room_id:e}})}catch(e){console.warn(`[useChat] Failed to clear messages on server:`,e)}},S=()=>{s.value=!1},C=()=>{if(p&&=(p(),null),c&&l){try{c.unobserve(l)}catch{}l=null}c=null,u=null,d.clear()};return(0,e.onUnmounted)(()=>C()),{messages:t,loading:n,isCollabMode:r,collabUsers:i,currentUser:o,unreadMention:s,setCollabContext:m,setCurrentUser:h,updateCollabUsers:g,sendMessage:v,sendAiMessage:y,loadHistory:b,clearMessages:x,clearUnreadMention:S,destroy:C}}var M=`/api/document-versions`,N=5e3,ue=()=>{let t=(0,e.ref)([]),n=(0,e.ref)(!1);return{versions:t,loading:n,saveVersion:async({documentId:e,docType:t,content:n,userId:r,userName:i})=>{if(!e||!t||!n)return null;try{let{data:o}=await a.default.post(M,{document_id:e,doc_type:t,content:typeof n==`string`?n:JSON.stringify(n),user_id:r||null,user_name:i||null},{timeout:N});return o}catch(e){return console.warn(`[useVersionHistory] Failed to save version:`,e),null}},loadVersions:async e=>{if(!e)return[];n.value=!0;try{let{data:n}=await a.default.get(M,{params:{document_id:e},timeout:N});return t.value=n,n}catch(e){return console.warn(`[useVersionHistory] Failed to load versions:`,e),t.value=[],[]}finally{n.value=!1}},getVersionContent:async e=>{try{let{data:t}=await a.default.get(`${M}/${e}`,{timeout:N});return t}catch(e){return console.warn(`[useVersionHistory] Failed to get version content:`,e),null}}}},de={class:`version-history-panel`},P={key:0,class:`loading-state`},F={key:1,class:`empty-state`},I={key:2,class:`version-list`},L={key:0,class:`current-version`},R={class:`current-version-header`},fe={class:`version-number`},z=[`onClick`],B={class:`version-number`},pe={class:`version-user`},V={class:`panel-footer`},H=g({__name:`VersionHistoryPanel`,props:{modelValue:{type:Boolean,default:!1},documentId:{type:[Number,String],default:null}},emits:[`update:modelValue`,`apply`],setup(t,{expose:n,emit:a}){let o=t,s=a,{versions:c,loading:l,loadVersions:u,getVersionContent:d}=ue(),f=(0,e.ref)(!1),p=(0,e.ref)(null),m=(0,e.ref)(!1),h=(0,e.ref)(null);(0,e.watch)(()=>o.modelValue,e=>{f.value=e,e&&o.documentId&&(p.value=null,u(o.documentId).then(e=>{e&&e.length>0&&(h.value=e[0])}))}),(0,e.watch)(f,e=>{s(`update:modelValue`,e)});let g=e=>{p.value=e},_=async()=>{if(p.value){m.value=!0;try{let e=await d(p.value.id);e&&e.content?(h.value=p.value,p.value=null,s(`apply`,e.content),r.ElMessage.success(`已切换到版本 v`+h.value.version_number)):r.ElMessage.error(`获取版本内容失败`)}finally{m.value=!1}}},v=()=>{f.value=!1},y=e=>{if(!e)return``;let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`};return n({currentVersion:h}),(t,n)=>{let r=(0,e.resolveComponent)(`el-icon`),a=(0,e.resolveComponent)(`el-tag`),o=(0,e.resolveComponent)(`el-timeline-item`),s=(0,e.resolveComponent)(`el-timeline`),u=(0,e.resolveComponent)(`el-button`),d=(0,e.resolveComponent)(`el-drawer`);return(0,e.openBlock)(),(0,e.createBlock)(d,{modelValue:f.value,"onUpdate:modelValue":n[0]||=e=>f.value=e,title:`更新履历`,direction:`rtl`,size:`420px`,"before-close":v},{footer:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,V,[(0,e.createVNode)(u,{type:`primary`,disabled:!p.value,loading:m.value,onClick:_},{default:(0,e.withCtx)(()=>[...n[4]||=[(0,e.createTextVNode)(` 切换到此版本 `,-1)]]),_:1},8,[`disabled`,`loading`])])]),default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,de,[(0,e.unref)(l)?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,P,[(0,e.createVNode)(r,{class:`is-loading`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Loading))]),_:1}),n[1]||=(0,e.createElementVNode)(`span`,null,`加载中...`,-1)])):(0,e.unref)(c).length===0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,F,[(0,e.createVNode)(r,{size:48,color:`#c0c4cc`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Clock))]),_:1}),n[2]||=(0,e.createElementVNode)(`p`,null,`暂无历史版本`,-1)])):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,I,[h.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,L,[(0,e.createElementVNode)(`div`,R,[(0,e.createVNode)(a,{type:`success`,size:`small`},{default:(0,e.withCtx)(()=>[...n[3]||=[(0,e.createTextVNode)(`当前版本`,-1)]]),_:1}),(0,e.createElementVNode)(`span`,fe,`v`+(0,e.toDisplayString)(h.value.version_number),1)])])):(0,e.createCommentVNode)(``,!0),(0,e.createVNode)(s,null,{default:(0,e.withCtx)(()=>[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(c),t=>((0,e.openBlock)(),(0,e.createBlock)(o,{key:t.id,timestamp:y(t.created_at),placement:`top`,type:p.value?.id===t.id?`primary`:``,hollow:p.value?.id!==t.id},{default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`version-item`,{active:p.value?.id===t.id}]),onClick:e=>g(t)},[(0,e.createElementVNode)(`span`,B,`版本号:v`+(0,e.toDisplayString)(t.version_number),1),(0,e.createElementVNode)(`span`,pe,`提交人:`+(0,e.toDisplayString)(t.user_name||`未知用户`),1)],10,z)]),_:2},1032,[`timestamp`,`type`,`hollow`]))),128))]),_:1})]))])]),_:1},8,[`modelValue`])}}},[[`__scopeId`,`data-v-87924b7c`]]),U={class:`theme-picker`},W={class:`theme-header`},me={class:`theme-count`},he={class:`theme-grid`},ge=[`onClick`,`title`],_e={class:`theme-name`},G=g({__name:`ThemePicker`,props:{currentTheme:{type:String,default:`ocean`},disabled:Boolean},emits:[`selectTheme`],setup(t,{emit:n}){let r=n,a=[{id:`ocean`,name:`海洋`,gradient:`linear-gradient(135deg, #E3F2FD, #E1F5FE)`,spine:`linear-gradient(90deg, #1E90FF, #00CED1)`},{id:`deep-sea`,name:`深海`,gradient:`linear-gradient(135deg, #E3F2FD, #BBDEFB)`,spine:`linear-gradient(90deg, #003366, #006994)`},{id:`coral`,name:`珊瑚`,gradient:`linear-gradient(135deg, #FFEBEE, #FFCDD2)`,spine:`linear-gradient(90deg, #FF7F50, #FF6B6B)`},{id:`ice`,name:`冰川`,gradient:`linear-gradient(135deg, #E0F7FA, #B2EBF2)`,spine:`linear-gradient(90deg, #ADD8E6, #87CEEB)`},{id:`mint`,name:`薄荷`,gradient:`linear-gradient(135deg, #E8F5E9, #C8E6C9)`,spine:`linear-gradient(90deg, #3EB489, #00FA9A)`},{id:`sunset`,name:`日落`,gradient:`linear-gradient(135deg, #FFF3E0, #FFE0B2)`,spine:`linear-gradient(90deg, #FF6B35, #F7931E)`},{id:`dawn`,name:`黎明`,gradient:`linear-gradient(135deg, #FFFDE7, #FFF9C4)`,spine:`linear-gradient(90deg, #FFB347, #FFCC33)`},{id:`autumn`,name:`秋日`,gradient:`linear-gradient(135deg, #EFEBE9, #D7CCC8)`,spine:`linear-gradient(90deg, #D2691E, #CD853F)`},{id:`rust`,name:`锈迹`,gradient:`linear-gradient(135deg, #FBE9E7, #FFCCBC)`,spine:`linear-gradient(90deg, #B7410E, #CC5500)`},{id:`amber`,name:`琥珀`,gradient:`linear-gradient(135deg, #FFFDE7, #FFF9C4)`,spine:`linear-gradient(90deg, #FFBF00, #FFD700)`},{id:`forest`,name:`森林`,gradient:`linear-gradient(135deg, #E8F5E9, #C8E6C9)`,spine:`linear-gradient(90deg, #228B22, #32CD32)`},{id:`emerald`,name:`翡翠`,gradient:`linear-gradient(135deg, #E8F5E9, #A5D6A7)`,spine:`linear-gradient(90deg, #50C878, #98FB98)`},{id:`olive`,name:`橄榄`,gradient:`linear-gradient(135deg, #F1F8E9, #DCEDC8)`,spine:`linear-gradient(90deg, #808000, #9ACD32)`},{id:`sage`,name:`鼠尾草`,gradient:`linear-gradient(135deg, #E8F5E9, #C8E6C9)`,spine:`linear-gradient(90deg, #8FBC8F, #90EE90)`},{id:`moss`,name:`苔藓`,gradient:`linear-gradient(135deg, #F1F8E9, #E6EEC3)`,spine:`linear-gradient(90deg, #8A9A5B, #BDB76B)`},{id:`violet`,name:`紫罗兰`,gradient:`linear-gradient(135deg, #F3E5F5, #E1BEE7)`,spine:`linear-gradient(90deg, #8A2BE2, #9370DB)`},{id:`lavender`,name:`薰衣草`,gradient:`linear-gradient(135deg, #F3E5F5, #E1BEE7)`,spine:`linear-gradient(90deg, #9C27B0, #CE93D8)`},{id:`plum`,name:`梅子`,gradient:`linear-gradient(135deg, #FCE4EC, #F8BBD0)`,spine:`linear-gradient(90deg, #8E4585, #DDA0DD)`},{id:`mauve`,name:`淡紫`,gradient:`linear-gradient(135deg, #F3E5F5, #E1BEE7)`,spine:`linear-gradient(90deg, #E0B0FF, #DA70D6)`},{id:`orchid`,name:`兰花`,gradient:`linear-gradient(135deg, #F3E5F5, #F8BBD0)`,spine:`linear-gradient(90deg, #DA70D6, #EE82EE)`},{id:`modern`,name:`现代`,gradient:`linear-gradient(135deg, #F5F5F5, #EEEEEE)`,spine:`linear-gradient(90deg, #333333, #555555)`},{id:`minimal`,name:`极简`,gradient:`linear-gradient(135deg, #ECEFF1, #CFD8DC)`,spine:`linear-gradient(90deg, #2C3E50, #34495E)`},{id:`corporate`,name:`商务`,gradient:`linear-gradient(135deg, #E3F2FD, #BBDEFB)`,spine:`linear-gradient(90deg, #2C3E50, #3498DB)`},{id:`tech`,name:`科技`,gradient:`linear-gradient(135deg, #E0F7FA, #B2EBF2)`,spine:`linear-gradient(90deg, #00D4FF, #7B2FBE)`},{id:`neon`,name:`霓虹`,gradient:`linear-gradient(135deg, #16213E, #0F3460)`,spine:`linear-gradient(90deg, #00FF88, #FF00FF)`},{id:`pastel`,name:`粉彩`,gradient:`linear-gradient(135deg, #FFF0F5, #F1F8E9)`,spine:`linear-gradient(90deg, #FFB3BA, #BAFFC9)`},{id:`candy`,name:`糖果`,gradient:`linear-gradient(135deg, #FCE4EC, #F8BBD0)`,spine:`linear-gradient(90deg, #FFB6C1, #FF69B4)`},{id:`bubblegum`,name:`泡泡糖`,gradient:`linear-gradient(135deg, #FCE4EC, #F8BBD0)`,spine:`linear-gradient(90deg, #FFC0CB, #FF1493)`},{id:`sakura`,name:`樱花`,gradient:`linear-gradient(135deg, #FFF0F5, #FCE4EC)`,spine:`linear-gradient(90deg, #FFB7C5, #FF69B4)`},{id:`peach`,name:`蜜桃`,gradient:`linear-gradient(135deg, #FFF3E0, #FFE0B2)`,spine:`linear-gradient(90deg, #FFDAB9, #FFA07A)`}],o=e=>{r(`selectTheme`,e)};return(n,r)=>{let s=(0,e.resolveComponent)(`el-icon`),c=(0,e.resolveComponent)(`el-button`),l=(0,e.resolveComponent)(`el-popover`);return(0,e.openBlock)(),(0,e.createBlock)(l,{trigger:`click`,width:`340`,placement:`bottom-end`},{reference:(0,e.withCtx)(()=>[(0,e.createVNode)(c,{size:`small`,circle:``,tabindex:`-1`,title:`主题`,disabled:t.disabled},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(s,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Brush))]),_:1})]),_:1},8,[`disabled`])]),default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,U,[(0,e.createElementVNode)(`div`,W,[r[1]||=(0,e.createElementVNode)(`h4`,null,`选择主题`,-1),(0,e.createElementVNode)(`span`,me,(0,e.toDisplayString)(a.length)+` 种配色`,1)]),(0,e.createElementVNode)(`div`,he,[((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(a,n=>(0,e.createElementVNode)(`div`,{key:n.id,class:(0,e.normalizeClass)([`theme-item`,{active:t.currentTheme===n.id}]),onClick:e=>o(n.id),onMousedown:r[0]||=(0,e.withModifiers)(()=>{},[`prevent`]),title:n.name},[(0,e.createElementVNode)(`div`,{class:`theme-preview`,style:(0,e.normalizeStyle)({background:n.gradient})},[(0,e.createElementVNode)(`div`,{class:`theme-spine`,style:(0,e.normalizeStyle)({background:n.spine})},null,4)],4),(0,e.createElementVNode)(`span`,_e,(0,e.toDisplayString)(n.name),1)],42,ge)),64))])])]),_:1})}}},[[`__scopeId`,`data-v-49d0deee`]]),ve=[{id:`default`,name:`默认`,desc:`系统默认样式,均衡美观`,spineWidth:5,spineColor:`#546E7A`,branchType:`straight`,branchWidth:2.5,branchOpacity:.6,nodeShape:`pill`,nodeHeight:36,nodeRadius:18,nodeGap:6,causeShape:`pill`,causeHeight:26,causeRadius:13,childShape:`pill`,childHeight:20,childRadius:10,headShape:`ellipse`,headRx:53,headRy:41,tailStyle:`fin`,showDots:!0,branchAngle:35,verticalGap:130,fontFamily:`Microsoft YaHei`},{id:`classic`,name:`经典`,desc:`标准鱼骨图,直线分支`,spineWidth:5,spineColor:`#546E7A`,branchType:`straight`,branchWidth:2.5,branchOpacity:.6,nodeShape:`pill`,nodeHeight:36,nodeRadius:18,nodeGap:6,causeShape:`pill`,causeHeight:26,causeRadius:13,childShape:`pill`,childHeight:20,childRadius:10,headShape:`ellipse`,headRx:53,headRy:41,tailStyle:`fin`,showDots:!0,branchAngle:35,verticalGap:130,fontFamily:`Microsoft YaHei`},{id:`organic`,name:`有机`,desc:`曲线分支,自然流畅`,spineWidth:4,spineColor:`#2E7D32`,branchType:`curve`,branchWidth:2,branchOpacity:.5,nodeShape:`pill`,nodeHeight:34,nodeRadius:17,nodeGap:6,causeShape:`pill`,causeHeight:24,causeRadius:12,childShape:`round`,childHeight:18,childRadius:9,headShape:`ellipse`,headRx:50,headRy:38,tailStyle:`wave`,showDots:!0,branchAngle:30,verticalGap:125,fontFamily:`Microsoft YaHei`},{id:`minimal`,name:`极简`,desc:`细线条,小巧节点`,spineWidth:2,spineColor:`#757575`,branchType:`straight`,branchWidth:1,branchOpacity:.4,nodeShape:`rect`,nodeHeight:28,nodeRadius:4,nodeGap:4,causeShape:`rect`,causeHeight:22,causeRadius:3,childShape:`rect`,childHeight:16,childRadius:2,headShape:`rect`,headRx:40,headRy:30,tailStyle:`arrow`,showDots:!1,branchAngle:30,verticalGap:110,fontFamily:`Arial`},{id:`bold`,name:`粗犷`,desc:`粗线条,大节点,有力感`,spineWidth:8,spineColor:`#212121`,branchType:`straight`,branchWidth:4,branchOpacity:.7,nodeShape:`rect`,nodeHeight:42,nodeRadius:6,nodeGap:8,causeShape:`rect`,causeHeight:32,causeRadius:4,childShape:`rect`,childHeight:24,childRadius:3,headShape:`rect`,headRx:60,headRy:48,tailStyle:`fan`,showDots:!0,branchAngle:40,verticalGap:145,fontFamily:`SimHei`},{id:`bubble`,name:`气泡`,desc:`圆形节点,活泼可爱`,spineWidth:3,spineColor:`#E91E63`,branchType:`curve`,branchWidth:2,branchOpacity:.5,nodeShape:`round`,nodeHeight:40,nodeRadius:20,nodeGap:8,causeShape:`round`,causeHeight:32,causeRadius:16,childShape:`round`,childHeight:22,childRadius:11,headShape:`ellipse`,headRx:55,headRy:42,tailStyle:`wave`,showDots:!1,branchAngle:32,verticalGap:135,fontFamily:`Microsoft YaHei`},{id:`tech`,name:`科技`,desc:`直角折线,科技感`,spineWidth:3,spineColor:`#0277BD`,branchType:`zigzag`,branchWidth:2,branchOpacity:.6,nodeShape:`rect`,nodeHeight:32,nodeRadius:2,nodeGap:5,causeShape:`rect`,causeHeight:26,causeRadius:2,childShape:`rect`,childHeight:18,childRadius:2,headShape:`rect`,headRx:50,headRy:38,tailStyle:`arrow`,showDots:!0,branchAngle:35,verticalGap:120,fontFamily:`Consolas`},{id:`elegant`,name:`优雅`,desc:`渐变线条,精致细节`,spineWidth:4,spineColor:`#6A1B9A`,branchType:`curve`,branchWidth:2,branchOpacity:.5,nodeShape:`pill`,nodeHeight:36,nodeRadius:18,nodeGap:6,causeShape:`pill`,causeHeight:28,causeRadius:14,childShape:`pill`,childHeight:20,childRadius:10,headShape:`ellipse`,headRx:52,headRy:40,tailStyle:`fan`,showDots:!0,branchAngle:28,verticalGap:130,fontFamily:`Georgia`},{id:`playful`,name:`活泼`,desc:`波浪线,圆角节点`,spineWidth:4,spineColor:`#FF6F00`,branchType:`wave`,branchWidth:2.5,branchOpacity:.6,nodeShape:`pill`,nodeHeight:38,nodeRadius:19,nodeGap:7,causeShape:`pill`,causeHeight:28,causeRadius:14,childShape:`round`,childHeight:22,childRadius:11,headShape:`ellipse`,headRx:54,headRy:42,tailStyle:`wave`,showDots:!0,branchAngle:35,verticalGap:140,fontFamily:`Comic Sans MS`},{id:`corporate`,name:`商务`,desc:`方正节点,专业稳重`,spineWidth:4,spineColor:`#1A237E`,branchType:`straight`,branchWidth:2,branchOpacity:.5,nodeShape:`rect`,nodeHeight:36,nodeRadius:4,nodeGap:6,causeShape:`rect`,causeHeight:28,causeRadius:3,childShape:`rect`,childHeight:20,childRadius:2,headShape:`rect`,headRx:55,headRy:42,tailStyle:`arrow`,showDots:!1,branchAngle:32,verticalGap:125,fontFamily:`Microsoft YaHei`},{id:`neon`,name:`霓虹`,desc:`发光效果,夜店风`,spineWidth:3,spineColor:`#00E5FF`,branchType:`straight`,branchWidth:2,branchOpacity:.8,nodeShape:`pill`,nodeHeight:34,nodeRadius:17,nodeGap:6,causeShape:`pill`,causeHeight:26,causeRadius:13,childShape:`round`,childHeight:20,childRadius:10,headShape:`ellipse`,headRx:50,headRy:38,tailStyle:`fin`,showDots:!0,branchAngle:30,verticalGap:120,fontFamily:`Consolas`,glow:!0},{id:`vintage`,name:`复古`,desc:`虚线连接,怀旧风格`,spineWidth:3,spineColor:`#795548`,branchType:`straight`,branchWidth:1.5,branchOpacity:.5,nodeShape:`rect`,nodeHeight:34,nodeRadius:6,nodeGap:5,causeShape:`rect`,causeHeight:26,causeRadius:4,childShape:`rect`,childHeight:18,childRadius:3,headShape:`rect`,headRx:48,headRy:36,tailStyle:`fan`,showDots:!0,branchDashed:!0,branchAngle:30,verticalGap:120,fontFamily:`SimSun`},{id:`modern`,name:`现代`,desc:`扁平设计,简洁明快`,spineWidth:3,spineColor:`#37474F`,branchType:`straight`,branchWidth:2,branchOpacity:.5,nodeShape:`rect`,nodeHeight:32,nodeRadius:8,nodeGap:5,causeShape:`rect`,causeHeight:24,causeRadius:6,childShape:`rect`,childHeight:18,childRadius:4,headShape:`rect`,headRx:48,headRy:36,tailStyle:`arrow`,showDots:!1,branchAngle:30,verticalGap:115,fontFamily:`Arial`},{id:`flow`,name:`流动`,desc:`流水线风格,动态感`,spineWidth:5,spineColor:`#00897B`,branchType:`wave`,branchWidth:2.5,branchOpacity:.6,nodeShape:`pill`,nodeHeight:36,nodeRadius:18,nodeGap:6,causeShape:`pill`,causeHeight:28,causeRadius:14,childShape:`pill`,childHeight:20,childRadius:10,headShape:`ellipse`,headRx:52,headRy:40,tailStyle:`wave`,showDots:!0,branchAngle:32,verticalGap:130,fontFamily:`Microsoft YaHei`},{id:`sharp`,name:`锐利`,desc:`三角形节点,锐利感`,spineWidth:3,spineColor:`#C62828`,branchType:`straight`,branchWidth:2,branchOpacity:.6,nodeShape:`diamond`,nodeHeight:36,nodeRadius:18,nodeGap:8,causeShape:`diamond`,causeHeight:28,causeRadius:14,childShape:`round`,childHeight:18,childRadius:9,headShape:`diamond`,headRx:50,headRy:40,tailStyle:`arrow`,showDots:!1,branchAngle:35,verticalGap:135,fontFamily:`SimHei`},{id:`soft`,name:`柔和`,desc:`柔和色彩,温和舒适`,spineWidth:3,spineColor:`#AB47BC`,branchType:`curve`,branchWidth:2,branchOpacity:.4,nodeShape:`pill`,nodeHeight:34,nodeRadius:17,nodeGap:6,causeShape:`pill`,causeHeight:26,causeRadius:13,childShape:`round`,childHeight:20,childRadius:10,headShape:`ellipse`,headRx:50,headRy:38,tailStyle:`wave`,showDots:!0,branchAngle:28,verticalGap:125,fontFamily:`Microsoft YaHei`},{id:`industrial`,name:`工业`,desc:`管道风格,工业感`,spineWidth:6,spineColor:`#455A64`,branchType:`straight`,branchWidth:3,branchOpacity:.6,nodeShape:`rect`,nodeHeight:38,nodeRadius:3,nodeGap:7,causeShape:`rect`,causeHeight:30,causeRadius:2,childShape:`rect`,childHeight:22,childRadius:2,headShape:`rect`,headRx:55,headRy:44,tailStyle:`arrow`,showDots:!0,branchAngle:38,verticalGap:140,fontFamily:`SimHei`},{id:`nature`,name:`自然`,desc:`树形分支,自然生长`,spineWidth:4,spineColor:`#33691E`,branchType:`curve`,branchWidth:2,branchOpacity:.5,nodeShape:`round`,nodeHeight:36,nodeRadius:18,nodeGap:7,causeShape:`round`,causeHeight:28,causeRadius:14,childShape:`round`,childHeight:20,childRadius:10,headShape:`ellipse`,headRx:48,headRy:36,tailStyle:`fan`,showDots:!0,branchAngle:30,verticalGap:130,fontFamily:`KaiTi`},{id:`geometric`,name:`几何`,desc:`六边形节点,几何美感`,spineWidth:3,spineColor:`#1565C0`,branchType:`straight`,branchWidth:2,branchOpacity:.5,nodeShape:`hexagon`,nodeHeight:40,nodeRadius:20,nodeGap:8,causeShape:`hexagon`,causeHeight:32,causeRadius:16,childShape:`round`,childHeight:20,childRadius:10,headShape:`ellipse`,headRx:52,headRy:40,tailStyle:`fin`,showDots:!1,branchAngle:32,verticalGap:140,fontFamily:`Arial`}],ye={class:`style-picker`},be={class:`style-header`},xe={class:`style-count`},Se={class:`style-grid`},K=[`onClick`],q={class:`style-preview`},Ce={viewBox:`0 0 80 40`,class:`style-svg`},we=[`stroke`,`stroke-width`],Te=[`y2`,`stroke`,`stroke-width`,`opacity`,`stroke-dasharray`],Ee=[`y2`,`stroke`,`stroke-width`,`opacity`,`stroke-dasharray`],De=[`y`,`height`,`rx`,`fill`],Oe=[`y`,`height`,`rx`,`fill`],ke=[`rx`,`ry`,`fill`],Ae={class:`style-name`},je=g({__name:`StylePicker`,props:{currentStyle:{type:String,default:`default`},disabled:Boolean},emits:[`selectStyle`],setup(t){let n=ve;return(r,a)=>{let o=(0,e.resolveComponent)(`el-icon`),s=(0,e.resolveComponent)(`el-button`),c=(0,e.resolveComponent)(`el-popover`);return(0,e.openBlock)(),(0,e.createBlock)(c,{trigger:`click`,width:`480`,placement:`bottom-end`},{reference:(0,e.withCtx)(()=>[(0,e.createVNode)(s,{size:`small`,circle:``,title:`样式`,disabled:t.disabled},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(o,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.MagicStick))]),_:1})]),_:1},8,[`disabled`])]),default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,ye,[(0,e.createElementVNode)(`div`,be,[a[1]||=(0,e.createElementVNode)(`h4`,null,`鱼骨图样式`,-1),(0,e.createElementVNode)(`span`,xe,(0,e.toDisplayString)((0,e.unref)(n).length)+` 种`,1)]),(0,e.createElementVNode)(`div`,Se,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(n),n=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:n.id,class:(0,e.normalizeClass)([`style-item`,{active:t.currentStyle===n.id}]),onClick:e=>r.$emit(`selectStyle`,n.id),onMousedown:a[0]||=(0,e.withModifiers)(()=>{},[`prevent`])},[(0,e.createElementVNode)(`div`,q,[((0,e.openBlock)(),(0,e.createElementBlock)(`svg`,Ce,[(0,e.createElementVNode)(`line`,{x1:`10`,y1:`20`,x2:`65`,y2:`20`,stroke:n.spineColor,"stroke-width":n.spineWidth*.4,"stroke-linecap":`round`},null,8,we),(0,e.createElementVNode)(`line`,{x1:`30`,y1:`20`,x2:`38`,y2:20-n.branchAngle*.4,stroke:n.spineColor,"stroke-width":n.branchWidth*.4,opacity:n.branchOpacity,"stroke-dasharray":n.branchDashed?`3,2`:`none`},null,8,Te),(0,e.createElementVNode)(`line`,{x1:`45`,y1:`20`,x2:`53`,y2:20+n.branchAngle*.4,stroke:n.spineColor,"stroke-width":n.branchWidth*.4,opacity:n.branchOpacity,"stroke-dasharray":n.branchDashed?`3,2`:`none`},null,8,Ee),(0,e.createElementVNode)(`rect`,{x:`34`,y:20-n.branchAngle*.4-n.nodeHeight*.15,width:`12`,height:n.nodeHeight*.3,rx:n.nodeRadius*.15,fill:n.spineColor,opacity:`0.8`},null,8,De),(0,e.createElementVNode)(`rect`,{x:`49`,y:20+n.branchAngle*.4-n.nodeHeight*.15,width:`12`,height:n.nodeHeight*.3,rx:n.nodeRadius*.15,fill:n.spineColor,opacity:`0.8`},null,8,Oe),(0,e.createElementVNode)(`ellipse`,{cx:`70`,cy:`20`,rx:n.headRx*.15,ry:n.headRy*.15,fill:n.spineColor,opacity:`0.9`},null,8,ke)]))]),(0,e.createElementVNode)(`span`,Ae,(0,e.toDisplayString)(n.name),1)],42,K))),128))])])]),_:1})}}},[[`__scopeId`,`data-v-0387ce0f`]]),Me={class:`toolbar-left`},Ne={class:`toolbar-center`},Pe={class:`zoom-value`},Fe={class:`toolbar-right`},Ie={key:1,class:`online-users`},Le={key:0,class:`more-users`},Re=g({__name:`Toolbar`,props:{title:String,effect:String,author:String,currentTheme:String,currentDiagramStyle:String,zoom:Number,canUndo:Boolean,canRedo:Boolean,canAddCause:Boolean,canAddArrow:Boolean,isConnected:Boolean,onlineUsers:{type:Array,default:()=>[]},onlineCount:{type:Number,default:0},readonly:Boolean,showHistory:{type:Boolean,default:!1}},emits:[`back`,`update:title`,`update:effect`,`update:author`,`addTextBox`,`addArrow`,`undo`,`redo`,`zoomIn`,`zoomOut`,`fitView`,`selectTheme`,`selectStyle`,`save`,`export`,`toggle-collab`,`share-collab`,`ai-generate`,`history`],setup(t,{emit:n}){let r=t,a=n,o=(0,e.ref)(r.title),s=(0,e.ref)(r.effect),c=(0,e.ref)(r.author),l=(0,e.ref)(null),u=(0,e.ref)(null),d=(0,e.ref)(null),f=(0,e.ref)(!1),p=(0,e.ref)(``),m=()=>{p.value.trim()&&(a(`ai-generate`,p.value.trim()),f.value=!1,p.value=``)};(0,e.watch)(()=>r.title,e=>{o.value=e}),(0,e.watch)(()=>r.effect,e=>{s.value=e}),(0,e.watch)(()=>r.author,e=>{c.value=e});let h=e=>{let t=e.target?.tagName;t!==`INPUT`&&t!==`TEXTAREA`&&(l.value?.blur(),u.value?.blur())};return(n,r)=>{let a=(0,e.resolveComponent)(`el-icon`),g=(0,e.resolveComponent)(`el-button`),_=(0,e.resolveComponent)(`el-input`),v=(0,e.resolveComponent)(`el-divider`),y=(0,e.resolveComponent)(`Clock`),b=(0,e.resolveComponent)(`el-dropdown-item`),x=(0,e.resolveComponent)(`el-dropdown-menu`),S=(0,e.resolveComponent)(`el-dropdown`),C=(0,e.resolveComponent)(`el-avatar`),w=(0,e.resolveComponent)(`el-dialog`);return(0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,null,[(0,e.createElementVNode)(`div`,{class:`toolbar`,onMousedown:h},[(0,e.createElementVNode)(`div`,Me,[(0,e.createVNode)(g,{onClick:r[0]||=e=>n.$emit(`back`),size:`small`,circle:``},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.ArrowLeft))]),_:1})]),_:1}),(0,e.createVNode)(_,{ref_key:`titleInputRef`,ref:l,modelValue:o.value,"onUpdate:modelValue":r[1]||=e=>o.value=e,onBlur:r[2]||=e=>n.$emit(`update:title`,o.value),placeholder:`标题 *`,class:`title-input`,size:`small`,disabled:t.readonly},null,8,[`modelValue`,`disabled`]),(0,e.createVNode)(_,{ref_key:`effectInputRef`,ref:u,modelValue:s.value,"onUpdate:modelValue":r[3]||=e=>s.value=e,onBlur:r[4]||=e=>n.$emit(`update:effect`,s.value),placeholder:`问题/结果 *`,class:`effect-input`,size:`small`,disabled:t.readonly},null,8,[`modelValue`,`disabled`]),(0,e.createVNode)(_,{ref_key:`authorInputRef`,ref:d,modelValue:c.value,"onUpdate:modelValue":r[5]||=e=>c.value=e,onBlur:r[6]||=e=>n.$emit(`update:author`,c.value),placeholder:`作者 *`,class:`author-input`,size:`small`,disabled:t.readonly},null,8,[`modelValue`,`disabled`])]),(0,e.createElementVNode)(`div`,Ne,[(0,e.createVNode)(g,{size:`small`,circle:``,onClick:r[7]||=e=>f.value=!0,title:`AI生成`,disabled:t.readonly},{default:(0,e.withCtx)(()=>[...r[25]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[(0,e.createElementVNode)(`path`,{d:`M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5`})],-1)]]),_:1},8,[`disabled`]),(0,e.createVNode)(g,{size:`small`,circle:``,onClick:r[8]||=e=>n.$emit(`addTextBox`),title:`文本框`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Edit))]),_:1})]),_:1}),(0,e.createVNode)(g,{size:`small`,circle:``,onClick:r[9]||=e=>n.$emit(`addArrow`),title:`箭头线`,disabled:!t.canAddArrow},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Right))]),_:1})]),_:1},8,[`disabled`]),(0,e.createVNode)(v,{direction:`vertical`}),(0,e.createVNode)(g,{size:`small`,circle:``,onClick:r[10]||=e=>n.$emit(`undo`),disabled:!t.canUndo},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.RefreshLeft))]),_:1})]),_:1},8,[`disabled`]),(0,e.createVNode)(g,{size:`small`,circle:``,onClick:r[11]||=e=>n.$emit(`redo`),disabled:!t.canRedo},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.RefreshRight))]),_:1})]),_:1},8,[`disabled`]),(0,e.createVNode)(v,{direction:`vertical`}),(0,e.createVNode)(g,{size:`small`,circle:``,onClick:r[12]||=e=>n.$emit(`zoomOut`)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.ZoomOut))]),_:1})]),_:1}),(0,e.createElementVNode)(`span`,Pe,(0,e.toDisplayString)(t.zoom)+`%`,1),(0,e.createVNode)(g,{size:`small`,circle:``,onClick:r[13]||=e=>n.$emit(`zoomIn`)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.ZoomIn))]),_:1})]),_:1}),(0,e.createVNode)(g,{size:`small`,circle:``,onClick:r[14]||=e=>n.$emit(`fitView`),title:`适应画布`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.FullScreen))]),_:1})]),_:1})]),(0,e.createElementVNode)(`div`,Fe,[(0,e.createVNode)(G,{"current-theme":t.currentTheme,onSelectTheme:r[15]||=e=>n.$emit(`selectTheme`,e),disabled:t.readonly},null,8,[`current-theme`,`disabled`]),(0,e.createVNode)(je,{"current-style":t.currentDiagramStyle,onSelectStyle:r[16]||=e=>n.$emit(`selectStyle`,e),disabled:t.readonly},null,8,[`current-style`,`disabled`]),(0,e.createVNode)(v,{direction:`vertical`}),(0,e.createVNode)(g,{size:`small`,type:`primary`,circle:``,onClick:r[17]||=e=>n.$emit(`save`),title:`保存`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Check))]),_:1})]),_:1}),t.showHistory?((0,e.openBlock)(),(0,e.createBlock)(g,{key:0,size:`small`,circle:``,title:`更新履历`,onClick:r[18]||=e=>n.$emit(`history`)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(y)]),_:1})]),_:1})):(0,e.createCommentVNode)(``,!0),(0,e.createVNode)(S,{trigger:`click`,onCommand:r[19]||=e=>n.$emit(`export`,e)},{dropdown:(0,e.withCtx)(()=>[(0,e.createVNode)(x,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(b,{command:`svg`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Picture))]),_:1}),r[26]||=(0,e.createTextVNode)(` SVG 矢量图 `,-1)]),_:1}),(0,e.createVNode)(b,{command:`png`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.PictureFilled))]),_:1}),r[27]||=(0,e.createTextVNode)(` PNG 图片 `,-1)]),_:1}),(0,e.createVNode)(b,{command:`jpg`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.PictureFilled))]),_:1}),r[28]||=(0,e.createTextVNode)(` JPG 图片 `,-1)]),_:1}),(0,e.createVNode)(b,{divided:``,command:`json`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Document))]),_:1}),r[29]||=(0,e.createTextVNode)(` JSON 数据 `,-1)]),_:1}),(0,e.createVNode)(b,{command:`xml`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Document))]),_:1}),r[30]||=(0,e.createTextVNode)(` XML 格式 `,-1)]),_:1})]),_:1})]),default:(0,e.withCtx)(()=>[(0,e.createVNode)(g,{size:`small`,type:`warning`,circle:``,title:`导出`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Download))]),_:1})]),_:1})]),_:1}),(0,e.createVNode)(v,{direction:`vertical`}),t.onlineCount>0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Ie,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.onlineUsers.slice(0,3),(t,n)=>((0,e.openBlock)(),(0,e.createBlock)(C,{key:t.id||n,size:24,style:(0,e.normalizeStyle)({background:t.color,marginLeft:n>0?`-8px`:`0`}),title:t.name},{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(t.name?.charAt(0)||`?`),1)]),_:2},1032,[`style`,`title`]))),128)),t.onlineCount>3?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,Le,`+`+(0,e.toDisplayString)(t.onlineCount-3),1)):(0,e.createCommentVNode)(``,!0)])):(0,e.createCommentVNode)(``,!0),t.readonly?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(g,{key:2,size:`small`,type:t.isConnected?`success`:`default`,onClick:r[20]||=e=>n.$emit(`toggle-collab`),title:`协作`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Share))]),_:1}),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(t.isConnected?`协作中`:`协作`),1)]),_:1},8,[`type`])),t.readonly?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(g,{key:3,size:`small`,circle:``,onClick:r[21]||=e=>n.$emit(`share-collab`),title:`分享链接`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Link))]),_:1})]),_:1})),(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`connection-status`,{connected:t.isConnected}])},[...r[31]||=[(0,e.createElementVNode)(`span`,{class:`status-dot`},null,-1)]],2)])],32),(0,e.createVNode)(w,{modelValue:f.value,"onUpdate:modelValue":r[24]||=e=>f.value=e,title:`AI生成鱼骨图`,width:`70vw`,top:`50px`,center:``,class:`ai-dialog`},{footer:(0,e.withCtx)(()=>[(0,e.createVNode)(g,{onClick:r[23]||=e=>f.value=!1},{default:(0,e.withCtx)(()=>[...r[32]||=[(0,e.createTextVNode)(`取消`,-1)]]),_:1}),(0,e.createVNode)(g,{type:`primary`,onClick:m},{default:(0,e.withCtx)(()=>[...r[33]||=[(0,e.createTextVNode)(`生成`,-1)]]),_:1})]),default:(0,e.withCtx)(()=>[(0,e.createVNode)(_,{modelValue:p.value,"onUpdate:modelValue":r[22]||=e=>p.value=e,type:`textarea`,autosize:{minRows:27,maxRows:27},placeholder:`请输入提示词,描述你想要生成的鱼骨图...`,class:`ai-textarea`},null,8,[`modelValue`])]),_:1},8,[`modelValue`])],64)}}},[[`__scopeId`,`data-v-7f095050`]]),J=(e,t)=>!e||e.length<=t?e||``:e.substring(0,t-1)+`...`,ze=(e,t=14)=>{if(!e)return 0;let n=0;for(let r of e)r.charCodeAt(0)>127?n+=t:n+=t*.6;return n},Be=(e,t=`cause`)=>{let n={category:100,cause:80,child:60},r={category:180,cause:140,child:100},i=ze(e);return Math.max(n[t]||n.cause,Math.min(r[t]||r.cause,i+30))},Ve={class:`fishbone-wrapper`},He=[`viewBox`,`width`,`height`],Y=[`width`,`height`],Ue=[`transform`],We=[`width`,`height`],Ge=[`width`,`height`],Ke={xmlns:`http://www.w3.org/1999/xhtml`,class:`tooltip-content`},qe=[`x2`,`stroke`,`stroke-width`],Je=[`d`,`fill`],Ye=[`cx`,`rx`,`ry`,`fill`],Xe=[`cx`,`cy`],X=[`cx`,`cy`],Ze=[`cx`,`cy`],Qe=[`x`,`y`,`font-family`],$e=[`x1`,`x2`,`y2`,`stroke`,`stroke-width`,`opacity`,`stroke-dasharray`],et=[`cx`,`fill`],tt=[`cx`,`r`,`fill`,`stroke`,`onMousedown`],Z=[`transform`,`onClick`,`onMousedown`,`onMouseenter`],nt=[`x`,`y`,`width`,`height`,`rx`],rt=[`x`,`y`,`width`,`height`,`rx`,`fill`,`opacity`,`stroke`,`stroke-width`],it=[`text-anchor`,`x`,`fill`,`font-size`,`font-family`],at=[`onMouseenter`],ot=[`onClick`],st=[`cx`,`cy`],ct=[`x1`,`y1`,`x2`,`y2`],lt=[`x1`,`y1`,`x2`,`y2`],ut=[`onClick`],dt=[`cx`,`cy`],ft=[`x1`,`y1`,`x2`,`y2`],pt=[`x1`,`y1`,`x2`,`y2`],mt=[`cx`,`cy`,`r`,`fill`,`stroke`,`onMousedown`,`onClick`],ht=[`x1`,`y1`,`x2`,`y2`,`stroke`],gt=[`transform`,`onClick`,`onMousedown`,`onMouseenter`],_t=[`x`,`y`,`width`,`height`,`rx`],vt=[`x`,`y`,`width`,`height`,`rx`,`fill`,`opacity`,`stroke`,`stroke-width`],yt=[`text-anchor`,`x`,`fill`,`font-size`,`font-family`],bt=[`onMouseenter`],xt=[`onClick`],St=[`cx`,`cy`],Ct=[`x1`,`y1`,`x2`,`y2`],wt=[`x1`,`y1`,`x2`,`y2`],Tt=[`onClick`],Et=[`cx`,`cy`],Dt=[`x1`,`y1`,`x2`,`y2`],Ot=[`x1`,`y1`,`x2`,`y2`],kt=[`x1`,`x2`,`y2`,`stroke`,`stroke-width`,`opacity`,`stroke-dasharray`],At=[`transform`,`onClick`,`onMousedown`,`onMouseenter`],jt=[`x`,`y`,`width`,`height`,`rx`],Mt=[`x`,`y`,`width`,`height`,`rx`,`fill`,`opacity`,`stroke`,`stroke-width`],Nt=[`text-anchor`,`x`,`fill`,`font-size`,`font-family`],Pt=[`onMouseenter`],Ft=[`onClick`],It=[`cx`,`cy`],Lt=[`cx`,`cy`],Rt=[`x1`,`y1`,`x2`,`y2`],zt=[`x1`,`y1`,`x2`,`y2`],Bt=[`x1`,`y1`,`x2`,`y2`],Vt=[`x1`,`y1`,`x2`,`y2`],Ht=[`cx`,`cy`],Ut=[`cx`,`cy`],Wt=[`cx`,`cy`],Gt=[`cx`,`cy`],Kt=[`onClick`],qt=[`cx`,`cy`],Jt=[`x1`,`y1`,`x2`,`y2`],Yt=[`x1`,`y1`,`x2`,`y2`],Xt=150,Q=250,Zt=60,Qt=g({__name:`FishboneRenderer`,props:{categories:{type:Array,default:()=>[]},effect:{type:String,default:``},theme:{type:Object,default:()=>({})},selectedNode:{type:Object,default:null},width:{type:[Number,String],default:`100%`},height:{type:[Number,String],default:500},styleTick:{type:Number,default:0},diagramStyle:{type:String,default:`classic`}},emits:[`selectNode`,`clearSelection`,`deleteNode`,`addChild`,`nodeDragged`,`openMindmap`],setup(t,{expose:n,emit:r}){let i=e=>{if(!e||!e.startsWith(`#`))return null;let t=e.replace(`#`,``);return{r:parseInt(t.substring(0,2),16),g:parseInt(t.substring(2,4),16),b:parseInt(t.substring(4,6),16)}},a=(e,t,n)=>`#`+[e,t,n].map(e=>Math.round(Math.max(0,Math.min(255,e))).toString(16).padStart(2,`0`)).join(``),o=(e,t=2)=>{if(!e||!e.startsWith(`#`))return e||`#ffffff`;let n=i(e);if(!n)return e;let r=t*.15;return a(n.r+(255-n.r)*r,n.g+(255-n.g)*r,n.b+(255-n.b)*r)},s=t,c=r,l=(0,e.ref)(null),u=(0,e.ref)(null),d=(e,t,n,r,i)=>c(`selectNode`,{type:e,id:t,catIndex:n,causeIndex:r,measureIndex:i}),f=(e,t,n,r)=>c(`addChild`,{type:e,id:t,catIndex:n,causeIndex:r}),p=(e,t,n)=>c(`deleteNode`,{type:e,id:t,catIndex:n}),m=(e,t,n)=>c(`openMindmap`,{catIndex:e,causeIndex:t,measureIndex:n}),h=()=>c(`clearSelection`),g=(0,e.ref)({show:!1,text:``,x:0,y:0,w:300,h:200}),_=(e,t,n)=>{let r=e.split(`
3
+ `),i=Math.max(...r.map(e=>e.length)),a=Math.max(120,Math.min(300,i*14+24)),o=Math.max(40,Math.min(200,r.length*22+20));g.value={show:!0,text:e,x:Math.max(10,Math.min(t-a/2,me.value-a-10)),y:n-o-20,w:a,h:o}},v=()=>{g.value.show=!1},y=(0,e.computed)(()=>s.theme.primary||`#546E7A`),b=(0,e.computed)(()=>s.theme.primary||`#37474F`),x=(0,e.computed)(()=>ve.find(e=>e.id===s.diagramStyle)||ve[0]),S=e=>e===`left`?`start`:e===`right`?`end`:`middle`,C=(e,t)=>e===`left`?-t/2:e===`right`?t/2:0,w=(0,e.computed)(()=>Math.max(s.categories.length,1)),ee=(0,e.computed)(()=>Math.max(600,w.value*130)),te=(0,e.computed)(()=>ee.value/(w.value+1)),T=(0,e.computed)(()=>150+ee.value),ne=(0,e.computed)(()=>J(s.effect||`问题`,8)),re=(0,e.computed)(()=>{let e=Q;return`M 70 ${e} Q 20 ${e-30} 35 ${e-65} Q 55 ${e} 35 315 Q 20 280 70 ${e} Z`}),E=e=>150+te.value*(e+1),ie=e=>e%2==0?Q-Xt:400,D=e=>e%2==0?Q-Xt-(x.value.nodeHeight/2+8):400+(x.value.nodeHeight/2+8),O=e=>E(e)+q(`anchor`,e).dx,k=e=>Q,ae=e=>E(e)+30+q(`cat`,e).dx,oe=e=>ie(e)+q(`cat`,e).dy,A=e=>({dx:(e.direction||`left`)===`left`?-35:35,dy:0}),se=(e,t,n)=>{e.preventDefault(),e.stopPropagation(),v(),u.value=null;let r=be(e),i=O(t),a=k(t),o=ae(t),c=oe(t),l=s.categories?.[t]?.causes||[],d=l.length===1?.5:(n+1)/(l.length+1),f=l[n]?.style?.anchorT??d;j.value={i:t,ci:n,sx:i,sy:a,ex:o,ey:c,smx:r.x,smy:r.y,startT:f},setTimeout(()=>{document.addEventListener(`mouseup`,ce,{once:!0})},0)},j=(0,e.ref)(null),ce=()=>{if(j.value){let e=j.value;c(`nodeDragged`,{type:`causeAnchor`,catIndex:e.i,causeIndex:e.ci,dx:0,dy:0})}j.value=null},le=(e,t)=>{let n=s.categories?.[e]?.causes||[],r=n[t];if(!r)return{x:0,y:Q};let i=n.length===1?.5:(t+1)/(n.length+1),a=r?.style?.anchorT??i,o=O(e),c=k(e),l=ae(e),u=oe(e);return{x:o+(l-o)*a,y:c+(u-c)*a}},M=(e,t)=>le(e,t).x,N=(e,t)=>le(e,t).y,ue=(e,t,n)=>{let r=n.direction||`left`,i=B(n.text)/2;return M(e,t)+A(n).dx+(r===`left`?-i:i)},de=(e,t)=>N(e,t),P=(e,t,n)=>{let r=s.categories?.[e]?.causes?.[t];if(!r)return 0;let i=r.direction||`left`,a=ue(e,t,r);return i===`left`?a-(25+n*45):a+(25+n*45)},F=(e,t,n)=>de(e,t)+n*25,I=(e,t)=>{let n=s.categories?.[e],r=n?.causes?.[t];return!n||!r?`#ffffff`:r.style?.color?r.style.color:o(n.color,2)},L=(e,t)=>{let n=s.categories?.[e],r=n?.causes?.[t];return n?r?.style?.fontSize?r.style.fontSize:(n.style?.fontSize??12)-2:11},R=(e,t,n)=>{let r=I(e,t),i=s.categories?.[e]?.causes?.[t]?.children?.[n];return i?.style?.color?i.style.color:o(r,2)},fe=(e,t,n)=>{let r=L(e,t),i=s.categories?.[e]?.causes?.[t]?.children?.[n];return i?.style?.fontSize?i.style.fontSize:Math.max(8,r-2)},z=e=>Be(e,`category`),B=e=>Be(e,`cause`),pe=(e,t)=>J(e,t),V=e=>(e?.style?.fontSize??12)*2+8,H=e=>(e?.style?.fontSize??11)*2+6,U=(e,t=0)=>isNaN(e)||!isFinite(e)?t:e,W=(0,e.computed)(()=>{let e=30,t=100,n=Q,r=Q;n=Math.min(n,Q-70),r=Math.max(r,320),t=Math.max(t,T.value+120);for(let i=0;i<w.value;i++){let a=E(i),o=ie(i),c=D(i),l=(z(s.categories?.[i]?.name||`test`)||80)/2+20;e=Math.min(e,a-l),t=Math.max(t,a+l+40),n=Math.min(n,o,c-(x.value?.nodeHeight||36)/2),r=Math.max(r,o,c+(x.value?.nodeHeight||36)/2)}for(let i=0;i<w.value;i++){let a=s.categories?.[i]?.causes||[];for(let o=0;o<a.length;o++){let s=U(M(i,o)),c=U(N(i,o),Q),l=U(B(a[o]?.text||`test`),80)/2+20;e=Math.min(e,s-l),t=Math.max(t,s+l+30),n=Math.min(n,c-(x.value?.causeHeight||26)/2-10),r=Math.max(r,c+(x.value?.causeHeight||26)/2+10);let u=a[o]?.children||[];for(let a=0;a<u.length;a++){let s=U(P(i,o,a)),l=U(F(i,o,a),c),d=U(B(u[a]?.text||`test`),60)/2+15;e=Math.min(e,s-d),t=Math.max(t,s+d+25),n=Math.min(n,l-(x.value?.causeHeight||26)/2-8),r=Math.max(r,l+(x.value?.causeHeight||26)/2+8)}}}return{minX:U(e,0),maxX:U(t,800),minY:U(n,0),maxY:U(r,500)}}),me=(0,e.computed)(()=>U(W.value.maxX-W.value.minX+Zt*2,800)),he=(0,e.computed)(()=>U(W.value.maxY-W.value.minY+Zt*2,500)),ge=(0,e.computed)(()=>U(W.value.minX-Zt,0)),_e=(0,e.computed)(()=>U(W.value.minY-Zt,0)),G=(0,e.ref)(null),ye=(0,e.ref)({}),be=e=>{if(!l.value)return{x:0,y:0};let t=l.value,n=t.createSVGPoint();n.x=e.clientX,n.y=e.clientY;let r=t.getScreenCTM();if(!r)return{x:0,y:0};let i=n.matrixTransform(r.inverse());return{x:i.x,y:i.y}},xe=(e,t,n,r,i)=>{e.preventDefault(),e.stopPropagation(),v(),u.value=null;let a=be(e),o=q(t,n,r,i);G.value={type:t,ci:n,cii:r,mii:i,smx:a.x,smy:a.y,baseDx:o.dx,baseDy:o.dy},setTimeout(()=>{document.addEventListener(`mouseup`,K,{once:!0})},0)},Se=e=>{if(!e.buttons){G.value&&K(),j.value&&ce();return}if(j.value){let t=j.value,n=be(e),r=n.x-t.smx,i=n.y-t.smy,a=Math.sqrt((t.ex-t.sx)**2+(t.ey-t.sy)**2);if(a>0){let e=(r*(t.ex-t.sx)+i*(t.ey-t.sy))/(a*a),n=Math.max(.05,Math.min(.95,t.startT+e)),o=(s.categories?.[t.i]?.causes||[])[t.ci];o&&(o.style||={},o.style.anchorT=n)}return}if(!G.value)return;let t=be(e),n=G.value.baseDx+(t.x-G.value.smx),r=G.value.baseDy+(t.y-G.value.smy);G.value.type===`anchor`&&(r=0);let i=`${G.value.type}-${G.value.ci}-${G.value.cii??``}-${G.value.mii??``}`;ye.value[i]={dx:n,dy:r}},K=()=>{if(G.value){let e=`${G.value.type}-${G.value.ci}-${G.value.cii??``}-${G.value.mii??``}`,t=ye.value[e];t&&c(`nodeDragged`,{type:G.value.type,catIndex:G.value.ci,causeIndex:G.value.cii,measureIndex:G.value.mii,dx:t.dx,dy:t.dy})}G.value=null,ye.value={}},q=(e,t,n,r)=>{let i=`${e}-${t}-${n??``}-${r??``}`;if(ye.value[i])return ye.value[i];if(e===`cat`){let e=s.categories?.[t];return{dx:e?.style?.dragDx||0,dy:e?.style?.dragDy||0}}else if(e===`cause`){let e=s.categories?.[t]?.causes?.[n];return{dx:e?.style?.dragDx||0,dy:e?.style?.dragDy||0}}else if(e===`measure`){let e=s.categories?.[t]?.causes?.[n]?.children?.[r];return{dx:e?.style?.dragDx||0,dy:e?.style?.dragDy||0}}else if(e===`anchor`)return{dx:(s.categories?.[t])?.style?.anchorDx||0,dy:0};return{dx:0,dy:0}},Ce=()=>{u.value=null,v()},we=()=>{K(),ce()},Te=()=>{G.value&&K(),document.activeElement?.blur(),c(`clearSelection`)},Ee=e=>{!e.target.closest(`[style*="cursor: grab"]`)&&G.value&&K(),e.target.closest(`[style*="cursor: grab"]`)||c(`clearSelection`)},De=(e,t)=>{u.value={type:`category`,id:t.id,catIndex:e};let n=q(`anchor`,e),r=q(`cat`,e);_(t.name,E(e)+30+n.dx+r.dx,D(e)+r.dy)},Oe=(e,t,n)=>{u.value={type:`cause`,id:n.id,catIndex:e,causeIndex:t};let r=q(`cause`,e,t),i=M(e,t)+A(n).dx+r.dx,a=N(e,t)+A(n).dy+r.dy;_(n.text,i,a)},ke=(e,t,n,r)=>{u.value={type:`measure`,id:r.id,catIndex:e,causeIndex:t,measureIndex:n};let i=q(`cause`,e,t),a=q(`measure`,e,t,n);_(r.text,P(e,t,n)+i.dx+a.dx,F(e,t,n)+i.dy+a.dy)};return n({getSvgElement:()=>l.value,getViewBox:()=>({x:ge.value,y:_e.value,w:me.value,h:he.value})}),(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Ve,[((0,e.openBlock)(),(0,e.createElementBlock)(`svg`,{ref_key:`svgRef`,ref:l,xmlns:`http://www.w3.org/2000/svg`,viewBox:`${ge.value} ${_e.value} ${me.value} ${he.value}`,width:me.value,height:he.value,preserveAspectRatio:`xMidYMid meet`,class:`fishbone-svg`,style:(0,e.normalizeStyle)({background:t.theme.bg||`#fafbfc`,cursor:G.value?`grabbing`:`default`}),onClick:(0,e.withModifiers)(h,[`self`]),onMousedown:Ee,onMousemove:Se,onMouseup:K,onMouseleave:we},[(0,e.createElementVNode)(`rect`,{x:`0`,y:`0`,width:me.value,height:he.value,fill:`transparent`,onClick:Te},null,8,Y),g.value.show?((0,e.openBlock)(),(0,e.createElementBlock)(`g`,{key:0,transform:`translate(${g.value.x}, ${g.value.y})`},[(0,e.createElementVNode)(`rect`,{x:`0`,y:`0`,width:g.value.w,height:g.value.h,rx:`6`,fill:`#303236`,opacity:`0.4`},null,8,We),((0,e.openBlock)(),(0,e.createElementBlock)(`foreignObject`,{x:`8`,y:`6`,width:g.value.w-16,height:g.value.h-12},[(0,e.createElementVNode)(`div`,Ke,(0,e.toDisplayString)(g.value.text),1)],8,Ge))],8,Ue)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(),(0,e.createElementBlock)(`g`,{key:t.styleTick},[(0,e.createElementVNode)(`line`,{x1:100,y1:Q,x2:T.value,y2:Q,stroke:x.value.spineColor||y.value,"stroke-width":x.value.spineWidth,"stroke-linecap":`round`},null,8,qe),(0,e.createElementVNode)(`path`,{d:re.value,fill:x.value.spineColor||y.value,opacity:`0.5`},null,8,Je),(0,e.createElementVNode)(`g`,null,[(0,e.createElementVNode)(`ellipse`,{cx:T.value+55,cy:Q,rx:x.value.headRx,ry:x.value.headRy,fill:x.value.spineColor||b.value,style:{"pointer-events":`none`}},null,8,Ye),(0,e.createElementVNode)(`circle`,{cx:T.value+45,cy:Q-7,r:`6`,fill:`white`,style:{"pointer-events":`none`}},null,8,Xe),(0,e.createElementVNode)(`circle`,{cx:T.value+47,cy:Q-7,r:`3.5`,fill:`#263238`,style:{"pointer-events":`none`}},null,8,X),(0,e.createElementVNode)(`circle`,{cx:T.value+49,cy:Q-9,r:`1.2`,fill:`white`,style:{"pointer-events":`none`}},null,8,Ze),(0,e.createElementVNode)(`text`,{x:T.value+55,y:268,"text-anchor":`middle`,"dominant-baseline":`middle`,fill:`white`,"font-size":`12`,"font-family":x.value.fontFamily+`, sans-serif`,style:{"pointer-events":`none`}},(0,e.toDisplayString)(ne.value),9,Qe)]),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.categories,(n,i)=>((0,e.openBlock)(),(0,e.createElementBlock)(`g`,{key:n.id},[(0,e.createElementVNode)(`line`,{x1:E(i)+q(`anchor`,i).dx,y1:Q,x2:E(i)+30+q(`cat`,i).dx,y2:ie(i)+q(`cat`,i).dy,stroke:n.style?.lineColor||x.value.spineColor||n.color,"stroke-width":x.value.branchWidth,"stroke-linecap":`round`,opacity:(n.style?.lineOpacity??x.value.branchOpacity*100)/100,"stroke-dasharray":n.style?.lineStyle===`dashed`?`6,3`:`none`},null,8,$e),x.value.showDots?((0,e.openBlock)(),(0,e.createElementBlock)(`circle`,{key:0,cx:E(i)+q(`anchor`,i).dx,cy:Q,r:`4`,fill:x.value.spineColor||n.color},null,8,et)):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`circle`,{cx:E(i)+q(`anchor`,i).dx,cy:Q,r:t.selectedNode?.id===n.id?6:4,fill:t.selectedNode?.id===n.id?`#409EFF`:`transparent`,stroke:t.selectedNode?.id===n.id?`#409EFF`:`#909399`,"stroke-width":1.5,style:{cursor:`ew-resize`},onMousedown:(0,e.withModifiers)(e=>xe(e,`anchor`,i),[`stop`]),onMouseup:K},null,40,tt),(0,e.createElementVNode)(`g`,{transform:`translate(${E(i)+30+q(`cat`,i).dx}, ${D(i)+q(`cat`,i).dy})`,onClick:(0,e.withModifiers)(e=>d(`category`,n.id,i),[`stop`]),onMousedown:e=>xe(e,`cat`,i),onMouseup:K,onMouseleave:Ce,onMouseenter:e=>De(i,n),style:{cursor:`grab`}},[t.selectedNode?.id===n.id?((0,e.openBlock)(),(0,e.createElementBlock)(`rect`,{key:0,x:-z(n.name)/2-4,y:-(V(n)/2+4),width:z(n.name)+8,height:V(n)+8,rx:x.value.nodeRadius+4,fill:`none`,stroke:`#409EFF`,"stroke-width":`3`},null,8,nt)):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`rect`,{x:-z(n.name)/2,y:-V(n)/2,width:z(n.name),height:V(n),rx:x.value.nodeRadius,fill:n.color,opacity:(n.style?.opacity??100)/100,stroke:t.selectedNode?.id===n.id?`#409EFF`:n.style?.borderStyle===`none`?`none`:n.style?.borderColor||n.color,"stroke-width":t.selectedNode?.id===n.id?3:n.style?.borderStyle===`none`?0:n.style?.borderWidth??1.5},null,8,rt),(0,e.createElementVNode)(`text`,{"text-anchor":S(n.style?.textAlign),"dominant-baseline":`middle`,x:C(n.style?.textAlign,z(n.name)),fill:n.style?.textColor||`white`,"font-size":n.style?.fontSize??12,"font-family":(n.style?.fontFamily||x.value.fontFamily)+`, sans-serif`,style:{"pointer-events":`none`}},(0,e.toDisplayString)(pe(n.name,n.style?.maxChars??15)),9,it),u.value?.id===n.id?((0,e.openBlock)(),(0,e.createElementBlock)(`g`,{key:1,style:{"pointer-events":`auto`},onMouseenter:e=>u.value={type:`category`,id:n.id,catIndex:i},onMouseleave:r[2]||=e=>u.value=null},[(0,e.createElementVNode)(`g`,{onClick:(0,e.withModifiers)(e=>f(`category`,n.id,i),[`stop`]),onMousedown:r[0]||=(0,e.withModifiers)(()=>{},[`stop`]),style:{cursor:`pointer`}},[(0,e.createElementVNode)(`circle`,{cx:z(n.name)/2-24,cy:-V(n)/2-6,r:`7`,fill:`#409EFF`,opacity:`0.9`},null,8,st),(0,e.createElementVNode)(`line`,{x1:z(n.name)/2-27,y1:-V(n)/2-6,x2:z(n.name)/2-21,y2:-V(n)/2-6,stroke:`white`,"stroke-width":`1.5`,"stroke-linecap":`round`},null,8,ct),(0,e.createElementVNode)(`line`,{x1:z(n.name)/2-24,y1:-V(n)/2-9,x2:z(n.name)/2-24,y2:-V(n)/2-3,stroke:`white`,"stroke-width":`1.5`,"stroke-linecap":`round`},null,8,lt)],40,ot),(0,e.createElementVNode)(`g`,{onClick:(0,e.withModifiers)(e=>p(`category`,n.id,i),[`stop`]),onMousedown:r[1]||=(0,e.withModifiers)(()=>{},[`stop`]),style:{cursor:`pointer`}},[(0,e.createElementVNode)(`circle`,{cx:z(n.name)/2-8,cy:-V(n)/2-6,r:`7`,fill:`#F56C6C`,opacity:`0.9`},null,8,dt),(0,e.createElementVNode)(`line`,{x1:z(n.name)/2-11,y1:-V(n)/2-9,x2:z(n.name)/2-5,y2:-V(n)/2-3,stroke:`white`,"stroke-width":`1.5`,"stroke-linecap":`round`},null,8,ft),(0,e.createElementVNode)(`line`,{x1:z(n.name)/2-5,y1:-V(n)/2-9,x2:z(n.name)/2-11,y2:-V(n)/2-3,stroke:`white`,"stroke-width":`1.5`,"stroke-linecap":`round`},null,8,pt)],40,ut)],40,at)):(0,e.createCommentVNode)(``,!0)],40,Z),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(n.causes||[],(a,o)=>((0,e.openBlock)(),(0,e.createElementBlock)(`g`,{key:a.id},[(0,e.createElementVNode)(`circle`,{cx:M(i,o),cy:N(i,o),r:t.selectedNode?.id===a.id?5:3.5,fill:t.selectedNode?.id===a.id?`#409EFF`:n.color,stroke:t.selectedNode?.id===a.id?`#409EFF`:`#fff`,"stroke-width":1.5,style:{cursor:`ew-resize`},onMousedown:(0,e.withModifiers)(e=>se(e,i,o),[`stop`]),onMouseup:K,onClick:(0,e.withModifiers)(e=>d(`cause`,a.id,i,o),[`stop`])},null,40,mt),(0,e.createElementVNode)(`line`,{x1:M(i,o),y1:N(i,o),x2:M(i,o)+A(a).dx+q(`cause`,i,o).dx,y2:N(i,o)+A(a).dy+q(`cause`,i,o).dy,stroke:n.color,"stroke-width":1,opacity:.4},null,8,ht),(0,e.createElementVNode)(`g`,{transform:`translate(${M(i,o)+A(a).dx+q(`cause`,i,o).dx}, ${N(i,o)+A(a).dy+q(`cause`,i,o).dy})`,onClick:(0,e.withModifiers)(e=>d(`cause`,a.id,i,o),[`stop`]),onMousedown:e=>xe(e,`cause`,i,o),onMouseup:K,onMouseleave:Ce,onMouseenter:e=>Oe(i,o,a),style:{cursor:`grab`}},[t.selectedNode?.id===a.id?((0,e.openBlock)(),(0,e.createElementBlock)(`rect`,{key:0,x:-B(a.text)/2-4,y:-(H(a)/2+4),width:B(a.text)+8,height:H(a)+8,rx:x.value.causeRadius+4,fill:`none`,stroke:`#409EFF`,"stroke-width":`3`},null,8,_t)):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`rect`,{x:-B(a.text)/2,y:-H(a)/2,width:B(a.text),height:H(a),rx:x.value.causeRadius,fill:I(i,o),opacity:(a.style?.opacity??100)/100,stroke:t.selectedNode?.id===a.id?`#409EFF`:a.style?.borderStyle===`none`?`none`:a.style?.borderColor||n.color,"stroke-width":t.selectedNode?.id===a.id?3:a.style?.borderStyle===`none`?0:a.style?.borderWidth??1.5},null,8,vt),(0,e.createElementVNode)(`text`,{"text-anchor":S(a.style?.textAlign),"dominant-baseline":`middle`,x:C(a.style?.textAlign,B(a.text)),fill:a.style?.textColor||`#263238`,"font-size":L(i,o),"font-family":(a.style?.fontFamily||x.value.fontFamily)+`, sans-serif`,style:{"pointer-events":`none`}},(0,e.toDisplayString)(pe(a.text,a.style?.maxChars??20)),9,yt),u.value?.id===a.id?((0,e.openBlock)(),(0,e.createElementBlock)(`g`,{key:1,style:{"pointer-events":`auto`},onMouseenter:e=>u.value={type:`cause`,id:a.id,catIndex:i,causeIndex:o},onMouseleave:r[5]||=e=>u.value=null},[(0,e.createElementVNode)(`g`,{onClick:(0,e.withModifiers)(e=>f(`cause`,a.id,i,o),[`stop`]),onMousedown:r[3]||=(0,e.withModifiers)(()=>{},[`stop`]),style:{cursor:`pointer`}},[(0,e.createElementVNode)(`circle`,{cx:B(a.text)/2-30,cy:-H(a)/2-6,r:`6`,fill:`#409EFF`,opacity:`0.9`},null,8,St),(0,e.createElementVNode)(`line`,{x1:B(a.text)/2-33,y1:-H(a)/2-6,x2:B(a.text)/2-27,y2:-H(a)/2-6,stroke:`white`,"stroke-width":`1.5`,"stroke-linecap":`round`},null,8,Ct),(0,e.createElementVNode)(`line`,{x1:B(a.text)/2-30,y1:-H(a)/2-9,x2:B(a.text)/2-30,y2:-H(a)/2-3,stroke:`white`,"stroke-width":`1.5`,"stroke-linecap":`round`},null,8,wt)],40,xt),(0,e.createElementVNode)(`g`,{onClick:(0,e.withModifiers)(e=>p(`cause`,a.id,i),[`stop`]),onMousedown:r[4]||=(0,e.withModifiers)(()=>{},[`stop`]),style:{cursor:`pointer`}},[(0,e.createElementVNode)(`circle`,{cx:B(a.text)/2-14,cy:-H(a)/2-6,r:`6`,fill:`#F56C6C`,opacity:`0.9`},null,8,Et),(0,e.createElementVNode)(`line`,{x1:B(a.text)/2-17,y1:-H(a)/2-9,x2:B(a.text)/2-11,y2:-H(a)/2-3,stroke:`white`,"stroke-width":`1.5`,"stroke-linecap":`round`},null,8,Dt),(0,e.createElementVNode)(`line`,{x1:B(a.text)/2-11,y1:-H(a)/2-9,x2:B(a.text)/2-17,y2:-H(a)/2-3,stroke:`white`,"stroke-width":`1.5`,"stroke-linecap":`round`},null,8,Ot)],40,Tt)],40,bt)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(a.children||[],(s,c)=>((0,e.openBlock)(),(0,e.createElementBlock)(`g`,{key:s.id},[(0,e.createElementVNode)(`line`,{x1:ue(i,o,a)-(M(i,o)+A(a).dx),y1:0,x2:P(i,o,c)-(M(i,o)+A(a).dx)+q(`measure`,i,o,c).dx,y2:F(i,o,c)-N(i,o)+q(`measure`,i,o,c).dy,stroke:s.style?.lineColor||x.value.spineColor||n.color,"stroke-width":x.value.branchWidth*.4,opacity:(s.style?.lineOpacity??x.value.branchOpacity*40)/100,"stroke-dasharray":s.style?.lineStyle===`dashed`?`3,2`:`none`},null,8,kt),(0,e.createElementVNode)(`g`,{transform:`translate(${P(i,o,c)-(M(i,o)+A(a).dx)+q(`measure`,i,o,c).dx}, ${F(i,o,c)-N(i,o)+q(`measure`,i,o,c).dy})`,onClick:(0,e.withModifiers)(e=>d(`measure`,s.id,i,o,c),[`stop`]),onMousedown:e=>xe(e,`measure`,i,o,c),onMouseup:K,onMouseenter:e=>ke(i,o,c,s),onMouseleave:Ce,style:{cursor:`grab`}},[t.selectedNode?.id===s.id?((0,e.openBlock)(),(0,e.createElementBlock)(`rect`,{key:0,x:-B(s.text)/2-3,y:-(H(s)/2+3),width:B(s.text)+6,height:H(s)+6,rx:x.value.causeRadius+3,fill:`none`,stroke:`#409EFF`,"stroke-width":`2.5`},null,8,jt)):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`rect`,{x:-B(s.text)/2,y:-H(s)/2,width:B(s.text),height:H(s),rx:x.value.causeRadius,fill:R(i,o,c),opacity:(s.style?.opacity??100)/100,stroke:t.selectedNode?.id===s.id?`#409EFF`:s.style?.borderStyle===`none`?`none`:s.style?.borderColor||n.color,"stroke-width":t.selectedNode?.id===s.id?2.5:s.style?.borderStyle===`none`?0:s.style?.borderWidth??1},null,8,Mt),(0,e.createElementVNode)(`text`,{"text-anchor":S(s.style?.textAlign),"dominant-baseline":`middle`,x:C(s.style?.textAlign,B(s.text)),fill:s.style?.textColor||`#263238`,"font-size":fe(i,o,c),"font-family":(s.style?.fontFamily||x.value.fontFamily)+`, sans-serif`,style:{"pointer-events":`none`}},(0,e.toDisplayString)(pe(s.text,s.style?.maxChars??15)),9,Nt),u.value?.id===s.id?((0,e.openBlock)(),(0,e.createElementBlock)(`g`,{key:1,style:{"pointer-events":`auto`},onMouseenter:e=>u.value={type:`measure`,id:s.id,catIndex:i,causeIndex:o,measureIndex:c},onMouseleave:r[8]||=e=>u.value=null},[(0,e.createElementVNode)(`g`,{onClick:(0,e.withModifiers)(e=>m(i,o,c),[`stop`]),onMousedown:r[6]||=(0,e.withModifiers)(()=>{},[`stop`]),style:{cursor:`pointer`}},[(0,e.createElementVNode)(`circle`,{cx:B(s.text)/2-28,cy:-H(s)/2-6,r:`6`,fill:`#67C23A`,opacity:`0.9`},null,8,It),(0,e.createElementVNode)(`circle`,{cx:B(s.text)/2-28,cy:-H(s)/2-6,r:`2`,fill:`white`},null,8,Lt),(0,e.createElementVNode)(`line`,{x1:B(s.text)/2-28,y1:-H(s)/2-6,x2:B(s.text)/2-32,y2:-H(s)/2-9,stroke:`white`,"stroke-width":`1`,"stroke-linecap":`round`},null,8,Rt),(0,e.createElementVNode)(`line`,{x1:B(s.text)/2-28,y1:-H(s)/2-6,x2:B(s.text)/2-32,y2:-H(s)/2-3,stroke:`white`,"stroke-width":`1`,"stroke-linecap":`round`},null,8,zt),(0,e.createElementVNode)(`line`,{x1:B(s.text)/2-28,y1:-H(s)/2-6,x2:B(s.text)/2-24,y2:-H(s)/2-9,stroke:`white`,"stroke-width":`1`,"stroke-linecap":`round`},null,8,Bt),(0,e.createElementVNode)(`line`,{x1:B(s.text)/2-28,y1:-H(s)/2-6,x2:B(s.text)/2-24,y2:-H(s)/2-3,stroke:`white`,"stroke-width":`1`,"stroke-linecap":`round`},null,8,Vt),(0,e.createElementVNode)(`circle`,{cx:B(s.text)/2-32,cy:-H(s)/2-9,r:`1`,fill:`white`},null,8,Ht),(0,e.createElementVNode)(`circle`,{cx:B(s.text)/2-32,cy:-H(s)/2-3,r:`1`,fill:`white`},null,8,Ut),(0,e.createElementVNode)(`circle`,{cx:B(s.text)/2-24,cy:-H(s)/2-9,r:`1`,fill:`white`},null,8,Wt),(0,e.createElementVNode)(`circle`,{cx:B(s.text)/2-24,cy:-H(s)/2-3,r:`1`,fill:`white`},null,8,Gt)],40,Ft),(0,e.createElementVNode)(`g`,{onClick:(0,e.withModifiers)(e=>p(`measure`,s.id,i),[`stop`]),onMousedown:r[7]||=(0,e.withModifiers)(()=>{},[`stop`]),style:{cursor:`pointer`}},[(0,e.createElementVNode)(`circle`,{cx:B(s.text)/2-12,cy:-H(s)/2-6,r:`6`,fill:`#F56C6C`,opacity:`0.9`},null,8,qt),(0,e.createElementVNode)(`line`,{x1:B(s.text)/2-15,y1:-H(s)/2-9,x2:B(s.text)/2-9,y2:-H(s)/2-3,stroke:`white`,"stroke-width":`1.5`,"stroke-linecap":`round`},null,8,Jt),(0,e.createElementVNode)(`line`,{x1:B(s.text)/2-9,y1:-H(s)/2-9,x2:B(s.text)/2-15,y2:-H(s)/2-3,stroke:`white`,"stroke-width":`1.5`,"stroke-linecap":`round`},null,8,Yt)],40,Kt)],40,Pt)):(0,e.createCommentVNode)(``,!0)],40,At)]))),128))],40,gt)]))),128))]))),128))]))],44,He))]))}},[[`__scopeId`,`data-v-52439ed0`]]),$t=[{label:`1x (标准)`,value:1},{label:`2x (高清)`,value:2},{label:`3x (超清)`,value:3},{label:`4x (极清)`,value:4}],$=e=>{let t=new XMLSerializer().serializeToString(e);return new Blob([t],{type:`image/svg+xml`})},en=async(e,t=2)=>{let n=document.createElement(`canvas`),r=n.getContext(`2d`),i=$(e),a=URL.createObjectURL(i);return new Promise((e,i)=>{let o=new Image;o.onload=()=>{n.width=o.width*t,n.height=o.height*t,r.scale(t,t),r.fillStyle=`white`,r.fillRect(0,0,n.width,n.height),r.drawImage(o,0,0),n.toBlob(t=>{URL.revokeObjectURL(a),e(t)},`image/png`)},o.onerror=i,o.src=a})},tn=async(e,t=2,n=.92)=>{let r=document.createElement(`canvas`),i=r.getContext(`2d`),a=$(e),o=URL.createObjectURL(a);return new Promise((e,a)=>{let s=new Image;s.onload=()=>{r.width=s.width*t,r.height=s.height*t,i.scale(t,t),i.fillStyle=`white`,i.fillRect(0,0,r.width,r.height),i.drawImage(s,0,0),r.toBlob(t=>{URL.revokeObjectURL(o),e(t)},`image/jpeg`,n)},s.onerror=a,s.src=o})},nn=e=>{let t={...e,exportedAt:new Date().toISOString(),version:`1.0`};return new Blob([JSON.stringify(t,null,2)],{type:`application/json`})},rn=e=>{let t=`<?xml version="1.0" encoding="UTF-8"?>
4
+ <fishbone-diagram>
5
+ <title>${an(e.title||``)}</title>
6
+ <effect>${an(e.effect||``)}</effect>
7
+ <theme>${an(e.theme||`ocean`)}</theme>
8
+ <categories>
9
+ ${(e.categories||[]).map(e=>`
10
+ <category id="${e.id}" name="${an(e.name)}" color="${e.color}">
11
+ <causes>
12
+ ${(e.causes||[]).map(e=>`
13
+ <cause id="${e.id}" text="${an(e.text)}">
14
+ ${(e.children||[]).map(e=>`<child id="${e.id}" text="${an(e.text)}"/>`).join(``)}
15
+ </cause>
16
+ `).join(``)}
17
+ </causes>
18
+ </category>
19
+ `).join(``)}
20
+ </categories>
21
+ <meta>
22
+ <version>${e.meta?.version||1}</version>
23
+ <createdAt>${e.meta?.createdAt||``}</createdAt>
24
+ <updatedAt>${e.meta?.updatedAt||``}</updatedAt>
25
+ </meta>
26
+ <exportedAt>${new Date().toISOString()}</exportedAt>
27
+ </fishbone-diagram>`;return new Blob([t],{type:`application/xml`})},an=e=>e?e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&apos;`):``,on=(e,t)=>{let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)},sn=async(e,t,n,r={})=>{let{scale:i=2,quality:a=.92}=r,o,s=`fishbone-${n.title||`diagram`}-${Date.now()}`;switch(e){case`svg`:o=$(t),s+=`.svg`;break;case`png`:o=await en(t,i),s+=`.png`;break;case`jpg`:o=await tn(t,i,a),s+=`.jpg`;break;case`json`:o=nn(n),s+=`.json`;break;case`xml`:o=rn(n),s+=`.xml`;break;default:throw Error(`不支持的导出格式: ${e}`)}return on(o,s),s},cn={style:{"font-size":`12px`,color:`#909399`}},ln={class:`size-preview`},un=g({__name:`ExportDialog`,props:{modelValue:Boolean,svgElement:SVGElement,fishboneData:Object,initialFormat:{type:String,default:`png`}},emits:[`update:modelValue`,`exported`],setup(t,{emit:n}){let r=t,a=n,o=(0,e.computed)({get:()=>r.modelValue,set:e=>a(`update:modelValue`,e)}),s=(0,e.ref)(r.initialFormat);(0,e.watch)(()=>r.initialFormat,e=>{s.value=e});let c=(0,e.ref)(2),l=(0,e.ref)(1),u=(0,e.ref)(!1),d=(0,e.computed)(()=>[`svg`,`png`,`jpg`].includes(s.value)),f=(0,e.computed)(()=>{if(!r.svgElement)return 0;let e=r.svgElement.viewBox?.baseVal?.width||800;return Math.round(e*c.value)}),p=(0,e.computed)(()=>{if(!r.svgElement)return 0;let e=r.svgElement.viewBox?.baseVal?.height||500;return Math.round(e*c.value)}),m=async()=>{if(!(!r.svgElement||!r.fishboneData)){u.value=!0;try{let e=await sn(s.value,r.svgElement,r.fishboneData,{scale:c.value,quality:l.value});a(`exported`,{format:s.value,filename:e}),o.value=!1}catch(e){console.error(`导出失败:`,e)}finally{u.value=!1}}};return(0,e.watch)(()=>r.modelValue,e=>{e&&(s.value=r.initialFormat,c.value=2,l.value=1)}),(t,n)=>{let r=(0,e.resolveComponent)(`el-icon`),a=(0,e.resolveComponent)(`el-radio-button`),h=(0,e.resolveComponent)(`el-radio-group`),g=(0,e.resolveComponent)(`el-form-item`),_=(0,e.resolveComponent)(`el-option`),v=(0,e.resolveComponent)(`el-select`),y=(0,e.resolveComponent)(`el-slider`),b=(0,e.resolveComponent)(`el-form`),x=(0,e.resolveComponent)(`el-button`),S=(0,e.resolveComponent)(`el-dialog`);return(0,e.openBlock)(),(0,e.createBlock)(S,{title:`导出鱼骨图`,modelValue:o.value,"onUpdate:modelValue":n[4]||=e=>o.value=e,width:`480px`,"close-on-click-modal":!1},{footer:(0,e.withCtx)(()=>[(0,e.createVNode)(x,{onClick:n[3]||=e=>o.value=!1},{default:(0,e.withCtx)(()=>[...n[10]||=[(0,e.createTextVNode)(`取消`,-1)]]),_:1}),(0,e.createVNode)(x,{type:`primary`,onClick:m,loading:u.value},{default:(0,e.withCtx)(()=>[u.value?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(r,{key:0},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Download))]),_:1})),(0,e.createTextVNode)(` `+(0,e.toDisplayString)(u.value?`导出中...`:`导出`),1)]),_:1},8,[`loading`])]),default:(0,e.withCtx)(()=>[(0,e.createVNode)(b,{"label-width":`100px`,"label-position":`left`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(g,{label:`导出格式`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(h,{modelValue:s.value,"onUpdate:modelValue":n[0]||=e=>s.value=e,class:`format-group`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,{value:`svg`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(r,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Picture))]),_:1}),n[5]||=(0,e.createTextVNode)(` SVG `,-1)]),_:1}),(0,e.createVNode)(a,{value:`png`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(r,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.PictureFilled))]),_:1}),n[6]||=(0,e.createTextVNode)(` PNG `,-1)]),_:1}),(0,e.createVNode)(a,{value:`jpg`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(r,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.PictureFilled))]),_:1}),n[7]||=(0,e.createTextVNode)(` JPG `,-1)]),_:1}),(0,e.createVNode)(a,{value:`json`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(r,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Document))]),_:1}),n[8]||=(0,e.createTextVNode)(` JSON `,-1)]),_:1}),(0,e.createVNode)(a,{value:`xml`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(r,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Document))]),_:1}),n[9]||=(0,e.createTextVNode)(` XML `,-1)]),_:1})]),_:1},8,[`modelValue`])]),_:1}),d.value?((0,e.openBlock)(),(0,e.createBlock)(g,{key:0,label:`分辨率`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(v,{modelValue:c.value,"onUpdate:modelValue":n[1]||=e=>c.value=e,style:{width:`100%`}},{default:(0,e.withCtx)(()=>[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)($t),t=>((0,e.openBlock)(),(0,e.createBlock)(_,{key:t.value,label:t.label,value:t.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})):(0,e.createCommentVNode)(``,!0),s.value===`jpg`?((0,e.openBlock)(),(0,e.createBlock)(g,{key:1,label:`图片质量`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(y,{modelValue:l.value,"onUpdate:modelValue":n[2]||=e=>l.value=e,min:.1,max:1,step:.1,"show-input":``,"format-tooltip":e=>`${Math.round(e*100)}%`},null,8,[`modelValue`,`format-tooltip`]),(0,e.createElementVNode)(`span`,cn,(0,e.toDisplayString)(Math.round(l.value*100))+`%`,1)]),_:1})):(0,e.createCommentVNode)(``,!0),d.value?((0,e.openBlock)(),(0,e.createBlock)(g,{key:2,label:`预览尺寸`},{default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,ln,[(0,e.createElementVNode)(`span`,null,`宽度: `+(0,e.toDisplayString)(f.value)+`px`,1),(0,e.createElementVNode)(`span`,null,`高度: `+(0,e.toDisplayString)(p.value)+`px`,1)])]),_:1})):(0,e.createCommentVNode)(``,!0)]),_:1})]),_:1},8,[`modelValue`])}}},[[`__scopeId`,`data-v-5a858b26`]]),dn=()=>({opacity:100,borderColor:``,borderWidth:1.5,borderStyle:`solid`,textColor:``,fontSize:12,fontFamily:`Microsoft YaHei`,textAlign:`center`,lineColor:``,lineOpacity:60,lineStyle:`solid`,maxChars:15}),fn=()=>{let t=[{id:`cat-1`,name:`人 (Man)`,color:`#2979FF`,icon:`User`,position:0,style:dn()},{id:`cat-2`,name:`机 (Machine)`,color:`#1B8C3A`,icon:`SetUp`,position:1,style:dn()},{id:`cat-3`,name:`料 (Material)`,color:`#D4850A`,icon:`Box`,position:2,style:dn()},{id:`cat-4`,name:`法 (Method)`,color:`#D93A3A`,icon:`Document`,position:3,style:dn()},{id:`cat-5`,name:`环 (Environment)`,color:`#5C6B77`,icon:`Sunny`,position:4,style:dn()},{id:`cat-6`,name:`测 (Measurement)`,color:`#7E3FA0`,icon:`DataAnalysis`,position:5,style:dn()}],n=(0,e.ref)({id:``,title:`质量问题分析`,effect:``,author:``,theme:`ocean`,diagramStyle:`default`,titleStyle:{fontFamily:`Microsoft YaHei`,fontSize:20,color:`#303133`,bgColor:``,bgOpacity:80,textAlign:`center`},categories:t.map(e=>({...e,causes:[]})),meta:{createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),author:``,version:1}}),r=(0,e.ref)(null),i=(0,e.ref)(null),a=(0,e.ref)([]),o=(0,e.ref)(-1),s=(e=`item`)=>`${e}-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,c=()=>{let e=JSON.parse(JSON.stringify(n.value));o.value<a.value.length-1&&(a.value=a.value.slice(0,o.value+1)),a.value.push(e),a.value.length>50?a.value.shift():o.value++},l=()=>{o.value>0&&(o.value--,n.value=JSON.parse(JSON.stringify(a.value[o.value])),x())},u=()=>{o.value<a.value.length-1&&(o.value++,n.value=JSON.parse(JSON.stringify(a.value[o.value])),x())},d=(e={})=>{c();let t={id:s(`cat`),name:e.name||`新类别 ${n.value.categories.length+1}`,color:e.color||S(),icon:e.icon||`Folder`,position:n.value.categories.length,causes:[],...e};return n.value.categories.push(t),t},f=(e,t)=>{c();let r=n.value.categories.find(t=>t.id===e);r&&Object.assign(r,t)},p=e=>{c();let t=n.value.categories.findIndex(t=>t.id===e);t!==-1&&n.value.categories.splice(t,1)},m=(e,t={})=>{c();let r=n.value.categories.find(t=>t.id===e);if(!r)return null;let i=t.direction||`left`,a=(r.causes||[]).filter(e=>(e.direction||`left`)===i).length,o=.15+a/(a+1)*.7,l={id:s(`cause`),text:t.text||`新原因`,priority:t.priority||`possible`,direction:i,style:{...dn(),anchorRatio:o},children:[],...t};return r.causes.push(l),l},h=(e,t,r)=>{c();let i=n.value.categories.find(t=>t.id===e);if(!i)return;let a=i.causes.find(e=>e.id===t);a&&Object.assign(a,r)},g=(e,t)=>{c();let r=n.value.categories.find(t=>t.id===e);if(!r)return;let i=r.causes.findIndex(e=>e.id===t);i!==-1&&r.causes.splice(i,1)},_=(e,t,r={})=>{c();let i=n.value.categories.find(t=>t.id===e);if(!i)return null;let a=i.causes.find(e=>e.id===t);if(!a)return null;let o=r.direction||`left`,l={id:s(`measure`),text:r.text||`新措施`,direction:o,style:{...dn(),fontSize:10,maxChars:15},...r};return a.children||=[],a.children.push(l),l},v=(e,t,r,i)=>{c();let a=n.value.categories.find(t=>t.id===e);if(!a)return;let o=a.causes.find(e=>e.id===t);if(!o||!o.children)return;let s=o.children.find(e=>e.id===r);s&&Object.assign(s,i)},y=(e,t,r)=>{c();let i=n.value.categories.find(t=>t.id===e);if(!i)return;let a=i.causes.find(e=>e.id===t);if(!a||!a.children)return;let o=a.children.findIndex(e=>e.id===r);o!==-1&&a.children.splice(o,1)},b=(e,t)=>{r.value=e,i.value=t},x=()=>{r.value=null,i.value=null},S=()=>{let e=[`#409EFF`,`#67C23A`,`#E6A23C`,`#F56C6C`,`#909399`,`#9B59B6`,`#1ABC9C`,`#3498DB`,`#E74C3C`,`#2ECC71`,`#F39C12`,`#8E44AD`];return e[Math.floor(Math.random()*e.length)]};return c(),{fishboneData:n,defaultCategories:t,selectedNode:r,selectedNodeType:i,history:a,historyIndex:o,addCategory:d,updateCategory:f,deleteCategory:p,addCause:m,updateCause:h,deleteCause:g,addChild:_,updateChild:v,deleteChild:y,selectNode:b,clearSelection:x,undo:l,redo:u,saveHistory:c,generateId:s,calculateMaxTextLength:(e=`cause`,t=100)=>{let n={category:{maxWidth:120,charsPerPx:.12,minChars:6,maxChars:15},cause:{maxWidth:100,charsPerPx:.15,minChars:4,maxChars:12},child:{maxWidth:80,charsPerPx:.18,minChars:3,maxChars:10}},{charsPerPx:r,minChars:i,maxChars:a}=n[e]||n.cause,o=Math.floor(t*r);return Math.max(i,Math.min(a,o))},truncateText:(e,t)=>!e||e.length<=t?e:e.substring(0,t-1)+`...`,getRandomColor:S}};function pn(t,n={}){let r=new o.Doc,i=(0,e.ref)(!1),a=(0,e.ref)(!1),c=(0,e.ref)(null),l=(0,e.ref)([]),u=(0,e.ref)(!1),d=(0,e.reactive)({name:`用户${Math.floor(Math.random()*1e3)}`,color:`#${Math.floor(Math.random()*16777215).toString(16).padStart(6,`0`)}`}),f=null,p=null,m=null,h=()=>{g(),p=setInterval(()=>{if(f&&f.connection&&f.connection.ws&&f.connection.ws.readyState===WebSocket.CLOSED)try{f.connect()}catch(e){console.warn(`Reconnect failed:`,e)}},3e4)},g=()=>{p&&=(clearInterval(p),null)},_=(e,n)=>{f&&v(),f=new s.HocuspocusProvider({url:n||`ws://${window.location.hostname}:1234`,name:e||(typeof t==`object`?t.value:t),document:r,connect:!0,reconnect:!0,onConnect:()=>{i.value=!0,h()},onClose:()=>{i.value=!1,a.value=!1},onSynced:({state:e})=>{a.value=e},onAwarenessUpdate:({states:e})=>{l.value=Array.from(e.entries()).filter(([e])=>e!==r.clientID).map(([e,t])=>({clientId:e,...t.user||{}}))}}),c.value=f.awareness,h();let o=r.getMap(`_meta`);return o.observe(e=>{e.keysChanged.has(`_closed`)&&(u.value=o.get(`_closed`)===!0)}),f},v=()=>{if(g(),f){try{f.disconnect(),f.destroy()}catch(e){console.warn(`Collaboration disconnect error:`,e)}f=null}i.value=!1,a.value=!1,c.value=null,l.value=[]};return(0,e.onUnmounted)(()=>{v()}),{doc:r,isConnected:i,isSynced:a,awareness:c,peers:l,localUser:d,collaborationClosed:u,connect:_,disconnect:v,closeCollaboration:()=>{u.value=!0;let e=r.getMap(`_meta`);r.transact(()=>{e.set(`_closed`,!0)}),v()},checkCollaborationClosed:()=>r.getMap(`_meta`).get(`_closed`)===!0?(u.value=!0,!0):!1,setLocalUser:e=>{Object.assign(d,e),f&&f.awareness.setLocalStateField(`user`,d)},getSharedData:e=>r.get(e),setSharedData:(e,t)=>{let n=r.getMap(e);r.transact(()=>{typeof t==`object`&&t&&Object.entries(t).forEach(([e,t])=>{n.set(e,t)})})},syncToYjs:(e,t)=>{let n=r.getMap(e),i=JSON.stringify(t);m=i,r.transact(()=>{n.set(`_json`,i)})},onRemoteChange:(e,t)=>{let n=r.getMap(e);n.observe(()=>{let e=n.get(`_json`);if(e!==m&&e)try{t(JSON.parse(e))}catch(e){console.error(`[Collab] JSON parse failed:`,e)}})},observeSharedData:(e,t)=>{let n=r.getMap(e);return n.observe(t),()=>n.unobserve(t)},getSharedArray:e=>r.getArray(e),addToArray:(e,t)=>{r.getArray(e).push([t])},removeFromArray:(e,t)=>{r.getArray(e).delete(t,1)},updateArrayItem:(e,t,n)=>{let i=r.getArray(e);i.delete(t,1),i.insert(t,[n])},getSharedMap:e=>r.getMap(e),setMapValue:(e,t,n)=>{r.getMap(e).set(t,n)},deleteMapValue:(e,t)=>{r.getMap(e).delete(t)},observeMap:(e,t)=>{let n=r.getMap(e);return n.observe(t),()=>n.unobserve(t)},encodeState:()=>o.encodeStateAsUpdate(r),decodeState:e=>{o.applyUpdate(r,e)},getDocId:()=>r.clientID}}var mn=(t,n,r,i)=>{let{doc:a,isConnected:o,isSynced:s,peers:c,awareness:l,setLocalUser:u,connect:d,disconnect:f,closeCollaboration:p,checkCollaborationClosed:m,collaborationClosed:h,syncToYjs:g,onRemoteChange:_}=pn(t),v=s,y=c,b=!1,x=!1,S=null,C=(e={})=>{u({name:e.name||`用户${Math.floor(Math.random()*1e3)}`,color:e.color||w(),...e})},w=()=>{let e=[`#409EFF`,`#67C23A`,`#E6A23C`,`#F56C6C`,`#909399`,`#9B59B6`,`#1ABC9C`,`#3498DB`,`#E74C3C`,`#2ECC71`,`#F39C12`,`#8E44AD`];return e[Math.floor(Math.random()*e.length)]},ee=()=>{let e=n.value;return{title:e.title,effect:e.effect,author:e.author,theme:e.theme,diagramStyle:e.diagramStyle,titleStyle:e.titleStyle,categories:e.categories,meta:e.meta,textBoxes:r?r.value:[],arrowLines:i?i.value:[]}},te=()=>{b||x&&o.value&&g(`fishbone`,ee())},T=()=>{S&&clearTimeout(S),S=setTimeout(te,100)},ne=()=>{(0,e.watch)(()=>n.value.title,()=>T()),(0,e.watch)(()=>n.value.effect,()=>T()),(0,e.watch)(()=>n.value.author,()=>T()),(0,e.watch)(()=>n.value.theme,()=>T()),(0,e.watch)(()=>n.value.diagramStyle,()=>T()),(0,e.watch)(()=>n.value.categories,()=>T(),{deep:!0}),(0,e.watch)(()=>n.value.titleStyle,()=>T(),{deep:!0}),r&&(0,e.watch)(()=>r.value,()=>T(),{deep:!0}),i&&(0,e.watch)(()=>i.value,()=>T(),{deep:!0})},re=()=>{_(`fishbone`,e=>{e&&(b=!0,Object.assign(n.value,{title:e.title,effect:e.effect,author:e.author,theme:e.theme,diagramStyle:e.diagramStyle,titleStyle:e.titleStyle,categories:e.categories,meta:e.meta}),r&&e.textBoxes&&(r.value=e.textBoxes),i&&e.arrowLines&&(i.value=e.arrowLines),b=!1)})},E=(0,e.computed)(()=>({isConnected:o.value,isSynced:v.value,onlineCount:y.value.length}));return ne(),re(),{doc:a,isConnected:o,isSynced:s,awareness:l,syncStatus:v,onlineUsers:y,connectionStatus:E,collaborationClosed:h,initUser:C,connect:d,disconnect:f,closeCollaboration:p,checkCollaborationClosed:m,destroy:f,startSync:()=>{x=!0,g(`fishbone`,ee())},enableLocalPush:()=>{x=!0},stopSync:()=>{x=!1,S&&=(clearTimeout(S),null)}}},hn=a.default.create({baseURL:`/api`,timeout:3e4}),gn={list:e=>hn.get(`/documents/`,{params:e}),get:e=>hn.get(`/documents/${e}`),create:e=>hn.post(`/documents/`,e),update:(e,t)=>hn.put(`/documents/${e}`,t),delete:e=>hn.delete(`/documents/${e}`),addAttachment:(e,t)=>hn.post(`/documents/${e}/attachments`,t),listAttachments:e=>hn.get(`/documents/${e}/attachments`)};new Date().toISOString(),new Date().toISOString();var _n={class:`editor-main`},vn={class:`panel-toggle-icon`},yn={class:`panel-content`},bn=[`onClick`],xn={class:`category-name`},Sn={class:`cause-count`},Cn={key:0,class:`diagram-effect`},wn=[`data-textbox-id`,`onMousedown`,`onDblclick`],Tn=[`onUpdate:modelValue`,`readonly`,`onBlur`],En=[`onMousedown`],Dn=[`onMousedown`],On=[`onMousedown`],kn=[`onMousedown`],An=[`onClick`],jn=[`viewBox`],Mn=[`id`],Nn=[`fill`],Pn=[`id`],Fn=[`fill`],In={key:0},Ln=[`cx`,`cy`,`onMouseenter`,`onMousedown`],Rn={key:0},zn=[`cx`,`cy`,`onMouseenter`,`onMousedown`],Bn=[`d`,`stroke`,`stroke-width`,`stroke-dasharray`,`marker-end`,`marker-start`],Vn=[`d`,`stroke-width`,`onMousedown`],Hn=[`cx`,`cy`,`onMousedown`],Un=[`cx`,`cy`,`onMousedown`],Wn=[`cx`,`cy`],Gn=[`cx`,`cy`],Kn=[`x1`,`y1`,`x2`,`y2`],qn=[`x1`,`y1`,`x2`,`y2`],Jn=[`x1`,`y1`,`x2`,`y2`],Yn=[`cx`,`cy`,`onMousedown`],Xn=[`transform`,`onClick`],Zn={class:`panel-content`},Qn={key:0,class:`detail-form`},$n={key:1,class:`detail-form`},er=[`value`],tr={class:`children-list`},nr={key:1,class:`detail-form`},rr={key:2,class:`detail-form`},ir={key:0,style:{display:`flex`,"align-items":`center`,gap:`8px`}},ar={key:1,style:{color:`#909399`,"font-size":`12px`}},or={key:0,style:{display:`flex`,"align-items":`center`,gap:`8px`}},sr={key:1,style:{color:`#909399`,"font-size":`12px`}},cr={key:3,class:`no-selection`},lr=`fishbone`,ur=g({__name:`FishboneEditor`,setup(t){let a=(0,n.useRouter)(),o=(0,n.useRoute)(),s=(0,e.ref)(!1),c=(0,e.ref)(!1),{saveVersion:l}=ue(),u=le(),d=(0,e.ref)(o.params.id||`fishbone-${Date.now()}`),{fishboneData:f,selectedNode:p,selectedNodeType:m,history:h,historyIndex:g,addCategory:_,updateCategory:v,deleteCategory:y,addCause:b,updateCause:x,deleteCause:S,addChild:C,updateChild:w,deleteChild:ee,selectNode:te,clearSelection:T,undo:ne,redo:re,saveHistory:E}=fn(),ie=()=>{T(),O.value=null,k.value=null,R.value=null},D=(0,e.ref)([]),O=(0,e.ref)(null),k=(0,e.ref)(null),ae=(0,e.ref)(!1),oe=(0,e.ref)(!1),A=(0,e.ref)(null),se=(0,e.ref)(``),j=(0,e.ref)(0),M=(0,e.ref)(0),N=(0,e.ref)(0),de=(0,e.ref)(0),P=(0,e.ref)(0),F=(0,e.ref)(0),I=(0,e.ref)(!1),L=(0,e.ref)([]),R=(0,e.ref)(null),fe=(0,e.ref)(null),z=(0,e.ref)(!1),B=(0,e.ref)(!1),pe=(0,e.ref)(!1),V=(0,e.ref)(``),U=(0,e.ref)(0),W=(0,e.ref)(0),{isConnected:me,isSynced:he,onlineUsers:ge,doc:_e,awareness:G,initUser:ye,connect:be,disconnect:xe,closeCollaboration:Se,checkCollaborationClosed:K,collaborationClosed:q,startSync:Ce,enableLocalPush:we,stopSync:Te}=mn(d.value,f,D,L),Ee=(0,e.ref)(!1),De=(0,e.ref)(!1),Oe=(0,e.ref)(!1),ke=(0,e.ref)([]),Ae=null,je=()=>{if(!f.value.title?.trim()){r.ElMessage.warning(`请输入标题`);return}let t=d.value;be(t);let n=`用户${Math.floor(Math.random()*1e3)}`;ye({name:n});let i=G.value;i.on(`change`,()=>{ke.value=Array.from(i.getStates().entries()).filter(([e,t])=>t.user).map(([e,t])=>({clientId:e,...t.user}))}),u.setCollabContext({ydoc:_e,provider:null,onlineUsers:ke}),u.setCurrentUser({id:i.clientID,name:n,color:`#${Math.floor(Math.random()*16777215).toString(16).padStart(6,`0`)}`}),Ee.value=!0,De.value=!0,Oe.value=!1,Ae=setInterval(()=>{me.value&&ge.value},5e3);let a=()=>{Ce()};if(he.value)a();else{let t=(0,e.watch)(()=>he.value,e=>{e&&(t(),a())})}let o=`${window.location.origin}/fishbone-editor/${t}?collab=1`;navigator.clipboard.writeText(o).then(()=>{r.ElMessage.success(`协作已开启,分享链接已复制`)}).catch(()=>{r.ElMessage.success(`协作已开启`)})},Me=()=>{Ae&&=(clearInterval(Ae),null),Te(),Se(),Ee.value=!1,De.value=!1,Oe.value=!1,r.ElMessage.info(`协作已关闭`)},Ne=async()=>{let t=o.params.id;if(!t)return;be(t);let n=`协作人${Math.floor(Math.random()*1e3)}`;ye({name:n});let i=G.value;i.on(`change`,()=>{ke.value=Array.from(i.getStates().entries()).filter(([e,t])=>t.user).map(([e,t])=>({clientId:e,...t.user}))}),u.setCollabContext({ydoc:_e,provider:null,onlineUsers:ke}),u.setCurrentUser({id:i.clientID,name:n,color:`#${Math.floor(Math.random()*16777215).toString(16).padStart(6,`0`)}`});let a=e=>{if(e){if(K())return xe(),Ee.value=!1,Oe.value=!1,r.ElMessage.warning(`该协作已关闭,无法加入`),!0;we()}return!1};if(he.value)a(!0);else{let t=(0,e.watch)(()=>he.value,e=>{t(),a(e)})}Ee.value=!0,Oe.value=!0,De.value=!1,Ae=setInterval(()=>{me.value&&ge.value},5e3)},Pe=()=>{Ee.value?Me():je()},Fe=async()=>{if(!Ee.value){je();return}let e=`${window.location.origin}/fishbone-editor/${d.value}?collab=1`;try{await navigator.clipboard.writeText(e),r.ElMessage.success(`分享链接已复制到剪贴板`)}catch{r.ElMessage.info(`分享链接: ${e}`)}},Ie=(0,e.ref)(null),Le=(0,e.ref)(null),J=(0,e.ref)(100),ze=(0,e.ref)(!1),Ve=(0,e.ref)(null),He=(0,e.ref)(`png`),Y=(0,e.computed)(()=>R.value&&L.value.find(e=>e.id===R.value)||null),Ue=(0,e.ref)(!1);(0,e.ref)(``);let We=(0,e.ref)(!1),Ge=(0,e.ref)(null),Ke=(0,e.computed)(()=>{let e=[],t=f.value.categories||[],n=Math.max(t.length,1),r=Math.max(600,n*130)/(n+1),i=(ve.find(e=>e.id===f.value.diagramStyle)||ve[0]).nodeHeight||36;return t.forEach((t,n)=>{let a=150+r*(n+1),o=n%2==0?100-(i/2+8):400+(i/2+8),s=Be(t.name,`category`),c=(t.style?.fontSize??12)*2+8,l=t.style?.dragDx||0,u=t.style?.dragDy||0,d=t.style?.anchorDx||0,f=a+30+l,p=o+u;e.push({id:t.id,type:`node`,name:t.name,x:f-s/2,y:p-c/2,width:s,height:c,anchors:{top:{x:f,y:p-c/2},bottom:{x:f,y:p+c/2},left:{x:f-s/2,y:p},right:{x:f+s/2,y:p}}});let m=t.causes||[],h=(t.style?.fontSize??12)-2,g=a+d,_=a+30+l,v=n%2==0?100:400;m.forEach((t,n)=>{let r=Be(t.text,`cause`),i=h*2+6,a=t.style?.dragDx||0,o=t.style?.dragDy||0,s=m.length===1?.5:(n+1)/(m.length+1),c=t.style?.anchorT??s,l=g+(_-g)*c,u=250+(v-250)*c,d=t.direction||`left`,f=l+(d===`left`?-35:35)+a,p=u+o;e.push({id:t.id,type:`node`,name:t.text,x:f-r/2,y:p-i/2,width:r,height:i,anchors:{top:{x:f,y:p-i/2},bottom:{x:f,y:p+i/2},left:{x:f-r/2,y:p},right:{x:f+r/2,y:p}}});let y=t.children||[],b=Math.max(8,h-2);y.forEach((t,n)=>{let i=Be(t.text,`cause`),a=b*2+6,o=t.style?.dragDx||0,s=t.style?.dragDy||0,c=d===`left`?f-r/2:f+r/2,l=d===`left`?c-(25+n*45):c+(25+n*45),u=p+n*25,m=l+o,h=u+s;e.push({id:t.id,type:`node`,name:t.text,x:m-i/2,y:h-a/2,width:i,height:a,anchors:{top:{x:m,y:h-a/2},bottom:{x:m,y:h+a/2},left:{x:m-i/2,y:h},right:{x:m+i/2,y:h}}})})})}),e}),qe=(0,e.computed)(()=>{if(Le.value){let e=Le.value.getViewBox();if(e&&e.w>0&&e.h>0)return`${e.x} ${e.y} ${e.w} ${e.h}`}let e=f.value.categories||[],t=Math.max(e.length,1),n=Math.max(600,t*130),r=150+n,i=ve.find(e=>e.id===f.value.diagramStyle)||ve[0],a=i.nodeHeight||36;i.causeHeight;let o=30,s=100,c=250,l=250;return c=Math.min(c,180),l=Math.max(l,320),s=Math.max(s,r+120),e.forEach((e,r)=>{let i=150+n/(t+1)*(r+1),u=r%2==0?100-(a/2+8):400+(a/2+8),d=Be(e.name,`category`)/2+20,f=r%2==0?100:400;o=Math.min(o,i+30-d),s=Math.max(s,i+30+d+40),c=Math.min(c,f,u-a/2),l=Math.max(l,f,u+a/2)}),`${o-60} ${c-60} ${s-o+120} ${l-c+120}`}),Je=e=>Ot({x:0,y:0,width:e.width,height:e.height},60).map(t=>Xe(e.x+t.x,e.y+t.y)),Ye=(0,e.computed)(()=>{let e=qe.value.split(` `).map(Number);return{x:e[0]||0,y:e[1]||0,w:e[2]||800,h:e[3]||500}}),Xe=(e,t)=>{let n=Le.value?.getSvgElement(),r=Ie.value?.querySelector(`.canvas-wrapper`);if(n&&r){let i=r.getBoundingClientRect(),a=e+i.left,o=t+i.top,s=n.createSVGPoint();s.x=a,s.y=o;let c=n.getScreenCTM();if(c){let e=s.matrixTransform(c.inverse());return{x:e.x,y:e.y}}}let i=Ye.value;return{x:e/X.value.width*i.w+i.x,y:t/X.value.height*i.h+i.y}},X=(0,e.ref)({width:800,height:600}),Ze=(0,e.ref)({width:800,height:600}),Qe=()=>{let e=Ie.value?.querySelector(`.canvas-wrapper`);return e?{width:e.scrollWidth||e.offsetWidth||800,height:e.scrollHeight||e.offsetHeight||600}:{width:800,height:600}},$e=(0,e.computed)(()=>{let e={ocean:{primary:`#1E90FF`,secondary:`#00CED1`,textColor:`#1565C0`,nodeBg:`#E3F2FD`,bg:`#F0F8FF`},"deep-sea":{primary:`#003366`,secondary:`#006994`,textColor:`#0D47A1`,nodeBg:`#E3F2FD`,bg:`#E6F3FF`},coral:{primary:`#FF7F50`,secondary:`#FF6B6B`,textColor:`#C62828`,nodeBg:`#FFEBEE`,bg:`#FFF5F5`},ice:{primary:`#ADD8E6`,secondary:`#87CEEB`,textColor:`#006064`,nodeBg:`#E0F7FA`,bg:`#F0FFFF`},mint:{primary:`#3EB489`,secondary:`#00FA9A`,textColor:`#1B5E20`,nodeBg:`#E8F5E9`,bg:`#F0FFF0`},sunset:{primary:`#FF6B35`,secondary:`#F7931E`,textColor:`#E65100`,nodeBg:`#FFF3E0`,bg:`#FFF8F0`},dawn:{primary:`#FFB347`,secondary:`#FFCC33`,textColor:`#F57F17`,nodeBg:`#FFFDE7`,bg:`#FFFAF0`},autumn:{primary:`#D2691E`,secondary:`#CD853F`,textColor:`#4E342E`,nodeBg:`#EFEBE9`,bg:`#FFF8DC`},rust:{primary:`#B7410E`,secondary:`#CC5500`,textColor:`#BF360C`,nodeBg:`#FBE9E7`,bg:`#FFF5EE`},amber:{primary:`#FFBF00`,secondary:`#FFD700`,textColor:`#F57F17`,nodeBg:`#FFFDE7`,bg:`#FFFFF0`},forest:{primary:`#228B22`,secondary:`#32CD32`,textColor:`#1B5E20`,nodeBg:`#E8F5E9`,bg:`#F0FFF0`},emerald:{primary:`#50C878`,secondary:`#98FB98`,textColor:`#2E7D32`,nodeBg:`#E8F5E9`,bg:`#F5FFFA`},olive:{primary:`#808000`,secondary:`#9ACD32`,textColor:`#33691E`,nodeBg:`#F1F8E9`,bg:`#FAFAD2`},sage:{primary:`#8FBC8F`,secondary:`#90EE90`,textColor:`#388E3C`,nodeBg:`#E8F5E9`,bg:`#F0FFF0`},moss:{primary:`#8A9A5B`,secondary:`#BDB76B`,textColor:`#558B2F`,nodeBg:`#F1F8E9`,bg:`#FFFFF0`},violet:{primary:`#8A2BE2`,secondary:`#9370DB`,textColor:`#6A1B9A`,nodeBg:`#F3E5F5`,bg:`#F8F0FF`},lavender:{primary:`#9C27B0`,secondary:`#CE93D8`,textColor:`#7B1FA2`,nodeBg:`#F3E5F5`,bg:`#FAF0FF`},plum:{primary:`#8E4585`,secondary:`#DDA0DD`,textColor:`#AD1457`,nodeBg:`#FCE4EC`,bg:`#FFF0F5`},mauve:{primary:`#E0B0FF`,secondary:`#DA70D6`,textColor:`#8E24AA`,nodeBg:`#F3E5F5`,bg:`#FAF0FF`},orchid:{primary:`#DA70D6`,secondary:`#EE82EE`,textColor:`#C2185B`,nodeBg:`#F3E5F5`,bg:`#FFF0FF`},modern:{primary:`#333333`,secondary:`#555555`,textColor:`#212121`,nodeBg:`#F5F5F5`,bg:`#FAFAFA`},minimal:{primary:`#2C3E50`,secondary:`#34495E`,textColor:`#263238`,nodeBg:`#ECEFF1`,bg:`#ECF0F1`},corporate:{primary:`#2C3E50`,secondary:`#3498DB`,textColor:`#1565C0`,nodeBg:`#E3F2FD`,bg:`#F5F6FA`},tech:{primary:`#00D4FF`,secondary:`#7B2FBE`,textColor:`#006064`,nodeBg:`#E0F7FA`,bg:`#F0F8FF`},neon:{primary:`#00FF88`,secondary:`#FF00FF`,textColor:`#00FF88`,nodeBg:`#16213E`,bg:`#1A1A2E`},pastel:{primary:`#FFB3BA`,secondary:`#BAFFC9`,textColor:`#880E4F`,nodeBg:`#FFF0F5`,bg:`#FFF5F5`},candy:{primary:`#FFB6C1`,secondary:`#FF69B4`,textColor:`#C2185B`,nodeBg:`#FCE4EC`,bg:`#FFF0F5`},bubblegum:{primary:`#FFC0CB`,secondary:`#FF1493`,textColor:`#AD1457`,nodeBg:`#FCE4EC`,bg:`#FFF5FF`},sakura:{primary:`#FFB7C5`,secondary:`#FF69B4`,textColor:`#C2185B`,nodeBg:`#FFF0F5`,bg:`#FFF5F5`},peach:{primary:`#FFDAB9`,secondary:`#FFA07A`,textColor:`#E65100`,nodeBg:`#FFF3E0`,bg:`#FFFAF0`}};return e[f.value.theme]||e.ocean}),et=(0,e.ref)(!1),tt=(0,e.computed)(()=>!!p.value||m.value===`title`||!!O.value||!!R.value),Z=(0,e.computed)(()=>O.value&&D.value.find(e=>e.id===O.value)||null),nt=(0,e.computed)(()=>!!p.value||!!O.value),rt=(0,e.computed)(()=>{let e=f.value.titleStyle,t={textAlign:e.textAlign},n=e.bgColor,r=e.bgOpacity;return n&&r>0&&(n.startsWith(`#`)&&n.length>=7?t.backgroundColor=`rgba(${parseInt(n.slice(1,3),16)}, ${parseInt(n.slice(3,5),16)}, ${parseInt(n.slice(5,7),16)}, ${r/100})`:n.startsWith(`rgb`)&&(t.backgroundColor=n)),t}),it=(0,e.computed)(()=>{let e=f.value.titleStyle;return{fontFamily:e.fontFamily,fontSize:e.fontSize+`px`,color:e.color}}),at=()=>{document.activeElement?.blur(),(0,e.nextTick)(()=>document.activeElement?.blur()),p.value={...f.value.titleStyle},m.value=`title`},ot=()=>{a.push(`/`)},st=async e=>{r.ElMessage.info(`AI生成功能开发中,敬请期待...`)},ct=()=>{te(_(),`category`),r.ElMessage.success(`类别已添加`)},lt=async e=>{try{await r.ElMessageBox.confirm(`确定要删除此类别吗?`,`提示`,{type:`warning`}),y(e),p.value?.id===e&&T(),r.ElMessage.success(`类别已删除`)}catch{}},ut=()=>{!p.value||m.value!==`cause`||C(p.value.categoryId,p.value.id,{direction:`left`})&&(r.ElMessage.success(`措施已添加`),$.value++)},dt=e=>{!p.value||m.value!==`cause`||(ee(p.value.categoryId,p.value.id,e),r.ElMessage.success(`子原因已删除`))},ft=t=>{if(document.activeElement?.blur(),(0,e.nextTick)(()=>document.activeElement?.blur()),O.value=null,k.value=null,R.value=null,t.type===`head`){T();return}let n=null,r=t.type;if(r===`category`)n=f.value.categories.find(e=>e.id===t.id);else if(r===`cause`){let e=f.value.categories[t.catIndex];n=e?.causes?.find(e=>e.id===t.id),n&&(n.categoryId=e.id,n.catIndex=t.catIndex)}else if(r===`child`||r===`measure`){let e=f.value.categories[t.catIndex],r=e?.causes?.[t.causeIndex];n=r?.children?.find(e=>e.id===t.id),n&&(n.categoryId=e.id,n.causeId=r.id,n.catIndex=t.catIndex,n.causeIndex=t.causeIndex)}n&&!n.style&&(n.style={opacity:100,borderColor:``,borderWidth:1.5,borderStyle:`solid`,textColor:``,fontSize:12,fontFamily:`Microsoft YaHei`,textAlign:`center`,lineColor:``,lineOpacity:60,lineStyle:`solid`}),n&&te(n,r)},pt=e=>{let t=e.style||{},n=t.bgColor||`#FFEB3B`,r=(t.bgOpacity??90)/100,i=`rgba(255, 235, 59, 0.9)`;return n.startsWith(`#`)&&n.length>=7&&(i=`rgba(${parseInt(n.slice(1,3),16)}, ${parseInt(n.slice(3,5),16)}, ${parseInt(n.slice(5,7),16)}, ${r})`),{position:`absolute`,left:e.x+`px`,top:e.y+`px`,width:e.width+`px`,height:e.height+`px`,background:i}},mt=e=>{let t=e.style||{},n=t.fontStyle||`normal`,r=`normal`,i=`normal`,a=`none`;return n===`bold`?i=`bold`:n===`italic`?r=`italic`:n===`bold italic`?(i=`bold`,r=`italic`):n===`underline`?a=`underline`:n===`line-through`&&(a=`line-through`),{color:t.textColor||`#303133`,fontSize:(t.fontSize||14)+`px`,fontFamily:(t.fontFamily||`Microsoft YaHei`)+`, sans-serif`,textAlign:t.textAlign||`left`,fontStyle:r,fontWeight:i,textDecoration:a}},ht=()=>{let e=`textbox-`+Date.now(),t=X.value,n=t.width/2-100,r=t.height/2-40,i={id:e,x:n,y:r,width:200,height:80,text:``,_xPercent:n/t.width,_yPercent:r/t.height,_wPercent:200/t.width,_hPercent:80/t.height,_hasPercent:!0,style:{bgColor:`#FFEB3B`,bgOpacity:90,textColor:`#303133`,fontSize:14,fontFamily:`Microsoft YaHei`,textAlign:`left`,fontStyle:`normal`,fontWeight:`normal`,textDecoration:`none`}};D.value.push(i)},gt=e=>{k.value===e.id&&(k.value=null)},_t=(e,t)=>{k.value===e.id&&t.target.classList.contains(`textbox-content`)||(O.value=e.id,k.value=null,R.value=null,T(),ae.value=!0,A.value=e,j.value=t.clientX,M.value=t.clientY,N.value=e.x,de.value=e.y,I.value=!1,document.addEventListener(`mousemove`,yt),document.addEventListener(`mouseup`,bt),t.preventDefault())},vt=t=>{k.value=t.id,(0,e.nextTick)(()=>{let e=document.querySelector(`[data-textbox-id="${t.id}"] .textbox-content`);e&&e.focus()})},yt=e=>{if(!ae.value||!A.value)return;let t=(e.clientX-j.value)/(J.value/100),n=(e.clientY-M.value)/(J.value/100);!I.value&&Math.abs(t)<3&&Math.abs(n)<3||(I.value=!0,A.value.x=N.value+t,A.value.y=de.value+n)},bt=()=>{if(ae.value=!1,A.value&&I.value){let e=X.value;A.value._xPercent=A.value.x/e.width,A.value._yPercent=A.value.y/e.height,A.value._hasPercent=!0}I.value=!1,A.value=null,document.removeEventListener(`mousemove`,yt),document.removeEventListener(`mouseup`,bt)},xt=(e,t,n)=>{oe.value=!0,se.value=t,A.value=e,j.value=n.clientX,M.value=n.clientY,N.value=e.x,de.value=e.y,P.value=e.width,F.value=e.height,document.addEventListener(`mousemove`,St),document.addEventListener(`mouseup`,Ct),n.preventDefault()},St=e=>{if(!oe.value||!A.value)return;let t=(e.clientX-j.value)/(J.value/100),n=(e.clientY-M.value)/(J.value/100),r=se.value;r.includes(`e`)&&(A.value.width=Math.max(50,P.value+t)),r.includes(`w`)&&(A.value.x=N.value+t,A.value.width=Math.max(50,P.value-t)),r.includes(`s`)&&(A.value.height=Math.max(30,F.value+n)),r.includes(`n`)&&(A.value.y=de.value+n,A.value.height=Math.max(30,F.value-n))},Ct=()=>{if(oe.value=!1,A.value){let e=X.value;A.value._xPercent=A.value.x/e.width,A.value._yPercent=A.value.y/e.height,A.value._wPercent=A.value.width/e.width,A.value._hPercent=A.value.height/e.height,A.value._hasPercent=!0}A.value=null,document.removeEventListener(`mousemove`,St),document.removeEventListener(`mouseup`,Ct)},wt=e=>{let t=D.value.findIndex(t=>t.id===e);t>=0&&(D.value.splice(t,1),O.value=null,k.value=null)},Tt=()=>{if(!nt.value)return;let e=Z.value,t=p.value,n=X.value,r=`arrow-`+Date.now(),i,a,o,s,c=null,l=null,u=null;if(e){let t=Xe(e.x+e.width,e.y+e.height/2);i=t.x,a=t.y,o=i+150,s=a,c=e.id,l=`textbox`,u=`border-15`}else if(t){let e=t.id,n=Ke.value.find(t=>t.id===e);if(n){let t=kt(n,`right`,`node`);i=t.x,a=t.y,o=i+150,s=a,c=e,l=`node`,u=`right`}}c||(i=n.width*.4,a=n.height*.5,o=n.width*.6,s=n.height*.5),o=Math.min(o,n.width-20),s=Math.max(30,Math.min(s,n.height-30));let d={id:r,startX:i,startY:a,endX:o,endY:s,cpX:(i+o)/2,cpY:(a+s)/2-60,_startXP:i/n.width,_startYP:a/n.height,_endXP:o/n.width,_endYP:s/n.height,_cpXP:(i+o)/2/n.width,_cpYP:((a+s)/2-60)/n.height,startConnectId:c,endConnectId:null,startConnectType:l,endConnectType:null,startAnchor:u,endAnchor:null,style:{lineWidth:2,lineColor:`#409EFF`,lineStyle:`solid`,lineType:`straight`,arrowStart:!1,arrowEnd:!0}};L.value.push(d),R.value=r,O.value=null,p.value=null,m.value=null},Et=e=>{let t=L.value.findIndex(t=>t.id===e);t>=0&&(L.value.splice(t,1),R.value=null)},Dt=e=>{let{startX:t,startY:n,endX:r,endY:i,cpX:a,cpY:o,style:s}=e;return s.lineType===`curve`?`M ${t} ${n} Q ${a} ${o} ${r} ${i}`:`M ${t} ${n} L ${r} ${i}`},Ot=(e,t=30)=>{let{x:n,y:r,width:i,height:a}=e,o=[],s=2*(i+a);for(let e=0;e<t;e++){let c=e/t*s,l,u;c<i?(l=n+c,u=r):c<i+a?(l=n+i,u=r+(c-i)):c<2*i+a?(l=n+i-(c-i-a),u=r+a):(l=n,u=r+a-(c-2*i-a)),o.push({x:l,y:u,index:e})}return o},kt=(e,t,n)=>{if(e.anchors&&e.anchors[t])return e.anchors[t];if(n===`textbox`&&t&&t.startsWith(`border-`)){let n=parseInt(t.split(`-`)[1]),r=Ot({x:0,y:0,width:e.width,height:e.height},60)[n];return r?Xe(e.x+r.x,e.y+r.y):null}if(t===`top`)return{x:e.x+e.width/2,y:e.y};if(t===`bottom`)return{x:e.x+e.width/2,y:e.y+e.height};if(t===`left`)return{x:e.x,y:e.y+e.height/2};if(t===`right`)return{x:e.x+e.width,y:e.y+e.height/2};if(t&&t.startsWith(`border-`)){let n=parseInt(t.split(`-`)[1]);return Ot(e)[n]||null}return{x:e.x,y:e.y}},At=(e,t)=>{let n=t===`start`?e.startX:e.endX,r=t===`start`?e.startY:e.endY,i=30,a=null,o=null,s=null,c=null;Ke.value.forEach(e=>{Ot(e).forEach((t,l)=>{let u=Math.hypot(n-t.x,r-t.y);u<i&&(i=u,a=t,o=e.id,s=`node`,c=`border-`+l)})}),D.value.forEach(e=>{Ot({x:0,y:0,width:e.width,height:e.height},60).forEach((t,l)=>{let u=Xe(e.x+t.x,e.y+t.y),d=Math.hypot(n-u.x,r-u.y);d<i&&(i=d,a=u,o=e.id,s=`textbox`,c=`border-`+l)})}),a?t===`start`?(e.startX=a.x,e.startY=a.y,e.startConnectId=o,e.startConnectType=s,e.startAnchor=c):(e.endX=a.x,e.endY=a.y,e.endConnectId=o,e.endConnectType=s,e.endAnchor=c):t===`start`?(e.startConnectId=null,e.startConnectType=null,e.startAnchor=null):(e.endConnectId=null,e.endConnectType=null,e.endAnchor=null),D.value.forEach(e=>{let t={top:{x:e.x+e.width/2,y:e.y},bottom:{x:e.x+e.width/2,y:e.y+e.height},left:{x:e.x,y:e.y+e.height/2},right:{x:e.x+e.width,y:e.y+e.height/2}};Object.entries(t).forEach(([t,l])=>{let u=Math.hypot(n-l.x,r-l.y);u<i&&(i=u,a=l,o=e.id,s=`textbox`,c=t)})}),a?t===`start`?(e.startX=a.x,e.startY=a.y,e.startConnectId=o,e.startConnectType=s,e.startAnchor=c):(e.endX=a.x,e.endY=a.y,e.endConnectId=o,e.endConnectType=s,e.endAnchor=c):t===`start`?(e.startConnectId=null,e.startConnectType=null,e.startAnchor=null):(e.endConnectId=null,e.endConnectType=null,e.endAnchor=null)},jt=(e,t,n,r)=>{if(!Y.value)return;let i=e;t===`node`&&(i=Ke.value.find(t=>t.id===e.id)||e);let a=kt(i,n,t);if(!a)return;let o=Y.value;Math.hypot(a.x-o.startX,a.y-o.startY)<=Math.hypot(a.x-o.endX,a.y-o.endY)?(o.startX=a.x,o.startY=a.y,o.startConnectId=i.id,o.startConnectType=t,o.startAnchor=n):(o.endX=a.x,o.endY=a.y,o.endConnectId=i.id,o.endConnectType=t,o.endAnchor=n);let s=X.value;o._startXP=o.startX/s.width,o._startYP=o.startY/s.height,o._endXP=o.endX/s.width,o._endYP=o.endY/s.height},Mt=()=>{L.value.forEach(e=>{if(e.startConnectId){let t=null;if(e.startConnectType===`textbox`?t=D.value.find(t=>t.id===e.startConnectId):e.startConnectType===`node`&&(t=Ke.value.find(t=>t.id===e.startConnectId)),t&&e.startAnchor){let n=kt(t,e.startAnchor,e.startConnectType);n&&(e.startX=n.x,e.startY=n.y)}}if(e.endConnectId){let t=null;if(e.endConnectType===`textbox`?t=D.value.find(t=>t.id===e.endConnectId):e.endConnectType===`node`&&(t=Ke.value.find(t=>t.id===e.endConnectId)),t&&e.endAnchor){let n=kt(t,e.endAnchor,e.endConnectType);n&&(e.endX=n.x,e.endY=n.y)}}let t=X.value;e._startXP=e.startX/t.width,e._startYP=e.startY/t.height,e._endXP=e.endX/t.width,e._endYP=e.endY/t.height})},Nt=(e,t,n)=>{z.value=!0,We.value=!0,V.value=t,R.value=e.id,U.value=n.clientX,W.value=n.clientY,document.addEventListener(`mousemove`,Pt),document.addEventListener(`mouseup`,Ft),n.preventDefault(),n.stopPropagation()},Pt=e=>{if(!z.value&&!B.value&&!pe.value||!Y.value)return;let t=(e.clientX-U.value)/(J.value/100),n=(e.clientY-W.value)/(J.value/100);B.value?(Y.value.startX+=t,Y.value.startY+=n,Y.value.endX+=t,Y.value.endY+=n,Y.value.cpX+=t,Y.value.cpY+=n):V.value===`start`?(Y.value.startX+=t,Y.value.startY+=n):V.value===`end`?(Y.value.endX+=t,Y.value.endY+=n):V.value===`cp`&&(Y.value.cpX+=t,Y.value.cpY+=n),U.value=e.clientX,W.value=e.clientY},Ft=()=>{if((z.value||B.value||pe.value)&&Y.value){z.value&&(V.value===`start`?At(Y.value,`start`):V.value===`end`&&At(Y.value,`end`));let e=X.value;Y.value._startXP=Y.value.startX/e.width,Y.value._startYP=Y.value.startY/e.height,Y.value._endXP=Y.value.endX/e.width,Y.value._endYP=Y.value.endY/e.height,Y.value._cpXP=Y.value.cpX/e.width,Y.value._cpYP=Y.value.cpY/e.height}z.value=!1,B.value=!1,pe.value=!1,We.value=!1,V.value=``,document.removeEventListener(`mousemove`,Pt),document.removeEventListener(`mouseup`,Ft)},It=(e,t)=>{B.value=!0,R.value=e.id,U.value=t.clientX,W.value=t.clientY,document.addEventListener(`mousemove`,Pt),document.addEventListener(`mouseup`,Ft),t.preventDefault(),t.stopPropagation(),console.log(`=== 选中箭头线,调试文本框锚点 ===`),D.value.forEach(e=>{console.log(`文本框 [${e.id}]: CSS x=${e.x}, y=${e.y}, w=${e.width}, h=${e.height}`),[{name:`左上`,x:e.x,y:e.y},{name:`右上`,x:e.x+e.width,y:e.y},{name:`右下`,x:e.x+e.width,y:e.y+e.height},{name:`左下`,x:e.x,y:e.y+e.height}].forEach(e=>console.log(` 角 ${e.name}: CSS(${e.x.toFixed(1)}, ${e.y.toFixed(1)}) → SVG(${Xe(e.x,e.y).x.toFixed(1)}, ${Xe(e.x,e.y).y.toFixed(1)})`));let t={top:{x:e.x+e.width/2,y:e.y},bottom:{x:e.x+e.width/2,y:e.y+e.height},left:{x:e.x,y:e.y+e.height/2},right:{x:e.x+e.width,y:e.y+e.height/2}};Object.entries(t).forEach(([e,t])=>console.log(` 锚点 ${e}: CSS(${t.x.toFixed(1)}, ${t.y.toFixed(1)}) → SVG(${Xe(t.x,t.y).x.toFixed(1)}, ${Xe(t.x,t.y).y.toFixed(1)})`))}),console.log(`viewBox:`,qe.value),console.log(`canvasSize:`,X.value)},Lt=(e,t)=>{pe.value=!0,V.value=`cp`,R.value=e.id,U.value=t.clientX,W.value=t.clientY,document.addEventListener(`mousemove`,Pt),document.addEventListener(`mouseup`,Ft),t.preventDefault(),t.stopPropagation()},Rt=e=>{f.value.theme=e,r.ElMessage.success(`主题已切换`)},zt=e=>{f.value.diagramStyle=e,$.value++,r.ElMessage.success(`样式已切换`)},Bt=async e=>{let t={category:`类别`,cause:`原因`,child:`子原因`,measure:`措施`}[e.type]||`节点`;try{if(await r.ElMessageBox.confirm(`确定要删除此${t}吗?`,`删除确认`,{confirmButtonText:`确定`,cancelButtonText:`取消`,type:`warning`}),e.type===`category`)y(e.id);else if(e.type===`cause`)S(e.catIndex===void 0?``:f.value.categories[e.catIndex]?.id,e.id);else if(e.type===`child`){E();let t=f.value.categories[e.catIndex]?.causes?.[e.causeIndex];if(t?.children){let n=t.children.findIndex(t=>t.id===e.id);n!==-1&&t.children.splice(n,1)}}else if(e.type===`measure`){E();let t=f.value.categories[e.catIndex]?.causes?.[e.causeIndex];if(t?.children){let n=t.children.findIndex(t=>t.id===e.id);n!==-1&&t.children.splice(n,1)}}p.value?.id===e.id&&T(),$.value++,r.ElMessage.success(`已删除`)}catch{}},Vt=(0,e.ref)(!1),Ht=(0,e.ref)({text:``,direction:`left`,parentType:``,parentId:``,catIndex:0,causeIndex:0}),Ut=t=>{let{type:n,catIndex:r,causeIndex:i,measureIndex:a,dx:o,dy:s}=t,c=f.value.categories[r];if(c){if(E(),n===`cat`)c.style||={},c.style.dragDx=o,c.style.dragDy=s;else if(n===`anchor`)c.style||={},c.style.anchorDx=o;else if(n===`cause`){let e=c.causes?.[i];e&&(e.style||={},e.style.dragDx=o,e.style.dragDy=s)}else if(n===`measure`){let e=(c.causes?.[i])?.children?.[a];e&&(e.style||={},e.style.dragDx=o,e.style.dragDy=s)}$.value++,(0,e.nextTick)(()=>Mt())}},Wt=e=>{Ht.value={text:``,direction:`left`,parentType:e.type,parentId:e.id,catIndex:e.catIndex??0,causeIndex:e.causeIndex??0},Vt.value=!0},Gt=()=>{if(!Ht.value.text.trim()){r.ElMessage.warning(`请输入子节点名称`);return}let{parentType:e,catIndex:t,causeIndex:n,text:i,direction:a}=Ht.value,o=f.value.categories[t];if(!o)return;let s=null,c=``;if(e===`category`){E(),o.causes||=[];let e={id:`cause-${Date.now()}`,text:i,priority:`possible`,style:{opacity:100,borderColor:``,borderWidth:1.5,borderStyle:`solid`,textColor:``,fontSize:11,fontFamily:`Microsoft YaHei`,textAlign:`center`,lineColor:``,lineOpacity:60,lineStyle:`solid`},children:[],direction:a};o.causes.push(e),s=e,c=`cause`}else if(e===`cause`){E();let e=o.causes?.[n];if(e){e.children||=[];let t={id:`child-${Date.now()}`,text:i,style:{opacity:100,borderColor:``,borderWidth:1.5,borderStyle:`solid`,textColor:``,fontSize:10,fontFamily:`Microsoft YaHei`,textAlign:`center`,lineColor:``,lineOpacity:60,lineStyle:`solid`},direction:a};e.children.push(t),s=t,c=`measure`}}Vt.value=!1,s&&te(s,c),$.value++,r.ElMessage.success(`已添加`)},Kt=()=>{J.value=Math.min(200,J.value+10)},qt=()=>{J.value=Math.max(50,J.value-10)},Jt=()=>{J.value=100},Yt=async()=>{if(Oe.value&&q.value){r.ElMessage.error(`协作已关闭,无法提交保存`);return}if(!f.value.title?.trim()){r.ElMessage.warning(`请输入标题`);return}if(!f.value.effect?.trim()){r.ElMessage.warning(`请输入问题/结果`);return}if(!f.value.author?.trim()){r.ElMessage.warning(`请输入作者`);return}try{let e={title:f.value.title,content:JSON.stringify({...f.value,textBoxes:D.value,arrowLines:L.value}),doc_type:`fishbone`,status:2};if(f.value.id)await gn.update(f.value.id,e);else{let t=await gn.create(e);f.value.id=t.data.id}r.ElMessage.success(`保存成功`),l({documentId:f.value.id,docType:`fishbone`,content:JSON.stringify({...f.value,textBoxes:D.value,arrowLines:L.value}),userId:String(u.currentUser.value?.id||``),userName:u.currentUser.value?.name||`未知`})}catch(e){r.ElMessage.error(`保存失败`),console.error(e)}},Xt=e=>{He.value=e||`png`,Ve.value=Le.value?.getSvgElement(),ze.value=!0},Q=({format:e,filename:t})=>{r.ElMessage.success(`已导出: ${t}`)},Zt=e=>{let{catIndex:t,causeIndex:n,measureIndex:i}=e,a=(f.value.categories[t]?.causes?.[n])?.children?.[i];a&&r.ElMessage.info(`思维导图功能开发中: ${a.text}`)},$t=async()=>{if(o.params.id&&!o.params.id.startsWith(`fishbone-`))try{let t=await gn.get(o.params.id);if(t.data?.content){let n=JSON.parse(t.data.content);Object.assign(f.value,n),n.textBoxes&&(D.value=n.textBoxes,(0,e.nextTick)(()=>{let e=X.value;D.value.forEach(t=>{t._hasPercent||=(t._xPercent=t.x/e.width,t._yPercent=t.y/e.height,t._wPercent=t.width/e.width,t._hPercent=t.height/e.height,!0)})})),n.arrowLines&&(L.value=n.arrowLines,(0,e.nextTick)(()=>{let e=X.value;L.value.forEach(t=>{t._startXP===void 0&&(t._startXP=t.startX/e.width,t._startYP=t.startY/e.height,t._endXP=t.endX/e.width,t._endYP=t.endY/e.height),t._cpXP===void 0&&(t.cpX=t.cpX??(t.startX+t.endX)/2,t.cpY=t.cpY??(t.startY+t.endY)/2-60,t._cpXP=t.cpX/e.width,t._cpYP=t.cpY/e.height)})}))}}catch(e){console.error(`加载文档失败:`,e)}},$=(0,e.ref)(0);(0,e.watch)(()=>f.value.categories,()=>{$.value++},{deep:!0}),(0,e.watch)(p,()=>{(0,e.nextTick)(()=>{let e=document.activeElement;e&&e.tagName!==`BODY`&&e.blur()})}),(0,e.watch)(D,()=>{Mt()},{deep:!0}),(0,e.watch)(()=>f.value.categories,()=>{Mt()},{deep:!0}),(0,e.watch)(Ke,()=>{Mt()},{deep:!0});let en=()=>{(0,e.nextTick)(()=>{let e=Qe();if(e.width>0&&e.height>0){let t=X.value.width,n=X.value.height;t>0&&n>0&&(Math.abs(e.width-t)>1||Math.abs(e.height-n)>1)&&(D.value.forEach(r=>{r._xPercent=r._xPercent??r.x/t,r._yPercent=r._yPercent??r.y/n,r._wPercent=r._wPercent??r.width/t,r._hPercent=r._hPercent??r.height/n,r._hasPercent=!0,r.x=r._xPercent*e.width,r.y=r._yPercent*e.height,r.width=Math.max(50,r._wPercent*e.width),r.height=Math.max(30,r._hPercent*e.height)}),L.value.forEach(r=>{r._startXP=r._startXP??r.startX/t,r._startYP=r._startYP??r.startY/n,r._endXP=r._endXP??r.endX/t,r._endYP=r._endYP??r.endY/n,r._cpXP=r._cpXP??r.cpX/t,r._cpYP=r._cpYP??r.cpY/n,r.startX=r._startXP*e.width,r.startY=r._startYP*e.height,r.endX=r._endXP*e.width,r.endY=r._endYP*e.height,r.cpX=r._cpXP*e.width,r.cpY=r._cpYP*e.height})),X.value={width:e.width,height:e.height},Mt()}})},tn=[`我可以帮您分析鱼骨图结构、梳理因果关系,或者提供问题分析思路。请问有什么需要帮助的?`,`这个鱼骨图的分类很全面。建议检查每个主分支下的子原因是否充分,有没有遗漏的关键因素。`,`根据当前的问题定义,我建议从人、机、料、法、环、测六个维度全面分析可能的根本原因。`,`鱼骨图中的因果关系链条很清晰。如果需要,我可以帮您进一步深挖某些关键原因的深层因素。`,`我可以帮您检查鱼骨图中是否存在重复的原因或相互矛盾的因果关系。需要我逐条分析吗?`,`建议对每个主要原因添加权重或优先级标注,这样可以帮助团队聚焦最关键的问题。`,`这个鱼骨图的分析框架不错。建议在关键原因节点添加数据和证据支持,增强分析的说服力。`,`我可以帮您将鱼骨图的分析结果转化为改进计划或解决方案文档。`],nn=async(e,t={})=>{let n=o.params.id?`${lr}-${o.params.id}`:null;await u.sendMessage(e,{...t,roomId:n});let r=t.mentionedUser,i=r&&r.toLowerCase().includes(`ai`),a=u.collabUsers.value.filter(e=>e.name!==u.currentUser.value.name);(!r||i||a.length===0)&&(u.loading.value=!0,setTimeout(()=>{u.sendAiMessage(tn[Math.floor(Math.random()*tn.length)],n),u.loading.value=!1},800+Math.random()*1200))},rn=()=>{let e=o.params.id?`${lr}-${o.params.id}`:null;u.clearMessages(e)},an=()=>{if(!f.value.id){r.ElMessage.warning(`请先保存文档`);return}c.value=!0},on=e=>{try{let t=typeof e==`string`?JSON.parse(e):e;Object.assign(f.value,t),t.textBoxes&&(D.value=t.textBoxes),t.arrowLines&&(L.value=t.arrowLines)}catch(e){console.error(`Version apply error:`,e)}};return(0,e.onMounted)(()=>{let t=localStorage.getItem(`editor-user-name`)||`用户${Math.floor(Math.random()*1e3)}`;localStorage.setItem(`editor-user-name`,t),u.setCurrentUser({id:Date.now(),name:t,color:`#409eff`}),ye({name:t}),$t().then(()=>{o.query.collab===`1`&&o.params.id&&Ne()}),(0,e.nextTick)(()=>{let e=Qe();X.value={...e},Ze.value={...e};let t=Ie.value;t&&new ResizeObserver(()=>en()).observe(t)})}),(0,e.onMounted)(()=>{document.addEventListener(`mousedown`,e=>{let t=e.target?.tagName;t!==`INPUT`&&t!==`TEXTAREA`&&!e.target?.closest(`.el-input`)&&document.activeElement?.blur()})}),(0,e.onMounted)(()=>{document.addEventListener(`keydown`,e=>{e.ctrlKey||e.metaKey?e.key===`z`?(e.preventDefault(),ne()):e.key===`y`?(e.preventDefault(),re()):e.key===`s`&&(e.preventDefault(),Yt()):(e.key===`Delete`||e.key===`Backspace`)&&p.value&&m.value===`category`&&lt(p.value.id)})}),(0,e.onBeforeUnmount)(()=>{Ae&&=(clearInterval(Ae),null),document.removeEventListener(`mousemove`,yt),document.removeEventListener(`mouseup`,bt),document.removeEventListener(`mousemove`,St),document.removeEventListener(`mouseup`,Ct),document.removeEventListener(`mousemove`,Pt),document.removeEventListener(`mouseup`,Ft),en&&window.removeEventListener(`resize`,en)}),(t,n)=>{let r=(0,e.resolveComponent)(`el-icon`),a=(0,e.resolveComponent)(`el-button`),o=(0,e.resolveComponent)(`el-input`),l=(0,e.resolveComponent)(`el-form-item`),d=(0,e.resolveComponent)(`el-option`),_=(0,e.resolveComponent)(`el-select`),v=(0,e.resolveComponent)(`el-slider`),y=(0,e.resolveComponent)(`el-color-picker`),b=(0,e.resolveComponent)(`el-radio-button`),x=(0,e.resolveComponent)(`el-radio-group`),S=(0,e.resolveComponent)(`el-form`),C=(0,e.resolveComponent)(`el-divider`),w=(0,e.resolveComponent)(`el-checkbox`),ee=(0,e.resolveComponent)(`el-tag`),T=(0,e.resolveComponent)(`el-dialog`);return(0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:(0,e.normalizeClass)([`fishbone-editor`,`theme-${(0,e.unref)(f).theme}`])},[(0,e.createVNode)(Re,{title:(0,e.unref)(f).title,"onUpdate:title":n[0]||=t=>(0,e.unref)(f).title=t,effect:(0,e.unref)(f).effect,"onUpdate:effect":n[1]||=t=>(0,e.unref)(f).effect=t,author:(0,e.unref)(f).author,"onUpdate:author":n[2]||=t=>(0,e.unref)(f).author=t,"current-theme":(0,e.unref)(f).theme,"current-diagram-style":(0,e.unref)(f).diagramStyle,zoom:J.value,"can-undo":(0,e.unref)(g)>0,"can-redo":(0,e.unref)(g)<(0,e.unref)(h).length-1,"can-add-cause":(0,e.unref)(f).categories.length>0,"is-connected":Ee.value,"online-users":(0,e.unref)(ge),"online-count":(0,e.unref)(ge).length,onBack:ot,onAddTextBox:ht,"can-add-arrow":nt.value,onAddArrow:Tt,onUndo:(0,e.unref)(ne),onRedo:(0,e.unref)(re),onZoomIn:Kt,onZoomOut:qt,onFitView:Jt,onSelectTheme:Rt,onSelectStyle:zt,onSave:Yt,onExport:Xt,onToggleCollab:Pe,onShareCollab:Fe,onAiGenerate:st,readonly:Oe.value&&!De.value,"show-history":!!(0,e.unref)(f).id,onHistory:an},null,8,[`title`,`effect`,`author`,`current-theme`,`current-diagram-style`,`zoom`,`can-undo`,`can-redo`,`can-add-cause`,`is-connected`,`online-users`,`online-count`,`can-add-arrow`,`onUndo`,`onRedo`,`readonly`,`show-history`]),(0,e.createElementVNode)(`div`,_n,[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`side-panel left-panel`,{collapsed:!et.value}])},[(0,e.createElementVNode)(`div`,{class:`panel-header`,onClick:n[3]||=e=>et.value=!et.value,style:{cursor:`pointer`}},[(0,e.createElementVNode)(`h4`,null,(0,e.toDisplayString)(et.value?`类别列表`:``),1),(0,e.createElementVNode)(`span`,vn,(0,e.toDisplayString)(et.value?`«`:`»`),1)]),(0,e.withDirectives)((0,e.createElementVNode)(`div`,yn,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(f).categories,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t.id,class:(0,e.normalizeClass)([`category-item`,{active:(0,e.unref)(p)?.id===t.id}]),onClick:n=>(0,e.unref)(te)(t,`category`)},[(0,e.createElementVNode)(`div`,{class:`category-color`,style:(0,e.normalizeStyle)({background:t.color})},null,4),(0,e.createElementVNode)(`span`,xn,(0,e.toDisplayString)(t.name),1),(0,e.createElementVNode)(`span`,Sn,(0,e.toDisplayString)(t.causes?.length||0),1),(0,e.createVNode)(a,{size:`small`,circle:``,class:`delete-btn`,onClick:(0,e.withModifiers)(e=>lt(t.id),[`stop`])},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(r,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Delete))]),_:1})]),_:1},8,[`onClick`])],10,bn))),128)),(0,e.createVNode)(a,{size:`small`,type:`primary`,class:`add-btn`,onClick:ct},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(r,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Plus))]),_:1}),n[65]||=(0,e.createTextVNode)(` 添加类别 `,-1)]),_:1})],512),[[e.vShow,et.value]])],2),(0,e.createElementVNode)(`div`,{class:`canvas-container`,ref_key:`canvasContainer`,ref:Ie,onMousedown:(0,e.withModifiers)(ie,[`self`])},[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`diagram-title-area`,{"selected-title":(0,e.unref)(m)===`title`}]),style:(0,e.normalizeStyle)(rt.value),onClick:(0,e.withModifiers)(at,[`stop`])},[(0,e.createElementVNode)(`h2`,{class:`diagram-title`,style:(0,e.normalizeStyle)(it.value)},(0,e.toDisplayString)((0,e.unref)(f).title||`鱼骨图分析`),5),(0,e.unref)(f).effect?((0,e.openBlock)(),(0,e.createElementBlock)(`p`,Cn,`问题:`+(0,e.toDisplayString)((0,e.unref)(f).effect),1)):(0,e.createCommentVNode)(``,!0)],6),(0,e.createElementVNode)(`div`,{class:`canvas-wrapper`,style:(0,e.normalizeStyle)({transform:`scale(${J.value/100})`}),onMousedown:(0,e.withModifiers)(ie,[`self`])},[(0,e.createVNode)(Qt,{ref_key:`fishboneRenderer`,ref:Le,categories:(0,e.unref)(f).categories,effect:(0,e.unref)(f).effect,theme:$e.value,"selected-node":(0,e.unref)(p),"style-tick":$.value,"diagram-style":(0,e.unref)(f).diagramStyle,width:`100%`,height:`100%`,onSelectNode:ft,onClearSelection:ie,onDeleteNode:Bt,onAddChild:Wt,onNodeDragged:Ut,onOpenMindmap:Zt},null,8,[`categories`,`effect`,`theme`,`selected-node`,`style-tick`,`diagram-style`]),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(D.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t.id,class:(0,e.normalizeClass)([`textbox-rect`,{selected:O.value===t.id,editing:k.value===t.id,"show-anchors":Ue.value||We.value}]),"data-textbox-id":t.id,style:(0,e.normalizeStyle)(pt(t)),onMousedown:(0,e.withModifiers)(e=>_t(t,e),[`stop`]),onDblclick:(0,e.withModifiers)(e=>vt(t),[`stop`])},[(0,e.withDirectives)((0,e.createElementVNode)(`textarea`,{class:`textbox-content`,"onUpdate:modelValue":e=>t.text=e,style:(0,e.normalizeStyle)(mt(t)),placeholder:`输入文字...`,readonly:k.value!==t.id,onBlur:e=>gt(t)},null,44,Tn),[[e.vModelText,t.text]]),O.value===t.id||Ue.value||We.value?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[(0,e.createElementVNode)(`div`,{class:`resize-handle resize-handle-se`,onMousedown:(0,e.withModifiers)(e=>xt(t,`se`,e),[`stop`])},null,40,En),(0,e.createElementVNode)(`div`,{class:`resize-handle resize-handle-sw`,onMousedown:(0,e.withModifiers)(e=>xt(t,`sw`,e),[`stop`])},null,40,Dn),(0,e.createElementVNode)(`div`,{class:`resize-handle resize-handle-ne`,onMousedown:(0,e.withModifiers)(e=>xt(t,`ne`,e),[`stop`])},null,40,On),(0,e.createElementVNode)(`div`,{class:`resize-handle resize-handle-nw`,onMousedown:(0,e.withModifiers)(e=>xt(t,`nw`,e),[`stop`])},null,40,kn),(0,e.createElementVNode)(`div`,{class:`textbox-delete-btn`,onClick:(0,e.withModifiers)(e=>wt(t.id),[`stop`])},`×`,8,An)],64)):(0,e.createCommentVNode)(``,!0)],46,wn))),128)),((0,e.openBlock)(),(0,e.createElementBlock)(`svg`,{ref_key:`arrowSvgRef`,ref:fe,class:`arrow-lines-svg`,xmlns:`http://www.w3.org/2000/svg`,viewBox:qe.value,preserveAspectRatio:`xMidYMid meet`,"pointer-events":`none`},[(0,e.createElementVNode)(`defs`,null,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(L.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`marker`,{key:`marker-end-`+t.id,id:`arrowhead-end-`+t.id,markerWidth:`10`,markerHeight:`7`,refX:`9`,refY:`3.5`,orient:`auto`},[(0,e.createElementVNode)(`polygon`,{points:`0 0, 10 3.5, 0 7`,fill:t.style.lineColor},null,8,Nn)],8,Mn))),128)),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(L.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`marker`,{key:`marker-start-`+t.id,id:`arrowhead-start-`+t.id,markerWidth:`10`,markerHeight:`7`,refX:`1`,refY:`3.5`,orient:`auto`},[(0,e.createElementVNode)(`polygon`,{points:`10 0, 0 3.5, 10 7`,fill:t.style.lineColor},null,8,Fn)],8,Pn))),128))]),R.value||z.value||B.value||We.value?((0,e.openBlock)(),(0,e.createElementBlock)(`g`,In,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(Ke.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:`anchors-`+t.id},[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(Ot(t),(r,i)=>((0,e.openBlock)(),(0,e.createElementBlock)(`circle`,{key:`anchor-`+i,cx:r.x,cy:r.y,r:`3`,fill:`#409EFF`,stroke:`white`,"stroke-width":`1`,opacity:`0.6`,"pointer-events":`auto`,style:{cursor:`crosshair`},onMouseenter:e=>Ge.value=t.id,onMouseleave:n[4]||=e=>Ge.value=null,onMousedown:(0,e.withModifiers)(e=>jt(t,`node`,`border-`+i,e),[`stop`])},null,40,Ln))),128))],64))),128)),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(D.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:`tb-anchors-`+t.id},[R.value||z.value||B.value||We.value?((0,e.openBlock)(),(0,e.createElementBlock)(`g`,Rn,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(Je(t),(r,i)=>((0,e.openBlock)(),(0,e.createElementBlock)(`circle`,{key:`tb-anchor-`+i,cx:r.x,cy:r.y,r:`4`,fill:`#409EFF`,stroke:`white`,"stroke-width":`1`,opacity:`0.7`,"pointer-events":`auto`,style:{cursor:`crosshair`},onMouseenter:e=>Ge.value=t.id,onMouseleave:n[5]||=e=>Ge.value=null,onMousedown:(0,e.withModifiers)(e=>jt(t,`textbox`,`border-`+i,e),[`stop`])},null,40,zn))),128))])):(0,e.createCommentVNode)(``,!0)],64))),128))])):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(L.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`g`,{key:t.id},[(0,e.createElementVNode)(`path`,{d:Dt(t),fill:`none`,stroke:R.value===t.id?`#409EFF`:t.style.lineColor,"stroke-width":t.style.lineWidth,"stroke-dasharray":t.style.lineStyle===`dashed`?`8,4`:`none`,"marker-end":t.style.arrowEnd?`url(#arrowhead-end-${t.id})`:``,"marker-start":t.style.arrowStart?`url(#arrowhead-start-${t.id})`:``,"pointer-events":`none`},null,8,Bn),(0,e.createElementVNode)(`path`,{d:Dt(t),fill:`none`,stroke:`rgba(0,0,0,0.01)`,"stroke-width":Math.max(t.style.lineWidth*3,12),"pointer-events":`auto`,style:{cursor:`move`},onMousedown:(0,e.withModifiers)(e=>It(t,e),[`stop`])},null,40,Vn),R.value===t.id?((0,e.openBlock)(),(0,e.createElementBlock)(`circle`,{key:0,cx:t.startX,cy:t.startY,r:`6`,fill:`#409EFF`,"pointer-events":`auto`,style:{cursor:`move`},onMousedown:(0,e.withModifiers)(e=>Nt(t,`start`,e),[`stop`])},null,40,Hn)):(0,e.createCommentVNode)(``,!0),R.value===t.id?((0,e.openBlock)(),(0,e.createElementBlock)(`circle`,{key:1,cx:t.endX,cy:t.endY,r:`6`,fill:`#409EFF`,"pointer-events":`auto`,style:{cursor:`move`},onMousedown:(0,e.withModifiers)(e=>Nt(t,`end`,e),[`stop`])},null,40,Un)):(0,e.createCommentVNode)(``,!0),R.value===t.id?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:2},[(0,e.createElementVNode)(`circle`,{cx:t.startX,cy:t.startY,r:`4`,fill:`#409EFF`,"pointer-events":`none`},null,8,Wn),(0,e.createElementVNode)(`circle`,{cx:t.endX,cy:t.endY,r:`4`,fill:`#409EFF`,"pointer-events":`none`},null,8,Gn),t.style.lineType===`curve`?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[(0,e.createElementVNode)(`line`,{x1:(t.startX+t.endX)/2,y1:(t.startY+t.endY)/2,x2:t.cpX,y2:t.cpY,stroke:`#409EFF`,"stroke-width":`1`,"stroke-dasharray":`4,3`,opacity:`0.5`,"pointer-events":`none`},null,8,Kn),(0,e.createElementVNode)(`line`,{x1:t.startX,y1:t.startY,x2:t.cpX,y2:t.cpY,stroke:`#409EFF`,"stroke-width":`1`,"stroke-dasharray":`4,3`,opacity:`0.3`,"pointer-events":`none`},null,8,qn),(0,e.createElementVNode)(`line`,{x1:t.endX,y1:t.endY,x2:t.cpX,y2:t.cpY,stroke:`#409EFF`,"stroke-width":`1`,"stroke-dasharray":`4,3`,opacity:`0.3`,"pointer-events":`none`},null,8,Jn),(0,e.createElementVNode)(`circle`,{cx:t.cpX,cy:t.cpY,r:`5`,fill:`#409EFF`,stroke:`white`,"stroke-width":`2`,style:{cursor:`grab`},onMousedown:(0,e.withModifiers)(e=>Lt(t,e),[`stop`])},null,40,Yn)],64)):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`g`,{transform:`translate(${(t.startX+t.endX)/2}, ${(t.startY+t.endY)/2-16})`,style:{cursor:`pointer`},onClick:(0,e.withModifiers)(e=>Et(t.id),[`stop`])},[...n[66]||=[(0,e.createElementVNode)(`circle`,{r:`9`,fill:`#F56C6C`,opacity:`0.9`},null,-1),(0,e.createElementVNode)(`line`,{x1:`-4`,y1:`-4`,x2:`4`,y2:`4`,stroke:`white`,"stroke-width":`2`,"stroke-linecap":`round`},null,-1),(0,e.createElementVNode)(`line`,{x1:`4`,y1:`-4`,x2:`-4`,y2:`4`,stroke:`white`,"stroke-width":`2`,"stroke-linecap":`round`},null,-1)]],8,Xn)],64)):(0,e.createCommentVNode)(``,!0)]))),128))],8,jn))],36)],544),(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`side-panel right-panel`,{collapsed:!tt.value}])},[(0,e.createElementVNode)(`div`,{class:`panel-header`,onClick:n[6]||=e=>tt.value=!tt.value,style:{cursor:`pointer`}},[(0,e.createElementVNode)(`h4`,null,(0,e.toDisplayString)(tt.value?(0,e.unref)(m)===`title`?`标题设置`:Z.value?`文本框设置`:Y.value?`箭头线设置`:(0,e.unref)(m)?`节点详情`:`属性面板`:``),1)]),(0,e.withDirectives)((0,e.createElementVNode)(`div`,Zn,[(0,e.unref)(p)?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[(0,e.unref)(m)===`title`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Qn,[(0,e.createVNode)(S,{"label-position":`top`,size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(l,{label:`标题文本`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(o,{modelValue:(0,e.unref)(f).title,"onUpdate:modelValue":n[7]||=t=>(0,e.unref)(f).title=t,tabindex:`-1`},null,8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`字体`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(_,{modelValue:(0,e.unref)(f).titleStyle.fontFamily,"onUpdate:modelValue":n[8]||=t=>(0,e.unref)(f).titleStyle.fontFamily=t,style:{width:`100%`}},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(d,{label:`微软雅黑`,value:`Microsoft YaHei`}),(0,e.createVNode)(d,{label:`宋体`,value:`SimSun`}),(0,e.createVNode)(d,{label:`黑体`,value:`SimHei`}),(0,e.createVNode)(d,{label:`楷体`,value:`KaiTi`}),(0,e.createVNode)(d,{label:`Arial`,value:`Arial`}),(0,e.createVNode)(d,{label:`Times New Roman`,value:`Times New Roman`})]),_:1},8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`字号`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(v,{modelValue:(0,e.unref)(f).titleStyle.fontSize,"onUpdate:modelValue":n[9]||=t=>(0,e.unref)(f).titleStyle.fontSize=t,min:12,max:40,step:1,"show-input":``},null,8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`文字颜色`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(y,{modelValue:(0,e.unref)(f).titleStyle.color,"onUpdate:modelValue":n[10]||=t=>(0,e.unref)(f).titleStyle.color=t},null,8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`标题背景色`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(y,{modelValue:(0,e.unref)(f).titleStyle.bgColor,"onUpdate:modelValue":n[11]||=t=>(0,e.unref)(f).titleStyle.bgColor=t},null,8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`背景透明度`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(v,{modelValue:(0,e.unref)(f).titleStyle.bgOpacity,"onUpdate:modelValue":n[12]||=t=>(0,e.unref)(f).titleStyle.bgOpacity=t,min:0,max:100,step:5,"show-input":``},null,8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`对齐方式`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(x,{modelValue:(0,e.unref)(f).titleStyle.textAlign,"onUpdate:modelValue":n[13]||=t=>(0,e.unref)(f).titleStyle.textAlign=t},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(b,{value:`left`},{default:(0,e.withCtx)(()=>[...n[67]||=[(0,e.createTextVNode)(`左`,-1)]]),_:1}),(0,e.createVNode)(b,{value:`center`},{default:(0,e.withCtx)(()=>[...n[68]||=[(0,e.createTextVNode)(`中`,-1)]]),_:1}),(0,e.createVNode)(b,{value:`right`},{default:(0,e.withCtx)(()=>[...n[69]||=[(0,e.createTextVNode)(`右`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),_:1})]),_:1})])):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,$n,[(0,e.createVNode)(S,{"label-position":`top`,size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(l,{label:(0,e.unref)(m)===`category`?`类别名称`:`节点文本`},{default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`input`,{class:`node-name-input`,value:(0,e.unref)(m)===`category`?(0,e.unref)(p).name:(0,e.unref)(p).text,onInput:n[14]||=t=>(0,e.unref)(m)===`category`?(0,e.unref)(p).name=t.target.value:(0,e.unref)(p).text=t.target.value,onFocus:n[15]||=e=>e.target.select(),spellcheck:`false`},null,40,er)]),_:1},8,[`label`]),(0,e.unref)(p).style?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[(0,e.createVNode)(C,{"content-position":`left`},{default:(0,e.withCtx)(()=>[...n[70]||=[(0,e.createTextVNode)(`外观`,-1)]]),_:1}),(0,e.createVNode)(l,{label:`节点颜色`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(y,{modelValue:(0,e.unref)(p).color,"onUpdate:modelValue":[n[16]||=t=>(0,e.unref)(p).color=t,n[17]||=e=>$.value++]},null,8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`节点透明度`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(v,{modelValue:(0,e.unref)(p).style.opacity,"onUpdate:modelValue":[n[18]||=t=>(0,e.unref)(p).style.opacity=t,n[19]||=e=>$.value++],min:0,max:100,step:5,"show-input":``},null,8,[`modelValue`])]),_:1}),(0,e.createVNode)(C,{"content-position":`left`},{default:(0,e.withCtx)(()=>[...n[71]||=[(0,e.createTextVNode)(`边框`,-1)]]),_:1}),(0,e.createVNode)(l,{label:`边框颜色`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(y,{modelValue:(0,e.unref)(p).style.borderColor,"onUpdate:modelValue":[n[20]||=t=>(0,e.unref)(p).style.borderColor=t,n[21]||=e=>$.value++]},null,8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`边框样式`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(x,{modelValue:(0,e.unref)(p).style.borderStyle,"onUpdate:modelValue":n[22]||=t=>(0,e.unref)(p).style.borderStyle=t,onChange:n[23]||=e=>$.value++},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(b,{value:`solid`},{default:(0,e.withCtx)(()=>[...n[72]||=[(0,e.createTextVNode)(`实线`,-1)]]),_:1}),(0,e.createVNode)(b,{value:`dashed`},{default:(0,e.withCtx)(()=>[...n[73]||=[(0,e.createTextVNode)(`虚线`,-1)]]),_:1}),(0,e.createVNode)(b,{value:`none`},{default:(0,e.withCtx)(()=>[...n[74]||=[(0,e.createTextVNode)(`无边框`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`边框宽度`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(v,{modelValue:(0,e.unref)(p).style.borderWidth,"onUpdate:modelValue":[n[24]||=t=>(0,e.unref)(p).style.borderWidth=t,n[25]||=e=>$.value++],min:0,max:5,step:.5,"show-input":``},null,8,[`modelValue`])]),_:1}),(0,e.createVNode)(C,{"content-position":`left`},{default:(0,e.withCtx)(()=>[...n[75]||=[(0,e.createTextVNode)(`文字`,-1)]]),_:1}),(0,e.createVNode)(l,{label:`文字颜色`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(y,{modelValue:(0,e.unref)(p).style.textColor,"onUpdate:modelValue":[n[26]||=t=>(0,e.unref)(p).style.textColor=t,n[27]||=e=>$.value++]},null,8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`字号`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(v,{modelValue:(0,e.unref)(p).style.fontSize,"onUpdate:modelValue":[n[28]||=t=>(0,e.unref)(p).style.fontSize=t,n[29]||=e=>$.value++],min:8,max:24,step:1,"show-input":``},null,8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`字体`},{default:(0,e.withCtx)(()=>[(0,e.withDirectives)((0,e.createElementVNode)(`select`,{class:`node-font-select`,"onUpdate:modelValue":n[30]||=t=>(0,e.unref)(p).style.fontFamily=t,onChange:n[31]||=e=>$.value++},[...n[76]||=[(0,e.createElementVNode)(`option`,{value:`Microsoft YaHei`},`微软雅黑`,-1),(0,e.createElementVNode)(`option`,{value:`SimSun`},`宋体`,-1),(0,e.createElementVNode)(`option`,{value:`SimHei`},`黑体`,-1),(0,e.createElementVNode)(`option`,{value:`Arial`},`Arial`,-1)]],544),[[e.vModelSelect,(0,e.unref)(p).style.fontFamily]])]),_:1}),(0,e.createVNode)(l,{label:`对齐方式`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(x,{modelValue:(0,e.unref)(p).style.textAlign,"onUpdate:modelValue":n[32]||=t=>(0,e.unref)(p).style.textAlign=t,onChange:n[33]||=e=>$.value++},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(b,{value:`left`},{default:(0,e.withCtx)(()=>[...n[77]||=[(0,e.createTextVNode)(`左`,-1)]]),_:1}),(0,e.createVNode)(b,{value:`center`},{default:(0,e.withCtx)(()=>[...n[78]||=[(0,e.createTextVNode)(`中`,-1)]]),_:1}),(0,e.createVNode)(b,{value:`right`},{default:(0,e.withCtx)(()=>[...n[79]||=[(0,e.createTextVNode)(`右`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),_:1}),(0,e.createVNode)(C,{"content-position":`left`},{default:(0,e.withCtx)(()=>[...n[80]||=[(0,e.createTextVNode)(`连接线`,-1)]]),_:1}),(0,e.createVNode)(l,{label:`连接线颜色`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(y,{modelValue:(0,e.unref)(p).style.lineColor,"onUpdate:modelValue":[n[34]||=t=>(0,e.unref)(p).style.lineColor=t,n[35]||=e=>$.value++]},null,8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`连接线透明度`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(v,{modelValue:(0,e.unref)(p).style.lineOpacity,"onUpdate:modelValue":[n[36]||=t=>(0,e.unref)(p).style.lineOpacity=t,n[37]||=e=>$.value++],min:0,max:100,step:5,"show-input":``},null,8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`连接线类型`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(x,{modelValue:(0,e.unref)(p).style.lineStyle,"onUpdate:modelValue":n[38]||=t=>(0,e.unref)(p).style.lineStyle=t,onChange:n[39]||=e=>$.value++},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(b,{value:`solid`},{default:(0,e.withCtx)(()=>[...n[81]||=[(0,e.createTextVNode)(`实线`,-1)]]),_:1}),(0,e.createVNode)(b,{value:`dashed`},{default:(0,e.withCtx)(()=>[...n[82]||=[(0,e.createTextVNode)(`虚线`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),_:1})],64)):(0,e.createCommentVNode)(``,!0),(0,e.unref)(m)===`cause`?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:1},[(0,e.createVNode)(C,{"content-position":`left`},{default:(0,e.withCtx)(()=>[...n[83]||=[(0,e.createTextVNode)(`措施`,-1)]]),_:1}),(0,e.createElementVNode)(`div`,tr,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(p).children,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t.id,class:`child-item`},[(0,e.createVNode)(o,{modelValue:t.text,"onUpdate:modelValue":e=>t.text=e,size:`small`,tabindex:`-1`},null,8,[`modelValue`,`onUpdate:modelValue`]),(0,e.createVNode)(a,{size:`small`,circle:``,onClick:e=>dt(t.id)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(r,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Delete))]),_:1})]),_:1},8,[`onClick`])]))),128)),(0,e.createVNode)(a,{size:`small`,onClick:ut},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(r,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Plus))]),_:1}),n[84]||=(0,e.createTextVNode)(` 添加措施 `,-1)]),_:1})])],64)):(0,e.createCommentVNode)(``,!0)]),_:1})]))],64)):(0,e.createCommentVNode)(``,!0),Z.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,nr,[(0,e.createVNode)(S,{"label-position":`top`,size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(C,{"content-position":`left`},{default:(0,e.withCtx)(()=>[...n[85]||=[(0,e.createTextVNode)(`文本框设置`,-1)]]),_:1}),(0,e.createVNode)(l,{label:`背景颜色`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(y,{modelValue:Z.value.style.bgColor,"onUpdate:modelValue":n[40]||=e=>Z.value.style.bgColor=e},null,8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`背景透明度`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(v,{modelValue:Z.value.style.bgOpacity,"onUpdate:modelValue":n[41]||=e=>Z.value.style.bgOpacity=e,min:0,max:100,step:5,"show-input":``},null,8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`字体`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(_,{modelValue:Z.value.style.fontFamily,"onUpdate:modelValue":n[42]||=e=>Z.value.style.fontFamily=e,style:{width:`100%`}},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(d,{label:`微软雅黑`,value:`Microsoft YaHei`}),(0,e.createVNode)(d,{label:`宋体`,value:`SimSun`}),(0,e.createVNode)(d,{label:`黑体`,value:`SimHei`}),(0,e.createVNode)(d,{label:`楷体`,value:`KaiTi`}),(0,e.createVNode)(d,{label:`Arial`,value:`Arial`}),(0,e.createVNode)(d,{label:`Times New Roman`,value:`Times New Roman`})]),_:1},8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`字号`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(v,{modelValue:Z.value.style.fontSize,"onUpdate:modelValue":n[43]||=e=>Z.value.style.fontSize=e,min:10,max:36,step:1,"show-input":``},null,8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`字体颜色`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(y,{modelValue:Z.value.style.textColor,"onUpdate:modelValue":n[44]||=e=>Z.value.style.textColor=e},null,8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`对齐方式`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(x,{modelValue:Z.value.style.textAlign,"onUpdate:modelValue":n[45]||=e=>Z.value.style.textAlign=e},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(b,{value:`left`},{default:(0,e.withCtx)(()=>[...n[86]||=[(0,e.createTextVNode)(`左对齐`,-1)]]),_:1}),(0,e.createVNode)(b,{value:`center`},{default:(0,e.withCtx)(()=>[...n[87]||=[(0,e.createTextVNode)(`居中`,-1)]]),_:1}),(0,e.createVNode)(b,{value:`right`},{default:(0,e.withCtx)(()=>[...n[88]||=[(0,e.createTextVNode)(`右对齐`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`字体样式`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(_,{modelValue:Z.value.style.fontStyle,"onUpdate:modelValue":n[46]||=e=>Z.value.style.fontStyle=e,style:{width:`100%`}},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(d,{label:`正常`,value:`normal`}),(0,e.createVNode)(d,{label:`粗体`,value:`bold`}),(0,e.createVNode)(d,{label:`斜体`,value:`italic`}),(0,e.createVNode)(d,{label:`粗斜体`,value:`bold italic`}),(0,e.createVNode)(d,{label:`下划线`,value:`underline`}),(0,e.createVNode)(d,{label:`删除线`,value:`line-through`})]),_:1},8,[`modelValue`])]),_:1})]),_:1})])):(0,e.createCommentVNode)(``,!0),Y.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,rr,[(0,e.createVNode)(S,{"label-position":`top`,size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(C,{"content-position":`left`},{default:(0,e.withCtx)(()=>[...n[89]||=[(0,e.createTextVNode)(`箭头线设置`,-1)]]),_:1}),(0,e.createVNode)(l,{label:`线段颜色`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(y,{modelValue:Y.value.style.lineColor,"onUpdate:modelValue":n[47]||=e=>Y.value.style.lineColor=e},null,8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`线段粗细`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(v,{modelValue:Y.value.style.lineWidth,"onUpdate:modelValue":n[48]||=e=>Y.value.style.lineWidth=e,min:1,max:10,step:1,"show-input":``},null,8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`线段样式`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(x,{modelValue:Y.value.style.lineStyle,"onUpdate:modelValue":n[49]||=e=>Y.value.style.lineStyle=e},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(b,{value:`solid`},{default:(0,e.withCtx)(()=>[...n[90]||=[(0,e.createTextVNode)(`实线`,-1)]]),_:1}),(0,e.createVNode)(b,{value:`dashed`},{default:(0,e.withCtx)(()=>[...n[91]||=[(0,e.createTextVNode)(`虚线`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`线段类型`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(x,{modelValue:Y.value.style.lineType,"onUpdate:modelValue":n[50]||=e=>Y.value.style.lineType=e},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(b,{value:`straight`},{default:(0,e.withCtx)(()=>[...n[92]||=[(0,e.createTextVNode)(`直线`,-1)]]),_:1}),(0,e.createVNode)(b,{value:`curve`},{default:(0,e.withCtx)(()=>[...n[93]||=[(0,e.createTextVNode)(`曲线`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),_:1}),(0,e.createVNode)(l,{label:`箭头方向`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(w,{modelValue:Y.value.style.arrowStart,"onUpdate:modelValue":n[51]||=e=>Y.value.style.arrowStart=e},{default:(0,e.withCtx)(()=>[...n[94]||=[(0,e.createTextVNode)(`起点箭头`,-1)]]),_:1},8,[`modelValue`]),(0,e.createVNode)(w,{modelValue:Y.value.style.arrowEnd,"onUpdate:modelValue":n[52]||=e=>Y.value.style.arrowEnd=e},{default:(0,e.withCtx)(()=>[...n[95]||=[(0,e.createTextVNode)(`终点箭头`,-1)]]),_:1},8,[`modelValue`])]),_:1}),(0,e.createVNode)(C,{"content-position":`left`},{default:(0,e.withCtx)(()=>[...n[96]||=[(0,e.createTextVNode)(`连接状态`,-1)]]),_:1}),(0,e.createVNode)(l,{label:`起点连接`},{default:(0,e.withCtx)(()=>[Y.value.startConnectId?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ir,[(0,e.createVNode)(ee,{size:`small`,type:`success`},{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(Y.value.startConnectType===`node`?`节点`:`文本框`),1)]),_:1}),(0,e.createVNode)(a,{size:`small`,text:``,type:`danger`,onClick:n[53]||=e=>{Y.value.startConnectId=null,Y.value.startConnectType=null,Y.value.startAnchor=null}},{default:(0,e.withCtx)(()=>[...n[97]||=[(0,e.createTextVNode)(`断开`,-1)]]),_:1})])):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,ar,`未连接(点击锚点连接)`))]),_:1}),(0,e.createVNode)(l,{label:`终点连接`},{default:(0,e.withCtx)(()=>[Y.value.endConnectId?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,or,[(0,e.createVNode)(ee,{size:`small`,type:`success`},{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(Y.value.endConnectType===`node`?`节点`:`文本框`),1)]),_:1}),(0,e.createVNode)(a,{size:`small`,text:``,type:`danger`,onClick:n[54]||=e=>{Y.value.endConnectId=null,Y.value.endConnectType=null,Y.value.endAnchor=null}},{default:(0,e.withCtx)(()=>[...n[98]||=[(0,e.createTextVNode)(`断开`,-1)]]),_:1})])):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,sr,`未连接(点击锚点连接)`))]),_:1}),(0,e.createVNode)(l,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)(a,{type:`danger`,size:`small`,onClick:n[55]||=e=>Et(Y.value.id)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(r,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Delete))]),_:1}),n[99]||=(0,e.createTextVNode)(` 删除箭头线 `,-1)]),_:1})]),_:1})]),_:1})])):(0,e.createCommentVNode)(``,!0),!(0,e.unref)(p)&&!Z.value&&!Y.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,cr,[(0,e.createVNode)(r,{size:48,color:`#c0c4cc`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.InfoFilled))]),_:1}),n[100]||=(0,e.createElementVNode)(`p`,null,`点击节点或标题进行编辑`,-1)])):(0,e.createCommentVNode)(``,!0)],512),[[e.vShow,tt.value]])],2)]),(0,e.createVNode)(T,{modelValue:Vt.value,"onUpdate:modelValue":n[59]||=e=>Vt.value=e,title:`添加子节点`,width:`400px`,"close-on-click-modal":!1},{footer:(0,e.withCtx)(()=>[(0,e.createVNode)(a,{onClick:n[58]||=e=>Vt.value=!1},{default:(0,e.withCtx)(()=>[...n[102]||=[(0,e.createTextVNode)(`取消`,-1)]]),_:1}),(0,e.createVNode)(a,{type:`primary`,onClick:Gt},{default:(0,e.withCtx)(()=>[...n[103]||=[(0,e.createTextVNode)(`确定`,-1)]]),_:1})]),default:(0,e.withCtx)(()=>[(0,e.createVNode)(S,{"label-position":`top`,size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(l,{label:`子节点名称`},{default:(0,e.withCtx)(()=>[(0,e.withDirectives)((0,e.createElementVNode)(`input`,{class:`node-name-input`,"onUpdate:modelValue":n[56]||=e=>Ht.value.text=e,placeholder:`请输入名称`},null,512),[[e.vModelText,Ht.value.text]])]),_:1}),(0,e.createVNode)(l,{label:`添加方向`},{default:(0,e.withCtx)(()=>[(0,e.withDirectives)((0,e.createElementVNode)(`select`,{class:`node-font-select`,"onUpdate:modelValue":n[57]||=e=>Ht.value.direction=e},[...n[101]||=[(0,e.createElementVNode)(`option`,{value:`left`},`左侧`,-1),(0,e.createElementVNode)(`option`,{value:`right`},`右侧`,-1)]],512),[[e.vModelSelect,Ht.value.direction]])]),_:1})]),_:1})]),_:1},8,[`modelValue`]),(0,e.createVNode)(un,{modelValue:ze.value,"onUpdate:modelValue":n[60]||=e=>ze.value=e,"svg-element":Ve.value,"fishbone-data":(0,e.unref)(f),"initial-format":He.value,onExported:Q},null,8,[`modelValue`,`svg-element`,`fishbone-data`,`initial-format`]),(0,e.createVNode)(a,{class:`ai-chat-fab`,type:s.value?`primary`:`default`,circle:``,size:`large`,onClick:n[61]||=e=>s.value=!s.value,title:`AI助手`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)(r,null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.Monitor))]),_:1})]),_:1},8,[`type`]),(0,e.createVNode)(ce,{visible:s.value,messages:(0,e.unref)(u).messages.value,loading:(0,e.unref)(u).loading.value,"is-collab":(0,e.unref)(u).isCollabMode.value,"collab-users":(0,e.unref)(u).collabUsers.value,"current-user":(0,e.unref)(u).currentUser.value,"is-owner":De.value,onSend:nn,onClose:n[62]||=e=>s.value=!1,"unread-mention":(0,e.unref)(u).unreadMention.value,onClearUnread:n[63]||=t=>(0,e.unref)(u).clearUnreadMention(),onClear:rn},null,8,[`visible`,`messages`,`loading`,`is-collab`,`collab-users`,`current-user`,`is-owner`,`unread-mention`]),(0,e.createVNode)(H,{modelValue:c.value,"onUpdate:modelValue":n[64]||=e=>c.value=e,"document-id":(0,e.unref)(f).id,onApply:on},null,8,[`modelValue`,`document-id`])],2)}}},[[`__scopeId`,`data-v-4ae43629`]]);return(0,e.defineComponent)({name:`YourCompanyFishbone`,props:{docId:{type:[Number,String],default:null},apiBase:{type:String,default:`/api`},wsUrl:{type:String,default:``},user:{type:Object,default:()=>({id:``,name:``,color:``})},roomId:{type:String,default:``}},setup(n,{slots:r}){return()=>(0,e.h)(`div`,{class:`yourcompany-fishbone-wrapper`,style:`position:relative`},[(0,e.h)(ur,{...n}),(0,e.h)(t.BrandWatermark)])}})});