ai-word-editor 0.0.55 → 0.0.56

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.
@@ -1 +1 @@
1
- .ProseMirror span.comment-mark,.umo-editor span.comment-mark{border-bottom:2px solid #fbbf24;background-color:transparent;border-radius:0;cursor:text;transition:border-bottom-color .15s}.ProseMirror span.comment-mark:hover,.umo-editor span.comment-mark:hover{border-bottom-color:#facc15}.ProseMirror span.comment-mark--active,.umo-editor span.comment-mark--active{background-color:transparent;border-bottom-color:#f59e0b}.comment-panel[data-v-10b7616a]{box-sizing:border-box;width:100%;min-width:0;max-width:100%;height:100%;border-left:1px solid #e5e7eb;background:#fafafa;display:flex;flex-direction:column;overflow:hidden}.comment-panel__header[data-v-10b7616a]{padding:14px 16px 10px;border-bottom:1px solid #e5e7eb;background:#fff}.comment-panel__title[data-v-10b7616a]{margin:0;font-size:14px;font-weight:600;color:#374151;display:flex;align-items:center;gap:6px}.comment-panel__badge[data-v-10b7616a]{background:#f59e0b;color:#fff;border-radius:10px;font-size:11px;padding:1px 6px;font-weight:500}.comment-panel__empty[data-v-10b7616a]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#9ca3af;gap:4px;padding:24px;text-align:center}.comment-panel__empty p[data-v-10b7616a]{margin:0;font-size:13px}.comment-panel__empty-icon[data-v-10b7616a]{font-size:32px;margin-bottom:8px;opacity:.5}.comment-panel__empty-hint[data-v-10b7616a]{font-size:12px!important;color:#d1d5db}.comment-panel__list[data-v-10b7616a]{list-style:none;margin:0;padding:8px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:8px}.comment-item[data-v-10b7616a]{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:10px 12px;cursor:pointer;transition:border-color .15s,box-shadow .15s}.comment-item[data-v-10b7616a]:hover{border-color:#fbbf24;box-shadow:0 1px 4px #fbbf2426}.comment-item--active[data-v-10b7616a]{border-color:#f59e0b;box-shadow:0 0 0 2px #f59e0b33}.comment-item--resolved[data-v-10b7616a]{opacity:.55}.comment-item--resolved .comment-item__note[data-v-10b7616a]{text-decoration:line-through;color:#9ca3af}.comment-item__quote[data-v-10b7616a]{font-size:12px;color:#6b7280;background:#fef9c3;border-left:3px solid #fbbf24;padding:4px 8px;border-radius:0 4px 4px 0;margin-bottom:6px;line-height:1.4}.comment-item__quote-icon[data-v-10b7616a]{color:#fbbf24;margin-right:2px}.comment-item--c0 .comment-item__quote[data-v-10b7616a]{background:#fef3c7cc;border-left-color:#f97316}.comment-item--c0 .comment-item__quote-icon[data-v-10b7616a]{color:#f97316}.comment-item--c1 .comment-item__quote[data-v-10b7616a]{background:#d1fae5d9;border-left-color:#22c55e}.comment-item--c1 .comment-item__quote-icon[data-v-10b7616a]{color:#22c55e}.comment-item--c2 .comment-item__quote[data-v-10b7616a]{background:#dbeafed9;border-left-color:#3b82f6}.comment-item--c2 .comment-item__quote-icon[data-v-10b7616a]{color:#3b82f6}.comment-item--c3 .comment-item__quote[data-v-10b7616a]{background:#ede9fee6;border-left-color:#a855f7}.comment-item--c3 .comment-item__quote-icon[data-v-10b7616a]{color:#a855f7}.comment-item--c4 .comment-item__quote[data-v-10b7616a]{background:#fce7f3e6;border-left-color:#ec4899}.comment-item--c4 .comment-item__quote-icon[data-v-10b7616a]{color:#ec4899}.comment-item--c5 .comment-item__quote[data-v-10b7616a]{background:#ccfbf1d9;border-left-color:#14b8a6}.comment-item--c5 .comment-item__quote-icon[data-v-10b7616a]{color:#14b8a6}.comment-item--c6 .comment-item__quote[data-v-10b7616a]{background:#fef9c3e6;border-left-color:#eab308}.comment-item--c6 .comment-item__quote-icon[data-v-10b7616a]{color:#eab308}.comment-item--c7 .comment-item__quote[data-v-10b7616a]{background:#ffe4e6e6;border-left-color:#f43f5e}.comment-item--c7 .comment-item__quote-icon[data-v-10b7616a]{color:#f43f5e}.comment-item--c8 .comment-item__quote[data-v-10b7616a]{background:#e0e7ffe6;border-left-color:#6366f1}.comment-item--c8 .comment-item__quote-icon[data-v-10b7616a]{color:#6366f1}.comment-item--c9 .comment-item__quote[data-v-10b7616a]{background:#ecfdc8e6;border-left-color:#84cc16}.comment-item--c9 .comment-item__quote-icon[data-v-10b7616a]{color:#84cc16}.comment-item--c10 .comment-item__quote[data-v-10b7616a]{background:#cffafee6;border-left-color:#06b6d4}.comment-item--c10 .comment-item__quote-icon[data-v-10b7616a]{color:#06b6d4}.comment-item--c11 .comment-item__quote[data-v-10b7616a]{background:#d1fae5d9;border-left-color:#10b981}.comment-item--c11 .comment-item__quote-icon[data-v-10b7616a]{color:#10b981}.comment-item--c12 .comment-item__quote[data-v-10b7616a]{background:#ede9fee6;border-left-color:#8b5cf6}.comment-item--c12 .comment-item__quote-icon[data-v-10b7616a]{color:#8b5cf6}.comment-item--c13 .comment-item__quote[data-v-10b7616a]{background:#faf0ffe6;border-left-color:#d946ef}.comment-item--c13 .comment-item__quote-icon[data-v-10b7616a]{color:#d946ef}.comment-item--c14 .comment-item__quote[data-v-10b7616a]{background:#e0f2fee6;border-left-color:#0ea5e9}.comment-item--c14 .comment-item__quote-icon[data-v-10b7616a]{color:#0ea5e9}.comment-item--c15 .comment-item__quote[data-v-10b7616a]{background:#ffedd5e6;border-left-color:#ea580c}.comment-item--c15 .comment-item__quote-icon[data-v-10b7616a]{color:#ea580c}.comment-item--c16 .comment-item__quote[data-v-10b7616a]{background:#fefce8e6;border-left-color:#ca8a04}.comment-item--c16 .comment-item__quote-icon[data-v-10b7616a]{color:#ca8a04}.comment-item--c17 .comment-item__quote[data-v-10b7616a]{background:#fee2e2e6;border-left-color:#dc2626}.comment-item--c17 .comment-item__quote-icon[data-v-10b7616a]{color:#dc2626}.comment-item--c18 .comment-item__quote[data-v-10b7616a]{background:#ccfbf1d9;border-left-color:#0d9488}.comment-item--c18 .comment-item__quote-icon[data-v-10b7616a]{color:#0d9488}.comment-item--c19 .comment-item__quote[data-v-10b7616a]{background:#f1f5f9e6;border-left-color:#64748b}.comment-item--c19 .comment-item__quote-icon[data-v-10b7616a]{color:#64748b}.comment-item__note[data-v-10b7616a]{font-size:13px;color:#374151;line-height:1.5;margin-bottom:6px;word-break:break-word}.comment-item__meta[data-v-10b7616a]{display:flex;justify-content:space-between;font-size:11px;color:#9ca3af;margin-bottom:8px}.comment-item__author[data-v-10b7616a]{font-weight:500}.comment-item__actions[data-v-10b7616a]{display:flex;gap:6px;justify-content:flex-end}.comment-btn[data-v-10b7616a]{border:none;border-radius:4px;padding:3px 8px;font-size:11px;cursor:pointer;transition:background .15s}.comment-btn--resolve[data-v-10b7616a]{background:#ecfdf5;color:#059669}.comment-btn--resolve[data-v-10b7616a]:hover{background:#d1fae5}.comment-btn--delete[data-v-10b7616a]{background:#fef2f2;color:#dc2626}.comment-btn--delete[data-v-10b7616a]:hover{background:#fee2e2}.dialog-backdrop[data-v-8cbc8293]{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:9999}.dialog[data-v-8cbc8293]{background:#fff;border-radius:10px;box-shadow:0 20px 60px #00000026,0 4px 12px #00000014;width:460px;max-width:calc(100vw - 32px);overflow:hidden}.dialog__header[data-v-8cbc8293]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #e5e7eb}.dialog__title[data-v-8cbc8293]{margin:0;font-size:15px;font-weight:600;color:#111827}.dialog__close[data-v-8cbc8293]{border:none;background:none;font-size:14px;color:#9ca3af;cursor:pointer;padding:4px 6px;border-radius:4px;line-height:1}.dialog__close[data-v-8cbc8293]:hover{background:#f3f4f6;color:#374151}.dialog__quote[data-v-8cbc8293]{padding:12px 20px 0}.dialog__quote-label[data-v-8cbc8293]{font-size:11px;font-weight:500;color:#9ca3af;text-transform:uppercase;letter-spacing:.05em}.dialog__quote-text[data-v-8cbc8293]{margin:4px 0 0;padding:8px 12px;background:#fef9c3;border-left:3px solid #fbbf24;border-radius:0 4px 4px 0;font-size:13px;color:#374151;line-height:1.5}.dialog__body[data-v-8cbc8293]{padding:16px 20px 0}.dialog__label[data-v-8cbc8293]{display:block;font-size:12px;font-weight:500;color:#374151;margin-bottom:6px}.dialog__textarea[data-v-8cbc8293]{width:100%;border:1px solid #d1d5db;border-radius:6px;padding:10px 12px;font-size:14px;font-family:inherit;resize:vertical;box-sizing:border-box;transition:border-color .15s,box-shadow .15s;outline:none;color:#111827;line-height:1.5}.dialog__textarea[data-v-8cbc8293]:focus{border-color:#f59e0b;box-shadow:0 0 0 3px #f59e0b26}.dialog__hint[data-v-8cbc8293]{margin:6px 0 0;font-size:11px;color:#9ca3af}.dialog__footer[data-v-8cbc8293]{display:flex;justify-content:flex-end;gap:8px;padding:16px 20px}.dialog__btn[data-v-8cbc8293]{border:none;border-radius:6px;padding:8px 16px;font-size:13px;font-weight:500;cursor:pointer;transition:background .15s}.dialog__btn--cancel[data-v-8cbc8293]{background:#f3f4f6;color:#374151}.dialog__btn--cancel[data-v-8cbc8293]:hover{background:#e5e7eb}.dialog__btn--confirm[data-v-8cbc8293]{background:#f59e0b;color:#fff}.dialog__btn--confirm[data-v-8cbc8293]:hover:not(:disabled){background:#d97706}.dialog__btn--confirm[data-v-8cbc8293]:disabled{opacity:.45;cursor:not-allowed}.comment-gutter[data-v-ac6164bd]{position:absolute;top:12px;right:-300px;width:280px;pointer-events:none;display:flex;flex-direction:column}.gutter-item-wrapper[data-v-ac6164bd]{pointer-events:auto}.gutter-item[data-v-ac6164bd]{position:relative;width:100%;background:#fff;border:1px solid #e5e7eb;border-left-width:4px;border-radius:8px;padding:8px 10px;box-shadow:0 8px 18px #0000000f;cursor:pointer;-webkit-user-select:none;user-select:none;outline:none;transition:transform .12s,box-shadow .12s,border-color .12s}.gutter-item[data-v-ac6164bd]:hover{transform:translateY(-1px);box-shadow:0 10px 22px #00000014}.gutter-item--active[data-v-ac6164bd]{border-color:#f59e0b;box-shadow:0 0 0 2px #f59e0b38,0 10px 22px #00000014}.gutter-item--resolved[data-v-ac6164bd]{opacity:.6}.gutter-item__quote[data-v-ac6164bd]{font-size:12px;color:#6b7280;margin-bottom:4px}.gutter-item__note[data-v-ac6164bd]{font-size:13px;color:#374151;line-height:1.35;margin-bottom:6px;word-break:break-word}.gutter-item__meta[data-v-ac6164bd]{display:flex;justify-content:space-between;font-size:11px;color:#9ca3af}.gutter-item--c0[data-v-ac6164bd]{border-left-color:#f97316}.gutter-item--c1[data-v-ac6164bd]{border-left-color:#22c55e}.gutter-item--c2[data-v-ac6164bd]{border-left-color:#3b82f6}.gutter-item--c3[data-v-ac6164bd]{border-left-color:#a855f7}.gutter-item--c4[data-v-ac6164bd]{border-left-color:#ec4899}.gutter-item--c5[data-v-ac6164bd]{border-left-color:#14b8a6}.gutter-item--c6[data-v-ac6164bd]{border-left-color:#eab308}.gutter-item--c7[data-v-ac6164bd]{border-left-color:#f43f5e}.gutter-item--c8[data-v-ac6164bd]{border-left-color:#6366f1}.gutter-item--c9[data-v-ac6164bd]{border-left-color:#84cc16}.gutter-item--c10[data-v-ac6164bd]{border-left-color:#06b6d4}.gutter-item--c11[data-v-ac6164bd]{border-left-color:#10b981}.gutter-item--c12[data-v-ac6164bd]{border-left-color:#8b5cf6}.gutter-item--c13[data-v-ac6164bd]{border-left-color:#d946ef}.gutter-item--c14[data-v-ac6164bd]{border-left-color:#0ea5e9}.gutter-item--c15[data-v-ac6164bd]{border-left-color:#ea580c}.gutter-item--c16[data-v-ac6164bd]{border-left-color:#ca8a04}.gutter-item--c17[data-v-ac6164bd]{border-left-color:#dc2626}.gutter-item--c18[data-v-ac6164bd]{border-left-color:#0d9488}.gutter-item--c19[data-v-ac6164bd]{border-left-color:#64748b}.umo-editor-content table:has(colgroup[data-word-col-layout]) td,.umo-editor-content table:has(colgroup[data-word-col-layout]) th,.umo-editor-content table:has(colgroup[data-word-col-layout]){border:none!important;outline:none!important}.umo-editor-content table:has(colgroup col:nth-child(2)){table-layout:fixed}.umo-editor-content ul[type=disc] li>p:before,.umo-editor-content ul[type=circle] li>p:before,.umo-editor-content ul[type=square] li>p:before{content:none}.auth-page[data-v-17559b0a]{min-height:100%;display:flex;align-items:center;justify-content:center;background:#f3f4f6}.auth-card[data-v-17559b0a]{background:#fff;border-radius:12px;padding:40px 36px;width:340px;box-shadow:0 4px 24px #0000001a}.auth-title[data-v-17559b0a]{font-size:20px;font-weight:700;color:#111827;text-align:center;margin:0 0 24px}.auth-tabs[data-v-17559b0a]{display:flex;gap:0;border:1px solid #e5e7eb;border-radius:8px;overflow:hidden;margin-bottom:20px}.auth-tab[data-v-17559b0a]{flex:1;padding:8px;border:none;background:transparent;cursor:pointer;font-size:14px;color:#6b7280;transition:background .15s,color .15s}.auth-tab--active[data-v-17559b0a]{background:#3b82f6;color:#fff}.auth-form[data-v-17559b0a]{display:flex;flex-direction:column;gap:12px}.auth-input[data-v-17559b0a]{padding:10px 14px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;outline:none;transition:border-color .15s}.auth-input[data-v-17559b0a]:focus{border-color:#3b82f6}.auth-submit[data-v-17559b0a]{padding:10px;border:none;border-radius:8px;background:#3b82f6;color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s}.auth-submit[data-v-17559b0a]:hover:not(:disabled){background:#2563eb}.auth-submit[data-v-17559b0a]:disabled{opacity:.6;cursor:not-allowed}.auth-error[data-v-17559b0a]{color:#ef4444;font-size:13px;margin:0}.app-layout[data-v-17559b0a]{display:flex;width:100%;height:100%;overflow:hidden}.editor-wrapper[data-v-17559b0a]{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.app-layout__comment-aside[data-v-17559b0a]{flex:0 1 clamp(280px,36vw,720px);min-width:0;max-width:100%;display:flex;flex-direction:column;overflow:hidden}.comment-toolbar[data-v-17559b0a]{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#fff;border-bottom:1px solid #e5e7eb;z-index:10;flex-shrink:0}.toolbar-docname[data-v-17559b0a]{flex:1;min-width:0}.toolbar-docname__input[data-v-17559b0a]{width:100%;border:1px solid transparent;border-radius:4px;padding:3px 6px;font-size:14px;font-weight:600;color:#111827;background:transparent;outline:none;transition:border-color .15s,background .15s}.toolbar-docname__input[data-v-17559b0a]:hover,.toolbar-docname__input[data-v-17559b0a]:focus{border-color:#d1d5db;background:#f9fafb}.toolbar-docname--empty[data-v-17559b0a]{font-size:13px;color:#9ca3af}.toolbar-actions[data-v-17559b0a]{display:flex;gap:8px;flex-shrink:0}.toolbar-btn[data-v-17559b0a]{display:inline-flex;align-items:center;gap:5px;border:none;border-radius:6px;padding:6px 14px;font-size:13px;font-weight:500;cursor:pointer;transition:background .15s,opacity .15s}.toolbar-btn[data-v-17559b0a]:disabled{opacity:.5;cursor:not-allowed}.toolbar-btn__icon[data-v-17559b0a]{font-size:15px}.toolbar-btn--save[data-v-17559b0a]{background:#d1fae5;color:#065f46}.toolbar-btn--save[data-v-17559b0a]:hover:not(:disabled){background:#a7f3d0}.toolbar-btn--primary[data-v-17559b0a]{background:#fef3c7;color:#92400e}.toolbar-btn--primary[data-v-17559b0a]:hover:not(:disabled){background:#fde68a}.toolbar-btn--ai[data-v-17559b0a]{background:#ede9fe;color:#5b21b6}.toolbar-btn--ai[data-v-17559b0a]:hover:not(:disabled){background:#ddd6fe}.umo-editor-instance[data-v-17559b0a]{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.umo-editor-stage[data-v-17559b0a]{position:relative;flex:1;min-height:0;overflow:hidden}.umo-editor-stage[data-v-17559b0a]:fullscreen{width:100vw;height:100vh;background:#fff}.editor-placeholder[data-v-17559b0a]{flex:1;display:flex;align-items:center;justify-content:center;color:#9ca3af;font-size:14px}.umo-custom-huge-btn[data-v-17559b0a]{display:inline-flex;align-items:center;justify-content:center;flex-direction:column;width:auto;height:56px;padding:0 5px;margin:0;border:none;border-radius:var(--umo-radius, 3px);background:transparent;cursor:pointer;transition:background .2s;white-space:nowrap}.umo-custom-huge-btn[data-v-17559b0a]:hover:not(:disabled){background:var(--umo-button-hover-background, rgba(0, 0, 0, .06))}.umo-custom-huge-btn[data-v-17559b0a]:disabled{opacity:.5;cursor:not-allowed}.umo-custom-huge-btn__icon[data-v-17559b0a]{display:flex;align-items:center;justify-content:center;color:var(--umo-text-color, #3d3d3d);margin-top:3px}.umo-custom-huge-btn__icon svg[data-v-17559b0a]{width:24px;height:24px}.umo-custom-huge-btn__text[data-v-17559b0a]{display:block;font-size:12px;color:var(--umo-text-color, #3d3d3d);margin-top:2px;line-height:1.2}.html-dialog-mask[data-v-17559b0a]{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:9999}.html-dialog[data-v-17559b0a]{background:#1e1e2e;border-radius:10px;width:min(860px,92vw);max-height:80vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px #0006}.html-dialog__header[data-v-17559b0a]{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid #313244;flex-shrink:0}.html-dialog__title[data-v-17559b0a]{font-size:14px;font-weight:600;color:#cdd6f4}.html-dialog__close[data-v-17559b0a]{background:none;border:none;color:#6c7086;font-size:16px;cursor:pointer;padding:2px 6px;border-radius:4px;line-height:1;transition:color .15s,background .15s}.html-dialog__close[data-v-17559b0a]:hover{color:#cdd6f4;background:#313244}.html-dialog__toolbar[data-v-17559b0a]{display:flex;justify-content:flex-end;padding:8px 16px;border-bottom:1px solid #313244;flex-shrink:0}.html-dialog__copy-btn[data-v-17559b0a]{font-size:12px;padding:4px 14px;border-radius:5px;border:1px solid #45475a;background:#313244;color:#cdd6f4;cursor:pointer;transition:background .15s,border-color .15s}.html-dialog__copy-btn[data-v-17559b0a]:hover{background:#45475a;border-color:#89b4fa;color:#89b4fa}.html-dialog__content[data-v-17559b0a]{flex:1;overflow:auto;margin:0;padding:16px 20px;font-family:Fira Code,Consolas,Courier New,monospace;font-size:12.5px;line-height:1.7;color:#a6e3a1;white-space:pre-wrap;word-break:break-all}[data-v-17559b0a] table:has(colgroup[data-word-col-layout]) td,[data-v-17559b0a] table:has(colgroup[data-word-col-layout]) th,[data-v-17559b0a] table:has(colgroup[data-word-col-layout]){border:none!important;outline:none!important}.complex-comment-panel[data-v-857048b4]{box-sizing:border-box;width:100%;min-width:0;max-width:100%;height:100%;border-left:1px solid #e5e7eb;background:#f3f4f6;display:flex;flex-direction:column;overflow:hidden}.complex-comment-panel__header[data-v-857048b4]{padding:12px 14px 10px;background:#fff;border-bottom:1px solid #e5e7eb}.complex-comment-panel__title[data-v-857048b4]{margin:0 0 10px;font-size:16px;font-weight:600;color:#111827}.complex-comment-panel__toolbar[data-v-857048b4]{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}.complex-comment-panel__download[data-v-857048b4]{border:none;border-radius:4px;padding:5px 14px;font-size:13px;font-weight:500;cursor:pointer;background:#2563eb;color:#fff}.complex-comment-panel__download[data-v-857048b4]:hover{background:#1d4ed8}.complex-comment-panel__risk-toggle[data-v-857048b4]{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#4b5563;cursor:pointer;-webkit-user-select:none;user-select:none}.complex-comment-panel__risk-toggle input[data-v-857048b4]{width:14px;height:14px;cursor:pointer}.complex-comment-panel__empty[data-v-857048b4]{flex:1;display:flex;align-items:center;justify-content:center;color:#9ca3af;font-size:14px}.complex-comment-panel__tabs[data-v-857048b4]{display:flex;flex-wrap:wrap;gap:6px;padding:10px 12px;background:#fff;border-bottom:1px solid #e5e7eb}.complex-comment-panel__tab[data-v-857048b4]{border:1px solid #e5e7eb;background:#fff;border-radius:4px;padding:4px 10px;font-size:12px;color:#6b7280;cursor:pointer}.complex-comment-panel__tab[data-v-857048b4]:hover{border-color:#93c5fd;color:#2563eb}.complex-comment-panel__tab--active[data-v-857048b4]{border-color:#2563eb;color:#2563eb;background:#eff6ff;font-weight:500}.complex-comment-panel__body[data-v-857048b4]{flex:1;overflow-y:auto;padding:10px 12px 16px;display:flex;flex-direction:column;gap:14px}.complex-comment-panel__section-head[data-v-857048b4]{margin-bottom:8px}.complex-comment-panel__section-title[data-v-857048b4]{font-size:14px;font-weight:600;color:#111827}.complex-comment-panel__cards[data-v-857048b4]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.audit-card[data-v-857048b4]{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:12px 14px;cursor:pointer;transition:border-color .15s,box-shadow .15s}.audit-card[data-v-857048b4]:hover{border-color:#d1d5db;box-shadow:0 1px 3px #0000000f}.audit-card--active[data-v-857048b4]{border-color:#2563eb;box-shadow:0 0 0 2px #2563eb33}.audit-card__head[data-v-857048b4]{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:12px}.audit-card__point[data-v-857048b4]{font-size:14px;font-weight:600;color:#111827;line-height:1.4;flex:1}.audit-card__badge[data-v-857048b4]{flex-shrink:0;font-size:12px;font-weight:500;padding:2px 8px;border-radius:4px;white-space:nowrap}.audit-card__badge--risk[data-v-857048b4]{background:#fee2e2;color:#dc2626}.audit-card__badge--ok[data-v-857048b4]{background:#22c55e;color:#fff}.audit-card__badge--muted[data-v-857048b4]{background:#f3f4f6;color:#6b7280}.audit-card__block[data-v-857048b4]{margin-bottom:4px}.audit-card__label[data-v-857048b4]{font-size:12px;color:#9ca3af;margin-bottom:6px}.audit-card__label--strong[data-v-857048b4]{color:#111827;font-weight:500}.audit-card__quote[data-v-857048b4]{font-size:13px;color:#6b7280;line-height:1.5;padding:8px 10px 8px 12px;border-left:3px solid #d1d5db;background:#f9fafb;border-radius:0 4px 4px 0;word-break:break-word}.audit-card__locate[data-v-857048b4]{margin-top:8px;border:none;background:none;padding:0;font-size:12px;color:#2563eb;cursor:pointer;display:inline-flex;align-items:center;gap:4px}.audit-card__locate[data-v-857048b4]:hover{text-decoration:underline}.audit-card__locate-icon[data-v-857048b4]{font-size:14px;line-height:1;opacity:.85}.audit-card__divider[data-v-857048b4]{height:1px;background:#e5e7eb;margin:12px 0}.audit-card__block--desc[data-v-857048b4]{margin-bottom:0}.audit-card__desc[data-v-857048b4]{margin:0;font-size:13px;color:#374151;line-height:1.55;word-break:break-word}
1
+ .ProseMirror span.comment-mark,.umo-editor span.comment-mark{border-bottom:2px solid #fbbf24;background-color:transparent;border-radius:0;cursor:text;transition:border-bottom-color .15s}.ProseMirror span.comment-mark:hover,.umo-editor span.comment-mark:hover{border-bottom-color:#facc15}.ProseMirror span.comment-mark--active,.umo-editor span.comment-mark--active{background-color:transparent;border-bottom-color:#f59e0b}.comment-panel[data-v-10b7616a]{box-sizing:border-box;width:100%;min-width:0;max-width:100%;height:100%;border-left:1px solid #e5e7eb;background:#fafafa;display:flex;flex-direction:column;overflow:hidden}.comment-panel__header[data-v-10b7616a]{padding:14px 16px 10px;border-bottom:1px solid #e5e7eb;background:#fff}.comment-panel__title[data-v-10b7616a]{margin:0;font-size:14px;font-weight:600;color:#374151;display:flex;align-items:center;gap:6px}.comment-panel__badge[data-v-10b7616a]{background:#f59e0b;color:#fff;border-radius:10px;font-size:11px;padding:1px 6px;font-weight:500}.comment-panel__empty[data-v-10b7616a]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#9ca3af;gap:4px;padding:24px;text-align:center}.comment-panel__empty p[data-v-10b7616a]{margin:0;font-size:13px}.comment-panel__empty-icon[data-v-10b7616a]{font-size:32px;margin-bottom:8px;opacity:.5}.comment-panel__empty-hint[data-v-10b7616a]{font-size:12px!important;color:#d1d5db}.comment-panel__list[data-v-10b7616a]{list-style:none;margin:0;padding:8px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:8px}.comment-item[data-v-10b7616a]{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:10px 12px;cursor:pointer;transition:border-color .15s,box-shadow .15s}.comment-item[data-v-10b7616a]:hover{border-color:#fbbf24;box-shadow:0 1px 4px #fbbf2426}.comment-item--active[data-v-10b7616a]{border-color:#f59e0b;box-shadow:0 0 0 2px #f59e0b33}.comment-item--resolved[data-v-10b7616a]{opacity:.55}.comment-item--resolved .comment-item__note[data-v-10b7616a]{text-decoration:line-through;color:#9ca3af}.comment-item__quote[data-v-10b7616a]{font-size:12px;color:#6b7280;background:#fef9c3;border-left:3px solid #fbbf24;padding:4px 8px;border-radius:0 4px 4px 0;margin-bottom:6px;line-height:1.4}.comment-item__quote-icon[data-v-10b7616a]{color:#fbbf24;margin-right:2px}.comment-item--c0 .comment-item__quote[data-v-10b7616a]{background:#fef3c7cc;border-left-color:#f97316}.comment-item--c0 .comment-item__quote-icon[data-v-10b7616a]{color:#f97316}.comment-item--c1 .comment-item__quote[data-v-10b7616a]{background:#d1fae5d9;border-left-color:#22c55e}.comment-item--c1 .comment-item__quote-icon[data-v-10b7616a]{color:#22c55e}.comment-item--c2 .comment-item__quote[data-v-10b7616a]{background:#dbeafed9;border-left-color:#3b82f6}.comment-item--c2 .comment-item__quote-icon[data-v-10b7616a]{color:#3b82f6}.comment-item--c3 .comment-item__quote[data-v-10b7616a]{background:#ede9fee6;border-left-color:#a855f7}.comment-item--c3 .comment-item__quote-icon[data-v-10b7616a]{color:#a855f7}.comment-item--c4 .comment-item__quote[data-v-10b7616a]{background:#fce7f3e6;border-left-color:#ec4899}.comment-item--c4 .comment-item__quote-icon[data-v-10b7616a]{color:#ec4899}.comment-item--c5 .comment-item__quote[data-v-10b7616a]{background:#ccfbf1d9;border-left-color:#14b8a6}.comment-item--c5 .comment-item__quote-icon[data-v-10b7616a]{color:#14b8a6}.comment-item--c6 .comment-item__quote[data-v-10b7616a]{background:#fef9c3e6;border-left-color:#eab308}.comment-item--c6 .comment-item__quote-icon[data-v-10b7616a]{color:#eab308}.comment-item--c7 .comment-item__quote[data-v-10b7616a]{background:#ffe4e6e6;border-left-color:#f43f5e}.comment-item--c7 .comment-item__quote-icon[data-v-10b7616a]{color:#f43f5e}.comment-item--c8 .comment-item__quote[data-v-10b7616a]{background:#e0e7ffe6;border-left-color:#6366f1}.comment-item--c8 .comment-item__quote-icon[data-v-10b7616a]{color:#6366f1}.comment-item--c9 .comment-item__quote[data-v-10b7616a]{background:#ecfdc8e6;border-left-color:#84cc16}.comment-item--c9 .comment-item__quote-icon[data-v-10b7616a]{color:#84cc16}.comment-item--c10 .comment-item__quote[data-v-10b7616a]{background:#cffafee6;border-left-color:#06b6d4}.comment-item--c10 .comment-item__quote-icon[data-v-10b7616a]{color:#06b6d4}.comment-item--c11 .comment-item__quote[data-v-10b7616a]{background:#d1fae5d9;border-left-color:#10b981}.comment-item--c11 .comment-item__quote-icon[data-v-10b7616a]{color:#10b981}.comment-item--c12 .comment-item__quote[data-v-10b7616a]{background:#ede9fee6;border-left-color:#8b5cf6}.comment-item--c12 .comment-item__quote-icon[data-v-10b7616a]{color:#8b5cf6}.comment-item--c13 .comment-item__quote[data-v-10b7616a]{background:#faf0ffe6;border-left-color:#d946ef}.comment-item--c13 .comment-item__quote-icon[data-v-10b7616a]{color:#d946ef}.comment-item--c14 .comment-item__quote[data-v-10b7616a]{background:#e0f2fee6;border-left-color:#0ea5e9}.comment-item--c14 .comment-item__quote-icon[data-v-10b7616a]{color:#0ea5e9}.comment-item--c15 .comment-item__quote[data-v-10b7616a]{background:#ffedd5e6;border-left-color:#ea580c}.comment-item--c15 .comment-item__quote-icon[data-v-10b7616a]{color:#ea580c}.comment-item--c16 .comment-item__quote[data-v-10b7616a]{background:#fefce8e6;border-left-color:#ca8a04}.comment-item--c16 .comment-item__quote-icon[data-v-10b7616a]{color:#ca8a04}.comment-item--c17 .comment-item__quote[data-v-10b7616a]{background:#fee2e2e6;border-left-color:#dc2626}.comment-item--c17 .comment-item__quote-icon[data-v-10b7616a]{color:#dc2626}.comment-item--c18 .comment-item__quote[data-v-10b7616a]{background:#ccfbf1d9;border-left-color:#0d9488}.comment-item--c18 .comment-item__quote-icon[data-v-10b7616a]{color:#0d9488}.comment-item--c19 .comment-item__quote[data-v-10b7616a]{background:#f1f5f9e6;border-left-color:#64748b}.comment-item--c19 .comment-item__quote-icon[data-v-10b7616a]{color:#64748b}.comment-item__note[data-v-10b7616a]{font-size:13px;color:#374151;line-height:1.5;margin-bottom:6px;word-break:break-word}.comment-item__meta[data-v-10b7616a]{display:flex;justify-content:space-between;font-size:11px;color:#9ca3af;margin-bottom:8px}.comment-item__author[data-v-10b7616a]{font-weight:500}.comment-item__actions[data-v-10b7616a]{display:flex;gap:6px;justify-content:flex-end}.comment-btn[data-v-10b7616a]{border:none;border-radius:4px;padding:3px 8px;font-size:11px;cursor:pointer;transition:background .15s}.comment-btn--resolve[data-v-10b7616a]{background:#ecfdf5;color:#059669}.comment-btn--resolve[data-v-10b7616a]:hover{background:#d1fae5}.comment-btn--delete[data-v-10b7616a]{background:#fef2f2;color:#dc2626}.comment-btn--delete[data-v-10b7616a]:hover{background:#fee2e2}.dialog-backdrop[data-v-8cbc8293]{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:9999}.dialog[data-v-8cbc8293]{background:#fff;border-radius:10px;box-shadow:0 20px 60px #00000026,0 4px 12px #00000014;width:460px;max-width:calc(100vw - 32px);overflow:hidden}.dialog__header[data-v-8cbc8293]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #e5e7eb}.dialog__title[data-v-8cbc8293]{margin:0;font-size:15px;font-weight:600;color:#111827}.dialog__close[data-v-8cbc8293]{border:none;background:none;font-size:14px;color:#9ca3af;cursor:pointer;padding:4px 6px;border-radius:4px;line-height:1}.dialog__close[data-v-8cbc8293]:hover{background:#f3f4f6;color:#374151}.dialog__quote[data-v-8cbc8293]{padding:12px 20px 0}.dialog__quote-label[data-v-8cbc8293]{font-size:11px;font-weight:500;color:#9ca3af;text-transform:uppercase;letter-spacing:.05em}.dialog__quote-text[data-v-8cbc8293]{margin:4px 0 0;padding:8px 12px;background:#fef9c3;border-left:3px solid #fbbf24;border-radius:0 4px 4px 0;font-size:13px;color:#374151;line-height:1.5}.dialog__body[data-v-8cbc8293]{padding:16px 20px 0}.dialog__label[data-v-8cbc8293]{display:block;font-size:12px;font-weight:500;color:#374151;margin-bottom:6px}.dialog__textarea[data-v-8cbc8293]{width:100%;border:1px solid #d1d5db;border-radius:6px;padding:10px 12px;font-size:14px;font-family:inherit;resize:vertical;box-sizing:border-box;transition:border-color .15s,box-shadow .15s;outline:none;color:#111827;line-height:1.5}.dialog__textarea[data-v-8cbc8293]:focus{border-color:#f59e0b;box-shadow:0 0 0 3px #f59e0b26}.dialog__hint[data-v-8cbc8293]{margin:6px 0 0;font-size:11px;color:#9ca3af}.dialog__footer[data-v-8cbc8293]{display:flex;justify-content:flex-end;gap:8px;padding:16px 20px}.dialog__btn[data-v-8cbc8293]{border:none;border-radius:6px;padding:8px 16px;font-size:13px;font-weight:500;cursor:pointer;transition:background .15s}.dialog__btn--cancel[data-v-8cbc8293]{background:#f3f4f6;color:#374151}.dialog__btn--cancel[data-v-8cbc8293]:hover{background:#e5e7eb}.dialog__btn--confirm[data-v-8cbc8293]{background:#f59e0b;color:#fff}.dialog__btn--confirm[data-v-8cbc8293]:hover:not(:disabled){background:#d97706}.dialog__btn--confirm[data-v-8cbc8293]:disabled{opacity:.45;cursor:not-allowed}.comment-gutter[data-v-ac6164bd]{position:absolute;top:12px;right:-300px;width:280px;pointer-events:none;display:flex;flex-direction:column}.gutter-item-wrapper[data-v-ac6164bd]{pointer-events:auto}.gutter-item[data-v-ac6164bd]{position:relative;width:100%;background:#fff;border:1px solid #e5e7eb;border-left-width:4px;border-radius:8px;padding:8px 10px;box-shadow:0 8px 18px #0000000f;cursor:pointer;-webkit-user-select:none;user-select:none;outline:none;transition:transform .12s,box-shadow .12s,border-color .12s}.gutter-item[data-v-ac6164bd]:hover{transform:translateY(-1px);box-shadow:0 10px 22px #00000014}.gutter-item--active[data-v-ac6164bd]{border-color:#f59e0b;box-shadow:0 0 0 2px #f59e0b38,0 10px 22px #00000014}.gutter-item--resolved[data-v-ac6164bd]{opacity:.6}.gutter-item__quote[data-v-ac6164bd]{font-size:12px;color:#6b7280;margin-bottom:4px}.gutter-item__note[data-v-ac6164bd]{font-size:13px;color:#374151;line-height:1.35;margin-bottom:6px;word-break:break-word}.gutter-item__meta[data-v-ac6164bd]{display:flex;justify-content:space-between;font-size:11px;color:#9ca3af}.gutter-item--c0[data-v-ac6164bd]{border-left-color:#f97316}.gutter-item--c1[data-v-ac6164bd]{border-left-color:#22c55e}.gutter-item--c2[data-v-ac6164bd]{border-left-color:#3b82f6}.gutter-item--c3[data-v-ac6164bd]{border-left-color:#a855f7}.gutter-item--c4[data-v-ac6164bd]{border-left-color:#ec4899}.gutter-item--c5[data-v-ac6164bd]{border-left-color:#14b8a6}.gutter-item--c6[data-v-ac6164bd]{border-left-color:#eab308}.gutter-item--c7[data-v-ac6164bd]{border-left-color:#f43f5e}.gutter-item--c8[data-v-ac6164bd]{border-left-color:#6366f1}.gutter-item--c9[data-v-ac6164bd]{border-left-color:#84cc16}.gutter-item--c10[data-v-ac6164bd]{border-left-color:#06b6d4}.gutter-item--c11[data-v-ac6164bd]{border-left-color:#10b981}.gutter-item--c12[data-v-ac6164bd]{border-left-color:#8b5cf6}.gutter-item--c13[data-v-ac6164bd]{border-left-color:#d946ef}.gutter-item--c14[data-v-ac6164bd]{border-left-color:#0ea5e9}.gutter-item--c15[data-v-ac6164bd]{border-left-color:#ea580c}.gutter-item--c16[data-v-ac6164bd]{border-left-color:#ca8a04}.gutter-item--c17[data-v-ac6164bd]{border-left-color:#dc2626}.gutter-item--c18[data-v-ac6164bd]{border-left-color:#0d9488}.gutter-item--c19[data-v-ac6164bd]{border-left-color:#64748b}.umo-editor-content table:has(colgroup[data-word-col-layout]) td,.umo-editor-content table:has(colgroup[data-word-col-layout]) th,.umo-editor-content table:has(colgroup[data-word-col-layout]){border:none!important;outline:none!important}.umo-editor-content table:has(colgroup col:nth-child(2)){table-layout:fixed}.umo-editor-content ul[type=disc] li>p:before,.umo-editor-content ul[type=circle] li>p:before,.umo-editor-content ul[type=square] li>p:before{content:none}.auth-page[data-v-17559b0a]{min-height:100%;display:flex;align-items:center;justify-content:center;background:#f3f4f6}.auth-card[data-v-17559b0a]{background:#fff;border-radius:12px;padding:40px 36px;width:340px;box-shadow:0 4px 24px #0000001a}.auth-title[data-v-17559b0a]{font-size:20px;font-weight:700;color:#111827;text-align:center;margin:0 0 24px}.auth-tabs[data-v-17559b0a]{display:flex;gap:0;border:1px solid #e5e7eb;border-radius:8px;overflow:hidden;margin-bottom:20px}.auth-tab[data-v-17559b0a]{flex:1;padding:8px;border:none;background:transparent;cursor:pointer;font-size:14px;color:#6b7280;transition:background .15s,color .15s}.auth-tab--active[data-v-17559b0a]{background:#3b82f6;color:#fff}.auth-form[data-v-17559b0a]{display:flex;flex-direction:column;gap:12px}.auth-input[data-v-17559b0a]{padding:10px 14px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;outline:none;transition:border-color .15s}.auth-input[data-v-17559b0a]:focus{border-color:#3b82f6}.auth-submit[data-v-17559b0a]{padding:10px;border:none;border-radius:8px;background:#3b82f6;color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s}.auth-submit[data-v-17559b0a]:hover:not(:disabled){background:#2563eb}.auth-submit[data-v-17559b0a]:disabled{opacity:.6;cursor:not-allowed}.auth-error[data-v-17559b0a]{color:#ef4444;font-size:13px;margin:0}.app-layout[data-v-17559b0a]{display:flex;width:100%;height:100%;overflow:hidden}.editor-wrapper[data-v-17559b0a]{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.app-layout__comment-aside[data-v-17559b0a]{flex:0 1 clamp(280px,36vw,720px);min-width:0;max-width:100%;display:flex;flex-direction:column;overflow:hidden}.comment-toolbar[data-v-17559b0a]{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#fff;border-bottom:1px solid #e5e7eb;z-index:10;flex-shrink:0}.toolbar-docname[data-v-17559b0a]{flex:1;min-width:0}.toolbar-docname__input[data-v-17559b0a]{width:100%;border:1px solid transparent;border-radius:4px;padding:3px 6px;font-size:14px;font-weight:600;color:#111827;background:transparent;outline:none;transition:border-color .15s,background .15s}.toolbar-docname__input[data-v-17559b0a]:hover,.toolbar-docname__input[data-v-17559b0a]:focus{border-color:#d1d5db;background:#f9fafb}.toolbar-docname--empty[data-v-17559b0a]{font-size:13px;color:#9ca3af}.toolbar-actions[data-v-17559b0a]{display:flex;gap:8px;flex-shrink:0}.toolbar-btn[data-v-17559b0a]{display:inline-flex;align-items:center;gap:5px;border:none;border-radius:6px;padding:6px 14px;font-size:13px;font-weight:500;cursor:pointer;transition:background .15s,opacity .15s}.toolbar-btn[data-v-17559b0a]:disabled{opacity:.5;cursor:not-allowed}.toolbar-btn__icon[data-v-17559b0a]{font-size:15px}.toolbar-btn--save[data-v-17559b0a]{background:#d1fae5;color:#065f46}.toolbar-btn--save[data-v-17559b0a]:hover:not(:disabled){background:#a7f3d0}.toolbar-btn--primary[data-v-17559b0a]{background:#fef3c7;color:#92400e}.toolbar-btn--primary[data-v-17559b0a]:hover:not(:disabled){background:#fde68a}.toolbar-btn--ai[data-v-17559b0a]{background:#ede9fe;color:#5b21b6}.toolbar-btn--ai[data-v-17559b0a]:hover:not(:disabled){background:#ddd6fe}.umo-editor-instance[data-v-17559b0a]{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.umo-editor-stage[data-v-17559b0a]{position:relative;flex:1;min-height:0;overflow:hidden}.umo-editor-stage[data-v-17559b0a]:fullscreen{width:100vw;height:100vh;background:#fff}.editor-placeholder[data-v-17559b0a]{flex:1;display:flex;align-items:center;justify-content:center;color:#9ca3af;font-size:14px}.umo-custom-huge-btn[data-v-17559b0a]{display:inline-flex;align-items:center;justify-content:center;flex-direction:column;width:auto;height:56px;padding:0 5px;margin:0;border:none;border-radius:var(--umo-radius, 3px);background:transparent;cursor:pointer;transition:background .2s;white-space:nowrap}.umo-custom-huge-btn[data-v-17559b0a]:hover:not(:disabled){background:var(--umo-button-hover-background, rgba(0, 0, 0, .06))}.umo-custom-huge-btn[data-v-17559b0a]:disabled{opacity:.5;cursor:not-allowed}.umo-custom-huge-btn__icon[data-v-17559b0a]{display:flex;align-items:center;justify-content:center;color:var(--umo-text-color, #3d3d3d);margin-top:3px}.umo-custom-huge-btn__icon svg[data-v-17559b0a]{width:24px;height:24px}.umo-custom-huge-btn__text[data-v-17559b0a]{display:block;font-size:12px;color:var(--umo-text-color, #3d3d3d);margin-top:2px;line-height:1.2}.html-dialog-mask[data-v-17559b0a]{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:9999}.html-dialog[data-v-17559b0a]{background:#1e1e2e;border-radius:10px;width:min(860px,92vw);max-height:80vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px #0006}.html-dialog__header[data-v-17559b0a]{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid #313244;flex-shrink:0}.html-dialog__title[data-v-17559b0a]{font-size:14px;font-weight:600;color:#cdd6f4}.html-dialog__close[data-v-17559b0a]{background:none;border:none;color:#6c7086;font-size:16px;cursor:pointer;padding:2px 6px;border-radius:4px;line-height:1;transition:color .15s,background .15s}.html-dialog__close[data-v-17559b0a]:hover{color:#cdd6f4;background:#313244}.html-dialog__toolbar[data-v-17559b0a]{display:flex;justify-content:flex-end;padding:8px 16px;border-bottom:1px solid #313244;flex-shrink:0}.html-dialog__copy-btn[data-v-17559b0a]{font-size:12px;padding:4px 14px;border-radius:5px;border:1px solid #45475a;background:#313244;color:#cdd6f4;cursor:pointer;transition:background .15s,border-color .15s}.html-dialog__copy-btn[data-v-17559b0a]:hover{background:#45475a;border-color:#89b4fa;color:#89b4fa}.html-dialog__content[data-v-17559b0a]{flex:1;overflow:auto;margin:0;padding:16px 20px;font-family:Fira Code,Consolas,Courier New,monospace;font-size:12.5px;line-height:1.7;color:#a6e3a1;white-space:pre-wrap;word-break:break-all}[data-v-17559b0a] table:has(colgroup[data-word-col-layout]) td,[data-v-17559b0a] table:has(colgroup[data-word-col-layout]) th,[data-v-17559b0a] table:has(colgroup[data-word-col-layout]){border:none!important;outline:none!important}.complex-comment-panel[data-v-de917c6e]{box-sizing:border-box;width:100%;min-width:0;max-width:100%;height:100%;border-left:1px solid #e5e7eb;background:#f3f4f6;display:flex;flex-direction:column;overflow:hidden}.complex-comment-panel__header[data-v-de917c6e]{padding:12px 14px 10px;background:#fff;border-bottom:1px solid #e5e7eb}.complex-comment-panel__title[data-v-de917c6e]{margin:0 0 10px;font-size:16px;font-weight:600;color:#111827}.complex-comment-panel__toolbar[data-v-de917c6e]{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}.complex-comment-panel__download[data-v-de917c6e]{border:none;border-radius:4px;padding:5px 14px;font-size:13px;font-weight:500;cursor:pointer;background:#2563eb;color:#fff}.complex-comment-panel__download[data-v-de917c6e]:hover{background:#1d4ed8}.complex-comment-panel__risk-toggle[data-v-de917c6e]{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#4b5563;cursor:pointer;-webkit-user-select:none;user-select:none}.complex-comment-panel__risk-toggle input[data-v-de917c6e]{width:14px;height:14px;cursor:pointer}.complex-comment-panel__empty[data-v-de917c6e]{flex:1;display:flex;align-items:center;justify-content:center;color:#9ca3af;font-size:14px}.complex-comment-panel__tabs[data-v-de917c6e]{display:flex;flex-wrap:wrap;gap:6px;padding:10px 12px;background:#fff;border-bottom:1px solid #e5e7eb}.complex-comment-panel__tab[data-v-de917c6e]{border:1px solid #e5e7eb;background:#fff;border-radius:4px;padding:4px 10px;font-size:12px;color:#6b7280;cursor:pointer}.complex-comment-panel__tab[data-v-de917c6e]:hover{border-color:#93c5fd;color:#2563eb}.complex-comment-panel__tab--active[data-v-de917c6e]{border-color:#2563eb;color:#2563eb;background:#eff6ff;font-weight:500}.complex-comment-panel__body[data-v-de917c6e]{flex:1;overflow-y:auto;padding:10px 12px 16px;display:flex;flex-direction:column;gap:14px}.complex-comment-panel__section-head[data-v-de917c6e]{margin-bottom:8px}.complex-comment-panel__section-title[data-v-de917c6e]{font-size:14px;font-weight:600;color:#111827}.complex-comment-panel__cards[data-v-de917c6e]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.audit-card[data-v-de917c6e]{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:12px 14px;cursor:pointer;transition:border-color .15s,box-shadow .15s}.audit-card[data-v-de917c6e]:hover{border-color:#d1d5db;box-shadow:0 1px 3px #0000000f}.audit-card--active[data-v-de917c6e]{border-color:#2563eb;box-shadow:0 0 0 2px #2563eb33}.audit-card__head[data-v-de917c6e]{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:12px}.audit-card__point[data-v-de917c6e]{font-size:14px;font-weight:600;color:#111827;line-height:1.4;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audit-card__badge[data-v-de917c6e]{flex-shrink:0;font-size:12px;font-weight:500;padding:2px 8px;border-radius:4px;white-space:nowrap}.audit-card__badge--risk[data-v-de917c6e]{background:#fee2e2;color:#dc2626}.audit-card__badge--ok[data-v-de917c6e]{background:#22c55e;color:#fff}.audit-card__badge--muted[data-v-de917c6e]{background:#f3f4f6;color:#6b7280}.audit-card__block[data-v-de917c6e]{margin-bottom:4px}.audit-card__label[data-v-de917c6e]{font-size:12px;color:#9ca3af;margin-bottom:6px}.audit-card__label--strong[data-v-de917c6e]{color:#111827;font-weight:500}.audit-card__quote[data-v-de917c6e]{font-size:13px;color:#6b7280;line-height:1.5;padding:8px 10px 8px 12px;border-left:3px solid #d1d5db;background:#f9fafb;border-radius:0 4px 4px 0;word-break:break-word}.audit-card__locate[data-v-de917c6e]{margin-top:8px;border:none;background:none;padding:0;font-size:12px;color:#2563eb;cursor:pointer;display:inline-flex;align-items:center;gap:4px}.audit-card__locate[data-v-de917c6e]:hover{text-decoration:underline}.audit-card__locate-icon[data-v-de917c6e]{font-size:14px;line-height:1;opacity:.85}.audit-card__divider[data-v-de917c6e]{height:1px;background:#e5e7eb;margin:12px 0}.audit-card__block--desc[data-v-de917c6e]{margin-bottom:0}.audit-card__desc[data-v-de917c6e]{margin:0;font-size:13px;color:#374151;line-height:1.55;word-break:break-word}
package/dist/index.js CHANGED
@@ -3491,16 +3491,16 @@ class ol {
3491
3491
  }
3492
3492
  let d = l.size + e - (s.content.size - s.openEnd);
3493
3493
  for (; c < l.childCount; ) {
3494
- let g = l.child(c), x = f.matchType(g.type);
3495
- if (!x)
3494
+ let g = l.child(c), w = f.matchType(g.type);
3495
+ if (!w)
3496
3496
  break;
3497
- c++, (c > 1 || a == 0 || g.content.size) && (f = x, u.push(Ro(g.mark(y.allowedMarks(g.marks)), c == 1 ? a : 0, c == l.childCount ? d : -1)));
3497
+ c++, (c > 1 || a == 0 || g.content.size) && (f = w, u.push(Ro(g.mark(y.allowedMarks(g.marks)), c == 1 ? a : 0, c == l.childCount ? d : -1)));
3498
3498
  }
3499
3499
  let h = c == l.childCount;
3500
3500
  h || (d = -1), this.placed = yt(this.placed, t, S.from(u)), this.frontier[t].match = f, h && d < 0 && n && n.type == this.frontier[this.depth].type && this.frontier.length > 1 && this.closeFrontierNode();
3501
- for (let g = 0, x = l; g < d; g++) {
3502
- let v = x.lastChild;
3503
- this.frontier.push({ type: v.type, match: v.contentMatchAt(v.childCount) }), x = v.content;
3501
+ for (let g = 0, w = l; g < d; g++) {
3502
+ let v = w.lastChild;
3503
+ this.frontier.push({ type: v.type, match: v.contentMatchAt(v.childCount) }), w = v.content;
3504
3504
  }
3505
3505
  this.unplaced = h ? e == 0 ? T.empty : new T(gt(s.content, e - 1, 1), e - 1, d < 0 ? s.openEnd : e - 1) : new T(gt(s.content, e, c), s.openStart, s.openEnd);
3506
3506
  }
@@ -4409,8 +4409,8 @@ function Go(r, e, t, n) {
4409
4409
  for (let v = s.length - 1; v >= 0; v--)
4410
4410
  h = S.from(s[v].create(null, h));
4411
4411
  h = S.from(o.copy(h));
4412
- let g = r.tr.step(new Se(e.pos - 1, d, e.pos, d, new T(h, 1, 0), s.length, !0)), x = g.doc.resolve(d + 2 * s.length);
4413
- x.nodeAfter && x.nodeAfter.type == o.type && Ue(g.doc, x.pos) && g.join(x.pos), t(g.scrollIntoView());
4412
+ let g = r.tr.step(new Se(e.pos - 1, d, e.pos, d, new T(h, 1, 0), s.length, !0)), w = g.doc.resolve(d + 2 * s.length);
4413
+ w.nodeAfter && w.nodeAfter.type == o.type && Ue(g.doc, w.pos) && g.join(w.pos), t(g.scrollIntoView());
4414
4414
  }
4415
4415
  return !0;
4416
4416
  }
@@ -4421,15 +4421,15 @@ function Go(r, e, t, n) {
4421
4421
  let d = o, h = [];
4422
4422
  for (; h.push(d), !d.isTextblock; )
4423
4423
  d = d.lastChild;
4424
- let g = i, x = 1;
4424
+ let g = i, w = 1;
4425
4425
  for (; !g.isTextblock; g = g.firstChild)
4426
- x++;
4426
+ w++;
4427
4427
  if (d.canReplace(d.childCount, d.childCount, g.content)) {
4428
4428
  if (t) {
4429
4429
  let v = S.empty;
4430
4430
  for (let A = h.length - 1; A >= 0; A--)
4431
4431
  v = S.from(h[A].copy(v));
4432
- let I = r.tr.step(new Se(e.pos - h.length, e.pos + i.nodeSize, e.pos + x, e.pos + i.nodeSize - x, new T(v, h.length, 0), 0, !0));
4432
+ let I = r.tr.step(new Se(e.pos - h.length, e.pos + i.nodeSize, e.pos + w, e.pos + i.nodeSize - w, new T(v, h.length, 0), 0, !0));
4433
4433
  t(I.scrollIntoView());
4434
4434
  }
4435
4435
  return !0;
@@ -4628,7 +4628,7 @@ class Al {
4628
4628
  createChain(e, t = !0) {
4629
4629
  const { rawCommands: n, editor: o, state: i } = this, { view: s } = o, l = [], a = !!e, c = e || i.tr, u = () => (!a && t && !c.getMeta("preventDispatch") && !this.hasCustomState && s.dispatch(c), l.every((y) => y === !0)), f = {
4630
4630
  ...Object.fromEntries(Object.entries(n).map(([y, d]) => [y, (...g) => {
4631
- const x = this.buildProps(c, t), v = d(...g)(x);
4631
+ const w = this.buildProps(c, t), v = d(...g)(w);
4632
4632
  return l.push(v), f;
4633
4633
  }])),
4634
4634
  run: u
@@ -5283,10 +5283,10 @@ function za(r, e, t = {}) {
5283
5283
  const l = [];
5284
5284
  if (o.forEach(({ $from: f, $to: y }) => {
5285
5285
  const d = f.pos, h = y.pos;
5286
- r.doc.nodesBetween(d, h, (g, x) => {
5286
+ r.doc.nodesBetween(d, h, (g, w) => {
5287
5287
  if (!g.isText && !g.marks.length)
5288
5288
  return;
5289
- const v = Math.max(d, x), I = Math.min(h, x + g.nodeSize), A = I - v;
5289
+ const v = Math.max(d, w), I = Math.min(h, w + g.nodeSize), A = I - v;
5290
5290
  s += A, l.push(...g.marks.map((M) => ({
5291
5291
  mark: M,
5292
5292
  from: v,
@@ -5423,8 +5423,8 @@ const La = ({ keepMarks: r = !0 } = {}) => ({ tr: e, state: t, dispatch: n, edit
5423
5423
  }
5424
5424
  ] : void 0), n) {
5425
5425
  if (h && (i instanceof H && e.deleteSelection(), e.split(e.mapping.map(l.pos), 1, d), y && !f && !l.parentOffset && l.parent.type !== y)) {
5426
- const g = e.mapping.map(l.before()), x = e.doc.resolve(g);
5427
- l.node(-1).canReplaceWith(x.index(), x.index() + 1, y) && e.setNodeMarkup(e.mapping.map(l.before()), y);
5426
+ const g = e.mapping.map(l.before()), w = e.doc.resolve(g);
5427
+ l.node(-1).canReplaceWith(w.index(), w.index() + 1, y) && e.setNodeMarkup(e.mapping.map(l.before()), y);
5428
5428
  }
5429
5429
  r && Ur(t, o.extensionManager.splittableMarks), e.scrollIntoView();
5430
5430
  }
@@ -5470,7 +5470,7 @@ const La = ({ keepMarks: r = !0 } = {}) => ({ tr: e, state: t, dispatch: n, edit
5470
5470
  ...e
5471
5471
  };
5472
5472
  t.delete(a.pos, c.pos);
5473
- const x = d ? [
5473
+ const w = d ? [
5474
5474
  { type: l, attrs: h },
5475
5475
  { type: d, attrs: g }
5476
5476
  ] : [{ type: l, attrs: h }];
@@ -5478,7 +5478,7 @@ const La = ({ keepMarks: r = !0 } = {}) => ({ tr: e, state: t, dispatch: n, edit
5478
5478
  return !1;
5479
5479
  if (o) {
5480
5480
  const { selection: v, storedMarks: I } = n, { splittableMarks: A } = i.extensionManager, M = I || v.$to.parentOffset && v.$from.marks();
5481
- if (t.split(a.pos, 2, x).scrollIntoView(), !M || !o)
5481
+ if (t.split(a.pos, 2, w).scrollIntoView(), !M || !o)
5482
5482
  return !0;
5483
5483
  const j = M.filter((re) => A.includes(re.type.name));
5484
5484
  t.ensureMarks(j);
@@ -5503,7 +5503,7 @@ const La = ({ keepMarks: r = !0 } = {}) => ({ tr: e, state: t, dispatch: n, edit
5503
5503
  const o = r.doc.nodeAt(n);
5504
5504
  return t.node.type === o?.type && Ue(r.doc, n) && r.join(n), !0;
5505
5505
  }, Wa = (r, e, t, n = {}) => ({ editor: o, tr: i, state: s, dispatch: l, chain: a, commands: c, can: u }) => {
5506
- const { extensions: f, splittableMarks: y } = o.extensionManager, d = ee(r, s.schema), h = ee(e, s.schema), { selection: g, storedMarks: x } = s, { $from: v, $to: I } = g, A = v.blockRange(I), M = x || g.$to.parentOffset && g.$from.marks();
5506
+ const { extensions: f, splittableMarks: y } = o.extensionManager, d = ee(r, s.schema), h = ee(e, s.schema), { selection: g, storedMarks: w } = s, { $from: v, $to: I } = g, A = v.blockRange(I), M = w || g.$to.parentOffset && g.$from.marks();
5507
5507
  if (!A)
5508
5508
  return !1;
5509
5509
  const j = sr((re) => Hr(re.type.name, f))(g);
@@ -5559,7 +5559,7 @@ const La = ({ keepMarks: r = !0 } = {}) => ({ tr: e, state: t, dispatch: n, edit
5559
5559
  return !0;
5560
5560
  if (u && s) {
5561
5561
  let { from: y, to: d } = l;
5562
- const h = (i = c.marks().find((x) => x.type === a)) === null || i === void 0 ? void 0 : i.attrs, g = Yo(c, a, h);
5562
+ const h = (i = c.marks().find((w) => w.type === a)) === null || i === void 0 ? void 0 : i.attrs, g = Yo(c, a, h);
5563
5563
  g && (y = g.from, d = g.to), t.removeMark(y, d, a);
5564
5564
  } else
5565
5565
  f.forEach((y) => {
@@ -5572,15 +5572,15 @@ const La = ({ keepMarks: r = !0 } = {}) => ({ tr: e, state: t, dispatch: n, edit
5572
5572
  return l ? (l === "node" && (i = ee(r, n.schema)), l === "mark" && (s = $e(r, n.schema)), o && t.selection.ranges.forEach((a) => {
5573
5573
  const c = a.$from.pos, u = a.$to.pos;
5574
5574
  let f, y, d, h;
5575
- t.selection.empty ? n.doc.nodesBetween(c, u, (g, x) => {
5576
- i && i === g.type && (d = Math.max(x, c), h = Math.min(x + g.nodeSize, u), f = x, y = g);
5577
- }) : n.doc.nodesBetween(c, u, (g, x) => {
5578
- x < c && i && i === g.type && (d = Math.max(x, c), h = Math.min(x + g.nodeSize, u), f = x, y = g), x >= c && x <= u && (i && i === g.type && t.setNodeMarkup(x, void 0, {
5575
+ t.selection.empty ? n.doc.nodesBetween(c, u, (g, w) => {
5576
+ i && i === g.type && (d = Math.max(w, c), h = Math.min(w + g.nodeSize, u), f = w, y = g);
5577
+ }) : n.doc.nodesBetween(c, u, (g, w) => {
5578
+ w < c && i && i === g.type && (d = Math.max(w, c), h = Math.min(w + g.nodeSize, u), f = w, y = g), w >= c && w <= u && (i && i === g.type && t.setNodeMarkup(w, void 0, {
5579
5579
  ...g.attrs,
5580
5580
  ...e
5581
5581
  }), s && g.marks.length && g.marks.forEach((v) => {
5582
5582
  if (s === v.type) {
5583
- const I = Math.max(x, c), A = Math.min(x + g.nodeSize, u);
5583
+ const I = Math.max(w, c), A = Math.min(w + g.nodeSize, u);
5584
5584
  t.addMark(I, A, s.create({
5585
5585
  ...v.attrs,
5586
5586
  ...e
@@ -5738,7 +5738,7 @@ de.create({
5738
5738
  () => s.undoInputRule(),
5739
5739
  // maybe convert first text block node to default node
5740
5740
  () => s.command(({ tr: l }) => {
5741
- const { selection: a, doc: c } = l, { empty: u, $anchor: f } = a, { pos: y, parent: d } = f, h = f.parent.isTextblock && y > 0 ? l.doc.resolve(y - 1) : f, g = h.parent.type.spec.isolating, x = f.pos - f.parentOffset, v = g && h.parent.childCount === 1 ? x === f.pos : F.atStart(c).from === y;
5741
+ const { selection: a, doc: c } = l, { empty: u, $anchor: f } = a, { pos: y, parent: d } = f, h = f.parent.isTextblock && y > 0 ? l.doc.resolve(y - 1) : f, g = h.parent.type.spec.isolating, w = f.pos - f.parentOffset, v = g && h.parent.childCount === 1 ? w === f.pos : F.atStart(c).from === y;
5742
5742
  return !u || !d.type.isTextblock || d.textContent.length || !v || v && f.parent.type.name === "paragraph" ? !1 : s.clearNodes();
5743
5743
  }),
5744
5744
  () => s.deleteSelection(),
@@ -7667,8 +7667,8 @@ const Cc = new bc("commentGutter"), Tc = de.create({
7667
7667
  a();
7668
7668
  const u = o.dom;
7669
7669
  if (!u) return;
7670
- const f = r?.(), d = e?.() || f || u, h = d.getBoundingClientRect(), g = typeof d.scrollTop == "number" ? d.scrollTop : 0, x = u.querySelectorAll("span[data-comment-id]") || [], v = /* @__PURE__ */ new Map();
7671
- x.forEach((A) => {
7670
+ const f = r?.(), d = e?.() || f || u, h = d.getBoundingClientRect(), g = typeof d.scrollTop == "number" ? d.scrollTop : 0, w = u.querySelectorAll("span[data-comment-id]") || [], v = /* @__PURE__ */ new Map();
7671
+ w.forEach((A) => {
7672
7672
  const M = A.getAttribute("data-comment-id");
7673
7673
  if (!M) return;
7674
7674
  const j = A.getClientRects()[0] || A.getBoundingClientRect();
@@ -7764,7 +7764,7 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
7764
7764
  return crypto.randomUUID();
7765
7765
  const m = new Uint8Array(16);
7766
7766
  return crypto.getRandomValues(m), m[6] = m[6] & 15 | 64, m[8] = m[8] & 63 | 128, [...m].map(
7767
- (k, w) => ([4, 6, 8, 10].includes(w) ? "-" : "") + k.toString(16).padStart(2, "0")
7767
+ (k, x) => ([4, 6, 8, 10].includes(x) ? "-" : "") + k.toString(16).padStart(2, "0")
7768
7768
  ).join("");
7769
7769
  }
7770
7770
  const o = $(!1);
@@ -7791,20 +7791,20 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
7791
7791
  }
7792
7792
  const d = $(""), h = /* @__PURE__ */ new Map();
7793
7793
  let g = null;
7794
- const x = (m) => {
7794
+ const w = (m) => {
7795
7795
  clearTimeout(g), g = setTimeout(() => {
7796
7796
  const k = m ?? Q();
7797
7797
  if (!k || M.value.length === 0 && h.size === 0) return;
7798
- const w = /* @__PURE__ */ new Set();
7798
+ const x = /* @__PURE__ */ new Set();
7799
7799
  k.state.doc.descendants((C) => {
7800
7800
  C.marks.forEach((E) => {
7801
- E.type.name === "comment" && E.attrs.commentId && w.add(E.attrs.commentId);
7801
+ E.type.name === "comment" && E.attrs.commentId && x.add(E.attrs.commentId);
7802
7802
  });
7803
7803
  });
7804
7804
  for (const [C, { comment: E }] of h)
7805
- w.has(C) && (h.delete(C), yi(C), M.value.push(E));
7805
+ x.has(C) && (h.delete(C), yi(C), M.value.push(E));
7806
7806
  M.value.filter(
7807
- (C) => !w.has(C.id) && !h.has(C.id)
7807
+ (C) => !x.has(C.id) && !h.has(C.id)
7808
7808
  ).forEach((C) => {
7809
7809
  M.value = M.value.filter((E) => E.id !== C.id), h.set(C.id, { comment: { ...C } }), gi(C.id);
7810
7810
  });
@@ -7812,16 +7812,16 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
7812
7812
  }, v = (m) => {
7813
7813
  const k = m ?? Q();
7814
7814
  if (!k || M.value.length === 0) return;
7815
- const w = /* @__PURE__ */ new Map();
7815
+ const x = /* @__PURE__ */ new Map();
7816
7816
  k.state.doc.descendants((b) => {
7817
7817
  b.marks.forEach((C) => {
7818
7818
  if (C.type.name === "comment" && C.attrs.commentId) {
7819
7819
  const E = C.attrs.colorIndex ?? 0, N = Number.parseInt(E, 10), R = Number.isNaN(N) || !Number.isFinite(N) ? 0 : (N % G + G) % G;
7820
- w.set(C.attrs.commentId, R);
7820
+ x.set(C.attrs.commentId, R);
7821
7821
  }
7822
7822
  });
7823
- }), w.size !== 0 && (M.value = M.value.map(
7824
- (b) => w.has(b.id) ? { ...b, colorIndex: w.get(b.id) } : b
7823
+ }), x.size !== 0 && (M.value = M.value.map(
7824
+ (b) => x.has(b.id) ? { ...b, colorIndex: x.get(b.id) } : b
7825
7825
  ));
7826
7826
  }, I = $(null);
7827
7827
  let A = null;
@@ -7879,17 +7879,17 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
7879
7879
  if (k)
7880
7880
  await Qi(k, M.value, d.value || "文档");
7881
7881
  else {
7882
- const w = m?.getHTML() ?? I.value?.getHTML();
7883
- if (!w) throw new Error("编辑器内容为空,无法导出");
7884
- await Tr(w, M.value, d.value || "文档");
7882
+ const x = m?.getHTML() ?? I.value?.getHTML();
7883
+ if (!x) throw new Error("编辑器内容为空,无法导出");
7884
+ await Tr(x, M.value, d.value || "文档");
7885
7885
  }
7886
7886
  } catch (k) {
7887
7887
  try {
7888
- const w = m?.getHTML() ?? I.value?.getHTML();
7889
- if (!w) throw k;
7890
- await Tr(w, M.value, d.value || "文档");
7891
- } catch (w) {
7892
- console.error("导出 Word 失败:", w), alert("导出 Word 失败,请稍后重试");
7888
+ const x = m?.getHTML() ?? I.value?.getHTML();
7889
+ if (!x) throw k;
7890
+ await Tr(x, M.value, d.value || "文档");
7891
+ } catch (x) {
7892
+ console.error("导出 Word 失败:", x), alert("导出 Word 失败,请稍后重试");
7893
7893
  }
7894
7894
  } finally {
7895
7895
  lt.value = !1;
@@ -7900,23 +7900,23 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
7900
7900
  at.value = !0;
7901
7901
  try {
7902
7902
  const k = m?.getJSON?.();
7903
- let w;
7903
+ let x;
7904
7904
  if (k)
7905
- w = await Xi(k, M.value, d.value || "文档");
7905
+ x = await Xi(k, M.value, d.value || "文档");
7906
7906
  else {
7907
7907
  const b = m?.getHTML() ?? I.value?.getHTML();
7908
7908
  if (!b) throw new Error("编辑器内容为空,无法导出");
7909
- w = await Mr(b, d.value || "文档");
7909
+ x = await Mr(b, d.value || "文档");
7910
7910
  }
7911
- Er(w, `${d.value || "文档"}.docx`);
7911
+ Er(x, `${d.value || "文档"}.docx`);
7912
7912
  } catch (k) {
7913
7913
  try {
7914
- const w = m?.getHTML() ?? I.value?.getHTML();
7915
- if (!w) throw k;
7916
- const b = await Mr(w, d.value || "文档");
7914
+ const x = m?.getHTML() ?? I.value?.getHTML();
7915
+ if (!x) throw k;
7916
+ const b = await Mr(x, d.value || "文档");
7917
7917
  Er(b, `${d.value || "文档"}.docx`);
7918
- } catch (w) {
7919
- console.error("Word 流导出失败:", w), alert("Word 流导出失败,请稍后重试");
7918
+ } catch (x) {
7919
+ console.error("Word 流导出失败:", x), alert("Word 流导出失败,请稍后重试");
7920
7920
  }
7921
7921
  } finally {
7922
7922
  at.value = !1;
@@ -7926,7 +7926,7 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
7926
7926
  }, ur = async (m) => {
7927
7927
  At.value = !0;
7928
7928
  try {
7929
- const k = pr.value?.onFileUpload, w = typeof k == "function" ? {
7929
+ const k = pr.value?.onFileUpload, x = typeof k == "function" ? {
7930
7930
  uploadImageFile: async (q) => {
7931
7931
  const he = await k(q);
7932
7932
  return { url: he?.url ?? "", id: he?.id };
@@ -7934,9 +7934,9 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
7934
7934
  } : void 0;
7935
7935
  let b = null;
7936
7936
  try {
7937
- b = await Yi(m, w);
7937
+ b = await Yi(m, x);
7938
7938
  } catch (q) {
7939
- console.warn("[Word 导入] JSON 导入失败,回退到 HTML:", q), b = await Zi(m, w);
7939
+ console.warn("[Word 导入] JSON 导入失败,回退到 HTML:", q), b = await Zi(m, x);
7940
7940
  }
7941
7941
  let C = Q();
7942
7942
  for (let q = 0; q < 40 && !C; q++)
@@ -7982,7 +7982,7 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
7982
7982
  function Rt(m) {
7983
7983
  return typeof m != "string" ? "" : m.replace(/[\u200B\u200C\u200D\uFEFF]/g, " ").trim().replace(/\s+/g, " ").replace(/[\uFF01-\uFF5E]/g, (k) => String.fromCharCode(k.charCodeAt(0) - 65248));
7984
7984
  }
7985
- const Ei = (m, k, w, b = 0, C = {}) => {
7985
+ const Ei = (m, k, x, b = 0, C = {}) => {
7986
7986
  const E = k.trim();
7987
7987
  if (!E) return !1;
7988
7988
  const { doc: N } = m.state, R = Rt(k);
@@ -8050,32 +8050,32 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
8050
8050
  if (se) {
8051
8051
  const D = wr(!0), U = he(D);
8052
8052
  if (U)
8053
- return m.chain().setTextSelection(U).addComment(w, b).run(), !0;
8053
+ return m.chain().setTextSelection(U).addComment(x, b).run(), !0;
8054
8054
  }
8055
8055
  const Fi = wr(!1), xr = q(Fi);
8056
8056
  if (xr)
8057
- return m.chain().setTextSelection(xr).addComment(w, b).run(), !0;
8057
+ return m.chain().setTextSelection(xr).addComment(x, b).run(), !0;
8058
8058
  if (se) {
8059
8059
  const D = Dt(R, !0), U = he(D);
8060
8060
  if (U)
8061
- return m.chain().setTextSelection(U).addComment(w, b).run(), !0;
8061
+ return m.chain().setTextSelection(U).addComment(x, b).run(), !0;
8062
8062
  }
8063
8063
  let Tn = Dt(R, !1);
8064
8064
  const vr = q(Tn);
8065
8065
  if (vr)
8066
- return m.chain().setTextSelection(vr).addComment(w, b).run(), !0;
8066
+ return m.chain().setTextSelection(vr).addComment(x, b).run(), !0;
8067
8067
  const Sr = Math.min(30, Math.max(8, Math.floor(R.length * 0.6)));
8068
8068
  if (Sr < R.length) {
8069
8069
  const D = R.slice(0, Sr);
8070
8070
  if (se) {
8071
8071
  const z = Dt(D, !0), X = q(z);
8072
8072
  if (X)
8073
- return m.chain().setTextSelection(X).addComment(w, b).run(), !0;
8073
+ return m.chain().setTextSelection(X).addComment(x, b).run(), !0;
8074
8074
  }
8075
8075
  Tn = Dt(D, !1);
8076
8076
  const U = q(Tn);
8077
8077
  if (U)
8078
- return m.chain().setTextSelection(U).addComment(w, b).run(), !0;
8078
+ return m.chain().setTextSelection(U).addComment(x, b).run(), !0;
8079
8079
  }
8080
8080
  try {
8081
8081
  const D = m.state.doc.textBetween(0, m.state.doc.content.size, `
@@ -8090,8 +8090,8 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
8090
8090
  }
8091
8091
  return !1;
8092
8092
  };
8093
- async function dr(m, k, w = {}) {
8094
- const b = w.defaultAuthor ?? "智能审核";
8093
+ async function dr(m, k, x = {}) {
8094
+ const b = x.defaultAuthor ?? "智能审核";
8095
8095
  let C = 0;
8096
8096
  const E = [];
8097
8097
  for (const N of k) {
@@ -8124,16 +8124,16 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
8124
8124
  };
8125
8125
  }
8126
8126
  function hr(m, k) {
8127
- let w = 0, b = !1;
8127
+ let x = 0, b = !1;
8128
8128
  for (let C = 0; C < m.length; C++)
8129
8129
  if (fr(m[C]) === " ") {
8130
8130
  if (!b) {
8131
- if (w === k) return C;
8132
- w++, b = !0;
8131
+ if (x === k) return C;
8132
+ x++, b = !0;
8133
8133
  }
8134
8134
  } else {
8135
- if (w === k) return C;
8136
- w++, b = !1;
8135
+ if (x === k) return C;
8136
+ x++, b = !1;
8137
8137
  }
8138
8138
  return m.length;
8139
8139
  }
@@ -8171,8 +8171,8 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
8171
8171
  ct.value = !0;
8172
8172
  try {
8173
8173
  Sn.value = JSON.stringify(k, null, 2), Bt.value = !1, Ft.value = !0;
8174
- } catch (w) {
8175
- console.error("导出 JSON 失败:", w), alert("导出 JSON 失败,请稍后重试");
8174
+ } catch (x) {
8175
+ console.error("导出 JSON 失败:", x), alert("导出 JSON 失败,请稍后重试");
8176
8176
  } finally {
8177
8177
  ct.value = !1;
8178
8178
  }
@@ -8216,10 +8216,10 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
8216
8216
  // return await requestSave({ silent: true })
8217
8217
  // },
8218
8218
  onChanged: ({ editor: m }) => {
8219
- x(m);
8219
+ w(m);
8220
8220
  }
8221
8221
  })), pr = ue(() => {
8222
- const m = f ?? {}, k = Array.isArray(m.extensions) ? m.extensions : [], w = zi(), b = [...k, ...w], C = m.cdnUrl ?? "/node_modules/@umoteam/editor-external", E = {
8222
+ const m = f ?? {}, k = Array.isArray(m.extensions) ? m.extensions : [], x = zi(), b = [...k, ...x], C = m.cdnUrl ?? "/node_modules/@umoteam/editor-external", E = {
8223
8223
  ...m,
8224
8224
  cdnUrl: C,
8225
8225
  disableExtensions: ["import-word"],
@@ -8244,12 +8244,12 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
8244
8244
  getEditor: () => Q(),
8245
8245
  importDocxFile: Ti,
8246
8246
  setContent: (m, k = !1) => {
8247
- const w = Q();
8248
- return w?.commands?.setContent ? (w.commands.setContent(m, !!k), !0) : !1;
8247
+ const x = Q();
8248
+ return x?.commands?.setContent ? (x.commands.setContent(m, !!k), !0) : !1;
8249
8249
  },
8250
8250
  setComments: async (m, k) => {
8251
- const w = Q(), b = Array.isArray(m) ? m : [];
8252
- if (!w)
8251
+ const x = Q(), b = Array.isArray(m) ? m : [];
8252
+ if (!x)
8253
8253
  return {
8254
8254
  ok: !1,
8255
8255
  applied: 0,
@@ -8259,13 +8259,13 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
8259
8259
  if (k?.replace) {
8260
8260
  const R = M.value.map((se) => se.id);
8261
8261
  for (const se of R)
8262
- w.commands.removeComment(se);
8262
+ x.commands.removeComment(se);
8263
8263
  mi(), h.clear(), gn(null), await mn(void 0, []);
8264
8264
  }
8265
- const { applied: C, skipped: E, skippedItems: N } = await dr(w, b, {
8265
+ const { applied: C, skipped: E, skippedItems: N } = await dr(x, b, {
8266
8266
  defaultAuthor: "智能审核"
8267
8267
  });
8268
- return await Hi(), v(w), x(w), {
8268
+ return await Hi(), v(x), w(x), {
8269
8269
  ok: !0,
8270
8270
  applied: C,
8271
8271
  skipped: E,
@@ -8276,19 +8276,19 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
8276
8276
  });
8277
8277
  function mr(m) {
8278
8278
  !m || !m.querySelectorAll || m.querySelectorAll("table").forEach((k) => {
8279
- const w = k.querySelector("colgroup"), b = k.querySelectorAll("tbody tr, tr"), C = k.querySelectorAll("td");
8280
- w && !w.hasAttribute("data-word-col-layout") && b.length === 1 && C.length === 2 && w.setAttribute("data-word-col-layout", "1");
8279
+ const x = k.querySelector("colgroup"), b = k.querySelectorAll("tbody tr, tr"), C = k.querySelectorAll("td");
8280
+ x && !x.hasAttribute("data-word-col-layout") && b.length === 1 && C.length === 2 && x.setAttribute("data-word-col-layout", "1");
8281
8281
  });
8282
8282
  }
8283
8283
  const _i = async (m) => {
8284
8284
  const k = Q();
8285
8285
  if (!k) return;
8286
- const w = n(), b = M.value.length % G;
8287
- k.commands.addComment(w, b);
8286
+ const x = n(), b = M.value.length % G;
8287
+ k.commands.addComment(x, b);
8288
8288
  try {
8289
- await re({ id: w, selectedText: xn.value, note: m, colorIndex: b });
8289
+ await re({ id: x, selectedText: xn.value, note: m, colorIndex: b });
8290
8290
  } catch {
8291
- k.commands.removeComment(w);
8291
+ k.commands.removeComment(x);
8292
8292
  }
8293
8293
  wn.value = !1, xn.value = "";
8294
8294
  }, gr = async (m) => {
@@ -8302,9 +8302,9 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
8302
8302
  }, Cn = (m) => {
8303
8303
  const k = m.target;
8304
8304
  if (!(k instanceof Element)) return;
8305
- const w = k.closest(".comment-mark");
8306
- if (!w) return;
8307
- const b = w.getAttribute("data-comment-id");
8305
+ const x = k.closest(".comment-mark");
8306
+ if (!x) return;
8307
+ const b = x.getAttribute("data-comment-id");
8308
8308
  b && (gn(b), bn(b), c.value && requestAnimationFrame(() => {
8309
8309
  const C = document.querySelector(".comment-panel");
8310
8310
  if (!C) return;
@@ -8324,7 +8324,7 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
8324
8324
  }), br(() => {
8325
8325
  clearTimeout(g), A && (A.removeEventListener("click", Cn), A = null);
8326
8326
  }), (m, k) => {
8327
- const w = qi("umo-editor");
8327
+ const x = qi("umo-editor");
8328
8328
  return O(), J("div", Ec, [
8329
8329
  p("div", Ic, [
8330
8330
  p("div", Nc, [
@@ -8333,7 +8333,7 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
8333
8333
  ref: _e,
8334
8334
  class: "umo-editor-stage"
8335
8335
  }, [
8336
- Wi(w, Vi({
8336
+ Wi(x, Vi({
8337
8337
  ref_key: "editorRef",
8338
8338
  ref: I
8339
8339
  }, pr.value), {
@@ -8671,7 +8671,7 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
8671
8671
  }, su = {
8672
8672
  class: "complex-comment-panel__tabs",
8673
8673
  role: "tablist"
8674
- }, lu = ["onClick"], au = { class: "complex-comment-panel__body" }, cu = { class: "complex-comment-panel__section-head" }, uu = { class: "complex-comment-panel__section-title" }, fu = { class: "complex-comment-panel__cards" }, du = ["onClick"], hu = { class: "audit-card__head" }, pu = { class: "audit-card__point" }, mu = { class: "audit-card__block" }, gu = { class: "audit-card__quote" }, yu = ["onClick"], ku = { class: "audit-card__block audit-card__block--desc" }, wu = { class: "audit-card__desc" }, ut = "__all__", xu = {
8674
+ }, lu = ["onClick"], au = { class: "complex-comment-panel__body" }, cu = { class: "complex-comment-panel__section-head" }, uu = { class: "complex-comment-panel__section-title" }, fu = { class: "complex-comment-panel__cards" }, du = ["onClick"], hu = { class: "audit-card__head" }, pu = ["title"], mu = { class: "audit-card__block" }, gu = { class: "audit-card__quote" }, yu = ["onClick"], ku = { class: "audit-card__block audit-card__block--desc" }, wu = { class: "audit-card__desc" }, ut = "__all__", xu = {
8675
8675
  __name: "ComplexCommentPanel",
8676
8676
  props: {
8677
8677
  items: {
@@ -8702,10 +8702,10 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
8702
8702
  const d = [...t.items ?? []];
8703
8703
  return o.value ? d.filter((h) => String(h?.reviewStatus ?? "") === "risk") : d;
8704
8704
  }), l = ue(() => {
8705
- const d = s.value, h = /* @__PURE__ */ new Map(), g = [], x = /* @__PURE__ */ new Set();
8705
+ const d = s.value, h = /* @__PURE__ */ new Map(), g = [], w = /* @__PURE__ */ new Set();
8706
8706
  for (const I of d) {
8707
8707
  const M = (I ?? {}).category || "未分类";
8708
- h.set(M, (h.get(M) ?? 0) + 1), x.has(M) || (x.add(M), g.push(M));
8708
+ h.set(M, (h.get(M) ?? 0) + 1), w.has(M) || (w.add(M), g.push(M));
8709
8709
  }
8710
8710
  const v = [{ key: ut, label: "全部", count: d.length }];
8711
8711
  for (const I of g)
@@ -8716,13 +8716,13 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
8716
8716
  return i.value !== ut && (d = d.filter((h) => (h?.category || "未分类") === i.value)), d;
8717
8717
  }), c = ue(() => {
8718
8718
  const d = a.value, h = [], g = /* @__PURE__ */ new Map();
8719
- for (const x of d) {
8720
- const v = x.category || "未分类";
8721
- g.has(v) || (g.set(v, []), h.push(v)), g.get(v).push(x);
8719
+ for (const w of d) {
8720
+ const v = w.category || "未分类";
8721
+ g.has(v) || (g.set(v, []), h.push(v)), g.get(v).push(w);
8722
8722
  }
8723
- return h.map((x) => ({
8724
- category: x,
8725
- rows: g.get(x)
8723
+ return h.map((w) => ({
8724
+ category: w,
8725
+ rows: g.get(w)
8726
8726
  }));
8727
8727
  }), u = (d) => {
8728
8728
  const h = String(d ?? "");
@@ -8762,7 +8762,7 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
8762
8762
  type: "button",
8763
8763
  role: "tab",
8764
8764
  class: vt(["complex-comment-panel__tab", { "complex-comment-panel__tab--active": i.value === g.key }]),
8765
- onClick: (x) => i.value = g.key
8765
+ onClick: (w) => i.value = g.key
8766
8766
  }, _(g.label) + " (" + _(g.count) + ") ", 11, lu))), 128))
8767
8767
  ]),
8768
8768
  p("div", au, [
@@ -8774,24 +8774,27 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
8774
8774
  p("span", uu, _(g.category), 1)
8775
8775
  ]),
8776
8776
  p("ul", fu, [
8777
- (O(!0), J(tt, null, xt(g.rows, (x) => (O(), J("li", {
8778
- key: x.id,
8779
- class: vt(["audit-card", { "audit-card--active": r.activeCommentId === x.id }]),
8780
- onClick: (v) => y(x.id)
8777
+ (O(!0), J(tt, null, xt(g.rows, (w) => (O(), J("li", {
8778
+ key: w.id,
8779
+ class: vt(["audit-card", { "audit-card--active": r.activeCommentId === w.id }]),
8780
+ onClick: (v) => y(w.id)
8781
8781
  }, [
8782
8782
  p("div", hu, [
8783
- p("span", pu, _(x.reviewPoint || "(无审查点)"), 1),
8784
8783
  p("span", {
8785
- class: vt(["audit-card__badge", f(x.reviewStatus)])
8786
- }, _(u(x.reviewStatus)), 3)
8784
+ class: "audit-card__point",
8785
+ title: w.reviewPoint || "(无审查点)"
8786
+ }, _(w.reviewPoint || "(无审查点)"), 9, pu),
8787
+ p("span", {
8788
+ class: vt(["audit-card__badge", f(w.reviewStatus)])
8789
+ }, _(u(w.reviewStatus)), 3)
8787
8790
  ]),
8788
8791
  p("div", mu, [
8789
8792
  h[5] || (h[5] = p("div", { class: "audit-card__label" }, "原文内容", -1)),
8790
- p("div", gu, _(x.originalText || "无原文"), 1),
8793
+ p("div", gu, _(w.originalText || "无原文"), 1),
8791
8794
  p("button", {
8792
8795
  type: "button",
8793
8796
  class: "audit-card__locate",
8794
- onClick: ze((v) => y(x.id), ["stop"])
8797
+ onClick: ze((v) => y(w.id), ["stop"])
8795
8798
  }, [...h[4] || (h[4] = [
8796
8799
  p("span", {
8797
8800
  class: "audit-card__locate-icon",
@@ -8803,7 +8806,7 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
8803
8806
  h[7] || (h[7] = p("div", { class: "audit-card__divider" }, null, -1)),
8804
8807
  p("div", ku, [
8805
8808
  h[6] || (h[6] = p("div", { class: "audit-card__label audit-card__label--strong" }, "审查说明", -1)),
8806
- p("p", wu, _(x.auditDescription || "—"), 1)
8809
+ p("p", wu, _(w.auditDescription || "—"), 1)
8807
8810
  ])
8808
8811
  ], 10, du))), 128))
8809
8812
  ])
@@ -8812,7 +8815,7 @@ const Ec = { class: "app-layout" }, Ic = { class: "editor-wrapper" }, Nc = { cla
8812
8815
  ], 64))
8813
8816
  ]));
8814
8817
  }
8815
- }, Fu = /* @__PURE__ */ Ot(xu, [["__scopeId", "data-v-857048b4"]]);
8818
+ }, Fu = /* @__PURE__ */ Ot(xu, [["__scopeId", "data-v-de917c6e"]]);
8816
8819
  function Bu() {
8817
8820
  }
8818
8821
  const Ju = {
@@ -1 +1 @@
1
- {"version":3,"file":"ComplexCommentPanel.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ComplexCommentPanel.vue"],"names":[],"mappings":"wBAo0BqB,OAAO,YAAY;;AAjBxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAgBG"}
1
+ {"version":3,"file":"ComplexCommentPanel.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ComplexCommentPanel.vue"],"names":[],"mappings":"wBA80BqB,OAAO,YAAY;;AAjBxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAgBG"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ai-word-editor",
3
3
  "private": false,
4
- "version": "0.0.55",
4
+ "version": "0.0.56",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.js",