flow-mindmap 0.5.14 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/style.css CHANGED
@@ -1,4 +1,4 @@
1
- .zm-node-menu{position:fixed;z-index:40;min-width:168px;padding:4px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 8px 24px #0f172a24;display:flex;flex-direction:column;gap:2px;font-size:13px;color:#1e293b;-webkit-user-select:none;user-select:none}.zm-node-menu-item{display:flex;align-items:center;gap:8px;padding:6px 10px;border:none;background:transparent;color:inherit;font:inherit;text-align:left;border-radius:4px;cursor:pointer;width:100%;transition:background .1s}.zm-node-menu-item:hover:not(:disabled){background:#f1f5f9}.zm-node-menu-item:active:not(:disabled){background:#e2e8f0}.zm-node-menu-item:disabled{color:#94a3b8;cursor:not-allowed}.zm-node-menu-icon{display:inline-flex;align-items:center;justify-content:center;width:13px;height:13px;font-size:10px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-weight:600;color:#64748b;flex-shrink:0}.zm-node-menu-icon-code{font-size:10px;letter-spacing:-1px}.zm-node-menu-icon-table{font-size:12px;font-family:inherit}.zm-node-menu-divider{height:1px;background:#e2e8f0;margin:2px 4px}.zm-node-menu-arrow{margin-left:auto;font-size:14px;color:#94a3b8;transition:transform .15s}.zm-node-menu-arrow.is-open{transform:rotate(90deg)}.zm-marker-picker{padding:4px 8px 6px;display:flex;flex-direction:column;gap:6px}.zm-marker-group{display:flex;flex-direction:column;gap:3px}.zm-marker-group-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#94a3b8}.zm-marker-grid{display:flex;flex-wrap:wrap;gap:3px}.zm-marker-cell{width:26px;height:26px;display:flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:4px;background:#f8fafc;cursor:pointer;padding:0;transition:all .1s}.zm-marker-cell:hover{background:#e2e8f0;border-color:#cbd5e1}.zm-marker-cell.is-active{background:#eff6ff;border-color:#3b82f6;box-shadow:0 0 0 1px #3b82f633}.zm-marker-cell svg{display:block}.zm-marker-clear{font:inherit;font-size:11px;color:#b91c1c;background:transparent;border:none;cursor:pointer;text-align:center;padding:3px;border-radius:4px}.zm-marker-clear:hover{background:#fee2e2}.zm-canvas-menu{position:fixed;z-index:40;min-width:140px;padding:4px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-sizing:border-box;box-shadow:0 8px 24px #0f172a24;display:flex;flex-direction:column;gap:2px;font-size:13px;color:#1e293b;-webkit-user-select:none;user-select:none}.zm-canvas-menu-item{display:flex;align-items:center;gap:8px;padding:6px 10px;border:none;background:transparent;color:inherit;font:inherit;text-align:left;border-radius:4px;cursor:pointer;width:100%;box-sizing:border-box;transition:background .1s}.zm-canvas-menu-item:hover:not(:disabled){background:#f1f5f9}.zm-canvas-menu-item:active:not(:disabled){background:#e2e8f0}.zm-canvas-menu-item:disabled{color:#94a3b8;cursor:not-allowed}.zm-canvas-menu-item-has-submenu{position:relative;box-sizing:border-box}.zm-canvas-menu-item-has-submenu.is-open,.zm-canvas-menu-item-has-submenu:hover{background:#f1f5f9}.zm-canvas-menu-caret{margin-left:auto;color:#94a3b8;flex-shrink:0;display:inline-flex;align-items:center}.zm-canvas-menu-divider{height:1px;background:#e2e8f0;margin:2px 4px}.zm-canvas-submenu{position:fixed;z-index:41;min-width:160px;padding:4px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-sizing:border-box;box-shadow:0 8px 24px #0f172a24;display:flex;flex-direction:column;gap:2px;font-size:13px;color:#1e293b;-webkit-user-select:none;user-select:none;animation:zm-submenu-in .12s ease-out}@keyframes zm-submenu-in{0%{opacity:0;transform:translate(-4px)}to{opacity:1;transform:translate(0)}}.zm-drawer{display:flex;flex-direction:column;height:100%;background:#fafbfc;border-right:1px solid #e8eaed;overflow:hidden;flex-shrink:0}.zm-drawer--canvas{position:absolute;top:0;bottom:0;height:100%;z-index:40;box-shadow:0 12px 40px #0f172a14,0 2px 8px #0f172a0a}.zm-drawer--left.zm-drawer--canvas{left:0;border-right:1px solid #e8eaed}.zm-drawer--right.zm-drawer--canvas{right:0;border-right:none;border-left:1px solid #e8eaed}.zm-drawer-canvas-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#0f172a2e;z-index:39;cursor:pointer;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.zm-drawer-enter-active,.zm-drawer-leave-active{transition:width .22s ease,opacity .15s ease}.zm-drawer-enter-from,.zm-drawer-leave-to{width:0!important;opacity:0;border-right:none}.zm-slide-left-enter-active,.zm-slide-left-leave-active,.zm-slide-right-enter-active,.zm-slide-right-leave-active{transition:transform .22s ease,opacity .18s ease}.zm-slide-left-enter-from,.zm-slide-left-leave-to{transform:translate(-100%);opacity:0}.zm-slide-right-enter-from,.zm-slide-right-leave-to{transform:translate(100%);opacity:0}.zm-fade-enter-active,.zm-fade-leave-active{transition:opacity .18s ease}.zm-fade-enter-from,.zm-fade-leave-to{opacity:0}.zm-drawer--right{border-right:none;border-left:1px solid #e8eaed}.zm-drawer-header{display:flex;align-items:center;gap:8px;padding:16px 20px;border-bottom:1px solid #f0f1f3;flex-shrink:0;background:#fff}.zm-drawer-title{margin:0;flex:1;font-size:14px;font-weight:600;color:#0f172a;letter-spacing:-.01em}.zm-drawer-close{width:28px;height:28px;border:none;background:transparent;color:#94a3b8;cursor:pointer;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .12s,color .12s}.zm-drawer-close:hover{background:#f1f5f9;color:#1e293b}.zm-drawer-body{flex:1;overflow:auto;min-height:0}.zm-outline-root{display:flex;flex-direction:column;height:100%}.zm-outline-search{display:flex;align-items:center;gap:6px;padding:8px 10px 4px;flex-shrink:0}.zm-outline-search-icon{color:#94a3b8;flex-shrink:0}.zm-outline-search-input{flex:1;min-width:0;padding:5px 10px;font:inherit;font-size:12px;color:#1e293b;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;outline:none;box-sizing:border-box;transition:border-color .12s,box-shadow .12s}.zm-outline-search-input:focus{border-color:#3b82f6;background:#fff;box-shadow:0 0 0 3px #3b82f61a}.zm-outline-search-input::placeholder{color:#94a3b8;font-size:11px}.zm-outline-search-count{font-size:11px;color:#64748b;white-space:nowrap;min-width:36px;text-align:center;flex-shrink:0}.zm-outline-search-empty{color:#ef4444}.zm-outline-search-clear{width:20px;height:20px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;border-radius:4px;cursor:pointer;color:#94a3b8;font-size:16px;line-height:1;flex-shrink:0}.zm-outline-search-clear:hover{background:#f1f5f9;color:#1e293b}.zm-outline-actions{display:flex;justify-content:flex-end;padding:4px 10px;flex-shrink:0}.zm-outline-action-btn{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;font-size:11px;font-family:inherit;color:#64748b;background:#f8fafc;border:1px solid #e2e8f0;border-radius:5px;cursor:pointer;transition:border-color .12s,background .12s;transition:all .1s}.zm-outline-action-btn:hover{background:#f1f5f9;color:#1e293b;border-color:#cbd5e1}.zm-outline-action-btn.is-success{background:#ecfdf5;color:#047857;border-color:#a7f3d0}.zm-outline{list-style:none;margin:0;padding:4px 0 8px;font-size:13px;overflow:auto;flex:1;min-height:0}.zm-outline-row{display:flex;align-items:center;gap:6px;padding-right:6px;padding-top:4px;padding-bottom:4px;cursor:grab;color:#334155;border-radius:4px;margin:0 6px;-webkit-user-select:none;user-select:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .1s;position:relative}.zm-outline-row:active{cursor:grabbing}.zm-outline-row:hover{background:#f1f5f9}.zm-outline-row.is-root{font-weight:600;color:#0f172a}.zm-outline-row.is-selected{background:#eff6ff;color:#1d4ed8}.zm-outline-row.is-selected .zm-outline-toggle,.zm-outline-row.is-selected .zm-outline-dot,.zm-outline-row.is-selected .zm-outline-row-copy,.zm-outline-row.is-selected .zm-outline-row-action{color:#1d4ed8}.zm-outline-row.is-search-hit{background:#fffbeb;box-shadow:inset 3px 0 #f59e0b}.zm-outline-row.is-search-current{background:#fef3c7;box-shadow:inset 3px 0 #f97316,inset 0 0 0 1px #f973164d}.zm-outline-row.is-drag-over-before:before,.zm-outline-row.is-drag-over-after:after{content:"";position:absolute;left:6px;right:6px;height:2px;background:#3b82f6;border-radius:1px;pointer-events:none}.zm-outline-row.is-drag-over-before:before{top:0}.zm-outline-row.is-drag-over-after:after{bottom:0}.zm-outline-row.is-drag-over-child{background:#dbeafe!important;outline:2px solid #3b82f6;outline-offset:-2px}.zm-outline-toggle{width:16px;height:16px;border:none;background:transparent;color:#94a3b8;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:3px;flex-shrink:0;padding:0}.zm-outline-toggle:hover{background:#e2e8f0;color:#475569}.zm-outline-dot{width:4px;height:4px;border-radius:50%;background:#cbd5e1;flex-shrink:0;margin:0 6px}.zm-outline-index{font-size:11px;color:#94a3b8;font-variant-numeric:tabular-nums;min-width:22px;flex-shrink:0;-webkit-user-select:none;user-select:none}.zm-outline-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.zm-outline-input{flex:1;font:inherit;font-size:13px;color:inherit;background:#fff;border:1px solid #3b82f6;border-radius:3px;padding:1px 4px;margin:-2px 0;outline:none}.zm-outline-row-action{width:20px;height:20px;border:1px solid transparent;background:transparent;color:#94a3b8;cursor:pointer;border-radius:4px;flex-shrink:0;padding:0;display:none;align-items:center;justify-content:center;transition:background .1s,color .1s,border-color .1s}.zm-outline-row:hover .zm-outline-row-action,.zm-outline-row.is-selected .zm-outline-row-action{display:inline-flex}.zm-outline-row-action:hover{background:#dbeafe;color:#1d4ed8;border-color:#bfdbfe}.zm-outline-row-action img{filter:invert(38%) sepia(94%) saturate(2417%) hue-rotate(229deg) brightness(91%) contrast(91%)}.zm-outline-row-copy{width:20px;height:20px;border:none;background:transparent;color:#94a3b8;display:none;align-items:center;justify-content:center;cursor:pointer;border-radius:3px;flex-shrink:0;padding:0;transition:background .1s,color .1s}.zm-outline-row:hover .zm-outline-row-copy,.zm-outline-row.is-selected .zm-outline-row-copy{display:flex}.zm-outline-row-copy:hover{background:#e2e8f0;color:#475569}.zm-outline-row-copy.is-success{display:flex;color:#047857;background:#ecfdf5}.zm-jtv-root{font-family:SF Mono,Menlo,Consolas,monospace;font-size:12px;line-height:1.6;color:#334155}.zm-jtv-header{display:flex;align-items:center;gap:4px;cursor:pointer;border-radius:3px;padding-right:6px;-webkit-user-select:none;user-select:none}.zm-jtv-header:hover{background:#f1f5f9}.zm-jtv-toggle{display:inline-block;width:12px;text-align:center;font-size:9px;color:#94a3b8;flex-shrink:0}.zm-jtv-toggle.is-leaf{color:#cbd5e1}.zm-jtv-key{color:#1d4ed8;font-weight:500}.zm-jtv-colon{color:#94a3b8;margin-right:4px}.zm-jtv-size{color:#64748b;font-style:italic}.zm-jtv-bracket,.zm-jtv-brace{color:#94a3b8;font-weight:500;margin-left:4px}.zm-jtv-footer{color:#94a3b8;font-weight:500}.zm-jtv-leaf{display:flex;align-items:center;gap:4px;flex-wrap:wrap;padding-right:6px;border-radius:3px}.zm-jtv-leaf:hover{background:#f8fafc}.zm-jtv-value{word-break:break-all}.zm-jtv-string{color:#047857}.zm-jtv-number{color:#b45309}.zm-jtv-boolean{color:#7c3aed;font-weight:500}.zm-jtv-null,.zm-jtv-undefined{color:#94a3b8;font-style:italic}.zm-jtv-thumb-wrap{display:inline-flex;align-items:center;gap:4px;margin-left:6px;flex-shrink:0}.zm-jtv-thumb{max-width:48px;max-height:32px;border:1px solid #e2e8f0;border-radius:3px;background:#fff;object-fit:contain}.zm-jtv-thumb-link{font-size:10px;color:#3b82f6;text-decoration:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.zm-jtv-thumb-link:hover{text-decoration:underline}.zm-jtv-leaf mark,.zm-jtv-key mark{background:#fef08a;color:#422006;padding:0 1px;border-radius:2px}.zm-data-panel{display:flex;flex-direction:column;height:100%;background:#fff}.zm-data-header{display:flex;align-items:center;padding:8px 12px 6px;border-bottom:1px solid #f1f5f9;background:#f8fafc;flex-shrink:0}.zm-data-title{display:flex;align-items:baseline;gap:8px;flex:1;min-width:0}.zm-data-title-text{font-size:12px;font-weight:600;color:#1e293b;letter-spacing:.02em}.zm-data-title-meta{font-size:11px;color:#94a3b8;font-variant-numeric:tabular-nums}.zm-data-toolbar{display:flex;align-items:center;gap:4px;padding:6px 10px;border-bottom:1px solid #f1f5f9;background:#fff;flex-shrink:0;flex-wrap:wrap}.zm-data-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;font-size:12px;font-family:inherit;color:#475569;background:#fff;border:1px solid #e2e8f0;border-radius:6px;cursor:pointer;transition:all .1s}.zm-data-btn:hover{background:#f1f5f9;color:#1e293b;border-color:#cbd5e1}.zm-data-btn.is-icon{padding:4px 8px}.zm-data-btn.is-active{background:#eff6ff;color:#1d4ed8;border-color:#bfdbfe}.zm-data-btn.is-success{background:#ecfdf5;color:#047857;border-color:#a7f3d0}.zm-data-btn.is-primary{background:#3b82f6;color:#fff;border-color:#3b82f6}.zm-data-btn.is-primary:hover{background:#2563eb;border-color:#2563eb;color:#fff}.zm-data-btn:disabled{opacity:.4;cursor:not-allowed}.zm-data-btn-label{font-size:11px}.zm-data-toolbar-spacer{flex:1;min-width:4px}.zm-data-search{display:flex;align-items:center;gap:4px;padding:3px 6px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;transition:all .1s;flex:0 1 160px;min-width:0}.zm-data-search:focus-within,.zm-data-search.is-active{background:#fff;border-color:#3b82f6}.zm-data-search svg{color:#94a3b8;flex-shrink:0}.zm-data-search input{flex:1;min-width:0;border:none;outline:none;background:transparent;font:inherit;font-size:11px;color:#1e293b;padding:0}.zm-data-search input::placeholder{color:#94a3b8}.zm-data-search-clear{border:none;background:transparent;color:#94a3b8;cursor:pointer;padding:0 2px;font-size:14px;line-height:1;border-radius:2px}.zm-data-search-clear:hover{background:#e2e8f0;color:#1e293b}.zm-data-paste{padding:8px 10px 10px;border-bottom:1px solid #f1f5f9;background:#f8fafc;flex-shrink:0}.zm-data-tabs{display:flex;gap:4px;margin-bottom:6px}.zm-data-tab{font:inherit;font-size:11px;padding:2px 8px;border:1px solid #e2e8f0;border-radius:4px;background:#fff;color:#475569;cursor:pointer;transition:all .1s}.zm-data-tab:hover{background:#f1f5f9}.zm-data-tab.is-active{background:#1e293b;border-color:#1e293b;color:#fff}.zm-data-paste textarea{width:100%;min-height:60px;max-height:160px;padding:6px 8px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:11px;line-height:1.4;border:1px solid #e2e8f0;border-radius:4px;background:#fff;resize:vertical;box-sizing:border-box}.zm-data-paste textarea:focus{outline:none;border-color:#3b82f6}.zm-data-paste-actions{display:flex;gap:4px;margin-top:6px}.zm-data-error{margin-top:6px;font-size:11px;color:#dc2626}.zm-data-tree{flex:1;overflow:auto;padding:8px 4px 8px 6px;background:#fff}.zm-data-footer{padding:6px 12px;border-top:1px solid #f1f5f9;background:#f8fafc;font-size:10px;color:#94a3b8;line-height:1.5;flex-shrink:0}.zm-data-footer-hint code{font-family:SF Mono,Menlo,Consolas,monospace;font-size:10px;background:#fff;border:1px solid #e2e8f0;padding:0 3px;border-radius:3px;color:#475569;margin:0 1px}.zm-md-panel{display:flex;flex-direction:column;height:100%;background:#f8fafc}.zm-md-toolbar{display:flex;align-items:center;gap:6px;padding:8px 10px;border-bottom:1px solid #f1f5f9;background:#f8fafc;flex-shrink:0}.zm-md-spacer{flex:1}.zm-md-btn{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;font-size:12px;font-family:inherit;color:#475569;background:#fff;border:1px solid #e2e8f0;border-radius:6px;cursor:pointer;transition:all .1s;white-space:nowrap}.zm-md-btn:hover:not(:disabled){background:#f1f5f9;color:#1e293b;border-color:#cbd5e1}.zm-md-btn:disabled{opacity:.4;cursor:not-allowed}.zm-md-btn.is-primary{background:#3b82f6;color:#fff;border-color:#3b82f6}.zm-md-btn.is-primary:hover:not(:disabled){background:#2563eb;border-color:#2563eb;color:#fff}.zm-md-error{padding:6px 10px;font-size:11px;color:#dc2626;background:#fef2f2;border-bottom:1px solid #fee2e2;flex-shrink:0}.zm-md-split{flex:1;display:flex;flex-direction:column;min-height:0}.zm-md-edit,.zm-md-preview{display:flex;flex-direction:column;min-height:0;flex:1}.zm-md-pane-header{display:flex;align-items:center;gap:8px;padding:6px 10px;font-size:11px;font-weight:600;color:#475569;background:#f1f5f9;border-bottom:1px solid #e2e8f0;letter-spacing:.02em;flex-shrink:0}.zm-md-hint{margin-left:auto;font-weight:400;color:#94a3b8;font-size:10px}.zm-md-textarea{flex:1;width:100%;padding:10px 12px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:12px;line-height:1.5;color:#1e293b;border:none;border-bottom:1px solid #e2e8f0;background:#fff;resize:none;outline:none;box-sizing:border-box}.zm-md-textarea:focus{background:#fafbfc}.zm-md-preview-body{flex:1;position:relative;min-height:0;background:#fff;border-bottom:1px solid #e2e8f0}.zm-md-footer{display:flex;justify-content:flex-end;padding:8px 10px;background:#f8fafc;border-top:1px solid #e2e8f0;flex-shrink:0}.zm-settings-panel[data-v-ed1e759c]{display:flex;flex-direction:column;gap:14px;padding:16px 16px 24px}.zm-settings-section[data-v-ed1e759c]{background:#fff;border:1px solid #eef0f3;border-radius:12px;padding:16px}.zm-settings-section--actions[data-v-ed1e759c]{background:transparent;border:none;padding:0}.zm-settings-section-title[data-v-ed1e759c]{margin:0 0 14px;font-size:13px;font-weight:600;color:#0f172a;letter-spacing:-.01em;display:flex;align-items:baseline;gap:6px}.zm-settings-section-sub[data-v-ed1e759c]{font-size:11px;font-weight:500;color:#64748b;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.zm-settings-field[data-v-ed1e759c]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:10px 0;font-size:13px;color:#1e293b;min-height:32px}.zm-settings-label[data-v-ed1e759c]{flex:1;color:#334155;font-weight:500}.zm-settings-sub[data-v-ed1e759c]{font-size:11px;color:#64748b;font-weight:400;font-family:ui-monospace,monospace;margin-left:4px}.zm-settings-value-tag[data-v-ed1e759c]{font-size:11px;color:#64748b;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:4px;padding:2px 8px;white-space:nowrap;font-family:ui-monospace,monospace}.zm-settings-number[data-v-ed1e759c]{font-size:12px;color:#0f172a;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:5px 10px;width:64px;text-align:right;-moz-appearance:textfield;transition:border-color .12s,box-shadow .12s}.zm-settings-number[data-v-ed1e759c]::-webkit-outer-spin-button,.zm-settings-number[data-v-ed1e759c]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.zm-settings-number[data-v-ed1e759c]:focus{outline:none;border-color:#3b82f6;background:#fff;box-shadow:0 0 0 3px #3b82f61a}.zm-select[data-v-ed1e759c]{font-size:12px;font-family:inherit;color:#1e293b;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:5px 10px;cursor:pointer;outline:none;transition:border-color .12s,box-shadow .12s;min-width:100px}.zm-select[data-v-ed1e759c]:focus,.zm-select[data-v-ed1e759c]:hover{border-color:#3b82f6}.zm-select[data-v-ed1e759c]:focus{background:#fff;box-shadow:0 0 0 3px #3b82f61a}.zm-settings-hint[data-v-ed1e759c]{margin:6px 0 0;font-size:11px;color:#94a3b8;line-height:1.5}.zm-settings-divider[data-v-ed1e759c]{height:1px;background:#f1f5f9;margin:12px 0}.zm-slider[data-v-ed1e759c]{position:relative;height:22px;display:flex;align-items:center;margin:2px 0 6px}.zm-slider-track[data-v-ed1e759c]{position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);height:4px;background:#e2e8f0;border-radius:999px;pointer-events:none}.zm-slider input[type=range][data-v-ed1e759c]{position:relative;width:100%;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;height:22px;cursor:pointer;z-index:1}.zm-slider input[type=range][data-v-ed1e759c]::-webkit-slider-runnable-track{-webkit-appearance:none;-moz-appearance:none;appearance:none;height:4px;background:transparent;border-radius:999px}.zm-slider input[type=range][data-v-ed1e759c]::-moz-range-track{height:4px;background:transparent;border-radius:999px}.zm-slider input[type=range][data-v-ed1e759c]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:#fff;border:2px solid #3b82f6;box-shadow:0 1px 4px #3b82f633;cursor:pointer;margin-top:-6px;transition:border-color .12s,box-shadow .12s}.zm-slider input[type=range][data-v-ed1e759c]::-webkit-slider-thumb:hover{border-color:#2563eb;box-shadow:0 2px 8px #3b82f64d}.zm-slider input[type=range][data-v-ed1e759c]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#fff;border:2px solid #3b82f6;box-shadow:0 1px 4px #3b82f633;cursor:pointer}.zm-toggle[data-v-ed1e759c]{position:relative;width:38px;height:22px;border:none;background:#cbd5e1;border-radius:999px;padding:0;cursor:pointer;transition:background .15s;flex-shrink:0}.zm-toggle.is-on[data-v-ed1e759c]{background:#3b82f6}.zm-toggle-knob[data-v-ed1e759c]{position:absolute;top:2px;left:2px;width:18px;height:18px;background:#fff;border-radius:50%;box-shadow:0 1px 3px #0000002e;transition:transform .15s}.zm-toggle.is-on .zm-toggle-knob[data-v-ed1e759c]{transform:translate(16px)}.zm-swatch-row[data-v-ed1e759c]{display:flex;flex-wrap:wrap;gap:5px;margin:4px 0 10px}.zm-swatch-row--compact[data-v-ed1e759c]{gap:4px;margin-bottom:6px}.zm-swatch[data-v-ed1e759c]{width:22px;height:22px;border-radius:7px;border:1.5px solid #e2e8f0;cursor:pointer;padding:0;flex-shrink:0;transition:transform .1s,border-color .12s,box-shadow .12s}.zm-swatch[data-v-ed1e759c]:hover{transform:scale(1.12);border-color:#94a3b8}.zm-swatch.is-active[data-v-ed1e759c]{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.zm-swatch.is-reset[data-v-ed1e759c]{background:#fff;color:#94a3b8;font-size:12px;line-height:1;display:flex;align-items:center;justify-content:center}.zm-swatch.is-reset[data-v-ed1e759c]:hover{color:#ef4444;border-color:#fca5a5}.zm-swatch--custom[data-v-ed1e759c]{position:relative;overflow:hidden;background:conic-gradient(from 0deg,#f87171,#fbbf24,#34d399,#22d3ee,#818cf8,#c084fc,#f87171);border:1.5px solid #e2e8f0}.zm-swatch--custom input[type=color][data-v-ed1e759c]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;border:none;padding:0}.zm-color-input-wrap[data-v-ed1e759c]{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.zm-color-input[data-v-ed1e759c]{width:28px;height:22px;border:1.5px solid #e2e8f0;border-radius:7px;cursor:pointer;padding:0;background:none}.zm-color-input-text[data-v-ed1e759c]{font-size:11px;color:#64748b;font-family:ui-monospace,monospace}.zm-settings-field.zm-line-style-field[data-v-ed1e759c]{flex-direction:column;align-items:stretch;gap:6px}.zm-line-style-field .zm-settings-label[data-v-ed1e759c]{flex:none}.zm-line-style-group[data-v-ed1e759c]{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:4px;width:100%}.zm-line-style-btn[data-v-ed1e759c]{display:inline-flex;flex-direction:column;align-items:center;gap:2px;padding:5px 4px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;cursor:pointer;color:#94a3b8;transition:all .12s;font-family:inherit}.zm-line-style-btn[data-v-ed1e759c]:hover{border-color:#cbd5e1;color:#475569;background:#fff}.zm-line-style-btn.is-on[data-v-ed1e759c]{border-color:#3b82f6;background:#eff6ff;color:#3b82f6}.zm-line-style-label[data-v-ed1e759c]{font-size:11px;font-weight:500}.zm-settings-preview[data-v-ed1e759c]{margin-top:12px;background:#f8fafc;border:1px solid #eef0f3;border-radius:10px;padding:10px 10px 8px}.zm-settings-preview svg[data-v-ed1e759c]{display:block}.zm-settings-preview-labels[data-v-ed1e759c]{display:flex;justify-content:space-between;font-size:10px;color:#94a3b8;margin-top:4px;padding:0 2px}.zm-palette-picker[data-v-ed1e759c]{margin:8px 0;padding:12px;background:#f8fafc;border-radius:10px;border:1px solid #eef0f3}.zm-palette-list[data-v-ed1e759c]{display:flex;flex-direction:column;gap:6px;margin-top:4px}.zm-palette-option[data-v-ed1e759c]{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #e2e8f0;border-radius:8px;background:#fff;cursor:pointer;transition:border-color .15s,background .15s;text-align:left;width:100%}.zm-palette-option[data-v-ed1e759c]:hover{border-color:#cbd5e1;background:#f8fafc}.zm-palette-option.is-active[data-v-ed1e759c]{border-color:#3b82f6;background:#eff6ff;box-shadow:0 0 0 1px #3b82f6}.zm-palette-option-name[data-v-ed1e759c]{font-size:12px;font-weight:500;color:#1e293b;min-width:36px;flex-shrink:0}.zm-palette-option-swatches[data-v-ed1e759c]{display:flex;gap:2px;flex:1;height:14px;border-radius:3px;overflow:hidden}.zm-palette-option-swatch[data-v-ed1e759c]{flex:1;min-width:0;height:100%}.zm-palette-custom-editor[data-v-ed1e759c]{margin-top:8px}.zm-palette-textarea[data-v-ed1e759c]{width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:1.5;color:#0f172a;background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:7px 8px;resize:vertical;min-height:36px;outline:none;box-sizing:border-box;transition:border-color .1s,box-shadow .1s}.zm-palette-textarea[data-v-ed1e759c]:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.zm-palette-custom-actions[data-v-ed1e759c]{display:flex;gap:6px;margin-top:6px}.zm-palette-add[data-v-ed1e759c]{margin-top:8px;width:100%;padding:7px 8px;font-size:12px;font-family:inherit;font-weight:500;color:#3b82f6;background:#fff;border:1px dashed #bfdbfe;border-radius:8px;cursor:pointer;transition:all .1s}.zm-palette-add[data-v-ed1e759c]:hover{background:#eff6ff;border-color:#3b82f6}.zm-data-btn[data-v-ed1e759c]{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;font-size:12px;font-family:inherit;color:#475569;background:#fff;border:1px solid #e2e8f0;border-radius:8px;cursor:pointer;transition:all .1s}.zm-data-btn[data-v-ed1e759c]:hover{background:#f1f5f9;color:#1e293b;border-color:#cbd5e1}.zm-data-btn.is-primary[data-v-ed1e759c]{background:#3b82f6;color:#fff;border-color:#3b82f6}.zm-data-btn.is-primary[data-v-ed1e759c]:hover{background:#2563eb;border-color:#2563eb;color:#fff}.zm-settings-reset[data-v-ed1e759c]{width:100%;padding:10px 12px;font-size:12px;font-family:inherit;font-weight:500;color:#64748b;background:#fff;border:1px solid #e2e8f0;border-radius:10px;cursor:pointer;transition:all .1s}.zm-settings-reset[data-v-ed1e759c]:hover{background:#fef2f2;color:#ef4444;border-color:#fecaca}.zm-note-panel{display:flex;flex-direction:column;height:100%;padding:12px 12px 16px;gap:10px;background:#f8fafc}.zm-note-empty{padding:20px 12px;color:#64748b;font-size:13px;line-height:1.6}.zm-note-empty p{margin:0 0 6px}.zm-note-hint{color:#94a3b8;font-size:12px}.zm-note-header{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:4px;flex-shrink:0}.zm-note-title-row{display:flex;align-items:baseline;gap:8px;min-width:0}.zm-note-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#94a3b8;flex-shrink:0}.zm-note-name{font-size:13px;font-weight:600;color:#1e293b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.zm-note-meta{font-size:11px;color:#94a3b8}.zm-note-scroll{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding-right:2px}.zm-note-section{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:8px}.zm-note-section-head{display:flex;align-items:center;gap:8px;min-width:0}.zm-note-section-title{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#64748b;flex:1;min-width:0}.zm-note-section-hint{font-size:10px;color:#94a3b8}.zm-note-section-tag{font-size:10px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;color:#475569;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:4px;padding:1px 6px;line-height:1.4}.zm-note-section-actions{display:flex;justify-content:flex-end}.zm-note-textarea{width:100%;min-height:120px;padding:10px 12px;font:inherit;font-size:13px;line-height:20px;color:#1e293b;background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;resize:none;outline:none;box-sizing:border-box;font-family:inherit;overflow:hidden}.zm-note-textarea:focus{border-color:#3b82f6;background:#fff;box-shadow:0 0 0 3px #3b82f61f}.zm-note-textarea:disabled{background:#f8fafc;color:#94a3b8;cursor:not-allowed}.zm-note-textarea::placeholder{color:#94a3b8;white-space:pre-line}.zm-note-split{display:flex;flex-direction:column;gap:6px}.zm-note-preview-toggle{font:inherit;font-size:10px;color:#1d4ed8;background:transparent;border:1px solid #bfdbfe;border-radius:999px;padding:1px 8px;cursor:pointer;transition:all .1s;flex-shrink:0}.zm-note-preview-toggle:hover{background:#eff6ff;border-color:#93c5fd}.zm-note-preview{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;padding:8px 12px;max-height:240px;overflow:auto;font-size:13px;line-height:1.6;color:#1e293b}.zm-note-preview-hint{color:#94a3b8;font-size:12px;font-style:italic}.zm-note-preview-body h1,.zm-note-preview-body h2,.zm-note-preview-body h3{margin:8px 0 4px;font-weight:600;color:#0f172a}.zm-note-preview-body h1{font-size:16px}.zm-note-preview-body h2{font-size:14px}.zm-note-preview-body h3{font-size:13px}.zm-note-preview-body h4,.zm-note-preview-body h5,.zm-note-preview-body h6{margin:6px 0 4px;font-size:12px;font-weight:600;color:#334155}.zm-note-preview-body p{margin:0 0 6px}.zm-note-preview-body p:last-child{margin-bottom:0}.zm-note-preview-body ul,.zm-note-preview-body ol{margin:0 0 6px;padding-left:20px}.zm-note-preview-body li{margin:0 0 2px}.zm-note-preview-body blockquote{margin:0 0 6px;padding:4px 10px;border-left:3px solid #cbd5e1;color:#475569;background:#f1f5f9}.zm-note-preview-body code{font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:12px;background:#f1f5f9;padding:1px 4px;border-radius:3px;color:#be185d}.zm-note-preview-body pre{margin:0 0 6px;padding:8px 10px;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:6px;overflow:auto}.zm-note-preview-body pre code{background:transparent;padding:0;color:inherit;font-size:12px;line-height:1.55}.zm-note-preview-body a{color:#1d4ed8;text-decoration:underline;text-decoration-color:#bfdbfe}.zm-note-preview-body a:hover{text-decoration-color:#1d4ed8}.zm-note-preview-body table{border-collapse:collapse;margin:0 0 6px;font-size:12px}.zm-note-preview-body th,.zm-note-preview-body td{border:1px solid #e2e8f0;padding:4px 8px;text-align:left}.zm-note-preview-body th{background:#f1f5f9;font-weight:600}.zm-note-preview-body hr{border:none;border-top:1px solid #e2e8f0;margin:8px 0}.zm-note-preview-body img{max-width:100%;max-height:200px;border-radius:4px;display:block}.zm-note-input{width:100%;padding:7px 10px;font:inherit;font-size:12px;line-height:1.5;color:#1e293b;background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;outline:none;box-sizing:border-box;font-family:inherit}.zm-note-input:focus{border-color:#3b82f6;background:#fff;box-shadow:0 0 0 3px #3b82f61f}.zm-note-input:disabled{background:#f8fafc;color:#94a3b8;cursor:not-allowed}.zm-note-input-code{font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:11px;min-height:80px;resize:none;white-space:pre;line-height:20px;overflow:hidden}.zm-note-add-row{display:flex;flex-wrap:wrap;gap:6px;padding:2px 2px 0}.zm-note-add-chip{font:inherit;font-size:11px;color:#64748b;background:#fff;border:1px dashed #cbd5e1;border-radius:999px;padding:3px 10px;cursor:pointer;transition:all .1s}.zm-note-add-chip:hover{color:#1d4ed8;border-color:#93c5fd;background:#eff6ff}.zm-note-link-chip{display:inline-block;max-width:100%;padding:6px 10px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:6px;color:#1d4ed8;font-size:12px;text-decoration:none;word-break:break-all;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;transition:background .1s}.zm-note-link-chip:hover{background:#dbeafe}.zm-note-image{display:block;max-width:100%;max-height:240px;object-fit:contain;border-radius:6px;background:#f1f5f9;margin:0 auto}.zm-note-code{margin:0;padding:10px 12px;background:#f1f5f9;color:#24292e;border:1px solid #e2e8f0;border-radius:8px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:12px;line-height:1.55;white-space:pre-wrap;word-break:break-word;max-height:320px;overflow:auto;box-shadow:0 1px 3px #0f172a14}.zm-note-code code{font:inherit;color:inherit;background:transparent;padding:0}.zm-note-table{width:100%;border-collapse:separate;border-spacing:0;font-size:12px;color:#1e293b;table-layout:auto;background:#fffbeb;border:1px solid #fcd34d;border-radius:8px;overflow:hidden;box-shadow:0 1px 3px #92400e14}.zm-note-table th{background:#fde68a;font-weight:600;padding:6px 10px;text-align:left;border-right:1px solid #fcd34d;white-space:nowrap}.zm-note-table th:last-child{border-right:none}.zm-note-table td{border-top:1px solid #fde68a;border-right:1px solid #fde68a;padding:6px 10px;text-align:left;vertical-align:top;word-break:break-word;background:#fffbeb}.zm-note-table tr:last-child td{border-bottom:none}.zm-note-table td:last-child{border-right:none}.zm-note-action-btn{padding:4px 10px;font-size:12px;font-family:inherit;color:#fff;background:#3b82f6;border:1px solid #3b82f6;border-radius:6px;cursor:pointer;transition:all .1s}.zm-note-action-btn.is-danger{color:#b91c1c;background:#fff;border-color:#fca5a5}.zm-note-action-btn.is-danger:hover{background:#fee2e2;border-color:#f87171}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
1
+ .zm-node-menu{position:fixed;z-index:40;min-width:168px;padding:4px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 8px 24px #0f172a24;display:flex;flex-direction:column;gap:2px;font-size:13px;color:#1e293b;-webkit-user-select:none;user-select:none}.zm-node-menu-item{display:flex;align-items:center;gap:8px;padding:6px 10px;border:none;background:transparent;color:inherit;font:inherit;text-align:left;border-radius:4px;cursor:pointer;width:100%;transition:background .1s}.zm-node-menu-item:hover:not(:disabled){background:#f1f5f9}.zm-node-menu-item:active:not(:disabled){background:#e2e8f0}.zm-node-menu-item:disabled{color:#94a3b8;cursor:not-allowed}.zm-node-menu-icon{display:inline-flex;align-items:center;justify-content:center;width:13px;height:13px;font-size:10px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-weight:600;color:#64748b;flex-shrink:0}.zm-node-menu-icon-code{font-size:10px;letter-spacing:-1px}.zm-node-menu-icon-table{font-size:12px;font-family:inherit}.zm-node-menu-divider{height:1px;background:#e2e8f0;margin:2px 4px}.zm-node-menu-arrow{margin-left:auto;font-size:14px;color:#94a3b8;transition:transform .15s}.zm-node-menu-arrow.is-open{transform:rotate(90deg)}.zm-marker-picker{padding:4px 8px 6px;display:flex;flex-direction:column;gap:6px}.zm-marker-group{display:flex;flex-direction:column;gap:3px}.zm-marker-group-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#94a3b8}.zm-marker-grid{display:flex;flex-wrap:wrap;gap:3px}.zm-marker-cell{width:26px;height:26px;display:flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:4px;background:#f8fafc;cursor:pointer;padding:0;transition:all .1s}.zm-marker-cell:hover{background:#e2e8f0;border-color:#cbd5e1}.zm-marker-cell.is-active{background:#eff6ff;border-color:#3b82f6;box-shadow:0 0 0 1px #3b82f633}.zm-marker-cell svg{display:block}.zm-marker-clear{font:inherit;font-size:11px;color:#b91c1c;background:transparent;border:none;cursor:pointer;text-align:center;padding:3px;border-radius:4px}.zm-marker-clear:hover{background:#fee2e2}.zm-canvas-menu{position:fixed;z-index:40;min-width:140px;padding:4px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-sizing:border-box;box-shadow:0 8px 24px #0f172a24;display:flex;flex-direction:column;gap:2px;font-size:13px;color:#1e293b;-webkit-user-select:none;user-select:none}.zm-canvas-menu-item{display:flex;align-items:center;gap:8px;padding:6px 10px;border:none;background:transparent;color:inherit;font:inherit;text-align:left;border-radius:4px;cursor:pointer;width:100%;box-sizing:border-box;transition:background .1s}.zm-canvas-menu-item:hover:not(:disabled){background:#f1f5f9}.zm-canvas-menu-item:active:not(:disabled){background:#e2e8f0}.zm-canvas-menu-item:disabled{color:#94a3b8;cursor:not-allowed}.zm-canvas-menu-item-has-submenu{position:relative;box-sizing:border-box}.zm-canvas-menu-item-has-submenu.is-open,.zm-canvas-menu-item-has-submenu:hover{background:#f1f5f9}.zm-canvas-menu-caret{margin-left:auto;color:#94a3b8;flex-shrink:0;display:inline-flex;align-items:center}.zm-canvas-menu-divider{height:1px;background:#e2e8f0;margin:2px 4px}.zm-canvas-submenu{position:fixed;z-index:41;min-width:160px;padding:4px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-sizing:border-box;box-shadow:0 8px 24px #0f172a24;display:flex;flex-direction:column;gap:2px;font-size:13px;color:#1e293b;-webkit-user-select:none;user-select:none;animation:zm-submenu-in .12s ease-out}@keyframes zm-submenu-in{0%{opacity:0;transform:translate(-4px)}to{opacity:1;transform:translate(0)}}.zm-drawer{display:flex;flex-direction:column;height:100%;background:#fafbfc;border-right:1px solid #e8eaed;overflow:hidden;flex-shrink:0}.zm-drawer--canvas{position:absolute;top:0;bottom:0;height:100%;z-index:40;box-shadow:0 12px 40px #0f172a14,0 2px 8px #0f172a0a}.zm-drawer--left.zm-drawer--canvas{left:0;border-right:1px solid #e8eaed}.zm-drawer--right.zm-drawer--canvas{right:0;border-right:none;border-left:1px solid #e8eaed}.zm-drawer-canvas-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#0f172a2e;z-index:39;cursor:pointer;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.zm-drawer-enter-active,.zm-drawer-leave-active{transition:width .22s ease,opacity .15s ease}.zm-drawer-enter-from,.zm-drawer-leave-to{width:0!important;opacity:0;border-right:none}.zm-slide-left-enter-active,.zm-slide-left-leave-active,.zm-slide-right-enter-active,.zm-slide-right-leave-active{transition:transform .22s ease,opacity .18s ease}.zm-slide-left-enter-from,.zm-slide-left-leave-to{transform:translate(-100%);opacity:0}.zm-slide-right-enter-from,.zm-slide-right-leave-to{transform:translate(100%);opacity:0}.zm-fade-enter-active,.zm-fade-leave-active{transition:opacity .18s ease}.zm-fade-enter-from,.zm-fade-leave-to{opacity:0}.zm-drawer--right{border-right:none;border-left:1px solid #e8eaed}.zm-drawer-header{display:flex;align-items:center;gap:8px;padding:16px 20px;border-bottom:1px solid #f0f1f3;flex-shrink:0;background:#fff}.zm-drawer-title{margin:0;flex:1;font-size:14px;font-weight:600;color:#0f172a;letter-spacing:-.01em}.zm-drawer-close{width:28px;height:28px;border:none;background:transparent;color:#94a3b8;cursor:pointer;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .12s,color .12s}.zm-drawer-close:hover{background:#f1f5f9;color:#1e293b}.zm-drawer-body{flex:1;overflow:auto;min-height:0}.zm-outline-root{display:flex;flex-direction:column;height:100%}.zm-outline-search{display:flex;align-items:center;gap:6px;padding:8px 10px 4px;flex-shrink:0}.zm-outline-search-icon{color:#94a3b8;flex-shrink:0}.zm-outline-search-input{flex:1;min-width:0;padding:5px 10px;font:inherit;font-size:12px;color:#1e293b;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;outline:none;box-sizing:border-box;transition:border-color .12s,box-shadow .12s}.zm-outline-search-input:focus{border-color:#3b82f6;background:#fff;box-shadow:0 0 0 3px #3b82f61a}.zm-outline-search-input::placeholder{color:#94a3b8;font-size:11px}.zm-outline-search-count{font-size:11px;color:#64748b;white-space:nowrap;min-width:36px;text-align:center;flex-shrink:0}.zm-outline-search-empty{color:#ef4444}.zm-outline-search-clear{width:20px;height:20px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;border-radius:4px;cursor:pointer;color:#94a3b8;font-size:16px;line-height:1;flex-shrink:0}.zm-outline-search-clear:hover{background:#f1f5f9;color:#1e293b}.zm-outline-actions{display:flex;justify-content:flex-end;padding:4px 10px;flex-shrink:0}.zm-outline-action-btn{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;font-size:11px;font-family:inherit;color:#64748b;background:#f8fafc;border:1px solid #e2e8f0;border-radius:5px;cursor:pointer;transition:border-color .12s,background .12s;transition:all .1s}.zm-outline-action-btn:hover{background:#f1f5f9;color:#1e293b;border-color:#cbd5e1}.zm-outline-action-btn.is-success{background:#ecfdf5;color:#047857;border-color:#a7f3d0}.zm-outline{list-style:none;margin:0;padding:4px 0 8px;font-size:13px;overflow:auto;flex:1;min-height:0}.zm-outline-row{display:flex;align-items:center;gap:6px;padding-right:6px;padding-top:4px;padding-bottom:4px;cursor:grab;color:#334155;border-radius:4px;margin:0 6px;-webkit-user-select:none;user-select:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .1s;position:relative}.zm-outline-row:active{cursor:grabbing}.zm-outline-row:hover{background:#f1f5f9}.zm-outline-row.is-root{font-weight:600;color:#0f172a}.zm-outline-row.is-selected{background:#eff6ff;color:#1d4ed8}.zm-outline-row.is-selected .zm-outline-toggle,.zm-outline-row.is-selected .zm-outline-dot,.zm-outline-row.is-selected .zm-outline-row-copy,.zm-outline-row.is-selected .zm-outline-row-action{color:#1d4ed8}.zm-outline-row.is-search-hit{background:#fffbeb;box-shadow:inset 3px 0 #f59e0b}.zm-outline-row.is-search-current{background:#fef3c7;box-shadow:inset 3px 0 #f97316,inset 0 0 0 1px #f973164d}.zm-outline-row.is-drag-over-before:before,.zm-outline-row.is-drag-over-after:after{content:"";position:absolute;left:6px;right:6px;height:2px;background:#3b82f6;border-radius:1px;pointer-events:none}.zm-outline-row.is-drag-over-before:before{top:0}.zm-outline-row.is-drag-over-after:after{bottom:0}.zm-outline-row.is-drag-over-child{background:#dbeafe!important;outline:2px solid #3b82f6;outline-offset:-2px}.zm-outline-toggle{width:16px;height:16px;border:none;background:transparent;color:#94a3b8;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:3px;flex-shrink:0;padding:0}.zm-outline-toggle:hover{background:#e2e8f0;color:#475569}.zm-outline-dot{width:4px;height:4px;border-radius:50%;background:#cbd5e1;flex-shrink:0;margin:0 6px}.zm-outline-index{font-size:11px;color:#94a3b8;font-variant-numeric:tabular-nums;min-width:22px;flex-shrink:0;-webkit-user-select:none;user-select:none}.zm-outline-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.zm-outline-input{flex:1;font:inherit;font-size:13px;color:inherit;background:#fff;border:1px solid #3b82f6;border-radius:3px;padding:1px 4px;margin:-2px 0;outline:none}.zm-outline-row-action{width:20px;height:20px;border:1px solid transparent;background:transparent;color:#94a3b8;cursor:pointer;border-radius:4px;flex-shrink:0;padding:0;display:none;align-items:center;justify-content:center;transition:background .1s,color .1s,border-color .1s}.zm-outline-row:hover .zm-outline-row-action,.zm-outline-row.is-selected .zm-outline-row-action{display:inline-flex}.zm-outline-row-action:hover{background:#dbeafe;color:#1d4ed8;border-color:#bfdbfe}.zm-outline-row-action img{filter:invert(38%) sepia(94%) saturate(2417%) hue-rotate(229deg) brightness(91%) contrast(91%)}.zm-outline-row-copy{width:20px;height:20px;border:none;background:transparent;color:#94a3b8;display:none;align-items:center;justify-content:center;cursor:pointer;border-radius:3px;flex-shrink:0;padding:0;transition:background .1s,color .1s}.zm-outline-row:hover .zm-outline-row-copy,.zm-outline-row.is-selected .zm-outline-row-copy{display:flex}.zm-outline-row-copy:hover{background:#e2e8f0;color:#475569}.zm-outline-row-copy.is-success{display:flex;color:#047857;background:#ecfdf5}.zm-jtv-root{font-family:SF Mono,Menlo,Consolas,monospace;font-size:12px;line-height:1.6;color:#334155}.zm-jtv-header{display:flex;align-items:center;gap:4px;cursor:pointer;border-radius:3px;padding-right:6px;-webkit-user-select:none;user-select:none}.zm-jtv-header:hover{background:#f1f5f9}.zm-jtv-toggle{display:inline-block;width:12px;text-align:center;font-size:9px;color:#94a3b8;flex-shrink:0}.zm-jtv-toggle.is-leaf{color:#cbd5e1}.zm-jtv-key{color:#1d4ed8;font-weight:500}.zm-jtv-colon{color:#94a3b8;margin-right:4px}.zm-jtv-size{color:#64748b;font-style:italic}.zm-jtv-bracket,.zm-jtv-brace{color:#94a3b8;font-weight:500;margin-left:4px}.zm-jtv-footer{color:#94a3b8;font-weight:500}.zm-jtv-leaf{display:flex;align-items:center;gap:4px;flex-wrap:wrap;padding-right:6px;border-radius:3px}.zm-jtv-leaf:hover{background:#f8fafc}.zm-jtv-value{word-break:break-all}.zm-jtv-string{color:#047857}.zm-jtv-number{color:#b45309}.zm-jtv-boolean{color:#7c3aed;font-weight:500}.zm-jtv-null,.zm-jtv-undefined{color:#94a3b8;font-style:italic}.zm-jtv-thumb-wrap{display:inline-flex;align-items:center;gap:4px;margin-left:6px;flex-shrink:0}.zm-jtv-thumb{max-width:48px;max-height:32px;border:1px solid #e2e8f0;border-radius:3px;background:#fff;object-fit:contain}.zm-jtv-thumb-link{font-size:10px;color:#3b82f6;text-decoration:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.zm-jtv-thumb-link:hover{text-decoration:underline}.zm-jtv-leaf mark,.zm-jtv-key mark{background:#fef08a;color:#422006;padding:0 1px;border-radius:2px}.zm-data-panel{display:flex;flex-direction:column;height:100%;background:#fff}.zm-data-header{display:flex;align-items:center;padding:8px 12px 6px;border-bottom:1px solid #f1f5f9;background:#f8fafc;flex-shrink:0}.zm-data-title{display:flex;align-items:baseline;gap:8px;flex:1;min-width:0}.zm-data-title-text{font-size:12px;font-weight:600;color:#1e293b;letter-spacing:.02em}.zm-data-title-meta{font-size:11px;color:#94a3b8;font-variant-numeric:tabular-nums}.zm-data-toolbar{display:flex;align-items:center;gap:4px;padding:6px 10px;border-bottom:1px solid #f1f5f9;background:#fff;flex-shrink:0;flex-wrap:wrap}.zm-data-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;font-size:12px;font-family:inherit;color:#475569;background:#fff;border:1px solid #e2e8f0;border-radius:6px;cursor:pointer;transition:all .1s}.zm-data-btn:hover{background:#f1f5f9;color:#1e293b;border-color:#cbd5e1}.zm-data-btn.is-icon{padding:4px 8px}.zm-data-btn.is-active{background:#eff6ff;color:#1d4ed8;border-color:#bfdbfe}.zm-data-btn.is-success{background:#ecfdf5;color:#047857;border-color:#a7f3d0}.zm-data-btn.is-primary{background:#3b82f6;color:#fff;border-color:#3b82f6}.zm-data-btn.is-primary:hover{background:#2563eb;border-color:#2563eb;color:#fff}.zm-data-btn:disabled{opacity:.4;cursor:not-allowed}.zm-data-btn-label{font-size:11px}.zm-data-toolbar-spacer{flex:1;min-width:4px}.zm-data-search{display:flex;align-items:center;gap:4px;padding:3px 6px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;transition:all .1s;flex:0 1 160px;min-width:0}.zm-data-search:focus-within,.zm-data-search.is-active{background:#fff;border-color:#3b82f6}.zm-data-search svg{color:#94a3b8;flex-shrink:0}.zm-data-search input{flex:1;min-width:0;border:none;outline:none;background:transparent;font:inherit;font-size:11px;color:#1e293b;padding:0}.zm-data-search input::placeholder{color:#94a3b8}.zm-data-search-clear{border:none;background:transparent;color:#94a3b8;cursor:pointer;padding:0 2px;font-size:14px;line-height:1;border-radius:2px}.zm-data-search-clear:hover{background:#e2e8f0;color:#1e293b}.zm-data-paste{padding:8px 10px 10px;border-bottom:1px solid #f1f5f9;background:#f8fafc;flex-shrink:0}.zm-data-tabs{display:flex;gap:4px;margin-bottom:6px}.zm-data-tab{font:inherit;font-size:11px;padding:2px 8px;border:1px solid #e2e8f0;border-radius:4px;background:#fff;color:#475569;cursor:pointer;transition:all .1s}.zm-data-tab:hover{background:#f1f5f9}.zm-data-tab.is-active{background:#1e293b;border-color:#1e293b;color:#fff}.zm-data-paste textarea{width:100%;min-height:60px;max-height:160px;padding:6px 8px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:11px;line-height:1.4;border:1px solid #e2e8f0;border-radius:4px;background:#fff;resize:vertical;box-sizing:border-box}.zm-data-paste textarea:focus{outline:none;border-color:#3b82f6}.zm-data-paste-actions{display:flex;gap:4px;margin-top:6px}.zm-data-error{margin-top:6px;font-size:11px;color:#dc2626}.zm-data-tree{flex:1;overflow:auto;padding:8px 4px 8px 6px;background:#fff}.zm-data-footer{padding:6px 12px;border-top:1px solid #f1f5f9;background:#f8fafc;font-size:10px;color:#94a3b8;line-height:1.5;flex-shrink:0}.zm-data-footer-hint code{font-family:SF Mono,Menlo,Consolas,monospace;font-size:10px;background:#fff;border:1px solid #e2e8f0;padding:0 3px;border-radius:3px;color:#475569;margin:0 1px}.zm-md-panel{display:flex;flex-direction:column;height:100%;background:#f8fafc}.zm-md-toolbar{display:flex;align-items:center;gap:6px;padding:8px 10px;border-bottom:1px solid #f1f5f9;background:#f8fafc;flex-shrink:0}.zm-md-spacer{flex:1}.zm-md-btn{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;font-size:12px;font-family:inherit;color:#475569;background:#fff;border:1px solid #e2e8f0;border-radius:6px;cursor:pointer;transition:all .1s;white-space:nowrap}.zm-md-btn:hover:not(:disabled){background:#f1f5f9;color:#1e293b;border-color:#cbd5e1}.zm-md-btn:disabled{opacity:.4;cursor:not-allowed}.zm-md-btn.is-primary{background:#3b82f6;color:#fff;border-color:#3b82f6}.zm-md-btn.is-primary:hover:not(:disabled){background:#2563eb;border-color:#2563eb;color:#fff}.zm-md-error{padding:6px 10px;font-size:11px;color:#dc2626;background:#fef2f2;border-bottom:1px solid #fee2e2;flex-shrink:0}.zm-md-split{flex:1;display:flex;flex-direction:column;min-height:0}.zm-md-edit,.zm-md-preview{display:flex;flex-direction:column;min-height:0;flex:1}.zm-md-pane-header{display:flex;align-items:center;gap:8px;padding:6px 10px;font-size:11px;font-weight:600;color:#475569;background:#f1f5f9;border-bottom:1px solid #e2e8f0;letter-spacing:.02em;flex-shrink:0}.zm-md-hint{margin-left:auto;font-weight:400;color:#94a3b8;font-size:10px}.zm-md-textarea{flex:1;width:100%;padding:10px 12px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:12px;line-height:1.5;color:#1e293b;border:none;border-bottom:1px solid #e2e8f0;background:#fff;resize:none;outline:none;box-sizing:border-box}.zm-md-textarea:focus{background:#fafbfc}.zm-md-preview-body{flex:1;position:relative;min-height:0;background:#fff;border-bottom:1px solid #e2e8f0}.zm-md-footer{display:flex;justify-content:flex-end;padding:8px 10px;background:#f8fafc;border-top:1px solid #e2e8f0;flex-shrink:0}.zm-settings-panel[data-v-d9ae9516]{display:flex;flex-direction:column;gap:14px;padding:16px 16px 24px}.zm-settings-section[data-v-d9ae9516]{background:#fff;border:1px solid #eef0f3;border-radius:12px;padding:16px}.zm-settings-section--actions[data-v-d9ae9516]{background:transparent;border:none;padding:0}.zm-settings-section-title[data-v-d9ae9516]{margin:0 0 14px;font-size:13px;font-weight:600;color:#0f172a;letter-spacing:-.01em;display:flex;align-items:baseline;gap:6px}.zm-settings-section-sub[data-v-d9ae9516]{font-size:11px;font-weight:500;color:#64748b;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.zm-settings-field[data-v-d9ae9516]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:10px 0;font-size:13px;color:#1e293b;min-height:32px}.zm-settings-label[data-v-d9ae9516]{flex:1;color:#334155;font-weight:500}.zm-settings-sub[data-v-d9ae9516]{font-size:11px;color:#64748b;font-weight:400;font-family:ui-monospace,monospace;margin-left:4px}.zm-settings-value-tag[data-v-d9ae9516]{font-size:11px;color:#64748b;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:4px;padding:2px 8px;white-space:nowrap;font-family:ui-monospace,monospace}.zm-settings-number[data-v-d9ae9516]{font-size:12px;color:#0f172a;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:5px 10px;width:64px;text-align:right;-moz-appearance:textfield;transition:border-color .12s,box-shadow .12s}.zm-settings-number[data-v-d9ae9516]::-webkit-outer-spin-button,.zm-settings-number[data-v-d9ae9516]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.zm-settings-number[data-v-d9ae9516]:focus{outline:none;border-color:#3b82f6;background:#fff;box-shadow:0 0 0 3px #3b82f61a}.zm-select[data-v-d9ae9516]{font-size:12px;font-family:inherit;color:#1e293b;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:5px 10px;cursor:pointer;outline:none;transition:border-color .12s,box-shadow .12s;min-width:100px}.zm-select[data-v-d9ae9516]:focus,.zm-select[data-v-d9ae9516]:hover{border-color:#3b82f6}.zm-select[data-v-d9ae9516]:focus{background:#fff;box-shadow:0 0 0 3px #3b82f61a}.zm-settings-hint[data-v-d9ae9516]{margin:6px 0 0;font-size:11px;color:#94a3b8;line-height:1.5}.zm-settings-divider[data-v-d9ae9516]{height:1px;background:#f1f5f9;margin:12px 0}.zm-slider[data-v-d9ae9516]{position:relative;height:22px;display:flex;align-items:center;margin:2px 0 6px}.zm-slider-track[data-v-d9ae9516]{position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);height:4px;background:#e2e8f0;border-radius:999px;pointer-events:none}.zm-slider input[type=range][data-v-d9ae9516]{position:relative;width:100%;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;height:22px;cursor:pointer;z-index:1}.zm-slider input[type=range][data-v-d9ae9516]::-webkit-slider-runnable-track{-webkit-appearance:none;-moz-appearance:none;appearance:none;height:4px;background:transparent;border-radius:999px}.zm-slider input[type=range][data-v-d9ae9516]::-moz-range-track{height:4px;background:transparent;border-radius:999px}.zm-slider input[type=range][data-v-d9ae9516]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:#fff;border:2px solid #3b82f6;box-shadow:0 1px 4px #3b82f633;cursor:pointer;margin-top:-6px;transition:border-color .12s,box-shadow .12s}.zm-slider input[type=range][data-v-d9ae9516]::-webkit-slider-thumb:hover{border-color:#2563eb;box-shadow:0 2px 8px #3b82f64d}.zm-slider input[type=range][data-v-d9ae9516]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#fff;border:2px solid #3b82f6;box-shadow:0 1px 4px #3b82f633;cursor:pointer}.zm-toggle[data-v-d9ae9516]{position:relative;width:38px;height:22px;border:none;background:#cbd5e1;border-radius:999px;padding:0;cursor:pointer;transition:background .15s;flex-shrink:0}.zm-toggle.is-on[data-v-d9ae9516]{background:#3b82f6}.zm-toggle-knob[data-v-d9ae9516]{position:absolute;top:2px;left:2px;width:18px;height:18px;background:#fff;border-radius:50%;box-shadow:0 1px 3px #0000002e;transition:transform .15s}.zm-toggle.is-on .zm-toggle-knob[data-v-d9ae9516]{transform:translate(16px)}.zm-swatch-row[data-v-d9ae9516]{display:flex;flex-wrap:wrap;gap:5px;margin:4px 0 10px}.zm-swatch-row--compact[data-v-d9ae9516]{gap:4px;margin-bottom:6px}.zm-swatch[data-v-d9ae9516]{width:22px;height:22px;border-radius:7px;border:1.5px solid #e2e8f0;cursor:pointer;padding:0;flex-shrink:0;transition:transform .1s,border-color .12s,box-shadow .12s}.zm-swatch[data-v-d9ae9516]:hover{transform:scale(1.12);border-color:#94a3b8}.zm-swatch.is-active[data-v-d9ae9516]{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.zm-swatch.is-reset[data-v-d9ae9516]{background:#fff;color:#94a3b8;font-size:12px;line-height:1;display:flex;align-items:center;justify-content:center}.zm-swatch.is-reset[data-v-d9ae9516]:hover{color:#ef4444;border-color:#fca5a5}.zm-swatch--custom[data-v-d9ae9516]{position:relative;overflow:hidden;background:conic-gradient(from 0deg,#f87171,#fbbf24,#34d399,#22d3ee,#818cf8,#c084fc,#f87171);border:1.5px solid #e2e8f0}.zm-swatch--custom input[type=color][data-v-d9ae9516]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;border:none;padding:0}.zm-color-input-wrap[data-v-d9ae9516]{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.zm-color-input[data-v-d9ae9516]{width:28px;height:22px;border:1.5px solid #e2e8f0;border-radius:7px;cursor:pointer;padding:0;background:none}.zm-color-input-text[data-v-d9ae9516]{font-size:11px;color:#64748b;font-family:ui-monospace,monospace}.zm-settings-field.zm-line-style-field[data-v-d9ae9516]{flex-direction:column;align-items:stretch;gap:6px}.zm-line-style-field .zm-settings-label[data-v-d9ae9516]{flex:none}.zm-line-style-group[data-v-d9ae9516]{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:4px;width:100%}.zm-line-style-btn[data-v-d9ae9516]{display:inline-flex;flex-direction:column;align-items:center;gap:2px;padding:5px 4px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;cursor:pointer;color:#94a3b8;transition:all .12s;font-family:inherit}.zm-line-style-btn[data-v-d9ae9516]:hover{border-color:#cbd5e1;color:#475569;background:#fff}.zm-line-style-btn.is-on[data-v-d9ae9516]{border-color:#3b82f6;background:#eff6ff;color:#3b82f6}.zm-line-style-label[data-v-d9ae9516]{font-size:11px;font-weight:500}.zm-settings-preview[data-v-d9ae9516]{margin-top:12px;background:#f8fafc;border:1px solid #eef0f3;border-radius:10px;padding:10px 10px 8px}.zm-settings-preview svg[data-v-d9ae9516]{display:block}.zm-settings-preview-labels[data-v-d9ae9516]{display:flex;justify-content:space-between;font-size:10px;color:#94a3b8;margin-top:4px;padding:0 2px}.zm-palette-picker[data-v-d9ae9516]{margin:8px 0;padding:12px;background:#f8fafc;border-radius:10px;border:1px solid #eef0f3}.zm-palette-list[data-v-d9ae9516]{display:flex;flex-direction:column;gap:6px;margin-top:4px}.zm-palette-option[data-v-d9ae9516]{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #e2e8f0;border-radius:8px;background:#fff;cursor:pointer;transition:border-color .15s,background .15s;text-align:left;width:100%}.zm-palette-option[data-v-d9ae9516]:hover{border-color:#cbd5e1;background:#f8fafc}.zm-palette-option.is-active[data-v-d9ae9516]{border-color:#3b82f6;background:#eff6ff;box-shadow:0 0 0 1px #3b82f6}.zm-palette-option-name[data-v-d9ae9516]{font-size:12px;font-weight:500;color:#1e293b;min-width:36px;flex-shrink:0}.zm-palette-option-swatches[data-v-d9ae9516]{display:flex;gap:2px;flex:1;height:14px;border-radius:3px;overflow:hidden}.zm-palette-option-swatch[data-v-d9ae9516]{flex:1;min-width:0;height:100%}.zm-palette-custom-editor[data-v-d9ae9516]{margin-top:8px}.zm-palette-textarea[data-v-d9ae9516]{width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:1.5;color:#0f172a;background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:7px 8px;resize:vertical;min-height:36px;outline:none;box-sizing:border-box;transition:border-color .1s,box-shadow .1s}.zm-palette-textarea[data-v-d9ae9516]:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.zm-palette-custom-actions[data-v-d9ae9516]{display:flex;gap:6px;margin-top:6px}.zm-palette-add[data-v-d9ae9516]{margin-top:8px;width:100%;padding:7px 8px;font-size:12px;font-family:inherit;font-weight:500;color:#3b82f6;background:#fff;border:1px dashed #bfdbfe;border-radius:8px;cursor:pointer;transition:all .1s}.zm-palette-add[data-v-d9ae9516]:hover{background:#eff6ff;border-color:#3b82f6}.zm-data-btn[data-v-d9ae9516]{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;font-size:12px;font-family:inherit;color:#475569;background:#fff;border:1px solid #e2e8f0;border-radius:8px;cursor:pointer;transition:all .1s}.zm-data-btn[data-v-d9ae9516]:hover{background:#f1f5f9;color:#1e293b;border-color:#cbd5e1}.zm-data-btn.is-primary[data-v-d9ae9516]{background:#3b82f6;color:#fff;border-color:#3b82f6}.zm-data-btn.is-primary[data-v-d9ae9516]:hover{background:#2563eb;border-color:#2563eb;color:#fff}.zm-settings-reset[data-v-d9ae9516]{width:100%;padding:10px 12px;font-size:12px;font-family:inherit;font-weight:500;color:#64748b;background:#fff;border:1px solid #e2e8f0;border-radius:10px;cursor:pointer;transition:all .1s}.zm-settings-reset[data-v-d9ae9516]:hover{background:#fef2f2;color:#ef4444;border-color:#fecaca}.zm-note-panel{display:flex;flex-direction:column;height:100%;padding:12px 12px 16px;gap:10px;background:#f8fafc}.zm-note-empty{padding:20px 12px;color:#64748b;font-size:13px;line-height:1.6}.zm-note-empty p{margin:0 0 6px}.zm-note-hint{color:#94a3b8;font-size:12px}.zm-note-header{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:4px;flex-shrink:0}.zm-note-title-row{display:flex;align-items:baseline;gap:8px;min-width:0}.zm-note-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#94a3b8;flex-shrink:0}.zm-note-name{font-size:13px;font-weight:600;color:#1e293b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.zm-note-meta{font-size:11px;color:#94a3b8}.zm-note-scroll{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding-right:2px}.zm-note-section{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:8px}.zm-note-section-head{display:flex;align-items:center;gap:8px;min-width:0}.zm-note-section-title{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#64748b;flex:1;min-width:0}.zm-note-section-hint{font-size:10px;color:#94a3b8}.zm-note-section-tag{font-size:10px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;color:#475569;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:4px;padding:1px 6px;line-height:1.4}.zm-note-section-actions{display:flex;justify-content:flex-end}.zm-note-textarea{width:100%;min-height:120px;padding:10px 12px;font:inherit;font-size:13px;line-height:20px;color:#1e293b;background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;resize:none;outline:none;box-sizing:border-box;font-family:inherit;overflow:hidden}.zm-note-textarea:focus{border-color:#3b82f6;background:#fff;box-shadow:0 0 0 3px #3b82f61f}.zm-note-textarea:disabled{background:#f8fafc;color:#94a3b8;cursor:not-allowed}.zm-note-textarea::placeholder{color:#94a3b8;white-space:pre-line}.zm-note-split{display:flex;flex-direction:column;gap:6px}.zm-note-preview-toggle{font:inherit;font-size:10px;color:#1d4ed8;background:transparent;border:1px solid #bfdbfe;border-radius:999px;padding:1px 8px;cursor:pointer;transition:all .1s;flex-shrink:0}.zm-note-preview-toggle:hover{background:#eff6ff;border-color:#93c5fd}.zm-note-preview{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;padding:8px 12px;max-height:240px;overflow:auto;font-size:13px;line-height:1.6;color:#1e293b}.zm-note-preview-hint{color:#94a3b8;font-size:12px;font-style:italic}.zm-note-preview-body h1,.zm-note-preview-body h2,.zm-note-preview-body h3{margin:8px 0 4px;font-weight:600;color:#0f172a}.zm-note-preview-body h1{font-size:16px}.zm-note-preview-body h2{font-size:14px}.zm-note-preview-body h3{font-size:13px}.zm-note-preview-body h4,.zm-note-preview-body h5,.zm-note-preview-body h6{margin:6px 0 4px;font-size:12px;font-weight:600;color:#334155}.zm-note-preview-body p{margin:0 0 6px}.zm-note-preview-body p:last-child{margin-bottom:0}.zm-note-preview-body ul,.zm-note-preview-body ol{margin:0 0 6px;padding-left:20px}.zm-note-preview-body li{margin:0 0 2px}.zm-note-preview-body blockquote{margin:0 0 6px;padding:4px 10px;border-left:3px solid #cbd5e1;color:#475569;background:#f1f5f9}.zm-note-preview-body code{font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:12px;background:#f1f5f9;padding:1px 4px;border-radius:3px;color:#be185d}.zm-note-preview-body pre{margin:0 0 6px;padding:8px 10px;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:6px;overflow:auto}.zm-note-preview-body pre code{background:transparent;padding:0;color:inherit;font-size:12px;line-height:1.55}.zm-note-preview-body a{color:#1d4ed8;text-decoration:underline;text-decoration-color:#bfdbfe}.zm-note-preview-body a:hover{text-decoration-color:#1d4ed8}.zm-note-preview-body table{border-collapse:collapse;margin:0 0 6px;font-size:12px}.zm-note-preview-body th,.zm-note-preview-body td{border:1px solid #e2e8f0;padding:4px 8px;text-align:left}.zm-note-preview-body th{background:#f1f5f9;font-weight:600}.zm-note-preview-body hr{border:none;border-top:1px solid #e2e8f0;margin:8px 0}.zm-note-preview-body img{max-width:100%;max-height:200px;border-radius:4px;display:block}.zm-note-input{width:100%;padding:7px 10px;font:inherit;font-size:12px;line-height:1.5;color:#1e293b;background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;outline:none;box-sizing:border-box;font-family:inherit}.zm-note-input:focus{border-color:#3b82f6;background:#fff;box-shadow:0 0 0 3px #3b82f61f}.zm-note-input:disabled{background:#f8fafc;color:#94a3b8;cursor:not-allowed}.zm-note-input-code{font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:11px;min-height:80px;resize:none;white-space:pre;line-height:20px;overflow:hidden}.zm-note-add-row{display:flex;flex-wrap:wrap;gap:6px;padding:2px 2px 0}.zm-note-add-chip{font:inherit;font-size:11px;color:#64748b;background:#fff;border:1px dashed #cbd5e1;border-radius:999px;padding:3px 10px;cursor:pointer;transition:all .1s}.zm-note-add-chip:hover{color:#1d4ed8;border-color:#93c5fd;background:#eff6ff}.zm-note-link-chip{display:inline-block;max-width:100%;padding:6px 10px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:6px;color:#1d4ed8;font-size:12px;text-decoration:none;word-break:break-all;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;transition:background .1s}.zm-note-link-chip:hover{background:#dbeafe}.zm-note-image{display:block;max-width:100%;max-height:240px;object-fit:contain;border-radius:6px;background:#f1f5f9;margin:0 auto}.zm-note-code{margin:0;padding:10px 12px;background:#f1f5f9;color:#24292e;border:1px solid #e2e8f0;border-radius:8px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:12px;line-height:1.55;white-space:pre-wrap;word-break:break-word;max-height:320px;overflow:auto;box-shadow:0 1px 3px #0f172a14}.zm-note-code code{font:inherit;color:inherit;background:transparent;padding:0}.zm-note-table{width:100%;border-collapse:separate;border-spacing:0;font-size:12px;color:#1e293b;table-layout:auto;background:#fffbeb;border:1px solid #fcd34d;border-radius:8px;overflow:hidden;box-shadow:0 1px 3px #92400e14}.zm-note-table th{background:#fde68a;font-weight:600;padding:6px 10px;text-align:left;border-right:1px solid #fcd34d;white-space:nowrap}.zm-note-table th:last-child{border-right:none}.zm-note-table td{border-top:1px solid #fde68a;border-right:1px solid #fde68a;padding:6px 10px;text-align:left;vertical-align:top;word-break:break-word;background:#fffbeb}.zm-note-table tr:last-child td{border-bottom:none}.zm-note-table td:last-child{border-right:none}.zm-note-action-btn{padding:4px 10px;font-size:12px;font-family:inherit;color:#fff;background:#3b82f6;border:1px solid #3b82f6;border-radius:6px;cursor:pointer;transition:all .1s}.zm-note-action-btn.is-danger{color:#b91c1c;background:#fff;border-color:#fca5a5}.zm-note-action-btn.is-danger:hover{background:#fee2e2;border-color:#f87171}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
2
2
  Theme: GitHub
3
3
  Description: Light theme as seen on github.com
4
4
  Author: github.com
@@ -7,4 +7,4 @@
7
7
 
8
8
  Outdated base version: https://github.com/primer/github-syntax-light
9
9
  Current colors taken from GitHub's CSS
10
- */.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}.zm-mindmap{position:relative;width:100%;height:100%;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;-webkit-user-select:none;user-select:none}.zm-canvas{position:absolute;top:0;right:0;bottom:0;left:0;cursor:grab}.zm-canvas:active{cursor:grabbing}.zm-world{position:absolute;left:0;top:0;transform-origin:0 0}.zm-svg-layer{position:absolute;pointer-events:none;overflow:visible}.zm-marquee{position:absolute;border:1px dashed #3b82f6;background:#3b82f614;pointer-events:none;z-index:5}.zm-svg{position:absolute;left:0;top:0;pointer-events:none;overflow:visible;shape-rendering:geometricPrecision}.zm-node{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:.4em;box-sizing:border-box;border-radius:8px;border:1px solid transparent;line-height:1.2;cursor:default;transition:box-shadow .15s;white-space:nowrap;z-index:1}.zm-node:hover{box-shadow:0 4px 12px #0000001a;z-index:2}.zm-node:not(.is-root):not(.is-editing){cursor:grab}.zm-node.is-root{cursor:default}.zm-node.is-dragging-source{opacity:.4;cursor:grabbing}.zm-node.is-drop-target{outline:2px solid #4caf50;outline-offset:2px;transition:outline-color .1s ease}.zm-node.is-drop-target-before{box-shadow:0 -3px #3b82f6,0 1px 2px #0000000f}.zm-node.is-drop-target-after{box-shadow:0 3px #3b82f6,0 1px 2px #0000000f}.zm-drop-indicator{position:absolute;background:#3b82f6;border-radius:2px;pointer-events:none;z-index:9999;box-shadow:0 0 6px #3b82f680}.zm-drag-ghost{position:absolute;pointer-events:none;z-index:10000;padding:4px 10px;background:#fff;border:1px solid #4caf50;border-radius:4px;box-shadow:0 4px 12px #00000026;font-size:13px;color:#333;white-space:nowrap;max-width:200px;overflow:hidden;text-overflow:ellipsis;will-change:transform,left,top}body.is-dragging{cursor:grabbing!important;-webkit-user-select:none;user-select:none}.zm-node.is-root{font-weight:600}.zm-node.is-selected{outline:2px solid #3b82f6;outline-offset:2px;z-index:3}.zm-node.is-selected-secondary{outline:2px solid #bfdbfe;outline-offset:2px;z-index:2}.zm-text{display:flex;align-items:center;justify-content:center;gap:4px;min-height:1.2em;max-width:200px;overflow:hidden}.zm-text-label{pointer-events:none;overflow:hidden;white-space:pre-line;min-width:0;flex-shrink:1}.zm-input{border:none;outline:none;background:transparent;color:inherit;font:inherit;text-align:center;width:100%;min-width:40px;resize:none;overflow:hidden;padding:0;line-height:1.2}.zm-tooltip{position:absolute;max-width:240px;padding:6px 10px;background:#0f172af0;color:#f8fafc;font-size:12px;line-height:1.4;border-radius:6px;box-shadow:0 4px 14px #0000002e;pointer-events:none;z-index:1000;white-space:normal;word-break:break-word;transform:translate(-50%,-100%);animation:zm-tooltip-in .12s ease-out}.zm-tooltip.is-below{transform:translate(-50%)}.zm-tooltip:after{content:"";position:absolute;left:50%;top:100%;transform:translate(-50%);border:4px solid transparent;border-top-color:#0f172af0}.zm-tooltip.is-below:after{top:auto;bottom:100%;border-top-color:transparent;border-bottom-color:#0f172af0}@keyframes zm-tooltip-in{0%{opacity:0;transform:translate(-50%,calc(-100% + 4px))}to{opacity:1;transform:translate(-50%,-100%)}}.zm-tooltip.is-below{animation-name:zm-tooltip-in-below}@keyframes zm-tooltip-in-below{0%{opacity:0;transform:translate(-50%,-4px)}to{opacity:1;transform:translate(-50%)}}.zm-rich{margin-top:6px;width:max-content;overflow:visible;font-size:.78em;line-height:1.35;text-align:left;border-radius:4px;padding:0 .8em .2em;color:inherit}.zm-rich-above{margin:0 0 2px}.zm-rich-no-overflow{max-height:none;overflow:visible}.zm-rich-code{margin:0;padding:6px 14px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.92em;white-space:pre-wrap;word-break:break-word;background:#fffffff2;border:1px solid currentColor;border-radius:6px}.zm-rich-list{margin:0;padding-left:1.2em;list-style:disc}.zm-rich-list li{margin:1px 0}.zm-rich-table{width:100%;border-collapse:separate;border-spacing:0;font-size:.92em;background:#fffffff2;border:1px solid currentColor;border-radius:6px;overflow:hidden}.zm-rich-table th{background:#ffffffbf;font-weight:600;text-align:left;padding:3px 10px;border-bottom:1px solid currentColor;border-right:1px solid currentColor;opacity:.9}.zm-rich-table th:last-child{border-right:none}.zm-rich-table td{border-top:1px solid currentColor;border-right:1px solid currentColor;padding:3px 10px;opacity:.9}.zm-rich-table tr:last-child td{border-bottom:none}.zm-rich-table td:last-child{border-right:none}.zm-rich-edit{width:100%;min-height:90px;margin:0;padding:4px 6px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.92em;line-height:1.4;color:inherit;background:#fff9;border:1px solid currentColor;border-radius:3px;outline:none;resize:vertical;white-space:pre;box-sizing:border-box}.zm-rich-edit:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.zm-rich-paragraph{white-space:pre-wrap;word-break:break-word}.zm-btn{position:absolute;width:18px;height:18px;border-radius:50%;border:none;background:#3b82f6;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:opacity .15s,transform .15s;z-index:4}.zm-node:hover .zm-btn,.zm-node.is-selected .zm-btn{opacity:1}.zm-btn:hover{transform:scale(1.15)}.zm-collapse{right:-8px;top:50%;width:16px;height:16px;border-radius:50%;background:#fff;border:none;transform:translateY(-50%);box-shadow:0 1px 3px #0f172a33;display:flex;align-items:center;justify-content:center}.zm-collapse-bar{display:block;width:7px;height:2px;border-radius:1px;background:var(--zm-collapse-color, #64748b)}.zm-collapse.is-on-left{right:auto;left:-8px}.zm-collapse:hover{transform:translateY(-50%) scale(1.2);background:#fff}.zm-collapse-badge{position:absolute;top:50%;transform:translateY(-50%);left:calc(100% + 8px);min-width:18px;height:18px;padding:0 5px;border-radius:5px;color:#fff;font-size:11px;font-weight:600;line-height:18px;text-align:center;box-shadow:0 1px 2px #00000026;cursor:pointer;-webkit-user-select:none;user-select:none;z-index:2;transition:filter .1s}.zm-collapse-badge.is-on-left{left:auto;right:calc(100% + 8px)}.zm-collapse-badge:hover{filter:brightness(.9)}.zm-node.has-image{flex-direction:column;padding:8px;gap:6px;white-space:normal}.zm-node-img{display:block;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain;border-radius:4px}.zm-node-link,.zm-node-note-btn{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;border:none;background:transparent;color:currentColor;border-radius:3px;cursor:pointer;flex-shrink:0;text-decoration:none;opacity:.75;transition:opacity .1s,background .1s;pointer-events:auto}.zm-node-link:hover,.zm-node-note-btn:hover{opacity:1;background:#0f172a14}.zm-node-link svg,.zm-node-note-btn svg{display:block}.zm-img-resize-handle{position:absolute;right:-6px;bottom:-6px;width:14px;height:14px;background:#3b82f6;border:2px solid #ffffff;border-radius:50%;cursor:nwse-resize;z-index:4;box-shadow:0 1px 4px #0f172a4d;transition:transform .1s}.zm-img-resize-handle:hover{transform:scale(1.2)}.zm-node.is-resizing{cursor:nwse-resize!important}.zm-img-remove-btn{position:absolute;right:-6px;top:-6px;width:16px;height:16px;background:#fff;border:1px solid #e2e8f0;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#64748b;padding:0;z-index:4;box-shadow:0 1px 3px #0f172a26;transition:all .1s}.zm-img-remove-btn:hover{background:#fee2e2;color:#b91c1c;border-color:#fca5a5}.zm-order-badge{display:inline-block;margin-left:6px;padding:0 5px;font-size:10px;font-weight:600;line-height:16px;color:#475569;background:#e2e8f0;border-radius:3px;font-variant-numeric:tabular-nums;pointer-events:none;-webkit-user-select:none;user-select:none;vertical-align:middle}.zm-canvas-fab{position:absolute;width:34px;height:34px;display:flex;align-items:center;justify-content:center;border:none;background:#fff;border:1px solid #e8eaed;border-radius:999px;box-shadow:0 2px 8px #0f172a0f,0 1px 2px #0f172a0a;color:#475569;cursor:pointer;z-index:11;opacity:0;pointer-events:none;transform:translateY(4px);transition:opacity .18s ease,transform .18s ease,background .1s,color .1s,box-shadow .12s}.zm-canvas-fab.is-visible{opacity:1;pointer-events:auto;transform:translateY(0)}.zm-canvas-fab:hover{background:#f8fafc;color:#1e293b;box-shadow:0 4px 16px #0f172a1a,0 1px 4px #0f172a0f}.zm-canvas-fab:active{transform:scale(.94)}.zm-canvas-fab-preview{top:16px;right:16px}.zm-canvas-fab-outline{top:16px;left:16px}.zm-toolbar{position:absolute;bottom:16px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:4px;padding:7px 12px;background:#ffffffeb;backdrop-filter:blur(12px) saturate(180%);-webkit-backdrop-filter:blur(12px) saturate(180%);border:1px solid rgba(226,232,240,.6);border-radius:999px;box-shadow:0 4px 20px #0f172a0f,0 1px 3px #0f172a0a;z-index:10;transition:opacity .18s ease,transform .18s ease}.zm-toolbar.is-preview-only{opacity:0;pointer-events:none;transform:translate(-50%) translateY(8px)}.zm-toolbar.is-preview-only.is-hovered{opacity:1;pointer-events:auto;transform:translate(-50%) translateY(0)}.zm-tb-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;border-radius:8px;cursor:pointer;color:#475569;transition:background .12s,color .12s}.zm-tb-btn:hover{background:#f1f5f9;color:#0f172a}.zm-tb-btn img{filter:invert(20%) sepia(15%) saturate(500%) hue-rotate(180deg);transition:filter .1s}.zm-tb-btn:hover img{filter:invert(15%) sepia(30%) saturate(800%) hue-rotate(180deg)}.zm-tb-btn.active{background:var(--zm-tb-active, #fff7ed);color:var(--zm-tb-active-fg, #c2410c)}.zm-tb-divider{width:1px;height:18px;background:#e2e8f0b3;margin:0 4px}.zm-tb-tip{font-size:12px;color:#64748b;min-width:38px;text-align:center}.zm-tb-zoom{cursor:pointer;-webkit-user-select:none;user-select:none}.zm-tb-zoom:hover{color:#3b82f6}.zm-node.is-search-hit{outline:2px solid #f59e0b;outline-offset:2px;z-index:3}.zm-node.is-search-current{outline:3px solid #f97316;outline-offset:3px;z-index:4;box-shadow:0 0 0 4px #f9731626}.zm-node.is-search-dimmed{opacity:.35}.zm-node-markers{display:flex;align-items:center;gap:2px;flex-shrink:0;pointer-events:none}.zm-node-marker{display:inline-flex;width:14px;height:14px;flex-shrink:0}.zm-node-marker svg{display:block;width:14px;height:14px}.zm-node-tags{display:flex;flex-wrap:wrap;gap:3px;justify-content:center;margin-top:3px;max-width:100%;overflow:hidden}.zm-node-tag{display:inline-block;padding:1px 6px;border-radius:999px;font-size:10px;line-height:1.4;font-weight:500;white-space:nowrap;pointer-events:none}.zm-app{display:flex;width:100%;height:100%;background:#f8fafc;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-size:14px;color:#1e293b;overflow:hidden}.zm-app-main{flex:1;display:flex;flex-direction:column;min-width:0}.zm-app-preview-exit{position:absolute;top:12px;right:12px;z-index:10;width:34px;height:34px;border:1px solid #e8eaed;background:#ffffffeb;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:#475569;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 8px #0f172a0f;transition:background .12s,color .12s,transform .12s}.zm-app-preview-exit:hover{background:#f1f5f9;color:#0f172a;transform:scale(1.05)}.zm-app-canvas{flex:1;position:relative;min-height:0}
10
+ */.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}.zm-mindmap{position:relative;width:100%;height:100%;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;-webkit-user-select:none;user-select:none}.zm-canvas{position:absolute;top:0;right:0;bottom:0;left:0;cursor:grab}.zm-canvas:active{cursor:grabbing}.zm-world{position:absolute;left:0;top:0;transform-origin:0 0}.zm-svg-layer{position:absolute;pointer-events:none;overflow:visible}.zm-marquee{position:absolute;border:1px dashed #3b82f6;background:#3b82f614;pointer-events:none;z-index:5}.zm-svg{position:absolute;left:0;top:0;pointer-events:none;overflow:visible;shape-rendering:geometricPrecision}.zm-node{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:.4em;box-sizing:border-box;border-radius:8px;border:1px solid transparent;line-height:1.2;cursor:default;transition:box-shadow .15s;white-space:nowrap;z-index:1}.zm-node:hover{box-shadow:0 4px 12px #0000001a;z-index:2}.zm-node:not(.is-root):not(.is-editing){cursor:grab}.zm-node.is-root{cursor:default}.zm-node.is-dragging-source{opacity:.4;cursor:grabbing}.zm-node.is-drop-target{outline:2px solid #4caf50;outline-offset:2px;transition:outline-color .1s ease}.zm-node.is-drop-target-before{box-shadow:0 -3px #3b82f6,0 1px 2px #0000000f}.zm-node.is-drop-target-after{box-shadow:0 3px #3b82f6,0 1px 2px #0000000f}.zm-drop-indicator{position:absolute;background:#3b82f6;border-radius:2px;pointer-events:none;z-index:9999;box-shadow:0 0 6px #3b82f680}.zm-drag-ghost{position:absolute;pointer-events:none;z-index:10000;padding:4px 10px;background:#fff;border:1px solid #4caf50;border-radius:4px;box-shadow:0 4px 12px #00000026;font-size:13px;color:#333;white-space:nowrap;max-width:200px;overflow:hidden;text-overflow:ellipsis;will-change:transform,left,top}body.is-dragging{cursor:grabbing!important;-webkit-user-select:none;user-select:none}.zm-node.is-root{font-weight:600}.zm-node.is-selected{outline:2px solid #3b82f6;outline-offset:2px;z-index:3}.zm-node.is-selected-secondary{outline:2px solid #bfdbfe;outline-offset:2px;z-index:2}.zm-text{display:flex;align-items:center;justify-content:center;gap:4px;min-height:1.2em;max-width:200px;overflow:hidden}.zm-text-label{pointer-events:none;overflow:hidden;white-space:pre-line;min-width:0;flex-shrink:1}.zm-input{border:none;outline:none;background:transparent;color:inherit;font:inherit;text-align:center;width:100%;min-width:40px;resize:none;overflow:hidden;padding:0;line-height:1.2}.zm-tooltip{position:absolute;max-width:240px;padding:6px 10px;background:#0f172af0;color:#f8fafc;font-size:12px;line-height:1.4;border-radius:6px;box-shadow:0 4px 14px #0000002e;pointer-events:none;z-index:1000;white-space:normal;word-break:break-word;transform:translate(-50%,-100%);animation:zm-tooltip-in .12s ease-out}.zm-tooltip.is-below{transform:translate(-50%)}.zm-tooltip:after{content:"";position:absolute;left:50%;top:100%;transform:translate(-50%);border:4px solid transparent;border-top-color:#0f172af0}.zm-tooltip.is-below:after{top:auto;bottom:100%;border-top-color:transparent;border-bottom-color:#0f172af0}@keyframes zm-tooltip-in{0%{opacity:0;transform:translate(-50%,calc(-100% + 4px))}to{opacity:1;transform:translate(-50%,-100%)}}.zm-tooltip.is-below{animation-name:zm-tooltip-in-below}@keyframes zm-tooltip-in-below{0%{opacity:0;transform:translate(-50%,-4px)}to{opacity:1;transform:translate(-50%)}}.zm-rich{margin-top:6px;width:max-content;overflow:visible;font-size:.78em;line-height:1.35;text-align:left;border-radius:4px;padding:0 .8em .2em;color:inherit}.zm-rich-above{margin:0 0 2px}.zm-rich-no-overflow{max-height:none;overflow:visible}.zm-rich-code{margin:0;padding:6px 14px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.92em;white-space:pre-wrap;word-break:break-word;background:#fffffff2;border:1px solid currentColor;border-radius:6px}.zm-rich-list{margin:0;padding-left:1.2em;list-style:disc}.zm-rich-list li{margin:1px 0}.zm-rich-table{width:100%;border-collapse:separate;border-spacing:0;font-size:.92em;background:#fffffff2;border:1px solid currentColor;border-radius:6px;overflow:hidden}.zm-rich-table th{background:#ffffffbf;font-weight:600;text-align:left;padding:3px 10px;border-bottom:1px solid currentColor;border-right:1px solid currentColor;opacity:.9}.zm-rich-table th:last-child{border-right:none}.zm-rich-table td{border-top:1px solid currentColor;border-right:1px solid currentColor;padding:3px 10px;opacity:.9}.zm-rich-table tr:last-child td{border-bottom:none}.zm-rich-table td:last-child{border-right:none}.zm-rich-edit{width:100%;min-height:90px;margin:0;padding:4px 6px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.92em;line-height:1.4;color:inherit;background:#fff9;border:1px solid currentColor;border-radius:3px;outline:none;resize:vertical;white-space:pre;box-sizing:border-box}.zm-rich-edit:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.zm-rich-paragraph{white-space:pre-wrap;word-break:break-word}.zm-btn{position:absolute;width:18px;height:18px;border-radius:50%;border:none;background:#3b82f6;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:opacity .15s,transform .15s;z-index:4}.zm-node:hover .zm-btn,.zm-node.is-selected .zm-btn{opacity:1}.zm-btn:hover{transform:scale(1.15)}.zm-collapse{right:-8px;top:50%;width:16px;height:16px;border-radius:50%;background:#fff;border:none;transform:translateY(-50%);box-shadow:0 1px 3px #0f172a33;display:flex;align-items:center;justify-content:center}.zm-collapse-bar{display:block;width:7px;height:2px;border-radius:1px;background:var(--zm-collapse-color, #64748b)}.zm-collapse.is-on-left{right:auto;left:-8px}.zm-collapse:hover{transform:translateY(-50%) scale(1.2);background:#fff}.zm-collapse-badge{position:absolute;top:50%;transform:translateY(-50%);left:calc(100% + 8px);min-width:18px;height:18px;padding:0 5px;border-radius:5px;color:#fff;font-size:11px;font-weight:600;line-height:18px;text-align:center;box-shadow:0 1px 2px #00000026;cursor:pointer;-webkit-user-select:none;user-select:none;z-index:2;transition:filter .1s}.zm-collapse-badge.is-on-left{left:auto;right:calc(100% + 8px)}.zm-collapse-badge:hover{filter:brightness(.9)}.zm-node.has-image{flex-direction:column;padding:8px;gap:6px;white-space:normal}.zm-node-img{display:block;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain;border-radius:4px}.zm-node-link,.zm-node-note-btn{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;border:none;background:transparent;color:currentColor;border-radius:3px;cursor:pointer;flex-shrink:0;text-decoration:none;opacity:.75;transition:opacity .1s,background .1s;pointer-events:auto}.zm-node-link:hover,.zm-node-note-btn:hover{opacity:1;background:#0f172a14}.zm-node-link svg,.zm-node-note-btn svg{display:block}.zm-img-resize-handle{position:absolute;right:-6px;bottom:-6px;width:14px;height:14px;background:#3b82f6;border:2px solid #ffffff;border-radius:50%;cursor:nwse-resize;z-index:4;box-shadow:0 1px 4px #0f172a4d;transition:transform .1s}.zm-img-resize-handle:hover{transform:scale(1.2)}.zm-node.is-resizing{cursor:nwse-resize!important}.zm-img-remove-btn{position:absolute;right:-6px;top:-6px;width:16px;height:16px;background:#fff;border:1px solid #e2e8f0;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#64748b;padding:0;z-index:4;box-shadow:0 1px 3px #0f172a26;transition:all .1s}.zm-img-remove-btn:hover{background:#fee2e2;color:#b91c1c;border-color:#fca5a5}.zm-relation-path{fill:none;stroke:#94a3b8;stroke-width:1.5;stroke-dasharray:6 4;stroke-linecap:round;pointer-events:none}.zm-relation-path.is-selected{stroke:#3b82f6}.zm-relation-arrow{fill:#94a3b8;stroke:none;pointer-events:none}.zm-relation-arrow.is-selected{fill:#3b82f6}.zm-relation-hit{fill:none;stroke:transparent;stroke-width:14;pointer-events:stroke;cursor:pointer}.zm-relation-label{font-size:12px;fill:#64748b;paint-order:stroke;stroke:#fff;stroke-width:3px;pointer-events:all;cursor:pointer;-webkit-user-select:none;user-select:none}.zm-relation-guide{stroke:#3b82f6;stroke-width:1;stroke-dasharray:3 3;pointer-events:none;vector-effect:non-scaling-stroke}.zm-relation-handle{fill:#fff;stroke:#3b82f6;stroke-width:1.5;vector-effect:non-scaling-stroke;pointer-events:all;cursor:grab}.zm-relation-handle:hover{fill:#dbeafe}.zm-relation-handle-ctrl{stroke:#f59e0b}.zm-relation-handle-ctrl:hover{fill:#fef3c7}.zm-canvas.is-relation-mode{cursor:crosshair}.zm-node.is-relation-source{box-shadow:0 0 0 2px #3b82f6,0 0 0 5px #3b82f640}.zm-node.is-relation-target{box-shadow:0 0 0 2px #22c55e,0 0 0 5px #22c55e40}.zm-relation-label-input{position:absolute;transform:translate(-50%,-110%);min-width:72px;padding:2px 8px;font-size:12px;line-height:1.5;border:1px solid #3b82f6;border-radius:4px;outline:none;background:#fff;color:#334155;text-align:center;box-shadow:0 2px 8px #0f172a1f;z-index:5}.zm-order-badge{display:inline-block;margin-left:6px;padding:0 5px;font-size:10px;font-weight:600;line-height:16px;color:#475569;background:#e2e8f0;border-radius:3px;font-variant-numeric:tabular-nums;pointer-events:none;-webkit-user-select:none;user-select:none;vertical-align:middle}.zm-canvas-fab{position:absolute;width:34px;height:34px;display:flex;align-items:center;justify-content:center;border:none;background:#fff;border:1px solid #e8eaed;border-radius:999px;box-shadow:0 2px 8px #0f172a0f,0 1px 2px #0f172a0a;color:#475569;cursor:pointer;z-index:11;opacity:0;pointer-events:none;transform:translateY(4px);transition:opacity .18s ease,transform .18s ease,background .1s,color .1s,box-shadow .12s}.zm-canvas-fab.is-visible{opacity:1;pointer-events:auto;transform:translateY(0)}.zm-canvas-fab:hover{background:#f8fafc;color:#1e293b;box-shadow:0 4px 16px #0f172a1a,0 1px 4px #0f172a0f}.zm-canvas-fab:active{transform:scale(.94)}.zm-canvas-fab-preview{top:16px;right:16px}.zm-canvas-fab-outline{top:16px;left:16px}.zm-toolbar{position:absolute;bottom:16px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:4px;padding:7px 12px;background:#ffffffeb;backdrop-filter:blur(12px) saturate(180%);-webkit-backdrop-filter:blur(12px) saturate(180%);border:1px solid rgba(226,232,240,.6);border-radius:999px;box-shadow:0 4px 20px #0f172a0f,0 1px 3px #0f172a0a;z-index:10;transition:opacity .18s ease,transform .18s ease}.zm-toolbar.is-preview-only{opacity:0;pointer-events:none;transform:translate(-50%) translateY(8px)}.zm-toolbar.is-preview-only.is-hovered{opacity:1;pointer-events:auto;transform:translate(-50%) translateY(0)}.zm-tb-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;border-radius:8px;cursor:pointer;color:#475569;transition:background .12s,color .12s}.zm-tb-btn:hover{background:#f1f5f9;color:#0f172a}.zm-tb-btn img{filter:invert(20%) sepia(15%) saturate(500%) hue-rotate(180deg);transition:filter .1s}.zm-tb-btn:hover img{filter:invert(15%) sepia(30%) saturate(800%) hue-rotate(180deg)}.zm-tb-btn.active{background:var(--zm-tb-active, #fff7ed);color:var(--zm-tb-active-fg, #c2410c)}.zm-tb-divider{width:1px;height:18px;background:#e2e8f0b3;margin:0 4px}.zm-tb-tip{font-size:12px;color:#64748b;min-width:38px;text-align:center}.zm-tb-zoom{cursor:pointer;-webkit-user-select:none;user-select:none}.zm-tb-zoom:hover{color:#3b82f6}.zm-node.is-search-hit{outline:2px solid #f59e0b;outline-offset:2px;z-index:3}.zm-node.is-search-current{outline:3px solid #f97316;outline-offset:3px;z-index:4;box-shadow:0 0 0 4px #f9731626}.zm-node.is-search-dimmed{opacity:.35}.zm-node-markers{display:flex;align-items:center;gap:2px;flex-shrink:0;pointer-events:none}.zm-node-marker{display:inline-flex;width:14px;height:14px;flex-shrink:0}.zm-node-marker svg{display:block;width:14px;height:14px}.zm-node-tags{display:flex;flex-wrap:wrap;gap:3px;justify-content:center;margin-top:3px;max-width:100%;overflow:hidden}.zm-node-tag{display:inline-block;padding:1px 6px;border-radius:999px;font-size:10px;line-height:1.4;font-weight:500;white-space:nowrap;pointer-events:none}.zm-app{display:flex;width:100%;height:100%;background:#f8fafc;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-size:14px;color:#1e293b;overflow:hidden}.zm-app-main{flex:1;display:flex;flex-direction:column;min-width:0}.zm-app-preview-exit{position:absolute;top:12px;right:12px;z-index:10;width:34px;height:34px;border:1px solid #e8eaed;background:#ffffffeb;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:#475569;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 8px #0f172a0f;transition:background .12s,color .12s,transform .12s}.zm-app-preview-exit:hover{background:#f1f5f9;color:#0f172a;transform:scale(1.05)}.zm-app-canvas{flex:1;position:relative;min-height:0}
package/dist/tree.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { MindMapNode } from './types';
1
+ import type { MindMapNode, MindMapRelation } from './types';
2
2
  export declare function uid(): string;
3
3
  export declare function clone<T>(o: T): T;
4
4
  export declare function findNode(root: MindMapNode, id: string): MindMapNode | null;
@@ -42,6 +42,27 @@ export declare function cloneSubtree(root: MindMapNode, nodeId: string): MindMap
42
42
  export declare function hasDescendant(root: MindMapNode, rootId: string, descendantId: string): boolean;
43
43
  export declare function countDescendants(n: MindMapNode): number;
44
44
  export declare const DEFAULT_NEW_NODE_TEXT = "\u65B0\u8282\u70B9";
45
+ export declare function findRelation(root: MindMapNode, id: string): MindMapRelation | null;
46
+ /** Create a relationship between two nodes. Returns the new
47
+ * relation, or null when the pair is invalid: same node on both
48
+ * ends, an unknown node id, or an identical (fromId, toId)
49
+ * connection already exists. */
50
+ export declare function addRelation(root: MindMapNode, fromId: string, toId: string): MindMapRelation | null;
51
+ export declare function removeRelation(root: MindMapNode, id: string): boolean;
52
+ /** Patch a relation in place (label / anchors / control points).
53
+ * `fromId` / `toId` / `id` are ignored — re-attach goes through
54
+ * `reattachRelation`. Returns true on success. */
55
+ export declare function updateRelation(root: MindMapNode, id: string, patch: Partial<Omit<MindMapRelation, 'id' | 'fromId' | 'toId'>>): boolean;
56
+ /** Move one end of a relation to a different node. `end` selects
57
+ * which side ('from' | 'to'). No-op (returns false) when the new
58
+ * node is unknown, equals the other endpoint, or the resulting
59
+ * (fromId, toId) pair already exists. Clears the moved end's
60
+ * anchor offset so the line re-anchors at the new node's edge. */
61
+ export declare function reattachRelation(root: MindMapNode, id: string, end: 'from' | 'to', newNodeId: string): boolean;
62
+ /** Drop every relation that references `nodeId` on either end.
63
+ * Called by the canvas when a node (or its subtree) is removed.
64
+ * Returns the number of relations removed. */
65
+ export declare function removeRelationsForNode(root: MindMapNode, nodeId: string): number;
45
66
  /**
46
67
  * Parse a Markdown string into a MindMapNode tree. Each heading
47
68
  * becomes a node; its level sets the depth.
package/dist/types.d.ts CHANGED
@@ -69,6 +69,59 @@ export interface MindMapNode {
69
69
  * pill color is derived from a hash of the label text.
70
70
  */
71
71
  tags?: string[];
72
+ /**
73
+ * XMind-style relationship lines ("联系") connecting arbitrary
74
+ * pairs of nodes. Only meaningful on the ROOT node — the
75
+ * canvas reads/writes `root.relations`; entries reference
76
+ * other nodes by id. Survives JSON export/import and
77
+ * undo/redo (plain JSON shape), but is NOT serialized to
78
+ * markdown (node ids are regenerated on markdown re-import,
79
+ * so the references would dangle).
80
+ */
81
+ relations?: MindMapRelation[];
82
+ }
83
+ /**
84
+ * A free-form connection between any two nodes (XMind "联系").
85
+ * Rendered as a dashed cubic-bezier curve with an optional text
86
+ * label at the midpoint. When the line is selected the canvas
87
+ * shows four handles: two endpoint anchors (drag along the node
88
+ * edge, or drop onto another node to re-attach) and two bezier
89
+ * control points (free drag).
90
+ */
91
+ export interface MindMapRelation {
92
+ id: string;
93
+ fromId: string;
94
+ toId: string;
95
+ /**
96
+ * Endpoint anchor offset along the node edge, normalized to
97
+ * -1..1. The anchor starts at the point where the centers'
98
+ * connecting line exits the node box; `fromT` / `toT` slide it
99
+ * along the edge perimeter. Default 0 (no offset).
100
+ */
101
+ fromT?: number;
102
+ toT?: number;
103
+ /**
104
+ * Bezier control point overrides in world coordinates. When
105
+ * absent, the canvas derives default control points (perpendicular
106
+ * to the endpoint tangent) so fresh relations get a pleasant
107
+ * automatic curve. Written when the user drags a control handle.
108
+ */
109
+ c1?: {
110
+ x: number;
111
+ y: number;
112
+ };
113
+ c2?: {
114
+ x: number;
115
+ y: number;
116
+ };
117
+ /** Text shown at the curve midpoint. Empty/undefined = no label. */
118
+ label?: string;
119
+ /** Reserved for a future style panel — not yet consumed by the UI. */
120
+ color?: string;
121
+ dash?: boolean;
122
+ /** Arrowheads on the line. Default 'end' (XMind 联系 style —
123
+ * the arrow points at the second-picked node). */
124
+ arrow?: 'none' | 'end' | 'both';
72
125
  }
73
126
  /**
74
127
  * A node body that came from a markdown block. `raw` is the
@@ -125,13 +178,17 @@ export interface MindMapTheme {
125
178
  export type LineStyle = 'curve' | 'straight' | 'arc' | 'elbow' | 'rounded-elbow';
126
179
  export type LayoutMode = 'mindmap' | 'tree' | 'org';
127
180
  /** Where root-originated edges start on the root node.
128
- * 'edge' = left/right mid-edge (default, XMind classic),
181
+ * 'edge' = left/right mid-edge (legacy side-anchor mode),
129
182
  * 'center' = root node center — the line emerges from underneath
130
183
  * the root box, covered by it.
131
- * 'proportional' = the exit point on the root edge is projected
132
- * from the child's position (ray-cast), so children above the
133
- * center exit from the upper part of the edge and vice versa. */
134
- export type LineOrigin = 'edge' | 'center' | 'proportional';
184
+ * 'proportional' = the exit point on the root border is the
185
+ * ray-cast from the root center toward the child, so children
186
+ * above exit through the top edge, children below through the
187
+ * bottom edge.
188
+ * 'xmind' = distributed hidden start slots on the root's
189
+ * horizontal center line. Slots follow branch order on each side
190
+ * and are not a linear mapping of y-distance along one edge. */
191
+ export type LineOrigin = 'edge' | 'center' | 'proportional' | 'xmind';
135
192
  /** Identifier for a branch palette — the id of a built-in (e.g.
136
193
  * 'default', 'classic', 'vivid', 'dev', 'mint') or a user-defined
137
194
  * custom palette. Strings rather than a string union so users
@@ -187,9 +244,10 @@ export interface MindMapSettings {
187
244
  * left/right mid-edge of the root node; 'center' = the root
188
245
  * node's geometric center — the line is drawn from the center
189
246
  * but visually covered by the root box, so it appears to emerge
190
- * from underneath the root; 'proportional' = the exit point is
191
- * projected from the child's position so each child exits the
192
- * root at the closest edge point (fan / ray-cast). */
247
+ * from underneath the root; 'proportional' = ray-cast from the
248
+ * root center toward the child, intersected with the border;
249
+ * 'xmind' = distributed hidden start slots on the root's
250
+ * horizontal center line, matching XMind's fan geometry. */
193
251
  lineOrigin: LineOrigin;
194
252
  /** Layout mode (1.html parity). 'mindmap' = center + left/right
195
253
  * fans; 'tree' = single column expanding to the right; 'org' =
@@ -381,4 +439,16 @@ export interface MindMapExpose {
381
439
  /** The zero-based index of the currently focused search match,
382
440
  * or -1 when no match is focused. */
383
441
  getSearchIndex: () => number;
442
+ /** Create a relationship line ("联系") between two nodes.
443
+ * Returns the new relation's id, or null when the pair is
444
+ * invalid (same node, unknown id, or already connected in
445
+ * the same direction). */
446
+ addRelation: (fromId: string, toId: string) => string | null;
447
+ /** Remove a relationship line by id (no-op if absent). */
448
+ removeRelation: (relationId: string) => void;
449
+ /** Patch a relationship line (label, anchors, control points).
450
+ * No-op if the relation does not exist. */
451
+ updateRelation: (relationId: string, patch: Partial<Omit<MindMapRelation, 'id' | 'fromId' | 'toId'>>) => void;
452
+ /** Read all relationship lines (empty array when none). */
453
+ getRelations: () => MindMapRelation[];
384
454
  }
package/package.json CHANGED
@@ -1,79 +1,79 @@
1
- {
2
- "name": "flow-mindmap",
3
- "version": "0.5.14",
4
- "description": "A modern, minimalist mind mapping tool — xmind-style, embeddable as a Vue component.",
5
- "type": "module",
6
- "license": "Apache-2.0",
7
- "author": {
8
- "name": "xuze",
9
- "email": "569552263@qq.com"
10
- },
11
- "repository": {
12
- "type": "git",
13
- "url": "git+https://github.com/xz333221/flow-mindmap.git"
14
- },
15
- "bugs": {
16
- "url": "https://github.com/xz333221/flow-mindmap/issues"
17
- },
18
- "keywords": [
19
- "mindmap",
20
- "mind-map",
21
- "xmind",
22
- "vue",
23
- "vue3",
24
- "vite",
25
- "svg",
26
- "canvas",
27
- "tree"
28
- ],
29
- "files": [
30
- "dist",
31
- "README.md",
32
- "LICENSE"
33
- ],
34
- "main": "./dist/flow-mindmap.umd.cjs",
35
- "module": "./dist/flow-mindmap.js",
36
- "types": "./dist/entry.d.ts",
37
- "exports": {
38
- ".": {
39
- "types": "./dist/entry.d.ts",
40
- "import": "./dist/flow-mindmap.js",
41
- "require": "./dist/flow-mindmap.umd.cjs"
42
- },
43
- "./style.css": "./dist/style.css"
44
- },
45
- "scripts": {
46
- "pull": "git pull",
47
- "dev": "vite --port 7851 --strictPort",
48
- "build:types": "vue-tsc -p tsconfig.build.json",
49
- "build:lib": "vite build --mode lib",
50
- "build": "pnpm build:types && pnpm build:lib",
51
- "preview": "vite preview --port 7852",
52
- "typecheck": "vue-tsc --noEmit",
53
- "lint": "eslint . --ext .vue,.ts,.js --max-warnings 0",
54
- "test": "vitest run",
55
- "test:watch": "vitest",
56
- "screenshots": "node scripts/screenshots.mjs"
57
- },
58
- "peerDependencies": {
59
- "vue": "^3.4.0"
60
- },
61
- "devDependencies": {
62
- "@types/dompurify": "^3.2.0",
63
- "@types/node": "^25.9.1",
64
- "@vitejs/plugin-vue": "^5.1.4",
65
- "@vue/test-utils": "^2.4.11",
66
- "happy-dom": "^20.10.1",
67
- "playwright": "^1.60.0",
68
- "typescript": "^5.6.3",
69
- "vite": "^5.4.10",
70
- "vitest": "3.2.4",
71
- "vue": "^3.5.12",
72
- "vue-tsc": "^2.1.10"
73
- },
74
- "dependencies": {
75
- "dompurify": "^3.4.8",
76
- "highlight.js": "^11.11.1",
77
- "marked": "^18.0.5"
78
- }
79
- }
1
+ {
2
+ "name": "flow-mindmap",
3
+ "version": "0.6.1",
4
+ "description": "A modern, minimalist mind mapping tool — xmind-style, embeddable as a Vue component.",
5
+ "type": "module",
6
+ "license": "Apache-2.0",
7
+ "author": {
8
+ "name": "xuze",
9
+ "email": "569552263@qq.com"
10
+ },
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/xz333221/flow-mindmap.git"
14
+ },
15
+ "bugs": {
16
+ "url": "https://github.com/xz333221/flow-mindmap/issues"
17
+ },
18
+ "keywords": [
19
+ "mindmap",
20
+ "mind-map",
21
+ "xmind",
22
+ "vue",
23
+ "vue3",
24
+ "vite",
25
+ "svg",
26
+ "canvas",
27
+ "tree"
28
+ ],
29
+ "files": [
30
+ "dist",
31
+ "README.md",
32
+ "LICENSE"
33
+ ],
34
+ "main": "./dist/flow-mindmap.umd.cjs",
35
+ "module": "./dist/flow-mindmap.js",
36
+ "types": "./dist/entry.d.ts",
37
+ "exports": {
38
+ ".": {
39
+ "types": "./dist/entry.d.ts",
40
+ "import": "./dist/flow-mindmap.js",
41
+ "require": "./dist/flow-mindmap.umd.cjs"
42
+ },
43
+ "./style.css": "./dist/style.css"
44
+ },
45
+ "scripts": {
46
+ "pull": "git pull",
47
+ "dev": "vite --port 7851 --strictPort",
48
+ "build:types": "vue-tsc -p tsconfig.build.json",
49
+ "build:lib": "vite build --mode lib",
50
+ "build": "pnpm build:types && pnpm build:lib",
51
+ "preview": "vite preview --port 7852",
52
+ "typecheck": "vue-tsc --noEmit",
53
+ "lint": "eslint . --ext .vue,.ts,.js --max-warnings 0",
54
+ "test": "vitest run",
55
+ "test:watch": "vitest",
56
+ "screenshots": "node scripts/screenshots.mjs"
57
+ },
58
+ "peerDependencies": {
59
+ "vue": "^3.4.0"
60
+ },
61
+ "devDependencies": {
62
+ "@types/dompurify": "^3.2.0",
63
+ "@types/node": "^25.9.1",
64
+ "@vitejs/plugin-vue": "^5.1.4",
65
+ "@vue/test-utils": "^2.4.11",
66
+ "happy-dom": "^20.10.1",
67
+ "playwright": "^1.60.0",
68
+ "typescript": "^5.6.3",
69
+ "vite": "^5.4.10",
70
+ "vitest": "3.2.4",
71
+ "vue": "^3.5.12",
72
+ "vue-tsc": "^2.1.10"
73
+ },
74
+ "dependencies": {
75
+ "dompurify": "^3.4.8",
76
+ "highlight.js": "^11.11.1",
77
+ "marked": "^18.0.5"
78
+ }
79
+ }