zen-gitsync 2.15.17 → 2.15.19
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/package.json +1 -1
- package/src/ui/public/assets/{AppVersionBadge-D7lc84-s.js → AppVersionBadge-CxeEOSRT.js} +1 -1
- package/src/ui/public/assets/{BranchSelector-C9KFQjlr.js → BranchSelector-DgcFYwD5.js} +1 -1
- package/src/ui/public/assets/{CommitForm-CpluIRLD.js → CommitForm-B8iWAifK.js} +1 -1
- package/src/ui/public/assets/{ConsoleView-BZHq431m.js → ConsoleView-BlZaB7Bp.js} +2 -2
- package/src/ui/public/assets/CustomCommandManager-Cj57Nx93.js +1 -0
- package/src/ui/public/assets/{EditorView-BsYRS0-d.js → EditorView-CVlz-OsA.js} +0 -0
- package/src/ui/public/assets/{FlowOrchestrationWorkspace-Biglsm7_.js → FlowOrchestrationWorkspace-DB3EF2e8.js} +1 -1
- package/src/ui/public/assets/{LogList-DlQnAfZ6.js → LogList-a5RUDcQW.js} +1 -1
- package/src/ui/public/assets/{MindmapView-C0WyMZlT.js → MindmapView-Bzws0_t0.js} +1 -1
- package/src/ui/public/assets/{ProjectStartupButton-CFqCxiCx.js → ProjectStartupButton-DY_U_Zjz.js} +1 -1
- package/src/ui/public/assets/{RemoteRepoCard-1KFHkuqA.js → RemoteRepoCard-D1BtiJHd.js} +1 -1
- package/src/ui/public/assets/{SourceMapView-CRHRjL7J.js → SourceMapView-C2NDzdvi.js} +1 -1
- package/src/ui/public/assets/{TemplateManager-BW1VREFA.js → TemplateManager-BwhePWvK.js} +1 -1
- package/src/ui/public/assets/{WorkbenchView-CLXTGHOB.js → WorkbenchView-DTkolaDw.js} +1 -1
- package/src/ui/public/assets/{flow-mindmap-lEs0eQxt.js → flow-mindmap-CvtIdMQu.js} +6 -6
- package/src/ui/public/assets/flow-mindmap-YMeIdOjc.css +1 -0
- package/src/ui/public/assets/{index-CqFM8vcl.js → index-DsWhwk3L.js} +2 -2
- package/src/ui/public/index.html +1 -1
- package/src/ui/public/assets/CustomCommandManager-DpkgJKjw.js +0 -1
- package/src/ui/public/assets/flow-mindmap-OsLB3vA9.css +0 -1
|
@@ -11,8 +11,8 @@ import{Cn as e,Fn as t,Hn as n,Jn as r,Ln as i,Mn as a,Sn as o,Tn as s,Un as c,V
|
|
|
11
11
|
`)[0]?.slice(0,80)||`(空代码块)`,raw:s.join(`
|
|
12
12
|
`),lang:o});continue}let u=e.match(i);if(u){n.push({kind:`heading`,level:u[1].length,text:u[2].trim(),raw:e}),r++;continue}if(/^\s*\|/.test(e)){let e=[],i=r,a=!1;for(;i<t.length&&/^\s*\|/.test(t[i]);)e.push(t[i]),o.test(t[i])&&(a=!0),i++;if(a&&e.length>=2){n.push({kind:`table`,text:e[0].replace(/^\s*\|/,``).replace(/\|\s*$/,``).split(`|`)[0]?.trim()||`表格`,raw:e.join(`
|
|
13
13
|
`)}),r=i;continue}}let d=e.match(s),f=e.match(c);if(d||f){let e=r;for(;e<t.length;){let r=t[e].match(s),i=t[e].match(c);if(!(r||i))break;let a=t[e].replace(/^\s*[-*+]\s+/,``).replace(/^\s*\d+\.\s+/,``).trim();a.length>0&&n.push({kind:`list`,text:a.slice(0,80)||`(列表项)`,raw:t[e]}),e++}r=e;continue}if(e.trim()===``){r++;continue}let p=[e],m=r+1;for(;m<t.length;){let e=t[m];if(e.trim()===``||i.test(e)||a.test(e)||s.test(e)||c.test(e)||/^\s*\|/.test(e))break;p.push(e),m++}let h=p.join(` `).trim();n.push({kind:`paragraph`,text:h.slice(0,80)||`(空段落)`,raw:p.join(`
|
|
14
|
-
`)}),r=m}return n}function et(e,t=`导入的导图`){let n=$e(e||``),r={id:Re(),text:t,children:[]},i=[r],a=[0],o=!1;function s(e){if(e.kind===`heading`){let t=e.level;for(;i.length>1&&a[a.length-1]>=t;)i.pop(),a.pop();if(!o&&t===1){o=!0,r.text=e.text,a[0]=1;return}let n={id:Re(),text:e.text,children:[]};i[i.length-1].children.push(n),i.push(n),a.push(t);return}let t={id:Re(),text:e.text,children:[],richContent:{kind:e.kind,raw:e.raw,lang:e.lang}};i[i.length-1].children.push(t)}for(let e of n)s(e);return r}function tt(e){let t=e.minScale??.2,n=e.maxScale??1/0,r=e.step??1.2,i=T(1),a=T(0),o=T(0),s=T(!1),c=T(!1),l=m({x:0,y:0,ox:0,oy:0}),u=T(!1),d=m({x:0,y:0}),f=m({x:0,y:0,width:0,height:0}),p=T(0),h=null;function g(e){h=e}function _(r){r.preventDefault();let s=e.getContainer();if(!s)return;let c=-r.deltaY*.001,l=Math.min(n,Math.max(t,i.value*(1+c))),u=s.getBoundingClientRect(),d=r.clientX-u.left,f=r.clientY-u.top,p=(d-a.value)/i.value,m=(f-o.value)/i.value;i.value=l,a.value=d-p*l,o.value=f-m*l}function v(){i.value=Math.min(n,i.value*r)}function y(){i.value=Math.max(t,i.value/r)}function b(e){var t;e.target.closest(`.zm-node, .zm-toolbar, button, input, textarea`)||(s.value=!0,c.value=!1,l.x=e.clientX,l.y=e.clientY,l.ox=a.value,l.oy=o.value,window.addEventListener(`mousemove`,x),window.addEventListener(`mouseup`,S),(t=e.preventDefault)==null||t.call(e))}function x(e){if(!s.value)return;let t=e.clientX-l.x,n=e.clientY-l.y;(Math.abs(t)>3||Math.abs(n)>3)&&(c.value=!0),a.value=l.ox+t,o.value=l.oy+n}function S(){s.value=!1,window.removeEventListener(`mousemove`,x),window.removeEventListener(`mouseup`,S)}function C(e,t,n){u.value=!0,d.x=e,d.y=t,f.x=e,f.y=t,f.width=0,f.height=0,f.shiftKey=!!(n!=null&&n.shift),p.value++,window.addEventListener(`mousemove`,D),window.addEventListener(`mouseup`,E)}function w(e,t){if(!u.value)return;let n=Math.min(d.x,e),r=Math.min(d.y,t),i=Math.max(d.x,e),a=Math.max(d.y,t);f.x=n,f.y=r,f.width=i-n,f.height=a-r,p.value++}function E(){u.value=!1,window.removeEventListener(`mousemove`,D),window.removeEventListener(`mouseup`,E),h&&h()}function D(t){if(!u.value)return;let n=e.getContainer();if(!n)return;let r=n.getBoundingClientRect();w((t.clientX-r.left-a.value)/i.value,(t.clientY-r.top-o.value)/i.value)}function O(t,n,r,s=60){let c=e.getContainer();if(!c)return;let l=c.getBoundingClientRect(),u=(l.width-s*2)/t,d=(l.height-s*2)/n,f=Math.min(1,Math.max(.3,Math.min(u,d)));i.value=f,a.value=l.width/2,o.value=l.height/2-r*f}function k(t,r,s,c,l=80){let u=e.getContainer();if(!u)return;let d=u.getBoundingClientRect(),f=i.value;(s*f<40||c*f<40)&&(f=Math.min(n,Math.max(1,60/Math.min(s,c)))),i.value=f,a.value=d.width/2-t*f,o.value=d.height/2-r*f}return{scale:i,offsetX:a,offsetY:o,isPanning:s,panMoved:c,onWheel:_,zoomIn:v,zoomOut:y,startPan:b,startMarquee:C,updateMarquee:w,isMarquee:u,marquee:f,marqueeVersion:p,setOnMarqueeEnd:g,resetView:O,centerOn:k}}var nt=typeof navigator<`u`&&/Mac|iPhone|iPad/.test(navigator.platform);function rt(e){return nt?e.metaKey:e.ctrlKey}function it(e){function n(){let t=e.getSelectedId();if(t)return t;if(e.defaultTargetId)return e.defaultTargetId();let n=e.getSelectedIds();return n.length>0?n[0]:null}function r(t){let r=t.target;if(r&&(r.tagName===`INPUT`||r.tagName===`TEXTAREA`||r.isContentEditable)||e.isReadonly()||e.isEditing())return;let i=e.getSelectedId(),a=n();if(a){if(rt(t)&&!t.shiftKey){if(t.key===`d`||t.key===`D`){let n=e.defaultTargetId?.call(e);i&&i!==n&&(t.preventDefault(),e.onDuplicate(i));return}if(t.key===`c`||t.key===`C`){let n=e.getSelectedIds();n.length>0&&(t.preventDefault(),e.onCopy(n));return}if(t.key===`x`||t.key===`X`){let n=e.getSelectedIds();n.length>0&&(t.preventDefault(),e.onCut(n));return}if(t.key===`v`||t.key===`V`){if(!e.hasClipboard())return;t.preventDefault();let n=e.getSelectedIds();e.onPaste(n.length>0?n[0]:null);return}if(t.key===`z`||t.key===`Z`){t.preventDefault(),e.onUndo();return}if(t.key===`y`||t.key===`Y`){t.preventDefault(),e.onRedo();return}if(t.key===`Home`){t.preventDefault(),e.onSelectRoot();return}}if(rt(t)&&t.shiftKey&&(t.key===`Z`||t.key===`z`)){t.preventDefault(),e.onRedo();return}if(t.key===`Tab`)t.preventDefault(),e.onAddChild(a);else if(t.key===`Enter`)if(t.preventDefault(),t.shiftKey){let t=e.defaultTargetId?.call(e);i&&i!==t&&e.onAddSiblingBefore(i)}else e.onAddSibling(a);else(t.key===`Delete`||t.key===`Backspace`)&&i&&i!==e.defaultTargetId?.call(e)?(t.preventDefault(),e.onRemove(i)):t.key===`F2`&&i?(t.preventDefault(),e.onStartEdit(i)):t.key===`Escape`?(t.preventDefault(),e.onClearSelection()):t.key===`ArrowDown`?(t.preventDefault(),e.onNavigate(0,1)):t.key===`ArrowUp`?(t.preventDefault(),e.onNavigate(0,-1)):t.key===`ArrowRight`?(t.preventDefault(),e.onNavigate(1,0)):t.key===`ArrowLeft`&&(t.preventDefault(),e.onNavigate(-1,0))}}i(()=>{window.addEventListener(`keydown`,r)}),t(()=>{window.removeEventListener(`keydown`,r)})}function at(e=100){let t=T([]),n=-1;function r(){return n>0}function i(){return n<t.value.length-1}function a(r){let i=JSON.stringify(r);for(n<t.value.length-1&&(t.value=t.value.slice(0,n+1)),t.value.push(i),n=t.value.length-1;t.value.length>e;)t.value.shift(),n--}function o(){return r()?(n--,JSON.parse(t.value[n])):null}function s(){return i()?(n++,JSON.parse(t.value[n])):null}function c(){t.value=[],n=-1}return{canUndo:r,canRedo:i,record:a,undo:o,redo:s,reset:c}}var ot={1:`#ef4444`,2:`#f97316`,3:`#f59e0b`,4:`#eab308`,5:`#84cc16`,6:`#22c55e`,7:`#14b8a6`,8:`#3b82f6`,9:`#6366f1`},st={label:`优先级`,markers:Array.from({length:9},(e,t)=>{let n=t+1,r=ot[n];return{id:`priority-${n}`,label:`优先级 ${n}`,svg:`<circle cx="12" cy="12" r="10" fill="${r}"/><text x="12" y="16" text-anchor="middle" font-size="12" font-weight="700" fill="#fff" font-family="sans-serif">${n}</text>`}})};function ct(e){if(e===0)return`<circle cx="12" cy="12" r="10" fill="none" stroke="#94a3b8" stroke-width="2"/>`;if(e===100)return`<circle cx="12" cy="12" r="10" fill="#22c55e"/>`;let t=e/100*2*Math.PI,n=12+10*Math.sin(t),r=12-10*Math.cos(t);return`<circle cx="12" cy="12" r="10" fill="none" stroke="#e2e8f0" stroke-width="2"/><path d="M 12 12 L 12 2 A 10 10 0 ${+(e>50)} 1 ${n.toFixed(2)} ${r.toFixed(2)} Z" fill="#3b82f6"/><circle cx="12" cy="12" r="10" fill="none" stroke="#cbd5e1" stroke-width="1"/>`}var lt=[st,{label:`进度`,markers:[0,25,50,75,100].map(e=>({id:`progress-${e}`,label:`进度 ${e}%`,svg:ct(e)}))},{label:`旗帜`,markers:[{id:`flag-red`,label:`红旗`,color:`#ef4444`},{id:`flag-orange`,label:`橙旗`,color:`#f97316`},{id:`flag-yellow`,label:`黄旗`,color:`#eab308`},{id:`flag-green`,label:`绿旗`,color:`#22c55e`},{id:`flag-blue`,label:`蓝旗`,color:`#3b82f6`},{id:`flag-gray`,label:`灰旗`,color:`#94a3b8`}].map(e=>({id:e.id,label:e.label,svg:`<path d="M6 3 V21" stroke="#475569" stroke-width="2" stroke-linecap="round"/><path d="M6 4 H18 L15 7 L18 10 H6 Z" fill="${e.color}" stroke="${e.color}" stroke-width="1" stroke-linejoin="round"/>`}))},{label:`星标`,markers:[{id:`star`,label:`星标`,svg:`<path d="M12 2 L14.5 8.5 L21 9 L16 13.5 L17.5 20 L12 16.5 L6.5 20 L8 13.5 L3 9 L9.5 8.5 Z" fill="#f59e0b" stroke="#f59e0b" stroke-width="1" stroke-linejoin="round"/>`},{id:`star-half`,label:`半星`,svg:`<path d="M12 2 L14.5 8.5 L21 9 L16 13.5 L17.5 20 L12 16.5 L6.5 20 L8 13.5 L3 9 L9.5 8.5 Z" fill="#e2e8f0" stroke="#f59e0b" stroke-width="1.5" stroke-linejoin="round"/><path d="M12 2 L12 16.5 L6.5 20 L8 13.5 L3 9 L9.5 8.5 Z" fill="#f59e0b" stroke="none"/>`}]},{label:`其他`,markers:[{id:`smile`,label:`微笑`,svg:`<circle cx="12" cy="12" r="10" fill="#fef3c7" stroke="#f59e0b" stroke-width="1.5"/><circle cx="9" cy="10" r="1.2" fill="#92400e"/><circle cx="15" cy="10" r="1.2" fill="#92400e"/><path d="M8 14 Q12 17 16 14" stroke="#92400e" stroke-width="1.5" fill="none" stroke-linecap="round"/>`},{id:`people`,label:`人员`,svg:`<circle cx="9" cy="8" r="2.5" fill="#3b82f6"/><circle cx="16" cy="8" r="2.5" fill="#3b82f6"/><path d="M4 19 C4 15 6 13 9 13 C12 13 14 15 14 19" fill="#3b82f6"/><path d="M14 19 C14 15.5 15.5 13.5 17.5 13.5 C19.5 13.5 21 15.5 21 19" fill="#3b82f6"/>`},{id:`arrow-up`,label:`上箭头`,svg:`<circle cx="12" cy="12" r="10" fill="#dbeafe" stroke="#3b82f6" stroke-width="1.5"/><path d="M12 17 V7 M8 11 L12 7 L16 11" stroke="#3b82f6" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/>`},{id:`arrow-down`,label:`下箭头`,svg:`<circle cx="12" cy="12" r="10" fill="#dbeafe" stroke="#3b82f6" stroke-width="1.5"/><path d="M12 7 V17 M8 13 L12 17 L16 13" stroke="#3b82f6" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/>`},{id:`arrow-right`,label:`右箭头`,svg:`<circle cx="12" cy="12" r="10" fill="#dbeafe" stroke="#3b82f6" stroke-width="1.5"/><path d="M7 12 H17 M13 8 L17 12 L13 16" stroke="#3b82f6" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/>`},{id:`arrow-left`,label:`左箭头`,svg:`<circle cx="12" cy="12" r="10" fill="#dbeafe" stroke="#3b82f6" stroke-width="1.5"/><path d="M17 12 H7 M11 8 L7 12 L11 16" stroke="#3b82f6" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/>`}]}],ut={};for(let e of lt)for(let t of e.markers)ut[t.id]=t;function dt(e){return ut[e]?.svg??``}function ft(e){return ut[e]?.label??e}function pt(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;let n=Math.abs(t)%360;return{background:`hsl(${n}, 85%, 92%)`,borderColor:`hsl(${n}, 60%, 70%)`,color:`hsl(${n}, 55%, 30%)`}}var mt={key:5,class:`zm-marker-picker`},ht={class:`zm-marker-group-label`},gt={class:`zm-marker-grid`},_t=[`title`,`onClick`,`innerHTML`],vt=s({__name:`NodeContextMenu`,props:{x:{},y:{},container:{},hasImage:{type:Boolean,default:!1},hasLink:{type:Boolean,default:!1},hasNote:{type:Boolean,default:!1},hasCode:{type:Boolean,default:!1},hasTable:{type:Boolean,default:!1},nodeMarkers:{default:()=>[]},nodeTags:{default:()=>[]}},emits:[`pickImage`,`setLink`,`removeLink`,`editNote`,`removeNote`,`removeImage`,`addCode`,`editCode`,`removeCode`,`addTable`,`editTable`,`removeTable`,`toggleMarker`,`clearMarkers`,`addTag`,`removeTags`,`close`],setup(n,{emit:r}){let i=n,a=r,o=b(()=>{let e=i.x+2,t=i.y+2;if(i.container){let n=i.container.getBoundingClientRect(),r=4+(3+ +!!i.hasImage+ +!!i.hasLink+ +!!i.hasNote+1+ +!!i.hasCode+1+ +!!i.hasTable)*28;e+180>n.right&&(e=Math.max(n.left+4,i.x-180-2)),t+r>n.bottom&&(t=Math.max(n.top+4,i.y-r-2)),e<n.left+2&&(e=n.left+2),t<n.top+2&&(t=n.top+2)}return{left:e,top:t}}),s=b(()=>i.hasImage),c=b(()=>i.hasLink),u=b(()=>i.hasNote),d=b(()=>i.nodeMarkers.length>0),m=b(()=>i.nodeTags.length>0),h=T(!1);function g(){h.value=!h.value}function S(e){return i.nodeMarkers.includes(e)}function w(e){a(`toggleMarker`,e)}function E(e){let t=e.target;t&&t.closest(`.zm-node-menu`)||a(`close`)}function k(e){e.key===`Escape`&&a(`close`)}function j(){a(`close`)}window.addEventListener(`mousedown`,E,!0),window.addEventListener(`keydown`,k,!0),window.addEventListener(`wheel`,j,!0),window.addEventListener(`scroll`,j,!0),t(()=>{window.removeEventListener(`mousedown`,E,!0),window.removeEventListener(`keydown`,k,!0),window.removeEventListener(`wheel`,j,!0),window.removeEventListener(`scroll`,j,!0)});function M(e){e(),a(`close`)}return(t,r)=>(A(),O(`div`,{class:`zm-node-menu`,style:_({left:o.value.left+`px`,top:o.value.top+`px`}),onContextmenu:r[13]||=y(()=>{},[`prevent`])},[v(`button`,{class:`zm-node-menu-item`,onClick:r[0]||=y(e=>M(()=>a(`pickImage`)),[`stop`])},[e(I,{name:`image`,size:13}),v(`span`,null,p(s.value?`替换图片`:`添加图片`),1)]),s.value?(A(),O(`button`,{key:0,class:`zm-node-menu-item`,onClick:r[1]||=y(e=>M(()=>a(`removeImage`)),[`stop`])},[e(I,{name:`x`,size:13}),r[14]||=v(`span`,null,`移除图片`,-1)])):f(``,!0),v(`button`,{class:`zm-node-menu-item`,onClick:r[2]||=y(e=>M(()=>a(`setLink`)),[`stop`])},[e(I,{name:`link`,size:13}),v(`span`,null,p(c.value?`编辑链接`:`添加链接`),1)]),c.value?(A(),O(`button`,{key:1,class:`zm-node-menu-item`,onClick:r[3]||=y(e=>M(()=>a(`removeLink`)),[`stop`])},[e(I,{name:`x`,size:13}),r[15]||=v(`span`,null,`移除链接`,-1)])):f(``,!0),v(`button`,{class:`zm-node-menu-item`,onClick:r[4]||=y(e=>M(()=>a(`addCode`)),[`stop`])},[r[16]||=v(`span`,{class:`zm-node-menu-icon zm-node-menu-icon-code`,"aria-hidden":`true`},`{ }`,-1),v(`span`,null,p(n.hasCode?`编辑代码块`:`添加代码块`),1)]),n.hasCode?(A(),O(`button`,{key:2,class:`zm-node-menu-item`,onClick:r[5]||=y(e=>M(()=>a(`removeCode`)),[`stop`])},[e(I,{name:`x`,size:13}),r[17]||=v(`span`,null,`移除代码块`,-1)])):f(``,!0),v(`button`,{class:`zm-node-menu-item`,onClick:r[6]||=y(e=>M(()=>a(`addTable`)),[`stop`])},[r[18]||=v(`span`,{class:`zm-node-menu-icon zm-node-menu-icon-table`,"aria-hidden":`true`},`▦`,-1),v(`span`,null,p(n.hasTable?`编辑表格`:`添加表格`),1)]),n.hasTable?(A(),O(`button`,{key:3,class:`zm-node-menu-item`,onClick:r[7]||=y(e=>M(()=>a(`removeTable`)),[`stop`])},[e(I,{name:`x`,size:13}),r[19]||=v(`span`,null,`移除表格`,-1)])):f(``,!0),v(`button`,{class:`zm-node-menu-item`,onClick:r[8]||=y(e=>M(()=>a(`editNote`)),[`stop`])},[e(I,{name:`note`,size:13}),v(`span`,null,p(u.value?`编辑笔记`:`添加笔记`),1)]),u.value?(A(),O(`button`,{key:4,class:`zm-node-menu-item`,onClick:r[9]||=y(e=>M(()=>a(`removeNote`)),[`stop`])},[e(I,{name:`x`,size:13}),r[20]||=v(`span`,null,`移除笔记`,-1)])):f(``,!0),r[25]||=v(`div`,{class:`zm-node-menu-divider`},null,-1),v(`button`,{class:`zm-node-menu-item`,onClick:y(g,[`stop`])},[r[21]||=v(`span`,{class:`zm-node-menu-icon`,"aria-hidden":`true`},`⚑`,-1),r[22]||=v(`span`,null,`标记图标`,-1),v(`span`,{class:x([`zm-node-menu-arrow`,{"is-open":h.value}])},`›`,2)]),h.value?(A(),O(`div`,mt,[(A(!0),O(D,null,l(C(lt),e=>(A(),O(`div`,{key:e.label,class:`zm-marker-group`},[v(`div`,ht,p(e.label),1),v(`div`,gt,[(A(!0),O(D,null,l(e.markers,e=>(A(),O(`button`,{key:e.id,class:x([`zm-marker-cell`,{"is-active":S(e.id)}]),title:e.label,onClick:y(t=>w(e.id),[`stop`]),innerHTML:`<svg viewBox="0 0 24 24" width="20" height="20">`+C(dt)(e.id)+`</svg>`},null,10,_t))),128))])]))),128)),d.value?(A(),O(`button`,{key:0,class:`zm-marker-clear`,onClick:r[10]||=y(e=>a(`clearMarkers`),[`stop`])},` 清除所有标记 `)):f(``,!0)])):f(``,!0),v(`button`,{class:`zm-node-menu-item`,onClick:r[11]||=y(e=>M(()=>a(`addTag`)),[`stop`])},[r[23]||=v(`span`,{class:`zm-node-menu-icon`,"aria-hidden":`true`},`#`,-1),v(`span`,null,p(m.value?`编辑标签`:`添加标签`),1)]),m.value?(A(),O(`button`,{key:6,class:`zm-node-menu-item`,onClick:r[12]||=y(e=>M(()=>a(`removeTags`)),[`stop`])},[e(I,{name:`x`,size:13}),r[24]||=v(`span`,null,`移除标签`,-1)])):f(``,!0)],36))}}),yt=s({__name:`CanvasContextMenu`,props:{x:{},y:{},container:{}},emits:[`openSettings`,`openData`,`openImport`,`exportPng`,`exportSvg`,`close`],setup(n,{emit:r}){let i=n,a=r,o=b(()=>{let e=i.x+2,t=i.y+2;if(i.container){let n=i.container.getBoundingClientRect();e+160>n.right&&(e=Math.max(n.left+4,i.x-160-2)),t+121>n.bottom&&(t=Math.max(n.top+4,i.y-121-2)),e<n.left+2&&(e=n.left+2),t<n.top+2&&(t=n.top+2)}return{left:e,top:t}}),s=T(null),c=T(null),l=T(null),u=b(()=>{let e=s.value===`import`?c.value:s.value===`export`?l.value:null;if(!e)return{left:`-9999px`,top:`-9999px`,display:`none`};let t=e.getBoundingClientRect(),n=window.innerWidth,r=window.innerHeight,i=t.right;i+176>n-4&&(i=Math.max(4,t.left-176));let a=t.top-4;return a+88>r-4&&(a=Math.max(4,r-88-4)),{left:i+`px`,top:a+`px`,display:`block`}}),d=null,p=null;function m(e){p&&=(clearTimeout(p),null),d=setTimeout(()=>{s.value=e},60)}function h(){d&&=(clearTimeout(d),null),p=setTimeout(()=>{s.value=null},120)}t(()=>{d&&clearTimeout(d),p&&clearTimeout(p)});function g(e){let t=e.target;t&&t.closest(`.zm-canvas-menu`)||a(`close`)}function S(e){e.key===`Escape`&&a(`close`)}function C(){a(`close`)}window.addEventListener(`mousedown`,g,!0),window.addEventListener(`keydown`,S,!0),window.addEventListener(`wheel`,C,!0),window.addEventListener(`scroll`,C,!0),t(()=>{window.removeEventListener(`mousedown`,g,!0),window.removeEventListener(`keydown`,S,!0),window.removeEventListener(`wheel`,C,!0),window.removeEventListener(`scroll`,C,!0)});function w(e){e(),a(`close`)}return(t,n)=>(A(),O(`div`,{class:`zm-canvas-menu`,style:_({left:o.value.left+`px`,top:o.value.top+`px`}),onContextmenu:n[11]||=y(()=>{},[`prevent`])},[v(`button`,{class:`zm-canvas-menu-item`,onClick:n[0]||=y(e=>w(()=>a(`openData`)),[`stop`])},[e(I,{name:`database`,size:13,stroke:1.6}),n[12]||=v(`span`,null,`查看数据`,-1)]),v(`div`,{ref_key:`importItemRef`,ref:c,class:x([`zm-canvas-menu-item zm-canvas-menu-item-has-submenu`,{"is-open":s.value===`import`}]),onMouseenter:n[5]||=e=>m(`import`),onMouseleave:h},[e(I,{name:`import`,size:13,stroke:1.6}),n[16]||=v(`span`,null,`导入`,-1),n[17]||=v(`svg`,{class:`zm-canvas-menu-caret`,width:`8`,height:`8`,viewBox:`0 0 8 8`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.4`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[v(`polyline`,{points:`2.5 1.8 5.2 4 2.5 6.2`})],-1),s.value===`import`?(A(),O(`div`,{key:0,class:`zm-canvas-submenu`,style:_(u.value),onMouseenter:n[4]||=e=>m(`import`),onMouseleave:h},[v(`button`,{class:`zm-canvas-menu-item`,onClick:n[1]||=y(e=>w(()=>a(`openImport`,`markdown`)),[`stop`])},[e(I,{name:`markdown`,size:13,stroke:1.6}),n[13]||=v(`span`,null,`Markdown 导入`,-1)]),v(`button`,{class:`zm-canvas-menu-item`,onClick:n[2]||=y(e=>w(()=>a(`openImport`,`json`)),[`stop`])},[e(I,{name:`json`,size:13,stroke:1.6}),n[14]||=v(`span`,null,`JSON 文件导入`,-1)]),v(`button`,{class:`zm-canvas-menu-item`,onClick:n[3]||=y(e=>w(()=>a(`openImport`,`txt`)),[`stop`])},[e(I,{name:`txt`,size:13,stroke:1.6}),n[15]||=v(`span`,null,`TXT 文件导入`,-1)])],36)):f(``,!0)],34),v(`button`,{class:`zm-canvas-menu-item`,onClick:n[6]||=y(e=>w(()=>a(`openSettings`)),[`stop`])},[e(I,{name:`settings`,size:13,stroke:1.6}),n[18]||=v(`span`,null,`设置`,-1)]),n[23]||=v(`div`,{class:`zm-canvas-menu-divider`},null,-1),v(`div`,{ref_key:`exportItemRef`,ref:l,class:x([`zm-canvas-menu-item zm-canvas-menu-item-has-submenu`,{"is-open":s.value===`export`}]),onMouseenter:n[10]||=e=>m(`export`),onMouseleave:h},[e(I,{name:`export`,size:13,stroke:1.6}),n[21]||=v(`span`,null,`导出`,-1),n[22]||=v(`svg`,{class:`zm-canvas-menu-caret`,width:`8`,height:`8`,viewBox:`0 0 8 8`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.4`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[v(`polyline`,{points:`2.5 1.8 5.2 4 2.5 6.2`})],-1),s.value===`export`?(A(),O(`div`,{key:0,class:`zm-canvas-submenu`,style:_(u.value),onMouseenter:n[9]||=e=>m(`export`),onMouseleave:h},[v(`button`,{class:`zm-canvas-menu-item`,onClick:n[7]||=y(e=>w(()=>a(`exportPng`)),[`stop`])},[e(I,{name:`image`,size:13,stroke:1.6}),n[19]||=v(`span`,null,`导出 PNG`,-1)]),v(`button`,{class:`zm-canvas-menu-item`,onClick:n[8]||=y(e=>w(()=>a(`exportSvg`)),[`stop`])},[e(I,{name:`svg-export`,size:13,stroke:1.6}),n[20]||=v(`span`,null,`导出 SVG`,-1)])],36)):f(``,!0)],34)],36))}}),bt=[`aria-hidden`],xt=[`aria-hidden`],St={key:0,class:`zm-drawer-header`},Ct={key:0,class:`zm-drawer-title`},wt={class:`zm-drawer-body`},Tt=[`aria-hidden`],Et={key:0,class:`zm-drawer-header`},Dt={key:0,class:`zm-drawer-title`},Ot={class:`zm-drawer-body`},kt=s({__name:`Drawer`,props:{side:{default:`left`},width:{default:320},open:{type:Boolean,default:!0},title:{default:``},scope:{default:`page`},closable:{type:Boolean,default:!0},closeOnBackdrop:{type:Boolean,default:!0}},emits:[`update:open`],setup(t,{emit:r}){let i=r;function a(){i(`update:open`,!1)}function o(){i(`update:open`,!1)}return(r,i)=>t.scope===`canvas`?(A(),O(D,{key:0},[e(E,{name:`zm-fade`},{default:u(()=>[t.open?(A(),O(`div`,{key:0,class:`zm-drawer-canvas-backdrop`,"aria-hidden":!t.open,onClick:i[0]||=e=>t.closeOnBackdrop&&o()},null,8,bt)):f(``,!0)]),_:1}),e(E,{name:t.side===`left`?`zm-slide-left`:`zm-slide-right`},{default:u(()=>[t.open?(A(),O(`aside`,{key:0,class:x([`zm-drawer zm-drawer--canvas`,[`zm-drawer--`+t.side]]),style:_({width:t.width+`px`}),"aria-hidden":!t.open},[t.title||r.$slots.header?(A(),O(`div`,St,[t.title?(A(),O(`h3`,Ct,p(t.title),1)):f(``,!0),n(r.$slots,`header`),t.closable?(A(),O(`button`,{key:1,class:`zm-drawer-close`,title:`关闭`,onClick:a},[...i[1]||=[v(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`},[v(`path`,{d:`M6 6 L18 18 M18 6 L6 18`})],-1)]])):f(``,!0)])):f(``,!0),v(`div`,wt,[n(r.$slots,`default`)])],14,xt)):f(``,!0)]),_:3},8,[`name`])],64)):(A(),g(E,{key:1,name:`zm-drawer`},{default:u(()=>[t.open?(A(),O(`aside`,{key:0,class:x([`zm-drawer`,[`zm-drawer--`+t.side,{"is-open":t.open}]]),style:_({width:t.width+`px`}),"aria-hidden":!t.open},[t.title||r.$slots.header?(A(),O(`div`,Et,[t.title?(A(),O(`h3`,Dt,p(t.title),1)):f(``,!0),n(r.$slots,`header`),t.closable?(A(),O(`button`,{key:1,class:`zm-drawer-close`,title:`关闭`,onClick:a},[...i[2]||=[v(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`},[v(`path`,{d:`M6 6 L18 18 M18 6 L6 18`})],-1)]])):f(``,!0)])):f(``,!0),v(`div`,Ot,[n(r.$slots,`default`)])],14,Tt)):f(``,!0)]),_:3}))}}),At={class:`zm-outline-root`},jt={class:`zm-outline-search`},Mt={key:0,class:`zm-outline-search-count`},Nt={key:1,class:`zm-outline-search-count zm-outline-search-empty`},Pt={class:`zm-outline-actions`},Ft={width:`11`,height:`11`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},It={key:0,x:`9`,y:`9`,width:`13`,height:`13`,rx:`2`},Lt={key:1,d:`M5 12 L10 17 L19 7`},Rt={class:`zm-outline`},zt=[`data-outline-id`,`onClick`,`onDblclick`,`onDragstart`,`onDragover`,`onDragleave`,`onDrop`],Bt=[`title`,`onClick`],Vt={width:`10`,height:`10`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`3`,"stroke-linecap":`round`,"stroke-linejoin":`round`},Ht={key:0,points:`6 9 12 15 18 9`},Ut={key:1,points:`9 6 15 12 9 18`},Wt={key:1,class:`zm-outline-dot`},Gt={class:`zm-outline-index`},Kt={key:3,class:`zm-outline-text`},qt=[`onClick`],Jt=[`src`],Yt=[`onClick`],Xt=[`src`],Zt=[`title`,`onClick`],Qt={width:`11`,height:`11`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},$t={key:0,x:`9`,y:`9`,width:`13`,height:`13`,rx:`2`},en={key:1,d:`M5 12 L10 17 L19 7`},tn=s({__name:`Outline`,props:{data:{},selectedId:{default:null},collapsedIds:{default:()=>new Set},readonly:{type:Boolean,default:!1}},emits:[`select`,`toggleCollapse`,`edit`,`addChild`,`addSibling`,`move`],setup(e,{emit:n}){let r=e,o=n,s=T(``),c=T(null),u=T(-1),m=b(()=>{let e=s.value.trim().toLowerCase();if(!e)return new Set;let t=new Set,n=r=>{var i;(r.text.toLowerCase().includes(e)||(i=r.note)!=null&&i.text&&r.note.text.toLowerCase().includes(e))&&t.add(r.id);for(let e of r.children)n(e)};return n(r.data),t}),h=b(()=>{if(m.value.size===0)return new Set;let e=new Set,t=n=>{let r=m.value.has(n.id);for(let e of n.children)t(e)&&(r=!0);return r&&e.add(n.id),r};return t(r.data),e}),g=b(()=>{let e=[],t=n=>{m.value.has(n.id)&&e.push(n.id);for(let e of n.children)t(e)};return t(r.data),e}),w=b(()=>s.value.trim().length>0),E=b(()=>{let e=[],t=h.value,n=(i,a,o)=>{if(w.value&&!t.has(i.id))return;let s=i.children.length>0,c=w.value?!1:r.collapsedIds.has(i.id);e.push({id:i.id,text:i.text||`(无标题)`,depth:a,siblingIndex:o,hasChildren:s,collapsed:c,node:i}),s&&!c&&i.children.forEach((e,t)=>n(e,a+1,t))};return n(r.data,0,0),e});function k(){u.value=g.value.length>0?0:-1}function j(){let e=g.value;e.length!==0&&(u.value=(u.value+1)%e.length,P(u.value))}function M(){let e=g.value;e.length!==0&&(u.value=(u.value-1+e.length)%e.length,P(u.value))}function N(e){e.key===`Enter`?(e.preventDefault(),e.shiftKey?M():j()):e.key===`Escape`&&(e.preventDefault(),s.value=``,u.value=-1)}function P(e){let t=g.value[e];if(!t)return;let n=E.value.find(e=>e.id===t);n&&o(`select`,n.node),a(()=>{document.querySelector(`[data-outline-id="${t}"]`)?.scrollIntoView({block:`nearest`,behavior:`smooth`})})}function ee(){s.value=``,u.value=-1}i(()=>{a(()=>c.value?.focus())});let F=T(null),I=T(``),re=null;function L(e){r.readonly||(F.value=e.id,I.value=e.text,a(()=>{re=document.querySelector(`.zm-outline-input`),re?.focus(),re?.select()}))}function ie(){F.value!=null&&(o(`edit`,{id:F.value,text:I.value.trim()||`(无标题)`}),R())}function R(){F.value=null,I.value=``,re=null}function ae(e){e.key===`Enter`?(e.preventDefault(),ie()):e.key===`Escape`&&(e.preventDefault(),R())}t(R);let z=T(null),B=T(null),oe=T(null);function V(e,t){if(r.readonly){e.preventDefault();return}z.value={id:t.id,text:t.text},e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,t.id))}function se(){z.value=null,B.value=null,oe.value=null}function ce(e,t){if(!z.value)return;e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`move`);let n=de(e);B.value=t.id,oe.value=n}function le(e){B.value===e.id&&(B.value=null,oe.value=null)}function ue(e,t){e.preventDefault();let n=z.value;if(!n)return;let r=de(e);n.id!==t.id&&o(`move`,{srcId:n.id,targetId:t.id,position:r}),se()}function de(e,t){let n=e.currentTarget.getBoundingClientRect(),r=e.clientY-n.top,i=n.height;return r<i*.3?`before`:r>i*.7?`after`:`child`}let fe=T(null),H=null;async function pe(e){try{return await navigator.clipboard.writeText(e),!0}catch{let t=document.createElement(`textarea`);t.value=e,document.body.appendChild(t),t.select();let n=!1;try{n=document.execCommand(`copy`)}finally{document.body.removeChild(t)}return n}}async function me(e,t,n){e.stopPropagation(),await pe(t)&&(fe.value=n,H&&clearTimeout(H),H=setTimeout(()=>fe.value=null,1200))}let he=b(()=>{let e=[],t=(n,r)=>{let i=` `.repeat(r),a=r===0?``:`- `;e.push(i+a+(n.text||``));for(let e of n.children)t(e,r+1)};return t(r.data,0),e.join(`
|
|
15
|
-
`)}),ge=T(!1),_e=null;async function ve(){await pe(he.value)&&(ge.value=!0,_e&&clearTimeout(_e),_e=setTimeout(()=>ge.value=!1,1200))}return(t,n)=>(A(),O(`div`,At,[v(`div`,jt,[n[3]||=v(`svg`,{class:`zm-outline-search-icon`,width:`13`,height:`13`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[v(`circle`,{cx:`11`,cy:`11`,r:`7`}),v(`line`,{x1:`20`,y1:`20`,x2:`16`,y2:`16`})],-1),d(v(`input`,{ref_key:`searchInputRef`,ref:c,"onUpdate:modelValue":n[0]||=e=>s.value=e,type:`text`,class:`zm-outline-search-input`,placeholder:`搜索节点… (Enter 下一个, Shift+Enter 上一个)`,onInput:k,onKeydown:N},null,544),[[S,s.value]]),g.value.length>0?(A(),O(`span`,Mt,p(u.value+1)+`/`+p(g.value.length),1)):w.value?(A(),O(`span`,Nt,`无结果`)):f(``,!0),s.value?(A(),O(`button`,{key:2,class:`zm-outline-search-clear`,title:`清除搜索`,onClick:ee},`×`)):f(``,!0)]),v(`div`,Pt,[v(`button`,{class:x([`zm-outline-action-btn`,{"is-success":ge.value}]),title:`复制完整大纲为纯文本`,onClick:ve},[(A(),O(`svg`,Ft,[ge.value?(A(),O(`path`,Lt)):(A(),O(`rect`,It)),n[4]||=v(`path`,{d:`M5 15 H4 a2 2 0 0 1 -2 -2 V4 a2 2 0 0 1 2 -2 h9 a2 2 0 0 1 2 2 v1`},null,-1)])),v(`span`,null,p(ge.value?`已复制`:`复制大纲`),1)],2)]),v(`ul`,Rt,[(A(!0),O(D,null,l(E.value,t=>(A(),O(`li`,{key:t.id,"data-outline-id":t.id,class:x([`zm-outline-row`,{"is-selected":t.id===e.selectedId,"is-root":t.depth===0,"is-editing":F.value===t.id,"is-search-hit":m.value.has(t.id),"is-search-current":g.value[u.value]===t.id,"is-drag-over-before":B.value===t.id&&oe.value===`before`,"is-drag-over-after":B.value===t.id&&oe.value===`after`,"is-drag-over-child":B.value===t.id&&oe.value===`child`}]),style:_({paddingLeft:12+t.depth*16+`px`}),draggable:`true`,onClick:e=>o(`select`,t.node),onDblclick:e=>L(t),onDragstart:e=>V(e,t),onDragend:se,onDragover:e=>ce(e,t),onDragleave:()=>le(t),onDrop:e=>ue(e,t)},[t.hasChildren?(A(),O(`button`,{key:0,class:`zm-outline-toggle`,title:t.collapsed?`展开`:`折叠`,onClick:y(e=>o(`toggleCollapse`,t.id),[`stop`])},[(A(),O(`svg`,Vt,[t.collapsed?(A(),O(`polyline`,Ut)):(A(),O(`polyline`,Ht))]))],8,Bt)):(A(),O(`span`,Wt)),v(`span`,Gt,p(t.siblingIndex+1)+`.`,1),F.value===t.id?d((A(),O(`input`,{key:2,"onUpdate:modelValue":n[1]||=e=>I.value=e,class:`zm-outline-input`,onBlur:ie,onKeydown:ae,onClick:n[2]||=y(()=>{},[`stop`])},null,544)),[[S,I.value]]):(A(),O(`span`,Kt,p(t.text),1)),r.readonly?f(``,!0):(A(),O(`button`,{key:4,class:`zm-outline-row-action`,title:`添加同级`,onClick:y(e=>o(`addSibling`,t.id),[`stop`])},[v(`img`,{src:C(te),width:`14`,height:`14`,alt:`添加同级`,draggable:`false`},null,8,Jt)],8,qt)),r.readonly?f(``,!0):(A(),O(`button`,{key:5,class:`zm-outline-row-action`,title:`添加子节点`,onClick:y(e=>o(`addChild`,t.id),[`stop`])},[v(`img`,{src:C(ne),width:`14`,height:`14`,alt:`添加子节点`,draggable:`false`},null,8,Xt)],8,Yt)),v(`button`,{class:x([`zm-outline-row-copy`,{"is-success":fe.value===t.id}]),title:fe.value===t.id?`已复制`:`复制节点文本`,onClick:e=>me(e,t.text,t.id)},[(A(),O(`svg`,Qt,[fe.value===t.id?(A(),O(`path`,en)):(A(),O(`rect`,$t)),n[5]||=v(`path`,{d:`M5 15 H4 a2 2 0 0 1 -2 -2 V4 a2 2 0 0 1 2 -2 h9 a2 2 0 0 1 2 2 v1`},null,-1)]))],10,Zt)],46,zt))),128))])]))}}),nn={key:0,class:`zm-jtv-root`},rn={key:0,class:`zm-jtv-key`},an={key:1,class:`zm-jtv-colon`},on={key:2,class:`zm-jtv-key zm-jtv-bracket`},K={key:3,class:`zm-jtv-size`},q={key:4,class:`zm-jtv-bracket`},sn={key:5,class:`zm-jtv-brace`},cn={key:0,class:`zm-jtv-children`},ln={class:`zm-jtv-key`},J={key:0,class:`zm-jtv-key`},un=[`src`,`alt`],dn=[`href`],fn=s({__name:`JsonTreeViewer`,props:{value:{},keyName:{default:``},isRoot:{type:Boolean,default:!0},path:{default:``},depth:{default:0},query:{default:``},collapsedPaths:{default:()=>new Set}},setup(t){let n=t,r=b(()=>n.value===null?`null`:Array.isArray(n.value)?`array`:typeof n.value),i=b(()=>r.value===`object`),a=b(()=>r.value===`array`);b(()=>!i.value&&!a.value);let s=b(()=>{if(a.value)return`Array(${n.value.length})`;if(i.value){let e=n.value,t=Object.keys(e);return`Object(${t.length} ${t.length===1?`key`:`keys`})`}return``}),u=b(()=>a.value?n.value.map((e,t)=>({key:String(t),value:e})):i.value?Object.entries(n.value).map(([e,t])=>({key:e,value:t})):[]),m=b(()=>n.isRoot?`<root>`:n.path),h=b(()=>n.collapsedPaths.has(m.value));function g(e,t,r){e!==`<root>`&&(r<2||typeof t!=`object`||!t||n.collapsedPaths.has(e)||n.collapsedPaths.add(e))}n.isRoot||g(m.value,n.value,n.depth);function S(){h.value?n.collapsedPaths.delete(m.value):n.collapsedPaths.add(m.value)}function C(e){return m.value===``?e:`${m.value}.${e}`}function T(e){if(!n.query)return!0;let t=n.query.toLowerCase();return typeof e==`string`?e.toLowerCase().includes(t):e===null?`null`.includes(t):String(e).toLowerCase().includes(t)}function E(e){return n.query?e.toLowerCase().includes(n.query.toLowerCase()):!0}function k(e,t){return!n.query||E(e)?!0:typeof t!=`object`||!t?T(t):!0}function j(e){return e===null?`null`:typeof e==`string`?e.length>80?`"${e.slice(0,80)}..."`:`"${e}"`:typeof e==`boolean`?e?`true`:`false`:typeof e==`number`?String(e):typeof e>`u`?`undefined`:JSON.stringify(e)}function M(e){if(typeof e!=`string`)return!1;let t=e.trim();return!!(t.startsWith(`data:image/`)||/^https?:\/\/.+\.(png|jpe?g|gif|webp|svg|bmp|ico)(\?.*)?$/i.test(t)||/^https?:\/\/.+/i.test(t)&&/\/[^/]+\.(png|jpe?g|gif|webp|svg|bmp|ico)(\?.*)?$/i.test(t))}function N(e){if(!n.query)return null;let t=e.toLowerCase().indexOf(n.query.toLowerCase());return t<0?null:{before:e.slice(0,t),match:e.slice(t,t+n.query.length),after:e.slice(t+n.query.length)}}return(n,m)=>{let g=c(`JsonTreeViewer`,!0);return t.isRoot?(A(),O(`div`,nn,[(A(!0),O(D,null,l(u.value,n=>d((A(),O(`div`,{key:n.key,class:`zm-jtv-row`},[e(g,{"key-name":n.key,value:n.value,path:C(n.key),depth:t.depth+1,query:t.query,"collapsed-paths":t.collapsedPaths,"is-root":!1},null,8,[`key-name`,`value`,`path`,`depth`,`query`,`collapsed-paths`])])),[[w,k(n.key,n.value)]])),128))])):i.value||a.value?(A(),O(`div`,{key:1,class:x([`zm-jtv-branch`,{"is-collapsed":h.value}])},[v(`div`,{class:`zm-jtv-header`,style:_({paddingLeft:6+t.depth*12+`px`}),onClick:S},[v(`span`,{class:x([`zm-jtv-toggle`,{"is-leaf":!1}])},p(h.value?`▶`:`▼`),1),a.value?f(``,!0):(A(),O(`span`,rn,p(t.keyName),1)),a.value?f(``,!0):(A(),O(`span`,an,`:`)),a.value?(A(),O(`span`,on,`[`)):f(``,!0),h.value?(A(),O(`span`,K,p(s.value),1)):f(``,!0),h.value&&a.value?(A(),O(`span`,q,`]`)):f(``,!0),h.value&&i.value?(A(),O(`span`,sn,`}`)):f(``,!0)],4),h.value?f(``,!0):(A(),O(`div`,cn,[(A(!0),O(D,null,l(u.value,n=>d((A(),O(`div`,{key:n.key,class:`zm-jtv-row`},[e(g,{"key-name":n.key,value:n.value,path:C(n.key),depth:t.depth+1,query:t.query,"collapsed-paths":t.collapsedPaths,"is-root":!1},null,8,[`key-name`,`value`,`path`,`depth`,`query`,`collapsed-paths`])])),[[w,k(n.key,n.value)]])),128))])),!h.value&&a.value?(A(),O(`div`,{key:1,class:`zm-jtv-footer`,style:_({paddingLeft:6+t.depth*12+`px`})},`]`,4)):f(``,!0),!h.value&&i.value&&!a.value?(A(),O(`div`,{key:2,class:`zm-jtv-footer`,style:_({paddingLeft:6+t.depth*12+`px`})},`}`,4)):f(``,!0)],2)):(A(),O(`div`,{key:2,class:`zm-jtv-leaf`,style:_({paddingLeft:6+t.depth*12+`px`})},[m[2]||=v(`span`,{class:`zm-jtv-toggle is-leaf`},`·`,-1),v(`span`,ln,p(t.keyName),1),m[3]||=v(`span`,{class:`zm-jtv-colon`},`:`,-1),E(t.keyName)&&N(t.keyName)?(A(),O(`span`,J,[v(`span`,null,p(N(t.keyName)?.before),1),v(`mark`,null,p(N(t.keyName)?.match),1),v(`span`,null,p(N(t.keyName)?.after),1)])):f(``,!0),v(`span`,{class:x([`zm-jtv-value`,`zm-jtv-${r.value}`])},[N(j(t.value))?(A(),O(D,{key:0},[v(`span`,null,p(N(j(t.value))?.before),1),v(`mark`,null,p(N(j(t.value))?.match),1),v(`span`,null,p(N(j(t.value))?.after),1)],64)):(A(),O(D,{key:1},[o(p(j(t.value)),1)],64))],2),M(t.value)?(A(),O(`span`,{key:1,class:`zm-jtv-thumb-wrap`,onClick:m[1]||=y(()=>{},[`stop`])},[v(`img`,{class:`zm-jtv-thumb`,src:String(t.value),alt:t.keyName,loading:`lazy`,referrerpolicy:`no-referrer`},null,8,un),v(`a`,{class:`zm-jtv-thumb-link`,href:String(t.value),target:`_blank`,rel:`noopener noreferrer`,onClick:m[0]||=y(()=>{},[`stop`])},`open`,8,dn)])):f(``,!0)],4))}}}),pn={class:`zm-data-panel`},mn={class:`zm-data-header`},hn={class:`zm-data-title`},gn={class:`zm-data-title-meta`},_n={class:`zm-data-toolbar`},vn=[`title`],yn={key:0,width:`13`,height:`13`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},bn={key:1,width:`13`,height:`13`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.4`,"stroke-linecap":`round`,"stroke-linejoin":`round`},xn={key:0,class:`zm-data-paste`},Sn={class:`zm-data-tabs`},Cn=[`placeholder`],wn={key:0,class:`zm-data-error`},Tn={class:`zm-data-paste-actions`},En=[`disabled`],Dn={class:`zm-data-tree`},On=s({__name:`DataPanel`,props:{data:{},pendingMode:{default:null}},emits:[`import`,`consumed-mode`],setup(t,{emit:n}){let i=t,a=n,s=b(()=>JSON.stringify(i.data,null,2)),c=T(``),l=T(null),u=T(!1),m=T(`json`),h=T(`idle`),g=T(new Set),_=T(``);r(()=>i.pendingMode,e=>{e&&(u.value=!0,m.value=e,a(`consumed-mode`))},{immediate:!0});async function y(){try{await navigator.clipboard.writeText(s.value),h.value=`copied`,setTimeout(()=>h.value=`idle`,1500)}catch{let e=document.createElement(`textarea`);e.value=s.value,document.body.appendChild(e),e.select();try{document.execCommand(`copy`),h.value=`copied`,setTimeout(()=>h.value=`idle`,1500)}finally{document.body.removeChild(e)}}}function C(){let e=new Blob([s.value],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`${i.data.text||`mindmap`}.json`,n.click(),URL.revokeObjectURL(t)}function w(){l.value=null;let e=c.value.trim();if(e){if(m.value===`markdown`||m.value===`txt`){try{let t=Ze(e);a(`import`,t),c.value=``,u.value=!1}catch(e){l.value=(m.value===`txt`?`TXT 解析失败:`:`Markdown 解析失败:`)+e.message}return}try{let t=JSON.parse(e);if(!t.id||!Array.isArray(t.children)){l.value=`JSON 缺少 id 或 children 字段`;return}a(`import`,t),c.value=``,u.value=!1}catch(e){l.value=`JSON 解析失败:`+e.message}}}function E(e){return 1+e.children.reduce((e,t)=>e+E(t),0)}let D=b(()=>E(i.data)),j=b(()=>s.value.length);function M(){let e=document.createElement(`input`);e.type=`file`,e.accept=`application/json`,e.onchange=()=>{let t=e.files?.[0];if(!t)return;let n=new FileReader;n.onload=()=>{typeof n.result==`string`&&(c.value=n.result,w())},n.readAsText(t)},e.click()}return(n,r)=>(A(),O(`div`,pn,[v(`div`,mn,[v(`div`,hn,[r[8]||=v(`span`,{class:`zm-data-title-text`},`数据 JSON`,-1),v(`span`,gn,p(D.value)+` 节点 · `+p(j.value)+` chars`,1)])]),v(`div`,_n,[v(`button`,{class:x([`zm-data-btn is-icon`,{"is-success":h.value===`copied`}]),title:h.value===`copied`?`已复制`:`复制 JSON 到剪贴板`,onClick:y},[h.value===`idle`?(A(),O(`svg`,yn,[...r[9]||=[v(`rect`,{x:`9`,y:`9`,width:`13`,height:`13`,rx:`2`},null,-1),v(`path`,{d:`M5 15 H4 a2 2 0 0 1 -2 -2 V4 a2 2 0 0 1 2 -2 h9 a2 2 0 0 1 2 2 v1`},null,-1)]])):(A(),O(`svg`,bn,[...r[10]||=[v(`polyline`,{points:`5 12 10 17 19 7`},null,-1)]])),r[11]||=v(`span`,{class:`zm-data-btn-label`},`复制`,-1)],10,vn),v(`button`,{class:`zm-data-btn is-icon`,title:`导出为 JSON 文件`,onClick:C},[...r[12]||=[k(`<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 4 V15"></path><polyline points="7 9 12 4 17 9"></polyline><path d="M4 19 H20"></path></svg><span class="zm-data-btn-label">导出</span>`,2)]]),v(`button`,{class:`zm-data-btn is-icon`,title:`从 JSON 文件导入`,onClick:M},[...r[13]||=[k(`<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 15 V4"></path><polyline points="7 9 12 4 17 9"></polyline><path d="M4 19 H20"></path></svg><span class="zm-data-btn-label">导入</span>`,2)]]),v(`button`,{class:x([`zm-data-btn is-icon`,{"is-active":u.value}]),title:`粘贴 JSON 或 Markdown 替换当前数据`,onClick:r[0]||=e=>u.value=!u.value},[...r[14]||=[k(`<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 4 H15 V8 H9 Z"></path><path d="M9 8 H4 V20 H9"></path><path d="M15 8 H20 V20 H15"></path></svg><span class="zm-data-btn-label">粘贴</span>`,2)]],2),r[16]||=v(`div`,{class:`zm-data-toolbar-spacer`},null,-1),v(`div`,{class:x([`zm-data-search`,{"is-active":_.value.length>0}])},[r[15]||=v(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[v(`circle`,{cx:`11`,cy:`11`,r:`7`}),v(`line`,{x1:`20`,y1:`20`,x2:`16`,y2:`16`})],-1),d(v(`input`,{"onUpdate:modelValue":r[1]||=e=>_.value=e,type:`text`,placeholder:`过滤 (键 / 值)`,spellcheck:`false`},null,512),[[S,_.value]]),_.value?(A(),O(`button`,{key:0,class:`zm-data-search-clear`,title:`清空过滤`,onClick:r[2]||=e=>_.value=``},`×`)):f(``,!0)],2)]),u.value?(A(),O(`div`,xn,[v(`div`,Sn,[v(`button`,{class:x([`zm-data-tab`,{"is-active":m.value===`json`}]),onClick:r[3]||=e=>m.value=`json`},`JSON`,2),v(`button`,{class:x([`zm-data-tab`,{"is-active":m.value===`markdown`}]),onClick:r[4]||=e=>m.value=`markdown`},`Markdown`,2)]),d(v(`textarea`,{"onUpdate:modelValue":r[5]||=e=>c.value=e,placeholder:m.value===`json`?`paste a JSON tree to replace current data`:`paste markdown - # / ## / ### become nodes`,spellcheck:`false`},null,8,Cn),[[S,c.value]]),l.value?(A(),O(`div`,wn,p(l.value),1)):f(``,!0),v(`div`,Tn,[v(`button`,{class:`zm-data-btn is-primary`,disabled:!c.value,onClick:w},`应用`,8,En),v(`button`,{class:`zm-data-btn`,onClick:r[6]||=e=>{c.value=``,l.value=null}},`清空`),v(`button`,{class:`zm-data-btn`,onClick:r[7]||=e=>u.value=!1},`关闭`)])])):f(``,!0),v(`div`,Dn,[e(fn,{value:t.data,query:_.value,"collapsed-paths":g.value},null,8,[`value`,`query`,`collapsed-paths`])]),r[17]||=v(`div`,{class:`zm-data-footer`},[v(`span`,{class:`zm-data-footer-hint`},[o(` 图片支持 `),v(`code`,null,`data:image/...`),o(` / `),v(`code`,null,`https://...`),o(` / `),v(`code`,null,`/imgs/foo.png`),o(` (同源)。本地 `),v(`code`,null,`file://`),o(` 路径被浏览器拒绝。 `)])],-1)]))}}),kn={class:`zm-md-panel`},An={key:0,class:`zm-md-error`},Y={class:`zm-md-split`},jn={class:`zm-md-edit`},Mn={class:`zm-md-preview`},Nn={class:`zm-md-preview-body`},Pn={class:`zm-md-footer`},Fn=[`disabled`],In=`# flow-mindmap 思维导图
|
|
14
|
+
`)}),r=m}return n}function et(e,t=`导入的导图`){let n=$e(e||``),r={id:Re(),text:t,children:[]},i=[r],a=[0],o=!1;function s(e){if(e.kind===`heading`){let t=e.level;for(;i.length>1&&a[a.length-1]>=t;)i.pop(),a.pop();if(!o&&t===1){o=!0,r.text=e.text,a[0]=1;return}let n={id:Re(),text:e.text,children:[]};i[i.length-1].children.push(n),i.push(n),a.push(t);return}let t={id:Re(),text:e.text,children:[],richContent:{kind:e.kind,raw:e.raw,lang:e.lang}};i[i.length-1].children.push(t)}for(let e of n)s(e);return r}function tt(e){let t=e.minScale??.2,n=e.maxScale??1/0,r=e.step??1.2,i=T(1),a=T(0),o=T(0),s=T(!1),c=T(!1),l=m({x:0,y:0,ox:0,oy:0}),u=T(!1),d=m({x:0,y:0}),f=m({x:0,y:0,width:0,height:0}),p=T(0),h=null;function g(e){h=e}function _(r){r.preventDefault();let s=e.getContainer();if(!s)return;let c=-r.deltaY*.001,l=Math.min(n,Math.max(t,i.value*(1+c))),u=s.getBoundingClientRect(),d=r.clientX-u.left,f=r.clientY-u.top,p=(d-a.value)/i.value,m=(f-o.value)/i.value;i.value=l,a.value=d-p*l,o.value=f-m*l}function v(){i.value=Math.min(n,i.value*r)}function y(){i.value=Math.max(t,i.value/r)}function b(e){var t;e.target.closest(`.zm-node, .zm-toolbar, button, input, textarea`)||(s.value=!0,c.value=!1,l.x=e.clientX,l.y=e.clientY,l.ox=a.value,l.oy=o.value,window.addEventListener(`mousemove`,x),window.addEventListener(`mouseup`,S),(t=e.preventDefault)==null||t.call(e))}function x(e){if(!s.value)return;let t=e.clientX-l.x,n=e.clientY-l.y;(Math.abs(t)>3||Math.abs(n)>3)&&(c.value=!0),a.value=l.ox+t,o.value=l.oy+n}function S(){s.value=!1,window.removeEventListener(`mousemove`,x),window.removeEventListener(`mouseup`,S)}function C(e,t,n){u.value=!0,d.x=e,d.y=t,f.x=e,f.y=t,f.width=0,f.height=0,f.shiftKey=!!(n!=null&&n.shift),p.value++,window.addEventListener(`mousemove`,D),window.addEventListener(`mouseup`,E)}function w(e,t){if(!u.value)return;let n=Math.min(d.x,e),r=Math.min(d.y,t),i=Math.max(d.x,e),a=Math.max(d.y,t);f.x=n,f.y=r,f.width=i-n,f.height=a-r,p.value++}function E(){u.value=!1,window.removeEventListener(`mousemove`,D),window.removeEventListener(`mouseup`,E),h&&h()}function D(t){if(!u.value)return;let n=e.getContainer();if(!n)return;let r=n.getBoundingClientRect();w((t.clientX-r.left-a.value)/i.value,(t.clientY-r.top-o.value)/i.value)}function O(t,n,r,s=60){let c=e.getContainer();if(!c)return;let l=c.getBoundingClientRect(),u=(l.width-s*2)/t,d=(l.height-s*2)/n,f=Math.min(1,Math.max(.3,Math.min(u,d)));i.value=f,a.value=l.width/2,o.value=l.height/2-r*f}function k(t,r,s,c,l=80){let u=e.getContainer();if(!u)return;let d=u.getBoundingClientRect(),f=i.value;(s*f<40||c*f<40)&&(f=Math.min(n,Math.max(1,60/Math.min(s,c)))),i.value=f,a.value=d.width/2-t*f,o.value=d.height/2-r*f}return{scale:i,offsetX:a,offsetY:o,isPanning:s,panMoved:c,onWheel:_,zoomIn:v,zoomOut:y,startPan:b,startMarquee:C,updateMarquee:w,isMarquee:u,marquee:f,marqueeVersion:p,setOnMarqueeEnd:g,resetView:O,centerOn:k}}var nt=typeof navigator<`u`&&/Mac|iPhone|iPad/.test(navigator.platform);function rt(e){return nt?e.metaKey:e.ctrlKey}function it(e){function n(){let t=e.getSelectedId();if(t)return t;if(e.defaultTargetId)return e.defaultTargetId();let n=e.getSelectedIds();return n.length>0?n[0]:null}function r(t){let r=t.target;if(r&&(r.tagName===`INPUT`||r.tagName===`TEXTAREA`||r.isContentEditable)||e.isReadonly()||e.isEditing())return;let i=e.getSelectedId(),a=n();if(a){if(rt(t)&&!t.shiftKey){if(t.key===`d`||t.key===`D`){let n=e.defaultTargetId?.call(e);i&&i!==n&&(t.preventDefault(),e.onDuplicate(i));return}if(t.key===`c`||t.key===`C`){let n=e.getSelectedIds();n.length>0&&(t.preventDefault(),e.onCopy(n));return}if(t.key===`x`||t.key===`X`){let n=e.getSelectedIds();n.length>0&&(t.preventDefault(),e.onCut(n));return}if(t.key===`v`||t.key===`V`){if(!e.hasClipboard())return;t.preventDefault();let n=e.getSelectedIds();e.onPaste(n.length>0?n[0]:null);return}if(t.key===`z`||t.key===`Z`){t.preventDefault(),e.onUndo();return}if(t.key===`y`||t.key===`Y`){t.preventDefault(),e.onRedo();return}if(t.key===`Home`){t.preventDefault(),e.onSelectRoot();return}}if(rt(t)&&t.shiftKey&&(t.key===`Z`||t.key===`z`)){t.preventDefault(),e.onRedo();return}if(t.key===`Tab`)t.preventDefault(),e.onAddChild(a);else if(t.key===`Enter`)if(t.preventDefault(),t.shiftKey){let t=e.defaultTargetId?.call(e);i&&i!==t&&e.onAddSiblingBefore(i)}else e.onAddSibling(a);else(t.key===`Delete`||t.key===`Backspace`)&&i&&i!==e.defaultTargetId?.call(e)?(t.preventDefault(),e.onRemove(i)):t.key===`F2`&&i?(t.preventDefault(),e.onStartEdit(i)):t.key===`Escape`?(t.preventDefault(),e.onClearSelection()):t.key===`ArrowDown`?(t.preventDefault(),e.onNavigate(0,1)):t.key===`ArrowUp`?(t.preventDefault(),e.onNavigate(0,-1)):t.key===`ArrowRight`?(t.preventDefault(),e.onNavigate(1,0)):t.key===`ArrowLeft`&&(t.preventDefault(),e.onNavigate(-1,0))}}i(()=>{window.addEventListener(`keydown`,r)}),t(()=>{window.removeEventListener(`keydown`,r)})}function at(e=100){let t=T([]),n=-1;function r(){return n>0}function i(){return n<t.value.length-1}function a(r){let i=JSON.stringify(r);for(n<t.value.length-1&&(t.value=t.value.slice(0,n+1)),t.value.push(i),n=t.value.length-1;t.value.length>e;)t.value.shift(),n--}function o(){return r()?(n--,JSON.parse(t.value[n])):null}function s(){return i()?(n++,JSON.parse(t.value[n])):null}function c(){t.value=[],n=-1}return{canUndo:r,canRedo:i,record:a,undo:o,redo:s,reset:c}}var ot={1:`#ef4444`,2:`#f97316`,3:`#f59e0b`,4:`#eab308`,5:`#84cc16`,6:`#22c55e`,7:`#14b8a6`,8:`#3b82f6`,9:`#6366f1`},st={label:`优先级`,markers:Array.from({length:9},(e,t)=>{let n=t+1,r=ot[n];return{id:`priority-${n}`,label:`优先级 ${n}`,svg:`<circle cx="12" cy="12" r="10" fill="${r}"/><text x="12" y="16" text-anchor="middle" font-size="12" font-weight="700" fill="#fff" font-family="sans-serif">${n}</text>`}})};function ct(e){if(e===0)return`<circle cx="12" cy="12" r="10" fill="none" stroke="#94a3b8" stroke-width="2"/>`;if(e===100)return`<circle cx="12" cy="12" r="10" fill="#22c55e"/>`;let t=e/100*2*Math.PI,n=12+10*Math.sin(t),r=12-10*Math.cos(t);return`<circle cx="12" cy="12" r="10" fill="none" stroke="#e2e8f0" stroke-width="2"/><path d="M 12 12 L 12 2 A 10 10 0 ${+(e>50)} 1 ${n.toFixed(2)} ${r.toFixed(2)} Z" fill="#3b82f6"/><circle cx="12" cy="12" r="10" fill="none" stroke="#cbd5e1" stroke-width="1"/>`}var lt=[st,{label:`进度`,markers:[0,25,50,75,100].map(e=>({id:`progress-${e}`,label:`进度 ${e}%`,svg:ct(e)}))},{label:`旗帜`,markers:[{id:`flag-red`,label:`红旗`,color:`#ef4444`},{id:`flag-orange`,label:`橙旗`,color:`#f97316`},{id:`flag-yellow`,label:`黄旗`,color:`#eab308`},{id:`flag-green`,label:`绿旗`,color:`#22c55e`},{id:`flag-blue`,label:`蓝旗`,color:`#3b82f6`},{id:`flag-gray`,label:`灰旗`,color:`#94a3b8`}].map(e=>({id:e.id,label:e.label,svg:`<path d="M6 3 V21" stroke="#475569" stroke-width="2" stroke-linecap="round"/><path d="M6 4 H18 L15 7 L18 10 H6 Z" fill="${e.color}" stroke="${e.color}" stroke-width="1" stroke-linejoin="round"/>`}))},{label:`星标`,markers:[{id:`star`,label:`星标`,svg:`<path d="M12 2 L14.5 8.5 L21 9 L16 13.5 L17.5 20 L12 16.5 L6.5 20 L8 13.5 L3 9 L9.5 8.5 Z" fill="#f59e0b" stroke="#f59e0b" stroke-width="1" stroke-linejoin="round"/>`},{id:`star-half`,label:`半星`,svg:`<path d="M12 2 L14.5 8.5 L21 9 L16 13.5 L17.5 20 L12 16.5 L6.5 20 L8 13.5 L3 9 L9.5 8.5 Z" fill="#e2e8f0" stroke="#f59e0b" stroke-width="1.5" stroke-linejoin="round"/><path d="M12 2 L12 16.5 L6.5 20 L8 13.5 L3 9 L9.5 8.5 Z" fill="#f59e0b" stroke="none"/>`}]},{label:`其他`,markers:[{id:`smile`,label:`微笑`,svg:`<circle cx="12" cy="12" r="10" fill="#fef3c7" stroke="#f59e0b" stroke-width="1.5"/><circle cx="9" cy="10" r="1.2" fill="#92400e"/><circle cx="15" cy="10" r="1.2" fill="#92400e"/><path d="M8 14 Q12 17 16 14" stroke="#92400e" stroke-width="1.5" fill="none" stroke-linecap="round"/>`},{id:`people`,label:`人员`,svg:`<circle cx="9" cy="8" r="2.5" fill="#3b82f6"/><circle cx="16" cy="8" r="2.5" fill="#3b82f6"/><path d="M4 19 C4 15 6 13 9 13 C12 13 14 15 14 19" fill="#3b82f6"/><path d="M14 19 C14 15.5 15.5 13.5 17.5 13.5 C19.5 13.5 21 15.5 21 19" fill="#3b82f6"/>`},{id:`arrow-up`,label:`上箭头`,svg:`<circle cx="12" cy="12" r="10" fill="#dbeafe" stroke="#3b82f6" stroke-width="1.5"/><path d="M12 17 V7 M8 11 L12 7 L16 11" stroke="#3b82f6" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/>`},{id:`arrow-down`,label:`下箭头`,svg:`<circle cx="12" cy="12" r="10" fill="#dbeafe" stroke="#3b82f6" stroke-width="1.5"/><path d="M12 7 V17 M8 13 L12 17 L16 13" stroke="#3b82f6" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/>`},{id:`arrow-right`,label:`右箭头`,svg:`<circle cx="12" cy="12" r="10" fill="#dbeafe" stroke="#3b82f6" stroke-width="1.5"/><path d="M7 12 H17 M13 8 L17 12 L13 16" stroke="#3b82f6" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/>`},{id:`arrow-left`,label:`左箭头`,svg:`<circle cx="12" cy="12" r="10" fill="#dbeafe" stroke="#3b82f6" stroke-width="1.5"/><path d="M17 12 H7 M11 8 L7 12 L11 16" stroke="#3b82f6" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/>`}]}],ut={};for(let e of lt)for(let t of e.markers)ut[t.id]=t;function dt(e){return ut[e]?.svg??``}function ft(e){return ut[e]?.label??e}function pt(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;let n=Math.abs(t)%360;return{background:`hsl(${n}, 85%, 92%)`,borderColor:`hsl(${n}, 60%, 70%)`,color:`hsl(${n}, 55%, 30%)`}}var mt={key:5,class:`zm-marker-picker`},ht={class:`zm-marker-group-label`},gt={class:`zm-marker-grid`},_t=[`title`,`onClick`,`innerHTML`],vt=s({__name:`NodeContextMenu`,props:{x:{},y:{},container:{},hasImage:{type:Boolean,default:!1},hasLink:{type:Boolean,default:!1},hasNote:{type:Boolean,default:!1},hasCode:{type:Boolean,default:!1},hasTable:{type:Boolean,default:!1},nodeMarkers:{default:()=>[]},nodeTags:{default:()=>[]}},emits:[`pickImage`,`setLink`,`removeLink`,`editNote`,`removeNote`,`removeImage`,`addCode`,`editCode`,`removeCode`,`addTable`,`editTable`,`removeTable`,`toggleMarker`,`clearMarkers`,`addTag`,`removeTags`,`close`],setup(n,{emit:r}){let i=n,a=r,o=b(()=>{let e=i.x+2,t=i.y+2;if(i.container){let n=i.container.getBoundingClientRect(),r=4+(3+ +!!i.hasImage+ +!!i.hasLink+ +!!i.hasNote+1+ +!!i.hasCode+1+ +!!i.hasTable)*28;e+180>n.right&&(e=Math.max(n.left+4,i.x-180-2)),t+r>n.bottom&&(t=Math.max(n.top+4,i.y-r-2)),e<n.left+2&&(e=n.left+2),t<n.top+2&&(t=n.top+2)}return{left:e,top:t}}),s=b(()=>i.hasImage),c=b(()=>i.hasLink),u=b(()=>i.hasNote),d=b(()=>i.nodeMarkers.length>0),m=b(()=>i.nodeTags.length>0),h=T(!1);function g(){h.value=!h.value}function S(e){return i.nodeMarkers.includes(e)}function w(e){a(`toggleMarker`,e)}function E(e){let t=e.target;t&&t.closest(`.zm-node-menu`)||a(`close`)}function k(e){e.key===`Escape`&&a(`close`)}function j(){a(`close`)}window.addEventListener(`mousedown`,E,!0),window.addEventListener(`keydown`,k,!0),window.addEventListener(`wheel`,j,!0),window.addEventListener(`scroll`,j,!0),t(()=>{window.removeEventListener(`mousedown`,E,!0),window.removeEventListener(`keydown`,k,!0),window.removeEventListener(`wheel`,j,!0),window.removeEventListener(`scroll`,j,!0)});function M(e){e(),a(`close`)}return(t,r)=>(A(),O(`div`,{class:`zm-node-menu`,style:_({left:o.value.left+`px`,top:o.value.top+`px`}),onContextmenu:r[13]||=y(()=>{},[`prevent`])},[v(`button`,{class:`zm-node-menu-item`,onClick:r[0]||=y(e=>M(()=>a(`pickImage`)),[`stop`])},[e(I,{name:`image`,size:13}),v(`span`,null,p(s.value?`替换图片`:`添加图片`),1)]),s.value?(A(),O(`button`,{key:0,class:`zm-node-menu-item`,onClick:r[1]||=y(e=>M(()=>a(`removeImage`)),[`stop`])},[e(I,{name:`x`,size:13}),r[14]||=v(`span`,null,`移除图片`,-1)])):f(``,!0),v(`button`,{class:`zm-node-menu-item`,onClick:r[2]||=y(e=>M(()=>a(`setLink`)),[`stop`])},[e(I,{name:`link`,size:13}),v(`span`,null,p(c.value?`编辑链接`:`添加链接`),1)]),c.value?(A(),O(`button`,{key:1,class:`zm-node-menu-item`,onClick:r[3]||=y(e=>M(()=>a(`removeLink`)),[`stop`])},[e(I,{name:`x`,size:13}),r[15]||=v(`span`,null,`移除链接`,-1)])):f(``,!0),v(`button`,{class:`zm-node-menu-item`,onClick:r[4]||=y(e=>M(()=>a(`addCode`)),[`stop`])},[r[16]||=v(`span`,{class:`zm-node-menu-icon zm-node-menu-icon-code`,"aria-hidden":`true`},`{ }`,-1),v(`span`,null,p(n.hasCode?`编辑代码块`:`添加代码块`),1)]),n.hasCode?(A(),O(`button`,{key:2,class:`zm-node-menu-item`,onClick:r[5]||=y(e=>M(()=>a(`removeCode`)),[`stop`])},[e(I,{name:`x`,size:13}),r[17]||=v(`span`,null,`移除代码块`,-1)])):f(``,!0),v(`button`,{class:`zm-node-menu-item`,onClick:r[6]||=y(e=>M(()=>a(`addTable`)),[`stop`])},[r[18]||=v(`span`,{class:`zm-node-menu-icon zm-node-menu-icon-table`,"aria-hidden":`true`},`▦`,-1),v(`span`,null,p(n.hasTable?`编辑表格`:`添加表格`),1)]),n.hasTable?(A(),O(`button`,{key:3,class:`zm-node-menu-item`,onClick:r[7]||=y(e=>M(()=>a(`removeTable`)),[`stop`])},[e(I,{name:`x`,size:13}),r[19]||=v(`span`,null,`移除表格`,-1)])):f(``,!0),v(`button`,{class:`zm-node-menu-item`,onClick:r[8]||=y(e=>M(()=>a(`editNote`)),[`stop`])},[e(I,{name:`note`,size:13}),v(`span`,null,p(u.value?`编辑笔记`:`添加笔记`),1)]),u.value?(A(),O(`button`,{key:4,class:`zm-node-menu-item`,onClick:r[9]||=y(e=>M(()=>a(`removeNote`)),[`stop`])},[e(I,{name:`x`,size:13}),r[20]||=v(`span`,null,`移除笔记`,-1)])):f(``,!0),r[25]||=v(`div`,{class:`zm-node-menu-divider`},null,-1),v(`button`,{class:`zm-node-menu-item`,onClick:y(g,[`stop`])},[r[21]||=v(`span`,{class:`zm-node-menu-icon`,"aria-hidden":`true`},`⚑`,-1),r[22]||=v(`span`,null,`标记图标`,-1),v(`span`,{class:x([`zm-node-menu-arrow`,{"is-open":h.value}])},`›`,2)]),h.value?(A(),O(`div`,mt,[(A(!0),O(D,null,l(C(lt),e=>(A(),O(`div`,{key:e.label,class:`zm-marker-group`},[v(`div`,ht,p(e.label),1),v(`div`,gt,[(A(!0),O(D,null,l(e.markers,e=>(A(),O(`button`,{key:e.id,class:x([`zm-marker-cell`,{"is-active":S(e.id)}]),title:e.label,onClick:y(t=>w(e.id),[`stop`]),innerHTML:`<svg viewBox="0 0 24 24" width="20" height="20">`+C(dt)(e.id)+`</svg>`},null,10,_t))),128))])]))),128)),d.value?(A(),O(`button`,{key:0,class:`zm-marker-clear`,onClick:r[10]||=y(e=>a(`clearMarkers`),[`stop`])},` 清除所有标记 `)):f(``,!0)])):f(``,!0),v(`button`,{class:`zm-node-menu-item`,onClick:r[11]||=y(e=>M(()=>a(`addTag`)),[`stop`])},[r[23]||=v(`span`,{class:`zm-node-menu-icon`,"aria-hidden":`true`},`#`,-1),v(`span`,null,p(m.value?`编辑标签`:`添加标签`),1)]),m.value?(A(),O(`button`,{key:6,class:`zm-node-menu-item`,onClick:r[12]||=y(e=>M(()=>a(`removeTags`)),[`stop`])},[e(I,{name:`x`,size:13}),r[24]||=v(`span`,null,`移除标签`,-1)])):f(``,!0)],36))}}),yt=s({__name:`CanvasContextMenu`,props:{x:{},y:{},container:{}},emits:[`openSettings`,`openData`,`openImport`,`exportPng`,`exportSvg`,`close`],setup(n,{emit:r}){let i=n,a=r,o=b(()=>{let e=i.x+2,t=i.y+2;if(i.container){let n=i.container.getBoundingClientRect();e+160>n.right&&(e=Math.max(n.left+4,i.x-160-2)),t+121>n.bottom&&(t=Math.max(n.top+4,i.y-121-2)),e<n.left+2&&(e=n.left+2),t<n.top+2&&(t=n.top+2)}return{left:e,top:t}}),s=T(null),c=T(null),l=T(null),u=b(()=>{let e=s.value===`import`?c.value:s.value===`export`?l.value:null;if(!e)return{left:`-9999px`,top:`-9999px`,display:`none`};let t=e.getBoundingClientRect(),n=window.innerWidth,r=window.innerHeight,i=t.right;i+176>n-4&&(i=Math.max(4,t.left-176));let a=t.top-4;return a+88>r-4&&(a=Math.max(4,r-88-4)),{left:i+`px`,top:a+`px`,display:`block`}}),d=null,p=null;function m(e){p&&=(clearTimeout(p),null),d=setTimeout(()=>{s.value=e},60)}function h(){d&&=(clearTimeout(d),null),p=setTimeout(()=>{s.value=null},120)}t(()=>{d&&clearTimeout(d),p&&clearTimeout(p)});function g(e){let t=e.target;t&&t.closest(`.zm-canvas-menu`)||a(`close`)}function S(e){e.key===`Escape`&&a(`close`)}function C(){a(`close`)}window.addEventListener(`mousedown`,g,!0),window.addEventListener(`keydown`,S,!0),window.addEventListener(`wheel`,C,!0),window.addEventListener(`scroll`,C,!0),t(()=>{window.removeEventListener(`mousedown`,g,!0),window.removeEventListener(`keydown`,S,!0),window.removeEventListener(`wheel`,C,!0),window.removeEventListener(`scroll`,C,!0)});function w(e){e(),a(`close`)}return(t,n)=>(A(),O(`div`,{class:`zm-canvas-menu`,style:_({left:o.value.left+`px`,top:o.value.top+`px`}),onContextmenu:n[11]||=y(()=>{},[`prevent`])},[v(`button`,{class:`zm-canvas-menu-item`,onClick:n[0]||=y(e=>w(()=>a(`openData`)),[`stop`])},[e(I,{name:`database`,size:13,stroke:1.6}),n[12]||=v(`span`,null,`查看数据`,-1)]),v(`div`,{ref_key:`importItemRef`,ref:c,class:x([`zm-canvas-menu-item zm-canvas-menu-item-has-submenu`,{"is-open":s.value===`import`}]),onMouseenter:n[5]||=e=>m(`import`),onMouseleave:h},[e(I,{name:`import`,size:13,stroke:1.6}),n[16]||=v(`span`,null,`导入`,-1),n[17]||=v(`svg`,{class:`zm-canvas-menu-caret`,width:`8`,height:`8`,viewBox:`0 0 8 8`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.4`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[v(`polyline`,{points:`2.5 1.8 5.2 4 2.5 6.2`})],-1),s.value===`import`?(A(),O(`div`,{key:0,class:`zm-canvas-submenu`,style:_(u.value),onMouseenter:n[4]||=e=>m(`import`),onMouseleave:h},[v(`button`,{class:`zm-canvas-menu-item`,onClick:n[1]||=y(e=>w(()=>a(`openImport`,`markdown`)),[`stop`])},[e(I,{name:`markdown`,size:13,stroke:1.6}),n[13]||=v(`span`,null,`Markdown 导入`,-1)]),v(`button`,{class:`zm-canvas-menu-item`,onClick:n[2]||=y(e=>w(()=>a(`openImport`,`json`)),[`stop`])},[e(I,{name:`json`,size:13,stroke:1.6}),n[14]||=v(`span`,null,`JSON 文件导入`,-1)]),v(`button`,{class:`zm-canvas-menu-item`,onClick:n[3]||=y(e=>w(()=>a(`openImport`,`txt`)),[`stop`])},[e(I,{name:`txt`,size:13,stroke:1.6}),n[15]||=v(`span`,null,`TXT 文件导入`,-1)])],36)):f(``,!0)],34),v(`button`,{class:`zm-canvas-menu-item`,onClick:n[6]||=y(e=>w(()=>a(`openSettings`)),[`stop`])},[e(I,{name:`settings`,size:13,stroke:1.6}),n[18]||=v(`span`,null,`设置`,-1)]),n[23]||=v(`div`,{class:`zm-canvas-menu-divider`},null,-1),v(`div`,{ref_key:`exportItemRef`,ref:l,class:x([`zm-canvas-menu-item zm-canvas-menu-item-has-submenu`,{"is-open":s.value===`export`}]),onMouseenter:n[10]||=e=>m(`export`),onMouseleave:h},[e(I,{name:`export`,size:13,stroke:1.6}),n[21]||=v(`span`,null,`导出`,-1),n[22]||=v(`svg`,{class:`zm-canvas-menu-caret`,width:`8`,height:`8`,viewBox:`0 0 8 8`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.4`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[v(`polyline`,{points:`2.5 1.8 5.2 4 2.5 6.2`})],-1),s.value===`export`?(A(),O(`div`,{key:0,class:`zm-canvas-submenu`,style:_(u.value),onMouseenter:n[9]||=e=>m(`export`),onMouseleave:h},[v(`button`,{class:`zm-canvas-menu-item`,onClick:n[7]||=y(e=>w(()=>a(`exportPng`)),[`stop`])},[e(I,{name:`image`,size:13,stroke:1.6}),n[19]||=v(`span`,null,`导出 PNG`,-1)]),v(`button`,{class:`zm-canvas-menu-item`,onClick:n[8]||=y(e=>w(()=>a(`exportSvg`)),[`stop`])},[e(I,{name:`svg-export`,size:13,stroke:1.6}),n[20]||=v(`span`,null,`导出 SVG`,-1)])],36)):f(``,!0)],34)],36))}}),bt=[`aria-hidden`],xt=[`aria-hidden`],St={key:0,class:`zm-drawer-header`},Ct={key:0,class:`zm-drawer-title`},wt={class:`zm-drawer-body`},Tt=[`aria-hidden`],Et={key:0,class:`zm-drawer-header`},Dt={key:0,class:`zm-drawer-title`},Ot={class:`zm-drawer-body`},kt=s({__name:`Drawer`,props:{side:{default:`left`},width:{default:320},open:{type:Boolean,default:!0},title:{default:``},scope:{default:`page`},closable:{type:Boolean,default:!0},closeOnBackdrop:{type:Boolean,default:!0}},emits:[`update:open`],setup(t,{emit:r}){let i=r;function a(){i(`update:open`,!1)}function o(){i(`update:open`,!1)}return(r,i)=>t.scope===`canvas`?(A(),O(D,{key:0},[e(E,{name:`zm-fade`},{default:u(()=>[t.open?(A(),O(`div`,{key:0,class:`zm-drawer-canvas-backdrop`,"aria-hidden":!t.open,onClick:i[0]||=e=>t.closeOnBackdrop&&o()},null,8,bt)):f(``,!0)]),_:1}),e(E,{name:t.side===`left`?`zm-slide-left`:`zm-slide-right`},{default:u(()=>[t.open?(A(),O(`aside`,{key:0,class:x([`zm-drawer zm-drawer--canvas`,[`zm-drawer--`+t.side]]),style:_({width:t.width+`px`}),"aria-hidden":!t.open},[t.title||r.$slots.header?(A(),O(`div`,St,[t.title?(A(),O(`h3`,Ct,p(t.title),1)):f(``,!0),n(r.$slots,`header`),t.closable?(A(),O(`button`,{key:1,class:`zm-drawer-close`,title:`关闭`,onClick:a},[...i[1]||=[v(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`},[v(`path`,{d:`M6 6 L18 18 M18 6 L6 18`})],-1)]])):f(``,!0)])):f(``,!0),v(`div`,wt,[n(r.$slots,`default`)])],14,xt)):f(``,!0)]),_:3},8,[`name`])],64)):(A(),g(E,{key:1,name:`zm-drawer`},{default:u(()=>[t.open?(A(),O(`aside`,{key:0,class:x([`zm-drawer`,[`zm-drawer--`+t.side,{"is-open":t.open}]]),style:_({width:t.width+`px`}),"aria-hidden":!t.open},[t.title||r.$slots.header?(A(),O(`div`,Et,[t.title?(A(),O(`h3`,Dt,p(t.title),1)):f(``,!0),n(r.$slots,`header`),t.closable?(A(),O(`button`,{key:1,class:`zm-drawer-close`,title:`关闭`,onClick:a},[...i[2]||=[v(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`},[v(`path`,{d:`M6 6 L18 18 M18 6 L6 18`})],-1)]])):f(``,!0)])):f(``,!0),v(`div`,Ot,[n(r.$slots,`default`)])],14,Tt)):f(``,!0)]),_:3}))}}),At={class:`zm-outline-root`},jt={class:`zm-outline-search`},Mt={key:0,class:`zm-outline-search-count`},Nt={key:1,class:`zm-outline-search-count zm-outline-search-empty`},Pt={class:`zm-outline-actions`},Ft={width:`11`,height:`11`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},It={key:0,x:`9`,y:`9`,width:`13`,height:`13`,rx:`2`},Lt={key:1,d:`M5 12 L10 17 L19 7`},Rt={class:`zm-outline`},zt=[`data-outline-id`,`onClick`,`onDblclick`,`onDragstart`,`onDragover`,`onDragleave`,`onDrop`],Bt=[`title`,`onClick`],Vt={width:`10`,height:`10`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`3`,"stroke-linecap":`round`,"stroke-linejoin":`round`},Ht={key:0,points:`6 9 12 15 18 9`},Ut={key:1,points:`9 6 15 12 9 18`},Wt={key:1,class:`zm-outline-dot`},Gt={key:2,class:`zm-outline-index`},Kt={key:4,class:`zm-outline-text`},qt=[`onClick`],Jt=[`src`],Yt=[`onClick`],Xt=[`src`],Zt=[`title`,`onClick`],Qt={width:`11`,height:`11`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},$t={key:0,x:`9`,y:`9`,width:`13`,height:`13`,rx:`2`},en={key:1,d:`M5 12 L10 17 L19 7`},tn=s({__name:`Outline`,props:{data:{},selectedId:{default:null},collapsedIds:{default:()=>new Set},readonly:{type:Boolean,default:!1},showIndex:{type:Boolean,default:!1}},emits:[`select`,`toggleCollapse`,`edit`,`addChild`,`addSibling`,`move`],setup(e,{emit:n}){let r=e,o=n,s=T(``),c=T(null),u=T(-1),m=b(()=>{let e=s.value.trim().toLowerCase();if(!e)return new Set;let t=new Set,n=r=>{var i;(r.text.toLowerCase().includes(e)||(i=r.note)!=null&&i.text&&r.note.text.toLowerCase().includes(e))&&t.add(r.id);for(let e of r.children)n(e)};return n(r.data),t}),h=b(()=>{if(m.value.size===0)return new Set;let e=new Set,t=n=>{let r=m.value.has(n.id);for(let e of n.children)t(e)&&(r=!0);return r&&e.add(n.id),r};return t(r.data),e}),g=b(()=>{let e=[],t=n=>{m.value.has(n.id)&&e.push(n.id);for(let e of n.children)t(e)};return t(r.data),e}),w=b(()=>s.value.trim().length>0),E=b(()=>{let e=[],t=h.value,n=(i,a,o)=>{if(w.value&&!t.has(i.id))return;let s=i.children.length>0,c=w.value?!1:r.collapsedIds.has(i.id);e.push({id:i.id,text:i.text||`(无标题)`,depth:a,siblingIndex:o,hasChildren:s,collapsed:c,node:i}),s&&!c&&i.children.forEach((e,t)=>n(e,a+1,t))};return n(r.data,0,0),e});function k(){u.value=g.value.length>0?0:-1}function j(){let e=g.value;e.length!==0&&(u.value=(u.value+1)%e.length,P(u.value))}function M(){let e=g.value;e.length!==0&&(u.value=(u.value-1+e.length)%e.length,P(u.value))}function N(e){e.key===`Enter`?(e.preventDefault(),e.shiftKey?M():j()):e.key===`Escape`&&(e.preventDefault(),s.value=``,u.value=-1)}function P(e){let t=g.value[e];if(!t)return;let n=E.value.find(e=>e.id===t);n&&o(`select`,n.node),a(()=>{document.querySelector(`[data-outline-id="${t}"]`)?.scrollIntoView({block:`nearest`,behavior:`smooth`})})}function ee(){s.value=``,u.value=-1}i(()=>{a(()=>c.value?.focus())});let F=T(null),I=T(``),re=null;function L(e){r.readonly||(F.value=e.id,I.value=e.text,a(()=>{re=document.querySelector(`.zm-outline-input`),re?.focus(),re?.select()}))}function ie(){F.value!=null&&(o(`edit`,{id:F.value,text:I.value.trim()||`(无标题)`}),R())}function R(){F.value=null,I.value=``,re=null}function ae(e){e.key===`Enter`?(e.preventDefault(),ie()):e.key===`Escape`&&(e.preventDefault(),R())}t(R);let z=T(null),B=T(null),oe=T(null);function V(e,t){if(r.readonly){e.preventDefault();return}z.value={id:t.id,text:t.text},e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,t.id))}function se(){z.value=null,B.value=null,oe.value=null}function ce(e,t){if(!z.value)return;e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`move`);let n=de(e);B.value=t.id,oe.value=n}function le(e){B.value===e.id&&(B.value=null,oe.value=null)}function ue(e,t){e.preventDefault();let n=z.value;if(!n)return;let r=de(e);n.id!==t.id&&o(`move`,{srcId:n.id,targetId:t.id,position:r}),se()}function de(e,t){let n=e.currentTarget.getBoundingClientRect(),r=e.clientY-n.top,i=n.height;return r<i*.3?`before`:r>i*.7?`after`:`child`}let fe=T(null),H=null;async function pe(e){try{return await navigator.clipboard.writeText(e),!0}catch{let t=document.createElement(`textarea`);t.value=e,document.body.appendChild(t),t.select();let n=!1;try{n=document.execCommand(`copy`)}finally{document.body.removeChild(t)}return n}}async function me(e,t,n){e.stopPropagation(),await pe(t)&&(fe.value=n,H&&clearTimeout(H),H=setTimeout(()=>fe.value=null,1200))}let he=b(()=>{let e=[],t=(n,r)=>{let i=` `.repeat(r),a=r===0?``:`- `;e.push(i+a+(n.text||``));for(let e of n.children)t(e,r+1)};return t(r.data,0),e.join(`
|
|
15
|
+
`)}),ge=T(!1),_e=null;async function ve(){await pe(he.value)&&(ge.value=!0,_e&&clearTimeout(_e),_e=setTimeout(()=>ge.value=!1,1200))}return(t,n)=>(A(),O(`div`,At,[v(`div`,jt,[n[3]||=v(`svg`,{class:`zm-outline-search-icon`,width:`13`,height:`13`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[v(`circle`,{cx:`11`,cy:`11`,r:`7`}),v(`line`,{x1:`20`,y1:`20`,x2:`16`,y2:`16`})],-1),d(v(`input`,{ref_key:`searchInputRef`,ref:c,"onUpdate:modelValue":n[0]||=e=>s.value=e,type:`text`,class:`zm-outline-search-input`,placeholder:`搜索节点… (Enter 下一个, Shift+Enter 上一个)`,onInput:k,onKeydown:N},null,544),[[S,s.value]]),g.value.length>0?(A(),O(`span`,Mt,p(u.value+1)+`/`+p(g.value.length),1)):w.value?(A(),O(`span`,Nt,`无结果`)):f(``,!0),s.value?(A(),O(`button`,{key:2,class:`zm-outline-search-clear`,title:`清除搜索`,onClick:ee},`×`)):f(``,!0)]),v(`div`,Pt,[v(`button`,{class:x([`zm-outline-action-btn`,{"is-success":ge.value}]),title:`复制完整大纲为纯文本`,onClick:ve},[(A(),O(`svg`,Ft,[ge.value?(A(),O(`path`,Lt)):(A(),O(`rect`,It)),n[4]||=v(`path`,{d:`M5 15 H4 a2 2 0 0 1 -2 -2 V4 a2 2 0 0 1 2 -2 h9 a2 2 0 0 1 2 2 v1`},null,-1)])),v(`span`,null,p(ge.value?`已复制`:`复制大纲`),1)],2)]),v(`ul`,Rt,[(A(!0),O(D,null,l(E.value,t=>(A(),O(`li`,{key:t.id,"data-outline-id":t.id,class:x([`zm-outline-row`,{"is-selected":t.id===e.selectedId,"is-root":t.depth===0,"is-editing":F.value===t.id,"is-search-hit":m.value.has(t.id),"is-search-current":g.value[u.value]===t.id,"is-drag-over-before":B.value===t.id&&oe.value===`before`,"is-drag-over-after":B.value===t.id&&oe.value===`after`,"is-drag-over-child":B.value===t.id&&oe.value===`child`}]),style:_({paddingLeft:12+t.depth*16+`px`}),draggable:`true`,onClick:e=>o(`select`,t.node),onDblclick:e=>L(t),onDragstart:e=>V(e,t),onDragend:se,onDragover:e=>ce(e,t),onDragleave:()=>le(t),onDrop:e=>ue(e,t)},[t.hasChildren?(A(),O(`button`,{key:0,class:`zm-outline-toggle`,title:t.collapsed?`展开`:`折叠`,onClick:y(e=>o(`toggleCollapse`,t.id),[`stop`])},[(A(),O(`svg`,Vt,[t.collapsed?(A(),O(`polyline`,Ut)):(A(),O(`polyline`,Ht))]))],8,Bt)):(A(),O(`span`,Wt)),r.showIndex?(A(),O(`span`,Gt,p(t.siblingIndex+1)+`.`,1)):f(``,!0),F.value===t.id?d((A(),O(`input`,{key:3,"onUpdate:modelValue":n[1]||=e=>I.value=e,class:`zm-outline-input`,onBlur:ie,onKeydown:ae,onClick:n[2]||=y(()=>{},[`stop`])},null,544)),[[S,I.value]]):(A(),O(`span`,Kt,p(t.text),1)),r.readonly?f(``,!0):(A(),O(`button`,{key:5,class:`zm-outline-row-action`,title:`添加同级`,onClick:y(e=>o(`addSibling`,t.id),[`stop`])},[v(`img`,{src:C(te),width:`14`,height:`14`,alt:`添加同级`,draggable:`false`},null,8,Jt)],8,qt)),r.readonly?f(``,!0):(A(),O(`button`,{key:6,class:`zm-outline-row-action`,title:`添加子节点`,onClick:y(e=>o(`addChild`,t.id),[`stop`])},[v(`img`,{src:C(ne),width:`14`,height:`14`,alt:`添加子节点`,draggable:`false`},null,8,Xt)],8,Yt)),v(`button`,{class:x([`zm-outline-row-copy`,{"is-success":fe.value===t.id}]),title:fe.value===t.id?`已复制`:`复制节点文本`,onClick:e=>me(e,t.text,t.id)},[(A(),O(`svg`,Qt,[fe.value===t.id?(A(),O(`path`,en)):(A(),O(`rect`,$t)),n[5]||=v(`path`,{d:`M5 15 H4 a2 2 0 0 1 -2 -2 V4 a2 2 0 0 1 2 -2 h9 a2 2 0 0 1 2 2 v1`},null,-1)]))],10,Zt)],46,zt))),128))])]))}}),nn={key:0,class:`zm-jtv-root`},rn={key:0,class:`zm-jtv-key`},an={key:1,class:`zm-jtv-colon`},on={key:2,class:`zm-jtv-key zm-jtv-bracket`},K={key:3,class:`zm-jtv-size`},q={key:4,class:`zm-jtv-bracket`},sn={key:5,class:`zm-jtv-brace`},cn={key:0,class:`zm-jtv-children`},ln={class:`zm-jtv-key`},J={key:0,class:`zm-jtv-key`},un=[`src`,`alt`],dn=[`href`],fn=s({__name:`JsonTreeViewer`,props:{value:{},keyName:{default:``},isRoot:{type:Boolean,default:!0},path:{default:``},depth:{default:0},query:{default:``},collapsedPaths:{default:()=>new Set}},setup(t){let n=t,r=b(()=>n.value===null?`null`:Array.isArray(n.value)?`array`:typeof n.value),i=b(()=>r.value===`object`),a=b(()=>r.value===`array`);b(()=>!i.value&&!a.value);let s=b(()=>{if(a.value)return`Array(${n.value.length})`;if(i.value){let e=n.value,t=Object.keys(e);return`Object(${t.length} ${t.length===1?`key`:`keys`})`}return``}),u=b(()=>a.value?n.value.map((e,t)=>({key:String(t),value:e})):i.value?Object.entries(n.value).map(([e,t])=>({key:e,value:t})):[]),m=b(()=>n.isRoot?`<root>`:n.path),h=b(()=>n.collapsedPaths.has(m.value));function g(e,t,r){e!==`<root>`&&(r<2||typeof t!=`object`||!t||n.collapsedPaths.has(e)||n.collapsedPaths.add(e))}n.isRoot||g(m.value,n.value,n.depth);function S(){h.value?n.collapsedPaths.delete(m.value):n.collapsedPaths.add(m.value)}function C(e){return m.value===``?e:`${m.value}.${e}`}function T(e){if(!n.query)return!0;let t=n.query.toLowerCase();return typeof e==`string`?e.toLowerCase().includes(t):e===null?`null`.includes(t):String(e).toLowerCase().includes(t)}function E(e){return n.query?e.toLowerCase().includes(n.query.toLowerCase()):!0}function k(e,t){return!n.query||E(e)?!0:typeof t!=`object`||!t?T(t):!0}function j(e){return e===null?`null`:typeof e==`string`?e.length>80?`"${e.slice(0,80)}..."`:`"${e}"`:typeof e==`boolean`?e?`true`:`false`:typeof e==`number`?String(e):typeof e>`u`?`undefined`:JSON.stringify(e)}function M(e){if(typeof e!=`string`)return!1;let t=e.trim();return!!(t.startsWith(`data:image/`)||/^https?:\/\/.+\.(png|jpe?g|gif|webp|svg|bmp|ico)(\?.*)?$/i.test(t)||/^https?:\/\/.+/i.test(t)&&/\/[^/]+\.(png|jpe?g|gif|webp|svg|bmp|ico)(\?.*)?$/i.test(t))}function N(e){if(!n.query)return null;let t=e.toLowerCase().indexOf(n.query.toLowerCase());return t<0?null:{before:e.slice(0,t),match:e.slice(t,t+n.query.length),after:e.slice(t+n.query.length)}}return(n,m)=>{let g=c(`JsonTreeViewer`,!0);return t.isRoot?(A(),O(`div`,nn,[(A(!0),O(D,null,l(u.value,n=>d((A(),O(`div`,{key:n.key,class:`zm-jtv-row`},[e(g,{"key-name":n.key,value:n.value,path:C(n.key),depth:t.depth+1,query:t.query,"collapsed-paths":t.collapsedPaths,"is-root":!1},null,8,[`key-name`,`value`,`path`,`depth`,`query`,`collapsed-paths`])])),[[w,k(n.key,n.value)]])),128))])):i.value||a.value?(A(),O(`div`,{key:1,class:x([`zm-jtv-branch`,{"is-collapsed":h.value}])},[v(`div`,{class:`zm-jtv-header`,style:_({paddingLeft:6+t.depth*12+`px`}),onClick:S},[v(`span`,{class:x([`zm-jtv-toggle`,{"is-leaf":!1}])},p(h.value?`▶`:`▼`),1),a.value?f(``,!0):(A(),O(`span`,rn,p(t.keyName),1)),a.value?f(``,!0):(A(),O(`span`,an,`:`)),a.value?(A(),O(`span`,on,`[`)):f(``,!0),h.value?(A(),O(`span`,K,p(s.value),1)):f(``,!0),h.value&&a.value?(A(),O(`span`,q,`]`)):f(``,!0),h.value&&i.value?(A(),O(`span`,sn,`}`)):f(``,!0)],4),h.value?f(``,!0):(A(),O(`div`,cn,[(A(!0),O(D,null,l(u.value,n=>d((A(),O(`div`,{key:n.key,class:`zm-jtv-row`},[e(g,{"key-name":n.key,value:n.value,path:C(n.key),depth:t.depth+1,query:t.query,"collapsed-paths":t.collapsedPaths,"is-root":!1},null,8,[`key-name`,`value`,`path`,`depth`,`query`,`collapsed-paths`])])),[[w,k(n.key,n.value)]])),128))])),!h.value&&a.value?(A(),O(`div`,{key:1,class:`zm-jtv-footer`,style:_({paddingLeft:6+t.depth*12+`px`})},`]`,4)):f(``,!0),!h.value&&i.value&&!a.value?(A(),O(`div`,{key:2,class:`zm-jtv-footer`,style:_({paddingLeft:6+t.depth*12+`px`})},`}`,4)):f(``,!0)],2)):(A(),O(`div`,{key:2,class:`zm-jtv-leaf`,style:_({paddingLeft:6+t.depth*12+`px`})},[m[2]||=v(`span`,{class:`zm-jtv-toggle is-leaf`},`·`,-1),v(`span`,ln,p(t.keyName),1),m[3]||=v(`span`,{class:`zm-jtv-colon`},`:`,-1),E(t.keyName)&&N(t.keyName)?(A(),O(`span`,J,[v(`span`,null,p(N(t.keyName)?.before),1),v(`mark`,null,p(N(t.keyName)?.match),1),v(`span`,null,p(N(t.keyName)?.after),1)])):f(``,!0),v(`span`,{class:x([`zm-jtv-value`,`zm-jtv-${r.value}`])},[N(j(t.value))?(A(),O(D,{key:0},[v(`span`,null,p(N(j(t.value))?.before),1),v(`mark`,null,p(N(j(t.value))?.match),1),v(`span`,null,p(N(j(t.value))?.after),1)],64)):(A(),O(D,{key:1},[o(p(j(t.value)),1)],64))],2),M(t.value)?(A(),O(`span`,{key:1,class:`zm-jtv-thumb-wrap`,onClick:m[1]||=y(()=>{},[`stop`])},[v(`img`,{class:`zm-jtv-thumb`,src:String(t.value),alt:t.keyName,loading:`lazy`,referrerpolicy:`no-referrer`},null,8,un),v(`a`,{class:`zm-jtv-thumb-link`,href:String(t.value),target:`_blank`,rel:`noopener noreferrer`,onClick:m[0]||=y(()=>{},[`stop`])},`open`,8,dn)])):f(``,!0)],4))}}}),pn={class:`zm-data-panel`},mn={class:`zm-data-header`},hn={class:`zm-data-title`},gn={class:`zm-data-title-meta`},_n={class:`zm-data-toolbar`},vn=[`title`],yn={key:0,width:`13`,height:`13`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},bn={key:1,width:`13`,height:`13`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.4`,"stroke-linecap":`round`,"stroke-linejoin":`round`},xn={key:0,class:`zm-data-paste`},Sn={class:`zm-data-tabs`},Cn=[`placeholder`],wn={key:0,class:`zm-data-error`},Tn={class:`zm-data-paste-actions`},En=[`disabled`],Dn={class:`zm-data-tree`},On=s({__name:`DataPanel`,props:{data:{},pendingMode:{default:null}},emits:[`import`,`consumed-mode`],setup(t,{emit:n}){let i=t,a=n,s=b(()=>JSON.stringify(i.data,null,2)),c=T(``),l=T(null),u=T(!1),m=T(`json`),h=T(`idle`),g=T(new Set),_=T(``);r(()=>i.pendingMode,e=>{e&&(u.value=!0,m.value=e,a(`consumed-mode`))},{immediate:!0});async function y(){try{await navigator.clipboard.writeText(s.value),h.value=`copied`,setTimeout(()=>h.value=`idle`,1500)}catch{let e=document.createElement(`textarea`);e.value=s.value,document.body.appendChild(e),e.select();try{document.execCommand(`copy`),h.value=`copied`,setTimeout(()=>h.value=`idle`,1500)}finally{document.body.removeChild(e)}}}function C(){let e=new Blob([s.value],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`${i.data.text||`mindmap`}.json`,n.click(),URL.revokeObjectURL(t)}function w(){l.value=null;let e=c.value.trim();if(e){if(m.value===`markdown`||m.value===`txt`){try{let t=Ze(e);a(`import`,t),c.value=``,u.value=!1}catch(e){l.value=(m.value===`txt`?`TXT 解析失败:`:`Markdown 解析失败:`)+e.message}return}try{let t=JSON.parse(e);if(!t.id||!Array.isArray(t.children)){l.value=`JSON 缺少 id 或 children 字段`;return}a(`import`,t),c.value=``,u.value=!1}catch(e){l.value=`JSON 解析失败:`+e.message}}}function E(e){return 1+e.children.reduce((e,t)=>e+E(t),0)}let D=b(()=>E(i.data)),j=b(()=>s.value.length);function M(){let e=document.createElement(`input`);e.type=`file`,e.accept=`application/json`,e.onchange=()=>{let t=e.files?.[0];if(!t)return;let n=new FileReader;n.onload=()=>{typeof n.result==`string`&&(c.value=n.result,w())},n.readAsText(t)},e.click()}return(n,r)=>(A(),O(`div`,pn,[v(`div`,mn,[v(`div`,hn,[r[8]||=v(`span`,{class:`zm-data-title-text`},`数据 JSON`,-1),v(`span`,gn,p(D.value)+` 节点 · `+p(j.value)+` chars`,1)])]),v(`div`,_n,[v(`button`,{class:x([`zm-data-btn is-icon`,{"is-success":h.value===`copied`}]),title:h.value===`copied`?`已复制`:`复制 JSON 到剪贴板`,onClick:y},[h.value===`idle`?(A(),O(`svg`,yn,[...r[9]||=[v(`rect`,{x:`9`,y:`9`,width:`13`,height:`13`,rx:`2`},null,-1),v(`path`,{d:`M5 15 H4 a2 2 0 0 1 -2 -2 V4 a2 2 0 0 1 2 -2 h9 a2 2 0 0 1 2 2 v1`},null,-1)]])):(A(),O(`svg`,bn,[...r[10]||=[v(`polyline`,{points:`5 12 10 17 19 7`},null,-1)]])),r[11]||=v(`span`,{class:`zm-data-btn-label`},`复制`,-1)],10,vn),v(`button`,{class:`zm-data-btn is-icon`,title:`导出为 JSON 文件`,onClick:C},[...r[12]||=[k(`<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 4 V15"></path><polyline points="7 9 12 4 17 9"></polyline><path d="M4 19 H20"></path></svg><span class="zm-data-btn-label">导出</span>`,2)]]),v(`button`,{class:`zm-data-btn is-icon`,title:`从 JSON 文件导入`,onClick:M},[...r[13]||=[k(`<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 15 V4"></path><polyline points="7 9 12 4 17 9"></polyline><path d="M4 19 H20"></path></svg><span class="zm-data-btn-label">导入</span>`,2)]]),v(`button`,{class:x([`zm-data-btn is-icon`,{"is-active":u.value}]),title:`粘贴 JSON 或 Markdown 替换当前数据`,onClick:r[0]||=e=>u.value=!u.value},[...r[14]||=[k(`<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 4 H15 V8 H9 Z"></path><path d="M9 8 H4 V20 H9"></path><path d="M15 8 H20 V20 H15"></path></svg><span class="zm-data-btn-label">粘贴</span>`,2)]],2),r[16]||=v(`div`,{class:`zm-data-toolbar-spacer`},null,-1),v(`div`,{class:x([`zm-data-search`,{"is-active":_.value.length>0}])},[r[15]||=v(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[v(`circle`,{cx:`11`,cy:`11`,r:`7`}),v(`line`,{x1:`20`,y1:`20`,x2:`16`,y2:`16`})],-1),d(v(`input`,{"onUpdate:modelValue":r[1]||=e=>_.value=e,type:`text`,placeholder:`过滤 (键 / 值)`,spellcheck:`false`},null,512),[[S,_.value]]),_.value?(A(),O(`button`,{key:0,class:`zm-data-search-clear`,title:`清空过滤`,onClick:r[2]||=e=>_.value=``},`×`)):f(``,!0)],2)]),u.value?(A(),O(`div`,xn,[v(`div`,Sn,[v(`button`,{class:x([`zm-data-tab`,{"is-active":m.value===`json`}]),onClick:r[3]||=e=>m.value=`json`},`JSON`,2),v(`button`,{class:x([`zm-data-tab`,{"is-active":m.value===`markdown`}]),onClick:r[4]||=e=>m.value=`markdown`},`Markdown`,2)]),d(v(`textarea`,{"onUpdate:modelValue":r[5]||=e=>c.value=e,placeholder:m.value===`json`?`paste a JSON tree to replace current data`:`paste markdown - # / ## / ### become nodes`,spellcheck:`false`},null,8,Cn),[[S,c.value]]),l.value?(A(),O(`div`,wn,p(l.value),1)):f(``,!0),v(`div`,Tn,[v(`button`,{class:`zm-data-btn is-primary`,disabled:!c.value,onClick:w},`应用`,8,En),v(`button`,{class:`zm-data-btn`,onClick:r[6]||=e=>{c.value=``,l.value=null}},`清空`),v(`button`,{class:`zm-data-btn`,onClick:r[7]||=e=>u.value=!1},`关闭`)])])):f(``,!0),v(`div`,Dn,[e(fn,{value:t.data,query:_.value,"collapsed-paths":g.value},null,8,[`value`,`query`,`collapsed-paths`])]),r[17]||=v(`div`,{class:`zm-data-footer`},[v(`span`,{class:`zm-data-footer-hint`},[o(` 图片支持 `),v(`code`,null,`data:image/...`),o(` / `),v(`code`,null,`https://...`),o(` / `),v(`code`,null,`/imgs/foo.png`),o(` (同源)。本地 `),v(`code`,null,`file://`),o(` 路径被浏览器拒绝。 `)])],-1)]))}}),kn={class:`zm-md-panel`},An={key:0,class:`zm-md-error`},Y={class:`zm-md-split`},jn={class:`zm-md-edit`},Mn={class:`zm-md-preview`},Nn={class:`zm-md-preview-body`},Pn={class:`zm-md-footer`},Fn=[`disabled`],In=`# flow-mindmap 思维导图
|
|
16
16
|
|
|
17
17
|
[GitHub 仓库](https://github.com/xz333221/flow-mindmap)
|
|
18
18
|
|
|
@@ -51,10 +51,10 @@ import{Cn as e,Fn as t,Hn as n,Jn as r,Ln as i,Mn as a,Sn as o,Tn as s,Un as c,V
|
|
|
51
51
|
|
|
52
52
|
## 开源协议
|
|
53
53
|
[Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0)
|
|
54
|
-
`,Ln=s({__name:`MarkdownPanel`,props:{data:{}},emits:[`import`],setup(t,{emit:n}){let i=t,o=n,s=T(Qe(i.data)),c=T(null),l=T(null),u=b(()=>{try{let e=Ze(s.value||``);return c.value=null,e}catch(e){return c.value=e.message,{id:`preview_fallback`,text:s.value||`(空)`,children:[]}}}),m=b(()=>ze(u.value)),h=null;r(s,()=>{h&&clearTimeout(h),h=setTimeout(()=>l.value?.resetView(),250)});function g(){try{let e=Ze(s.value||``);c.value=null,o(`import`,e)}catch(e){c.value=e.message}}function _(){s.value=Qe(i.data),c.value=null,a(()=>l.value?.resetView())}function y(){s.value=``,c.value=null,a(()=>l.value?.resetView())}function x(){let e=document.createElement(`input`);e.type=`file`,e.accept=`.md,text/markdown,text/plain`,e.onchange=()=>{let t=e.files?.[0];if(!t)return;let n=new FileReader;n.onload=()=>{typeof n.result==`string`&&(s.value=n.result,c.value=null,a(()=>l.value?.resetView()))},n.readAsText(t)},e.click()}function C(){let e=new Blob([s.value],{type:`text/markdown;charset=utf-8`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`${(i.data.text||`mindmap`).trim()||`mindmap`}.md`,n.click(),URL.revokeObjectURL(t)}function w(){s.value=In,c.value=null,a(()=>l.value?.resetView())}return(t,n)=>(A(),O(`div`,kn,[v(`div`,{class:`zm-md-toolbar`},[v(`button`,{class:`zm-md-btn`,title:`从 .md 文件加载`,onClick:x},[...n[1]||=[v(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[v(`path`,{d:`M12 4 V15`}),v(`polyline`,{points:`7 9 12 4 17 9`}),v(`path`,{d:`M4 19 H20`})],-1),v(`span`,null,`加载 .md`,-1)]]),v(`button`,{class:`zm-md-btn`,title:`把当前导图导出为 .md`,onClick:C},[...n[2]||=[v(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[v(`path`,{d:`M12 15 V4`}),v(`polyline`,{points:`7 9 12 4 17 9`}),v(`path`,{d:`M4 19 H20`})],-1),v(`span`,null,`导出 .md`,-1)]]),n[3]||=v(`span`,{class:`zm-md-spacer`},null,-1),v(`button`,{class:`zm-md-btn`,title:`用示例内容填充`,onClick:w},`示例`),v(`button`,{class:`zm-md-btn`,title:`覆盖为当前导图`,onClick:_},`同步`),v(`button`,{class:`zm-md-btn`,title:`清空`,onClick:y},`清空`)]),c.value?(A(),O(`div`,An,p(c.value),1)):f(``,!0),v(`div`,Y,[v(`div`,jn,[n[4]||=v(`div`,{class:`zm-md-pane-header`},[v(`span`,null,`Markdown`),v(`span`,{class:`zm-md-hint`},`# 根 · ## 一级 · ### 二级 …`)],-1),d(v(`textarea`,{"onUpdate:modelValue":n[0]||=e=>s.value=e,class:`zm-md-textarea`,spellcheck:`false`,placeholder:`# 标题…`},null,512),[[S,s.value]])]),v(`div`,Mn,[n[5]||=v(`div`,{class:`zm-md-pane-header`},[v(`span`,null,`导图预览`),v(`span`,{class:`zm-md-hint`},`只读`)],-1),v(`div`,Nn,[e(Zu,{ref_key:`previewRef`,ref:l,data:m.value,readonly:``,"preview-mode":``},null,8,[`data`])])])]),v(`div`,Pn,[v(`button`,{class:`zm-md-btn is-primary`,disabled:!s.value.trim(),onClick:g},`应用到导图`,8,Fn)])]))}}),Rn={class:`zm-settings-panel`},zn={class:`zm-settings-section`},Bn={class:`zm-settings-field`},Vn={class:`zm-settings-control`},Hn={class:`zm-color-input-wrap`},Un=[`value`],Wn={class:`zm-color-input-text`},Gn={class:`zm-swatch-row zm-swatch-row--compact`},Kn=[`title`,`onClick`],qn={class:`zm-settings-field`},Jn=[`value`],Yn={class:`zm-slider`},Xn=[`value`],Zn={class:`zm-settings-field`},Qn=[`value`],$n={class:`zm-slider`},er=[`value`],tr={class:`zm-settings-field`},nr={class:`zm-line-style-group`},rr=[`title`,`onClick`],ir=[`viewBox`],ar={key:0,d:`M 0 12 Q 14 2, 28 12`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`},or={key:1,d:`M 0 10 L 12 10 Q 16 10 16 6 L 16 4 L 28 4`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},sr={key:2,d:`M 0 10 L 16 10 L 16 4 L 28 4`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},cr={key:3,d:`M 0 12 C 8 0, 20 0, 28 12`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`},lr={key:4,x1:`0`,y1:`12`,x2:`28`,y2:`12`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`},ur={class:`zm-line-style-label`},dr={class:`zm-settings-field`},fr={class:`zm-line-style-group`},pr=[`title`,`onClick`],mr=[`viewBox`],hr={key:0,d:`M 0 12 Q 14 2, 28 12`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`},gr={key:1,d:`M 0 10 L 12 10 Q 16 10 16 6 L 16 4 L 28 4`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},_r={key:2,d:`M 0 10 L 16 10 L 16 4 L 28 4`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},vr={key:3,d:`M 0 12 C 8 0, 20 0, 28 12`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`},yr={key:4,x1:`0`,y1:`12`,x2:`28`,y2:`12`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`},br={class:`zm-line-style-label`},xr={key:0,class:`zm-settings-field`},Sr={class:`zm-settings-label`},Cr={class:`zm-settings-sub`},wr=[`value`],Tr={key:1,class:`zm-slider`},Er=[`value`],Dr={class:`zm-settings-field`},Or={class:`zm-line-style-group`},kr=[`title`,`onClick`],Ar={viewBox:`0 0 28 18`,width:`28`,height:`18`,preserveAspectRatio:`none`},jr={key:0,d:`M 8 9 L 0 9 M 20 9 L 28 9`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`},Mr={key:1,d:`M 14 9 L 0 9 M 14 9 L 28 9`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`},Nr={key:2,d:`M 8 7 L 0 4 M 8 9 L 0 9 M 8 11 L 0 14 M 20 7 L 28 4 M 20 9 L 28 9 M 20 11 L 28 14`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`},Pr={class:`zm-line-style-label`},Fr={class:`zm-settings-field`},Ir={key:2,class:`zm-palette-picker`},Lr={class:`zm-palette-list`},Rr=[`onClick`],zr={class:`zm-palette-option-name`},Br={class:`zm-palette-option-swatches`},Vr={key:0,class:`zm-palette-custom-editor`},Hr=[`value`],Ur={class:`zm-palette-custom-actions`},Wr={class:`zm-settings-field`},Gr={key:3,class:`zm-settings-field`},Kr={class:`zm-settings-label`},qr={class:`zm-settings-sub`},Jr=[`value`],Yr={key:4,class:`zm-slider`},Xr=[`value`],Zr={class:`zm-settings-field`},Qr={class:`zm-settings-preview`},$r={viewBox:`0 0 200 70`,width:`100%`,height:`70`,preserveAspectRatio:`none`},ei=[`x1`,`y1`,`x2`,`y2`,`stroke`,`stroke-width`],ti={key:0,class:`zm-settings-section`},ni={class:`zm-settings-section-title`},ri={key:0,class:`zm-settings-section-sub`},ii={class:`zm-settings-field`},ai={class:`zm-settings-value-tag`},oi={class:`zm-swatch-row`},si=[`title`,`onClick`],ci={class:`zm-swatch zm-swatch--custom`,title:`自定义颜色`},li=[`value`],ui={class:`zm-settings-field`},di={class:`zm-settings-value-tag`},fi={class:`zm-swatch-row`},pi=[`title`,`onClick`],mi={class:`zm-swatch zm-swatch--custom`,title:`自定义颜色`},hi=[`value`],gi={class:`zm-settings-field`},_i=[`value`],vi=[`value`],yi={class:`zm-settings-field`},bi=[`value`],xi={class:`zm-slider`},Si=[`value`],Ci={class:`zm-settings-section zm-settings-section--actions`},wi=((e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n})(s({__name:`SettingsPanel`,props:{settings:{},hasSelection:{type:Boolean},selectedNodeText:{},nodeStyle:{}},emits:[`update:settings`,`update:nodeStyle`,`reset`],setup(e,{emit:t}){let n=e,r=t;function i(e,t){r(`update:settings`,{[e]:t})}let a=[{value:`arc`,label:`圆弧`,viewBox:`0 0 28 14`},{value:`rounded-elbow`,label:`圆角折线`,viewBox:`0 0 28 14`},{value:`elbow`,label:`折线`,viewBox:`0 0 28 14`},{value:`straight`,label:`直线`,viewBox:`0 0 28 14`},{value:`curve`,label:`S曲线`,viewBox:`0 0 28 14`}],s=a,c=[{value:`edge`,label:`左右中点`},{value:`center`,label:`节点正中心`},{value:`proportional`,label:`按比例计算`}],u=[{value:100,label:`100`},{value:200,label:`200`},{value:300,label:`300`},{value:400,label:`400 (常规)`},{value:500,label:`500`},{value:600,label:`600 (半粗)`},{value:700,label:`700 (粗体)`},{value:800,label:`800`},{value:900,label:`900`}];function d(e){r(`update:nodeStyle`,e)}let h=b(()=>[...Me,...n.settings.customPalettes]),g=m({});function y(e){return g[e.id]===void 0&&(g[e.id]=e.colors.join(`
|
|
54
|
+
`,Ln=s({__name:`MarkdownPanel`,props:{data:{}},emits:[`import`],setup(t,{emit:n}){let i=t,o=n,s=T(Qe(i.data)),c=T(null),l=T(null),u=b(()=>{try{let e=Ze(s.value||``);return c.value=null,e}catch(e){return c.value=e.message,{id:`preview_fallback`,text:s.value||`(空)`,children:[]}}}),m=b(()=>ze(u.value)),h=null;r(s,()=>{h&&clearTimeout(h),h=setTimeout(()=>l.value?.resetView(),250)});function g(){try{let e=Ze(s.value||``);c.value=null,o(`import`,e)}catch(e){c.value=e.message}}function _(){s.value=Qe(i.data),c.value=null,a(()=>l.value?.resetView())}function y(){s.value=``,c.value=null,a(()=>l.value?.resetView())}function x(){let e=document.createElement(`input`);e.type=`file`,e.accept=`.md,text/markdown,text/plain`,e.onchange=()=>{let t=e.files?.[0];if(!t)return;let n=new FileReader;n.onload=()=>{typeof n.result==`string`&&(s.value=n.result,c.value=null,a(()=>l.value?.resetView()))},n.readAsText(t)},e.click()}function C(){let e=new Blob([s.value],{type:`text/markdown;charset=utf-8`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`${(i.data.text||`mindmap`).trim()||`mindmap`}.md`,n.click(),URL.revokeObjectURL(t)}function w(){s.value=In,c.value=null,a(()=>l.value?.resetView())}return(t,n)=>(A(),O(`div`,kn,[v(`div`,{class:`zm-md-toolbar`},[v(`button`,{class:`zm-md-btn`,title:`从 .md 文件加载`,onClick:x},[...n[1]||=[v(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[v(`path`,{d:`M12 4 V15`}),v(`polyline`,{points:`7 9 12 4 17 9`}),v(`path`,{d:`M4 19 H20`})],-1),v(`span`,null,`加载 .md`,-1)]]),v(`button`,{class:`zm-md-btn`,title:`把当前导图导出为 .md`,onClick:C},[...n[2]||=[v(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[v(`path`,{d:`M12 15 V4`}),v(`polyline`,{points:`7 9 12 4 17 9`}),v(`path`,{d:`M4 19 H20`})],-1),v(`span`,null,`导出 .md`,-1)]]),n[3]||=v(`span`,{class:`zm-md-spacer`},null,-1),v(`button`,{class:`zm-md-btn`,title:`用示例内容填充`,onClick:w},`示例`),v(`button`,{class:`zm-md-btn`,title:`覆盖为当前导图`,onClick:_},`同步`),v(`button`,{class:`zm-md-btn`,title:`清空`,onClick:y},`清空`)]),c.value?(A(),O(`div`,An,p(c.value),1)):f(``,!0),v(`div`,Y,[v(`div`,jn,[n[4]||=v(`div`,{class:`zm-md-pane-header`},[v(`span`,null,`Markdown`),v(`span`,{class:`zm-md-hint`},`# 根 · ## 一级 · ### 二级 …`)],-1),d(v(`textarea`,{"onUpdate:modelValue":n[0]||=e=>s.value=e,class:`zm-md-textarea`,spellcheck:`false`,placeholder:`# 标题…`},null,512),[[S,s.value]])]),v(`div`,Mn,[n[5]||=v(`div`,{class:`zm-md-pane-header`},[v(`span`,null,`导图预览`),v(`span`,{class:`zm-md-hint`},`只读`)],-1),v(`div`,Nn,[e(Zu,{ref_key:`previewRef`,ref:l,data:m.value,readonly:``,"preview-mode":``},null,8,[`data`])])])]),v(`div`,Pn,[v(`button`,{class:`zm-md-btn is-primary`,disabled:!s.value.trim(),onClick:g},`应用到导图`,8,Fn)])]))}}),Rn={class:`zm-settings-panel`},zn={class:`zm-settings-section`},Bn={class:`zm-settings-field`},Vn={class:`zm-settings-control`},Hn={class:`zm-color-input-wrap`},Un=[`value`],Wn={class:`zm-color-input-text`},Gn={class:`zm-swatch-row zm-swatch-row--compact`},Kn=[`title`,`onClick`],qn={class:`zm-settings-field`},Jn=[`value`],Yn={class:`zm-slider`},Xn=[`value`],Zn={class:`zm-settings-field`},Qn=[`value`],$n={class:`zm-slider`},er=[`value`],tr={class:`zm-settings-field zm-line-style-field`},nr={class:`zm-line-style-group`},rr=[`title`,`onClick`],ir=[`viewBox`],ar={key:0,d:`M 0 12 Q 14 2, 28 12`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`},or={key:1,d:`M 0 10 L 12 10 Q 16 10 16 6 L 16 4 L 28 4`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},sr={key:2,d:`M 0 10 L 16 10 L 16 4 L 28 4`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},cr={key:3,d:`M 0 12 C 8 0, 20 0, 28 12`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`},lr={key:4,x1:`0`,y1:`12`,x2:`28`,y2:`12`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`},ur={class:`zm-line-style-label`},dr={class:`zm-settings-field zm-line-style-field`},fr={class:`zm-line-style-group`},pr=[`title`,`onClick`],mr=[`viewBox`],hr={key:0,d:`M 0 12 Q 14 2, 28 12`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`},gr={key:1,d:`M 0 10 L 12 10 Q 16 10 16 6 L 16 4 L 28 4`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},_r={key:2,d:`M 0 10 L 16 10 L 16 4 L 28 4`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},vr={key:3,d:`M 0 12 C 8 0, 20 0, 28 12`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`},yr={key:4,x1:`0`,y1:`12`,x2:`28`,y2:`12`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`},br={class:`zm-line-style-label`},xr={key:0,class:`zm-settings-field`},Sr={class:`zm-settings-label`},Cr={class:`zm-settings-sub`},wr=[`value`],Tr={key:1,class:`zm-slider`},Er=[`value`],Dr={class:`zm-settings-field zm-line-style-field`},Or={class:`zm-line-style-group`},kr=[`title`,`onClick`],Ar={viewBox:`0 0 28 18`,width:`28`,height:`18`,preserveAspectRatio:`none`},jr={key:0,d:`M 8 9 L 0 9 M 20 9 L 28 9`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`},Mr={key:1,d:`M 14 9 L 0 9 M 14 9 L 28 9`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`},Nr={key:2,d:`M 8 7 L 0 4 M 8 9 L 0 9 M 8 11 L 0 14 M 20 7 L 28 4 M 20 9 L 28 9 M 20 11 L 28 14`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`},Pr={class:`zm-line-style-label`},Fr={class:`zm-settings-field`},Ir={key:2,class:`zm-palette-picker`},Lr={class:`zm-palette-list`},Rr=[`onClick`],zr={class:`zm-palette-option-name`},Br={class:`zm-palette-option-swatches`},Vr={key:0,class:`zm-palette-custom-editor`},Hr=[`value`],Ur={class:`zm-palette-custom-actions`},Wr={class:`zm-settings-field`},Gr={key:3,class:`zm-settings-field`},Kr={class:`zm-settings-label`},qr={class:`zm-settings-sub`},Jr=[`value`],Yr={key:4,class:`zm-slider`},Xr=[`value`],Zr={class:`zm-settings-field`},Qr={class:`zm-settings-preview`},$r={viewBox:`0 0 200 70`,width:`100%`,height:`70`,preserveAspectRatio:`none`},ei=[`x1`,`y1`,`x2`,`y2`,`stroke`,`stroke-width`],ti={key:0,class:`zm-settings-section`},ni={class:`zm-settings-section-title`},ri={key:0,class:`zm-settings-section-sub`},ii={class:`zm-settings-field`},ai={class:`zm-settings-value-tag`},oi={class:`zm-swatch-row`},si=[`title`,`onClick`],ci={class:`zm-swatch zm-swatch--custom`,title:`自定义颜色`},li=[`value`],ui={class:`zm-settings-field`},di={class:`zm-settings-value-tag`},fi={class:`zm-swatch-row`},pi=[`title`,`onClick`],mi={class:`zm-swatch zm-swatch--custom`,title:`自定义颜色`},hi=[`value`],gi={class:`zm-settings-field`},_i=[`value`],vi=[`value`],yi={class:`zm-settings-field`},bi=[`value`],xi={class:`zm-slider`},Si=[`value`],Ci={class:`zm-settings-section zm-settings-section--actions`},wi=((e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n})(s({__name:`SettingsPanel`,props:{settings:{},hasSelection:{type:Boolean},selectedNodeText:{},nodeStyle:{}},emits:[`update:settings`,`update:nodeStyle`,`reset`],setup(e,{emit:t}){let n=e,r=t;function i(e,t){r(`update:settings`,{[e]:t})}let a=[{value:`arc`,label:`圆弧`,viewBox:`0 0 28 14`},{value:`rounded-elbow`,label:`圆角折线`,viewBox:`0 0 28 14`},{value:`elbow`,label:`折线`,viewBox:`0 0 28 14`},{value:`straight`,label:`直线`,viewBox:`0 0 28 14`},{value:`curve`,label:`S曲线`,viewBox:`0 0 28 14`}],s=a,c=[{value:`edge`,label:`左右中点`},{value:`center`,label:`节点正中心`},{value:`proportional`,label:`按比例计算`}],u=[{value:100,label:`100`},{value:200,label:`200`},{value:300,label:`300`},{value:400,label:`400 (常规)`},{value:500,label:`500`},{value:600,label:`600 (半粗)`},{value:700,label:`700 (粗体)`},{value:800,label:`800`},{value:900,label:`900`}];function d(e){r(`update:nodeStyle`,e)}let h=b(()=>[...Me,...n.settings.customPalettes]),g=m({});function y(e){return g[e.id]===void 0&&(g[e.id]=e.colors.join(`
|
|
55
55
|
`)),g[e.id]}function S(e){let t=Pe(g[e.id]??``);if(t.length===0){g[e.id]=e.colors.join(`
|
|
56
56
|
`);return}let i=n.settings.customPalettes.map(n=>n.id===e.id?{...n,colors:t}:n);r(`update:settings`,{customPalettes:i})}function w(){let e=h.value.find(e=>e.id===n.settings.branchPaletteId),t=e?[...e.colors]:[...Me[0].colors],i=`custom-`,a=i+(n.settings.customPalettes.length+1);for(;Me.some(e=>e.id===a)||n.settings.customPalettes.some(e=>e.id===a);)a=i+Math.random().toString(36).slice(2,7);let o={id:a,name:`我的配色 ${n.settings.customPalettes.length+1}`,colors:t};r(`update:settings`,{customPalettes:[...n.settings.customPalettes,o],branchPaletteId:a}),g[a]=t.join(`
|
|
57
|
-
`)}function T(e){let t=n.settings.customPalettes.filter(t=>t.id!==e.id),i=n.settings.branchPaletteId===e.id?`default`:n.settings.branchPaletteId;r(`update:settings`,{customPalettes:t,...i===n.settings.branchPaletteId?{}:{branchPaletteId:i}}),delete g[e.id]}let E=[`#f87171`,`#fb923c`,`#fbbf24`,`#a3e635`,`#34d399`,`#22d3ee`,`#818cf8`,`#c084fc`,`#1e2937`,`#f8fafc`,`#94a3b8`],k=[`#f8fafc`,`#ffffff`,`#e2e8f0`,`#1e2937`,`#0f172a`,`#fef3c7`,`#dbeafe`,`#dcfce7`,`#fce7f3`,`#f1f5f9`],j=[0,1,2,3],M=[`#f87171`,`#fb923c`,`#34d399`,`#818cf8`];function N(e,t,n,r){if(t<=1)return n;let i=e/(t-1);return n+(r-n)*i}function P(e,t,n,r){let i=t*r**+e;return Math.max(n,i)}let ee=b(()=>{let e=n.settings.lineWidthStart,t=n.settings.lineWidthEnd,r=n.settings.taperedEdge,i=j.length,a=h.value.find(e=>e.id===n.settings.branchPaletteId),o=a&&a.colors.length?a.colors:M;return j.map((a,s)=>{let c=10+s*60/(i-1);return{x1:8,y1:c,x2:192,y2:c,w:r?P(a,e,t,n.settings.lineWidthTaper):N(a,i,e,t),color:n.settings.rainbowBranch?o[s%o.length]:`#94a3b8`}})});return(t,n)=>(A(),O(`div`,Rn,[v(`section`,zn,[n[45]||=v(`h4`,{class:`zm-settings-section-title`},`画布`,-1),v(`div`,Bn,[n[24]||=v(`span`,{class:`zm-settings-label`},`画布背景色`,-1),v(`div`,Vn,[v(`label`,Hn,[v(`input`,{type:`color`,class:`zm-color-input`,value:e.settings.canvasBg||`#f8fafc`,onInput:n[0]||=e=>i(`canvasBg`,e.target.value)},null,40,Un),v(`span`,Wn,p(e.settings.canvasBg||`默认`),1)])])]),v(`div`,Gn,[(A(),O(D,null,l(k,t=>v(`button`,{key:`cbg-`+t,class:x([`zm-swatch`,{"is-active":(e.settings.canvasBg||`#f8fafc`)===t}]),style:_({background:t}),title:t,onClick:e=>i(`canvasBg`,t)},null,14,Kn)),64)),v(`button`,{class:`zm-swatch is-reset`,title:`恢复默认`,onClick:n[1]||=e=>i(`canvasBg`,void 0)},`∅`)]),n[46]||=v(`div`,{class:`zm-settings-divider`},null,-1),v(`div`,qn,[n[25]||=v(`span`,{class:`zm-settings-label`},`线条粗端 (根部)`,-1),v(`input`,{class:`zm-settings-number`,type:`number`,step:`0.2`,value:e.settings.lineWidthStart,onChange:n[2]||=e=>i(`lineWidthStart`,parseFloat(e.target.value)||0)},null,40,Jn)]),v(`div`,Yn,[n[26]||=v(`div`,{class:`zm-slider-track`},null,-1),v(`input`,{type:`range`,min:`0.4`,max:`20`,step:`0.2`,value:e.settings.lineWidthStart,onInput:n[3]||=e=>i(`lineWidthStart`,parseFloat(e.target.value))},null,40,Xn)]),v(`div`,Zn,[n[27]||=v(`span`,{class:`zm-settings-label`},`线条细端 (子端)`,-1),v(`input`,{class:`zm-settings-number`,type:`number`,step:`0.2`,value:e.settings.lineWidthEnd,onChange:n[4]||=e=>i(`lineWidthEnd`,parseFloat(e.target.value)||0)},null,40,Qn)]),v(`div`,$n,[n[28]||=v(`div`,{class:`zm-slider-track`},null,-1),v(`input`,{type:`range`,min:`0.2`,max:`6`,step:`0.1`,value:e.settings.lineWidthEnd,onInput:n[5]||=e=>i(`lineWidthEnd`,parseFloat(e.target.value))},null,40,er)]),n[47]||=v(`div`,{class:`zm-settings-divider`},null,-1),v(`div`,tr,[n[29]||=v(`span`,{class:`zm-settings-label`},`根节点线条`,-1),v(`div`,nr,[(A(!0),O(D,null,l(C(s),t=>(A(),O(`button`,{key:t.value,class:x([`zm-line-style-btn`,{"is-on":e.settings.rootLineStyle===t.value}]),title:t.label,onClick:e=>i(`rootLineStyle`,t.value)},[(A(),O(`svg`,{viewBox:t.viewBox,width:`28`,height:`14`,preserveAspectRatio:`none`},[t.value===`arc`?(A(),O(`path`,ar)):t.value===`rounded-elbow`?(A(),O(`path`,or)):t.value===`elbow`?(A(),O(`path`,sr)):t.value===`curve`?(A(),O(`path`,cr)):(A(),O(`line`,lr))],8,ir)),v(`span`,ur,p(t.label),1)],10,rr))),128))])]),v(`div`,dr,[n[30]||=v(`span`,{class:`zm-settings-label`},`其他节点线条`,-1),v(`div`,fr,[(A(),O(D,null,l(a,t=>v(`button`,{key:t.value,class:x([`zm-line-style-btn`,{"is-on":e.settings.lineStyle===t.value}]),title:t.label,onClick:e=>i(`lineStyle`,t.value)},[(A(),O(`svg`,{viewBox:t.viewBox,width:`28`,height:`14`,preserveAspectRatio:`none`},[t.value===`arc`?(A(),O(`path`,hr)):t.value===`rounded-elbow`?(A(),O(`path`,gr)):t.value===`elbow`?(A(),O(`path`,_r)):t.value===`curve`?(A(),O(`path`,vr)):(A(),O(`line`,yr))],8,mr)),v(`span`,br,p(t.label),1)],10,pr)),64))])]),e.settings.lineStyle===`rounded-elbow`||e.settings.rootLineStyle===`rounded-elbow`?(A(),O(`div`,xr,[v(`span`,Sr,[n[31]||=o(`圆角大小 `,-1),v(`span`,Cr,p(e.settings.elbowRadius)+`px`,1)]),v(`input`,{class:`zm-settings-number`,type:`number`,step:`1`,min:`2`,max:`20`,value:e.settings.elbowRadius,onChange:n[6]||=e=>i(`elbowRadius`,parseFloat(e.target.value)||8)},null,40,wr)])):f(``,!0),e.settings.lineStyle===`rounded-elbow`||e.settings.rootLineStyle===`rounded-elbow`?(A(),O(`div`,Tr,[n[32]||=v(`div`,{class:`zm-slider-track`},null,-1),v(`input`,{type:`range`,min:`2`,max:`20`,step:`1`,value:e.settings.elbowRadius,onInput:n[7]||=e=>i(`elbowRadius`,parseFloat(e.target.value))},null,40,Er)])):f(``,!0),v(`div`,Dr,[n[34]||=v(`span`,{class:`zm-settings-label`},`线条起点`,-1),v(`div`,Or,[(A(),O(D,null,l(c,t=>v(`button`,{key:t.value,class:x([`zm-line-style-btn`,{"is-on":e.settings.lineOrigin===t.value}]),title:t.label,onClick:e=>i(`lineOrigin`,t.value)},[(A(),O(`svg`,Ar,[n[33]||=v(`rect`,{x:`8`,y:`6`,width:`12`,height:`6`,rx:`2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.2`,opacity:`0.5`},null,-1),t.value===`edge`?(A(),O(`path`,jr)):t.value===`center`?(A(),O(`path`,Mr)):(A(),O(`path`,Nr))])),v(`span`,Pr,p(t.label),1)],10,kr)),64))])]),v(`div`,Fr,[n[36]||=v(`span`,{class:`zm-settings-label`},`一级分支彩虹色`,-1),v(`button`,{class:x([`zm-toggle`,{"is-on":e.settings.rainbowBranch}]),onClick:n[8]||=t=>i(`rainbowBranch`,!e.settings.rainbowBranch)},[...n[35]||=[v(`span`,{class:`zm-toggle-knob`},null,-1)]],2)]),e.settings.rainbowBranch?(A(),O(`div`,Ir,[n[37]||=v(`div`,{class:`zm-settings-field`},[v(`span`,{class:`zm-settings-label`},`配色方案`)],-1),v(`div`,Lr,[(A(!0),O(D,null,l(h.value,t=>(A(),O(`button`,{key:t.id,class:x([`zm-palette-option`,{"is-active":e.settings.branchPaletteId===t.id}]),onClick:e=>i(`branchPaletteId`,t.id)},[v(`span`,zr,p(t.name),1),v(`span`,Br,[(A(!0),O(D,null,l(t.colors,(e,t)=>(A(),O(`span`,{key:t,class:`zm-palette-option-swatch`,style:_({background:e})},null,4))),128))])],10,Rr))),128))]),e.settings.customPalettes.find(t=>t.id===e.settings.branchPaletteId)?(A(),O(`div`,Vr,[v(`textarea`,{class:`zm-palette-textarea`,rows:`3`,spellcheck:`false`,placeholder:`一行一个 hex,例如 #f87171`,value:y(e.settings.customPalettes.find(t=>t.id===e.settings.branchPaletteId)),onInput:n[9]||=t=>g[e.settings.customPalettes.find(t=>t.id===e.settings.branchPaletteId).id]=t.target.value},null,40,Hr),v(`div`,Ur,[v(`button`,{type:`button`,class:`zm-data-btn is-primary`,onClick:n[10]||=t=>S(e.settings.customPalettes.find(t=>t.id===e.settings.branchPaletteId))},`保存`),v(`button`,{type:`button`,class:`zm-data-btn`,onClick:n[11]||=t=>T(e.settings.customPalettes.find(t=>t.id===e.settings.branchPaletteId))},`删除`)])])):f(``,!0),v(`button`,{type:`button`,class:`zm-palette-add`,onClick:w},`+ 新建配色`)])):f(``,!0),n[48]||=v(`div`,{class:`zm-settings-divider`},null,-1),v(`div`,Wr,[n[39]||=v(`span`,{class:`zm-settings-label`},`每条连线独立渐变`,-1),v(`button`,{class:x([`zm-toggle`,{"is-on":e.settings.taperedEdge}]),onClick:n[12]||=t=>i(`taperedEdge`,!e.settings.taperedEdge)},[...n[38]||=[v(`span`,{class:`zm-toggle-knob`},null,-1)]],2)]),e.settings.taperedEdge?(A(),O(`div`,Gr,[v(`span`,Kr,[n[40]||=o(`层级衰减 `,-1),v(`span`,qr,p(Math.round(e.settings.lineWidthTaper*100))+`%`,1)]),v(`input`,{class:`zm-settings-number`,type:`number`,step:`0.05`,min:`0.3`,max:`1`,value:e.settings.lineWidthTaper,onChange:n[13]||=e=>i(`lineWidthTaper`,parseFloat(e.target.value)||.67)},null,40,Jr)])):f(``,!0),e.settings.taperedEdge?(A(),O(`div`,Yr,[n[41]||=v(`div`,{class:`zm-slider-track`},null,-1),v(`input`,{type:`range`,min:`0.3`,max:`1`,step:`0.01`,value:e.settings.lineWidthTaper,onInput:n[14]||=e=>i(`lineWidthTaper`,parseFloat(e.target.value))},null,40,Xr)])):f(``,!0),v(`div`,Zr,[n[43]||=v(`span`,{class:`zm-settings-label`},`显示节点序号`,-1),v(`button`,{class:x([`zm-toggle`,{"is-on":e.settings.showOrderBadge}]),onClick:n[15]||=t=>i(`showOrderBadge`,!e.settings.showOrderBadge)},[...n[42]||=[v(`span`,{class:`zm-toggle-knob`},null,-1)]],2)]),v(`div`,Qr,[(A(),O(`svg`,$r,[(A(!0),O(D,null,l(ee.value,(t,n)=>(A(),O(`line`,{key:n,x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2,stroke:e.settings.rainbowBranch?t.color:`#94a3b8`,"stroke-width":t.w,"stroke-linecap":`butt`},null,8,ei))),128))])),n[44]||=v(`div`,{class:`zm-settings-preview-labels`},[v(`span`,null,`根`),v(`span`,null,`1级`),v(`span`,null,`2级`),v(`span`,null,`3级`)],-1)])]),e.hasSelection?(A(),O(`section`,ti,[v(`h4`,ni,[n[49]||=o(` 节点 `,-1),e.selectedNodeText?(A(),O(`span`,ri,`"`+p(e.selectedNodeText)+`"`,1)):f(``,!0)]),v(`div`,ii,[n[50]||=v(`span`,{class:`zm-settings-label`},`背景颜色`,-1),v(`span`,ai,p(e.nodeStyle?.bg||`默认`),1)]),v(`div`,oi,[(A(),O(D,null,l(E,t=>v(`button`,{key:`bg-`+t,class:x([`zm-swatch`,{"is-active":e.nodeStyle?.bg===t}]),style:_({background:t}),title:t,onClick:e=>d({bg:t})},null,14,si)),64)),v(`label`,ci,[v(`input`,{type:`color`,value:e.nodeStyle?.bg||`#ffffff`,onInput:n[16]||=e=>d({bg:e.target.value})},null,40,li)]),v(`button`,{class:`zm-swatch is-reset`,title:`清除`,onClick:n[17]||=e=>d({bg:void 0})},`∅`)]),v(`div`,ui,[n[51]||=v(`span`,{class:`zm-settings-label`},`文字颜色`,-1),v(`span`,di,p(e.nodeStyle?.textColor||`默认`),1)]),v(`div`,fi,[(A(),O(D,null,l(E,t=>v(`button`,{key:`fg-`+t,class:x([`zm-swatch`,{"is-active":e.nodeStyle?.textColor===t}]),style:_({background:t}),title:t,onClick:e=>d({textColor:t})},null,14,pi)),64)),v(`label`,mi,[v(`input`,{type:`color`,value:e.nodeStyle?.textColor||`#1e2937`,onInput:n[18]||=e=>d({textColor:e.target.value})},null,40,hi)]),v(`button`,{class:`zm-swatch is-reset`,title:`清除`,onClick:n[19]||=e=>d({textColor:void 0})},`∅`)]),n[55]||=v(`div`,{class:`zm-settings-divider`},null,-1),v(`div`,gi,[n[52]||=v(`span`,{class:`zm-settings-label`},`字重`,-1),v(`select`,{class:`zm-select`,value:e.nodeStyle?.fontWeight??400,onChange:n[20]||=e=>d({fontWeight:parseInt(e.target.value)})},[(A(),O(D,null,l(u,e=>v(`option`,{key:e.value,value:e.value},p(e.label),9,vi)),64))],40,_i)]),v(`div`,yi,[n[53]||=v(`span`,{class:`zm-settings-label`},`文字大小`,-1),v(`input`,{class:`zm-settings-number`,type:`number`,step:`1`,min:`8`,max:`48`,value:e.nodeStyle?.fontSize??14,onChange:n[21]||=e=>d({fontSize:parseInt(e.target.value)||14})},null,40,bi)]),v(`div`,xi,[n[54]||=v(`div`,{class:`zm-slider-track`},null,-1),v(`input`,{type:`range`,min:`8`,max:`48`,step:`1`,value:e.nodeStyle?.fontSize??14,onInput:n[22]||=e=>d({fontSize:parseInt(e.target.value)})},null,40,Si)]),n[56]||=v(`p`,{class:`zm-settings-hint`},`仅作用于当前节点,不影响子节点。`,-1)])):f(``,!0),v(`section`,Ci,[v(`button`,{class:`zm-settings-reset`,onClick:n[23]||=e=>r(`reset`)},`恢复默认设置`)])]))}}),[[`__scopeId`,`data-v-95a22309`]]),Ti=20;function Ei(e,t){e.style.height=`auto`;let n=t.minRows*Ti,r=t.maxRows>0?t.maxRows*Ti:1/0,i=Math.max(n,Math.min(r,e.scrollHeight));e.style.height=i+`px`,e.style.overflowY=e.scrollHeight>r?`auto`:`hidden`}function Di(e,n={}){let o={minRows:n.minRows??3,maxRows:n.maxRows??12};function s(){let t=e.value;t&&Ei(t,o)}function c(){s()}i(async()=>{await a();let t=e.value;t&&(t.addEventListener(`input`,c),s())}),r(()=>e.value?.value,()=>s()),t(()=>{let t=e.value;t&&t.removeEventListener(`input`,c)})}function Oi(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,`default`)?e.default:e}function ki(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw Error(`map is read-only`)}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw Error(`set is read-only`)}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{let n=e[t],r=typeof n;(r===`object`||r===`function`)&&!Object.isFrozen(n)&&ki(n)}),e}var Ai=class{constructor(e){e.data===void 0&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function ji(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function Mi(e,...t){let n=Object.create(null);for(let t in e)n[t]=e[t];return t.forEach(function(e){for(let t in e)n[t]=e[t]}),n}var Ni=`</span>`,Pi=e=>!!e.scope,Fi=(e,{prefix:t})=>{if(e.startsWith(`language:`))return e.replace(`language:`,`language-`);if(e.includes(`.`)){let n=e.split(`.`);return[`${t}${n.shift()}`,...n.map((e,t)=>`${e}${`_`.repeat(t+1)}`)].join(` `)}return`${t}${e}`},Ii=class{constructor(e,t){this.buffer=``,this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=ji(e)}openNode(e){if(!Pi(e))return;let t=Fi(e.scope,{prefix:this.classPrefix});this.span(t)}closeNode(e){Pi(e)&&(this.buffer+=Ni)}value(){return this.buffer}span(e){this.buffer+=`<span class="${e}">`}},Li=(e={})=>{let t={children:[]};return Object.assign(t,e),t},Ri=class e{constructor(){this.rootNode=Li(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){let t=Li({scope:e});this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return typeof t==`string`?e.addText(t):t.children&&(e.openNode(t),t.children.forEach(t=>this._walk(e,t)),e.closeNode(t)),e}static _collapse(t){typeof t!=`string`&&t.children&&(t.children.every(e=>typeof e==`string`)?t.children=[t.children.join(``)]:t.children.forEach(t=>{e._collapse(t)}))}},zi=class extends Ri{constructor(e){super(),this.options=e}addText(e){e!==``&&this.add(e)}startScope(e){this.openNode(e)}endScope(){this.closeNode()}__addSublanguage(e,t){let n=e.root;t&&(n.scope=`language:${t}`),this.add(n)}toHTML(){return new Ii(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}};function Bi(e){return e?typeof e==`string`?e:e.source:null}function Vi(e){return Wi(`(?=`,e,`)`)}function Hi(e){return Wi(`(?:`,e,`)*`)}function Ui(e){return Wi(`(?:`,e,`)?`)}function Wi(...e){return e.map(e=>Bi(e)).join(``)}function Gi(e){let t=e[e.length-1];return typeof t==`object`&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function Ki(...e){return`(`+(Gi(e).capture?``:`?:`)+e.map(e=>Bi(e)).join(`|`)+`)`}function qi(e){return RegExp(e.toString()+`|`).exec(``).length-1}function Ji(e,t){let n=e&&e.exec(t);return n&&n.index===0}var Yi=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function Xi(e,{joinWith:t}){let n=0;return e.map(e=>{n+=1;let t=n,r=Bi(e),i=``;for(;r.length>0;){let e=Yi.exec(r);if(!e){i+=r;break}i+=r.substring(0,e.index),r=r.substring(e.index+e[0].length),e[0][0]===`\\`&&e[1]?i+=`\\`+String(Number(e[1])+t):(i+=e[0],e[0]===`(`&&n++)}return i}).map(e=>`(${e})`).join(t)}var Zi=/\b\B/,Qi=`[a-zA-Z]\\w*`,$i=`[a-zA-Z_]\\w*`,ea=`\\b\\d+(\\.\\d+)?`,ta=`(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)`,na=`\\b(0b[01]+)`,ra=`!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~`,ia=(e={})=>{let t=/^#![ ]*\//;return e.binary&&(e.begin=Wi(t,/.*\b/,e.binary,/\b.*/)),Mi({scope:`meta`,begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{e.index!==0&&t.ignoreMatch()}},e)},aa={begin:`\\\\[\\s\\S]`,relevance:0},oa={scope:`string`,begin:`'`,end:`'`,illegal:`\\n`,contains:[aa]},sa={scope:`string`,begin:`"`,end:`"`,illegal:`\\n`,contains:[aa]},ca={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},la=function(e,t,n={}){let r=Mi({scope:`comment`,begin:e,end:t,contains:[]},n);r.contains.push({scope:`doctag`,begin:`[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)`,end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let i=Ki(`I`,`a`,`is`,`so`,`us`,`to`,`at`,`if`,`in`,`it`,`on`,/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return r.contains.push({begin:Wi(/[ ]+/,`(`,i,/[.]?[:]?([.][ ]|[ ])/,`){3}`)}),r},ua=la(`//`,`$`),da=la(`/\\*`,`\\*/`),fa=la(`#`,`$`),pa=Object.freeze({__proto__:null,APOS_STRING_MODE:oa,BACKSLASH_ESCAPE:aa,BINARY_NUMBER_MODE:{scope:`number`,begin:na,relevance:0},BINARY_NUMBER_RE:na,COMMENT:la,C_BLOCK_COMMENT_MODE:da,C_LINE_COMMENT_MODE:ua,C_NUMBER_MODE:{scope:`number`,begin:ta,relevance:0},C_NUMBER_RE:ta,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})},HASH_COMMENT_MODE:fa,IDENT_RE:Qi,MATCH_NOTHING_RE:Zi,METHOD_GUARD:{begin:`\\.\\s*[a-zA-Z_]\\w*`,relevance:0},NUMBER_MODE:{scope:`number`,begin:ea,relevance:0},NUMBER_RE:ea,PHRASAL_WORDS_MODE:ca,QUOTE_STRING_MODE:sa,REGEXP_MODE:{scope:`regexp`,begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[aa,{begin:/\[/,end:/\]/,relevance:0,contains:[aa]}]},RE_STARTERS_RE:ra,SHEBANG:ia,TITLE_MODE:{scope:`title`,begin:Qi,relevance:0},UNDERSCORE_IDENT_RE:$i,UNDERSCORE_TITLE_MODE:{scope:`title`,begin:$i,relevance:0}});function ma(e,t){e.input[e.index-1]===`.`&&t.ignoreMatch()}function ha(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function ga(e,t){t&&e.beginKeywords&&(e.begin=`\\b(`+e.beginKeywords.split(` `).join(`|`)+`)(?!\\.)(?=\\b|\\s)`,e.__beforeBegin=ma,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function _a(e,t){Array.isArray(e.illegal)&&(e.illegal=Ki(...e.illegal))}function va(e,t){if(e.match){if(e.begin||e.end)throw Error(`begin & end are not supported with match`);e.begin=e.match,delete e.match}}function ya(e,t){e.relevance===void 0&&(e.relevance=1)}var ba=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw Error(`beforeMatch cannot be used with starts`);let n=Object.assign({},e);Object.keys(e).forEach(t=>{delete e[t]}),e.keywords=n.keywords,e.begin=Wi(n.beforeMatch,Vi(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},xa=[`of`,`and`,`for`,`in`,`not`,`or`,`if`,`then`,`parent`,`list`,`value`],Sa=`keyword`;function Ca(e,t,n=Sa){let r=Object.create(null);return typeof e==`string`?i(n,e.split(` `)):Array.isArray(e)?i(n,e):Object.keys(e).forEach(function(n){Object.assign(r,Ca(e[n],t,n))}),r;function i(e,n){t&&(n=n.map(e=>e.toLowerCase())),n.forEach(function(t){let n=t.split(`|`);r[n[0]]=[e,wa(n[0],n[1])]})}}function wa(e,t){return t?Number(t):+!Ta(e)}function Ta(e){return xa.includes(e.toLowerCase())}var Ea={},Da=e=>{console.error(e)},Oa=(e,...t)=>{console.log(`WARN: ${e}`,...t)},ka=(e,t)=>{Ea[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),Ea[`${e}/${t}`]=!0)},Aa=Error();function ja(e,t,{key:n}){let r=0,i=e[n],a={},o={};for(let e=1;e<=t.length;e++)o[e+r]=i[e],a[e+r]=!0,r+=qi(t[e-1]);e[n]=o,e[n]._emit=a,e[n]._multi=!0}function Ma(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw Da(`skip, excludeBegin, returnBegin not compatible with beginScope: {}`),Aa;if(typeof e.beginScope!=`object`||e.beginScope===null)throw Da(`beginScope must be object`),Aa;ja(e,e.begin,{key:`beginScope`}),e.begin=Xi(e.begin,{joinWith:``})}}function Na(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw Da(`skip, excludeEnd, returnEnd not compatible with endScope: {}`),Aa;if(typeof e.endScope!=`object`||e.endScope===null)throw Da(`endScope must be object`),Aa;ja(e,e.end,{key:`endScope`}),e.end=Xi(e.end,{joinWith:``})}}function Pa(e){e.scope&&typeof e.scope==`object`&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function Fa(e){Pa(e),typeof e.beginScope==`string`&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope==`string`&&(e.endScope={_wrap:e.endScope}),Ma(e),Na(e)}function Ia(e){function t(t,n){return new RegExp(Bi(t),`m`+(e.case_insensitive?`i`:``)+(e.unicodeRegex?`u`:``)+(n?`g`:``))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=qi(e)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);let e=this.regexes.map(e=>e[1]);this.matcherRe=t(Xi(e,{joinWith:`|`}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;let t=this.matcherRe.exec(e);if(!t)return null;let n=t.findIndex((e,t)=>t>0&&e!==void 0),r=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,r)}}class r{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];let t=new n;return this.rules.slice(e).forEach(([e,n])=>t.addRule(e,n)),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),t.type===`begin`&&this.count++}exec(e){let t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let n=t.exec(e);if(this.resumingScanAtSamePosition()&&!(n&&n.index===this.lastIndex)){let t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}return n&&(this.regexIndex+=n.position+1,this.regexIndex===this.count&&this.considerAll()),n}}function i(e){let t=new r;return e.contains.forEach(e=>t.addRule(e.begin,{rule:e,type:`begin`})),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:`end`}),e.illegal&&t.addRule(e.illegal,{type:`illegal`}),t}function a(n,r){let o=n;if(n.isCompiled)return o;[ha,va,Fa,ba].forEach(e=>e(n,r)),e.compilerExtensions.forEach(e=>e(n,r)),n.__beforeBegin=null,[ga,_a,ya].forEach(e=>e(n,r)),n.isCompiled=!0;let s=null;return typeof n.keywords==`object`&&n.keywords.$pattern&&(n.keywords=Object.assign({},n.keywords),s=n.keywords.$pattern,delete n.keywords.$pattern),s||=/\w+/,n.keywords&&=Ca(n.keywords,e.case_insensitive),o.keywordPatternRe=t(s,!0),r&&(n.begin||=/\B|\b/,o.beginRe=t(o.begin),!n.end&&!n.endsWithParent&&(n.end=/\B|\b/),n.end&&(o.endRe=t(o.end)),o.terminatorEnd=Bi(o.end)||``,n.endsWithParent&&r.terminatorEnd&&(o.terminatorEnd+=(n.end?`|`:``)+r.terminatorEnd)),n.illegal&&(o.illegalRe=t(n.illegal)),n.contains||=[],n.contains=[].concat(...n.contains.map(function(e){return Ra(e===`self`?n:e)})),n.contains.forEach(function(e){a(e,o)}),n.starts&&a(n.starts,r),o.matcher=i(o),o}if(e.compilerExtensions||=[],e.contains&&e.contains.includes(`self`))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=Mi(e.classNameAliases||{}),a(e)}function La(e){return e?e.endsWithParent||La(e.starts):!1}function Ra(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return Mi(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:La(e)?Mi(e,{starts:e.starts?Mi(e.starts):null}):Object.isFrozen(e)?Mi(e):e}var za=`11.11.1`,Ba=class extends Error{constructor(e,t){super(e),this.name=`HTMLInjectionError`,this.html=t}},Va=ji,Ha=Mi,Ua=Symbol(`nomatch`),Wa=7,Ga=function(e){let t=Object.create(null),n=Object.create(null),r=[],i=!0,a=`Could not find the language '{}', did you forget to load/include a language module?`,o={disableAutodetect:!0,name:`Plain text`,contains:[]},s={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:`hljs-`,cssSelector:`pre code`,languages:null,__emitter:zi};function c(e){return s.noHighlightRe.test(e)}function l(e){let t=e.className+` `;t+=e.parentNode?e.parentNode.className:``;let n=s.languageDetectRe.exec(t);if(n){let t=w(n[1]);return t||(Oa(a.replace(`{}`,n[1])),Oa(`Falling back to no-highlight mode for this block.`,e)),t?n[1]:`no-highlight`}return t.split(/\s+/).find(e=>c(e)||w(e))}function u(e,t,n){let r=``,i=``;typeof t==`object`?(r=e,n=t.ignoreIllegals,i=t.language):(ka(`10.7.0`,`highlight(lang, code, ...args) has been deprecated.`),ka(`10.7.0`,`Please use highlight(code, options) instead.
|
|
57
|
+
`)}function T(e){let t=n.settings.customPalettes.filter(t=>t.id!==e.id),i=n.settings.branchPaletteId===e.id?`default`:n.settings.branchPaletteId;r(`update:settings`,{customPalettes:t,...i===n.settings.branchPaletteId?{}:{branchPaletteId:i}}),delete g[e.id]}let E=[`#f87171`,`#fb923c`,`#fbbf24`,`#a3e635`,`#34d399`,`#22d3ee`,`#818cf8`,`#c084fc`,`#1e2937`,`#f8fafc`,`#94a3b8`],k=[`#f8fafc`,`#ffffff`,`#e2e8f0`,`#1e2937`,`#0f172a`,`#fef3c7`,`#dbeafe`,`#dcfce7`,`#fce7f3`,`#f1f5f9`],j=[0,1,2,3],M=[`#f87171`,`#fb923c`,`#34d399`,`#818cf8`];function N(e,t,n,r){if(t<=1)return n;let i=e/(t-1);return n+(r-n)*i}function P(e,t,n,r){let i=t*r**+e;return Math.max(n,i)}let ee=b(()=>{let e=n.settings.lineWidthStart,t=n.settings.lineWidthEnd,r=n.settings.taperedEdge,i=j.length,a=h.value.find(e=>e.id===n.settings.branchPaletteId),o=a&&a.colors.length?a.colors:M;return j.map((a,s)=>{let c=10+s*60/(i-1);return{x1:8,y1:c,x2:192,y2:c,w:r?P(a,e,t,n.settings.lineWidthTaper):N(a,i,e,t),color:n.settings.rainbowBranch?o[s%o.length]:`#94a3b8`}})});return(t,n)=>(A(),O(`div`,Rn,[v(`section`,zn,[n[45]||=v(`h4`,{class:`zm-settings-section-title`},`画布`,-1),v(`div`,Bn,[n[24]||=v(`span`,{class:`zm-settings-label`},`画布背景色`,-1),v(`div`,Vn,[v(`label`,Hn,[v(`input`,{type:`color`,class:`zm-color-input`,value:e.settings.canvasBg||`#f8fafc`,onInput:n[0]||=e=>i(`canvasBg`,e.target.value)},null,40,Un),v(`span`,Wn,p(e.settings.canvasBg||`默认`),1)])])]),v(`div`,Gn,[(A(),O(D,null,l(k,t=>v(`button`,{key:`cbg-`+t,class:x([`zm-swatch`,{"is-active":(e.settings.canvasBg||`#f8fafc`)===t}]),style:_({background:t}),title:t,onClick:e=>i(`canvasBg`,t)},null,14,Kn)),64)),v(`button`,{class:`zm-swatch is-reset`,title:`恢复默认`,onClick:n[1]||=e=>i(`canvasBg`,void 0)},`∅`)]),n[46]||=v(`div`,{class:`zm-settings-divider`},null,-1),v(`div`,qn,[n[25]||=v(`span`,{class:`zm-settings-label`},`线条粗端 (根部)`,-1),v(`input`,{class:`zm-settings-number`,type:`number`,step:`0.2`,value:e.settings.lineWidthStart,onChange:n[2]||=e=>i(`lineWidthStart`,parseFloat(e.target.value)||0)},null,40,Jn)]),v(`div`,Yn,[n[26]||=v(`div`,{class:`zm-slider-track`},null,-1),v(`input`,{type:`range`,min:`0.4`,max:`20`,step:`0.2`,value:e.settings.lineWidthStart,onInput:n[3]||=e=>i(`lineWidthStart`,parseFloat(e.target.value))},null,40,Xn)]),v(`div`,Zn,[n[27]||=v(`span`,{class:`zm-settings-label`},`线条细端 (子端)`,-1),v(`input`,{class:`zm-settings-number`,type:`number`,step:`0.2`,value:e.settings.lineWidthEnd,onChange:n[4]||=e=>i(`lineWidthEnd`,parseFloat(e.target.value)||0)},null,40,Qn)]),v(`div`,$n,[n[28]||=v(`div`,{class:`zm-slider-track`},null,-1),v(`input`,{type:`range`,min:`0.2`,max:`6`,step:`0.1`,value:e.settings.lineWidthEnd,onInput:n[5]||=e=>i(`lineWidthEnd`,parseFloat(e.target.value))},null,40,er)]),n[47]||=v(`div`,{class:`zm-settings-divider`},null,-1),v(`div`,tr,[n[29]||=v(`span`,{class:`zm-settings-label`},`根节点线条`,-1),v(`div`,nr,[(A(!0),O(D,null,l(C(s),t=>(A(),O(`button`,{key:t.value,class:x([`zm-line-style-btn`,{"is-on":e.settings.rootLineStyle===t.value}]),title:t.label,onClick:e=>i(`rootLineStyle`,t.value)},[(A(),O(`svg`,{viewBox:t.viewBox,width:`28`,height:`14`,preserveAspectRatio:`none`},[t.value===`arc`?(A(),O(`path`,ar)):t.value===`rounded-elbow`?(A(),O(`path`,or)):t.value===`elbow`?(A(),O(`path`,sr)):t.value===`curve`?(A(),O(`path`,cr)):(A(),O(`line`,lr))],8,ir)),v(`span`,ur,p(t.label),1)],10,rr))),128))])]),v(`div`,dr,[n[30]||=v(`span`,{class:`zm-settings-label`},`其他节点线条`,-1),v(`div`,fr,[(A(),O(D,null,l(a,t=>v(`button`,{key:t.value,class:x([`zm-line-style-btn`,{"is-on":e.settings.lineStyle===t.value}]),title:t.label,onClick:e=>i(`lineStyle`,t.value)},[(A(),O(`svg`,{viewBox:t.viewBox,width:`28`,height:`14`,preserveAspectRatio:`none`},[t.value===`arc`?(A(),O(`path`,hr)):t.value===`rounded-elbow`?(A(),O(`path`,gr)):t.value===`elbow`?(A(),O(`path`,_r)):t.value===`curve`?(A(),O(`path`,vr)):(A(),O(`line`,yr))],8,mr)),v(`span`,br,p(t.label),1)],10,pr)),64))])]),e.settings.lineStyle===`rounded-elbow`||e.settings.rootLineStyle===`rounded-elbow`?(A(),O(`div`,xr,[v(`span`,Sr,[n[31]||=o(`圆角大小 `,-1),v(`span`,Cr,p(e.settings.elbowRadius)+`px`,1)]),v(`input`,{class:`zm-settings-number`,type:`number`,step:`1`,min:`2`,max:`20`,value:e.settings.elbowRadius,onChange:n[6]||=e=>i(`elbowRadius`,parseFloat(e.target.value)||8)},null,40,wr)])):f(``,!0),e.settings.lineStyle===`rounded-elbow`||e.settings.rootLineStyle===`rounded-elbow`?(A(),O(`div`,Tr,[n[32]||=v(`div`,{class:`zm-slider-track`},null,-1),v(`input`,{type:`range`,min:`2`,max:`20`,step:`1`,value:e.settings.elbowRadius,onInput:n[7]||=e=>i(`elbowRadius`,parseFloat(e.target.value))},null,40,Er)])):f(``,!0),v(`div`,Dr,[n[34]||=v(`span`,{class:`zm-settings-label`},`线条起点`,-1),v(`div`,Or,[(A(),O(D,null,l(c,t=>v(`button`,{key:t.value,class:x([`zm-line-style-btn`,{"is-on":e.settings.lineOrigin===t.value}]),title:t.label,onClick:e=>i(`lineOrigin`,t.value)},[(A(),O(`svg`,Ar,[n[33]||=v(`rect`,{x:`8`,y:`6`,width:`12`,height:`6`,rx:`2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.2`,opacity:`0.5`},null,-1),t.value===`edge`?(A(),O(`path`,jr)):t.value===`center`?(A(),O(`path`,Mr)):(A(),O(`path`,Nr))])),v(`span`,Pr,p(t.label),1)],10,kr)),64))])]),v(`div`,Fr,[n[36]||=v(`span`,{class:`zm-settings-label`},`一级分支彩虹色`,-1),v(`button`,{class:x([`zm-toggle`,{"is-on":e.settings.rainbowBranch}]),onClick:n[8]||=t=>i(`rainbowBranch`,!e.settings.rainbowBranch)},[...n[35]||=[v(`span`,{class:`zm-toggle-knob`},null,-1)]],2)]),e.settings.rainbowBranch?(A(),O(`div`,Ir,[n[37]||=v(`div`,{class:`zm-settings-field`},[v(`span`,{class:`zm-settings-label`},`配色方案`)],-1),v(`div`,Lr,[(A(!0),O(D,null,l(h.value,t=>(A(),O(`button`,{key:t.id,class:x([`zm-palette-option`,{"is-active":e.settings.branchPaletteId===t.id}]),onClick:e=>i(`branchPaletteId`,t.id)},[v(`span`,zr,p(t.name),1),v(`span`,Br,[(A(!0),O(D,null,l(t.colors,(e,t)=>(A(),O(`span`,{key:t,class:`zm-palette-option-swatch`,style:_({background:e})},null,4))),128))])],10,Rr))),128))]),e.settings.customPalettes.find(t=>t.id===e.settings.branchPaletteId)?(A(),O(`div`,Vr,[v(`textarea`,{class:`zm-palette-textarea`,rows:`3`,spellcheck:`false`,placeholder:`一行一个 hex,例如 #f87171`,value:y(e.settings.customPalettes.find(t=>t.id===e.settings.branchPaletteId)),onInput:n[9]||=t=>g[e.settings.customPalettes.find(t=>t.id===e.settings.branchPaletteId).id]=t.target.value},null,40,Hr),v(`div`,Ur,[v(`button`,{type:`button`,class:`zm-data-btn is-primary`,onClick:n[10]||=t=>S(e.settings.customPalettes.find(t=>t.id===e.settings.branchPaletteId))},`保存`),v(`button`,{type:`button`,class:`zm-data-btn`,onClick:n[11]||=t=>T(e.settings.customPalettes.find(t=>t.id===e.settings.branchPaletteId))},`删除`)])])):f(``,!0),v(`button`,{type:`button`,class:`zm-palette-add`,onClick:w},`+ 新建配色`)])):f(``,!0),n[48]||=v(`div`,{class:`zm-settings-divider`},null,-1),v(`div`,Wr,[n[39]||=v(`span`,{class:`zm-settings-label`},`每条连线独立渐变`,-1),v(`button`,{class:x([`zm-toggle`,{"is-on":e.settings.taperedEdge}]),onClick:n[12]||=t=>i(`taperedEdge`,!e.settings.taperedEdge)},[...n[38]||=[v(`span`,{class:`zm-toggle-knob`},null,-1)]],2)]),e.settings.taperedEdge?(A(),O(`div`,Gr,[v(`span`,Kr,[n[40]||=o(`层级衰减 `,-1),v(`span`,qr,p(Math.round(e.settings.lineWidthTaper*100))+`%`,1)]),v(`input`,{class:`zm-settings-number`,type:`number`,step:`0.05`,min:`0.3`,max:`1`,value:e.settings.lineWidthTaper,onChange:n[13]||=e=>i(`lineWidthTaper`,parseFloat(e.target.value)||.67)},null,40,Jr)])):f(``,!0),e.settings.taperedEdge?(A(),O(`div`,Yr,[n[41]||=v(`div`,{class:`zm-slider-track`},null,-1),v(`input`,{type:`range`,min:`0.3`,max:`1`,step:`0.01`,value:e.settings.lineWidthTaper,onInput:n[14]||=e=>i(`lineWidthTaper`,parseFloat(e.target.value))},null,40,Xr)])):f(``,!0),v(`div`,Zr,[n[43]||=v(`span`,{class:`zm-settings-label`},`显示节点序号`,-1),v(`button`,{class:x([`zm-toggle`,{"is-on":e.settings.showOrderBadge}]),onClick:n[15]||=t=>i(`showOrderBadge`,!e.settings.showOrderBadge)},[...n[42]||=[v(`span`,{class:`zm-toggle-knob`},null,-1)]],2)]),v(`div`,Qr,[(A(),O(`svg`,$r,[(A(!0),O(D,null,l(ee.value,(t,n)=>(A(),O(`line`,{key:n,x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2,stroke:e.settings.rainbowBranch?t.color:`#94a3b8`,"stroke-width":t.w,"stroke-linecap":`butt`},null,8,ei))),128))])),n[44]||=v(`div`,{class:`zm-settings-preview-labels`},[v(`span`,null,`根`),v(`span`,null,`1级`),v(`span`,null,`2级`),v(`span`,null,`3级`)],-1)])]),e.hasSelection?(A(),O(`section`,ti,[v(`h4`,ni,[n[49]||=o(` 节点 `,-1),e.selectedNodeText?(A(),O(`span`,ri,`"`+p(e.selectedNodeText)+`"`,1)):f(``,!0)]),v(`div`,ii,[n[50]||=v(`span`,{class:`zm-settings-label`},`背景颜色`,-1),v(`span`,ai,p(e.nodeStyle?.bg||`默认`),1)]),v(`div`,oi,[(A(),O(D,null,l(E,t=>v(`button`,{key:`bg-`+t,class:x([`zm-swatch`,{"is-active":e.nodeStyle?.bg===t}]),style:_({background:t}),title:t,onClick:e=>d({bg:t})},null,14,si)),64)),v(`label`,ci,[v(`input`,{type:`color`,value:e.nodeStyle?.bg||`#ffffff`,onInput:n[16]||=e=>d({bg:e.target.value})},null,40,li)]),v(`button`,{class:`zm-swatch is-reset`,title:`清除`,onClick:n[17]||=e=>d({bg:void 0})},`∅`)]),v(`div`,ui,[n[51]||=v(`span`,{class:`zm-settings-label`},`文字颜色`,-1),v(`span`,di,p(e.nodeStyle?.textColor||`默认`),1)]),v(`div`,fi,[(A(),O(D,null,l(E,t=>v(`button`,{key:`fg-`+t,class:x([`zm-swatch`,{"is-active":e.nodeStyle?.textColor===t}]),style:_({background:t}),title:t,onClick:e=>d({textColor:t})},null,14,pi)),64)),v(`label`,mi,[v(`input`,{type:`color`,value:e.nodeStyle?.textColor||`#1e2937`,onInput:n[18]||=e=>d({textColor:e.target.value})},null,40,hi)]),v(`button`,{class:`zm-swatch is-reset`,title:`清除`,onClick:n[19]||=e=>d({textColor:void 0})},`∅`)]),n[55]||=v(`div`,{class:`zm-settings-divider`},null,-1),v(`div`,gi,[n[52]||=v(`span`,{class:`zm-settings-label`},`字重`,-1),v(`select`,{class:`zm-select`,value:e.nodeStyle?.fontWeight??400,onChange:n[20]||=e=>d({fontWeight:parseInt(e.target.value)})},[(A(),O(D,null,l(u,e=>v(`option`,{key:e.value,value:e.value},p(e.label),9,vi)),64))],40,_i)]),v(`div`,yi,[n[53]||=v(`span`,{class:`zm-settings-label`},`文字大小`,-1),v(`input`,{class:`zm-settings-number`,type:`number`,step:`1`,min:`8`,max:`48`,value:e.nodeStyle?.fontSize??14,onChange:n[21]||=e=>d({fontSize:parseInt(e.target.value)||14})},null,40,bi)]),v(`div`,xi,[n[54]||=v(`div`,{class:`zm-slider-track`},null,-1),v(`input`,{type:`range`,min:`8`,max:`48`,step:`1`,value:e.nodeStyle?.fontSize??14,onInput:n[22]||=e=>d({fontSize:parseInt(e.target.value)})},null,40,Si)]),n[56]||=v(`p`,{class:`zm-settings-hint`},`仅作用于当前节点,不影响子节点。`,-1)])):f(``,!0),v(`section`,Ci,[v(`button`,{class:`zm-settings-reset`,onClick:n[23]||=e=>r(`reset`)},`恢复默认设置`)])]))}}),[[`__scopeId`,`data-v-f1937c03`]]),Ti=20;function Ei(e,t){e.style.height=`auto`;let n=t.minRows*Ti,r=t.maxRows>0?t.maxRows*Ti:1/0,i=Math.max(n,Math.min(r,e.scrollHeight));e.style.height=i+`px`,e.style.overflowY=e.scrollHeight>r?`auto`:`hidden`}function Di(e,n={}){let o={minRows:n.minRows??3,maxRows:n.maxRows??12};function s(){let t=e.value;t&&Ei(t,o)}function c(){s()}i(async()=>{await a();let t=e.value;t&&(t.addEventListener(`input`,c),s())}),r(()=>e.value?.value,()=>s()),t(()=>{let t=e.value;t&&t.removeEventListener(`input`,c)})}function Oi(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,`default`)?e.default:e}function ki(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw Error(`map is read-only`)}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw Error(`set is read-only`)}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{let n=e[t],r=typeof n;(r===`object`||r===`function`)&&!Object.isFrozen(n)&&ki(n)}),e}var Ai=class{constructor(e){e.data===void 0&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function ji(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function Mi(e,...t){let n=Object.create(null);for(let t in e)n[t]=e[t];return t.forEach(function(e){for(let t in e)n[t]=e[t]}),n}var Ni=`</span>`,Pi=e=>!!e.scope,Fi=(e,{prefix:t})=>{if(e.startsWith(`language:`))return e.replace(`language:`,`language-`);if(e.includes(`.`)){let n=e.split(`.`);return[`${t}${n.shift()}`,...n.map((e,t)=>`${e}${`_`.repeat(t+1)}`)].join(` `)}return`${t}${e}`},Ii=class{constructor(e,t){this.buffer=``,this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=ji(e)}openNode(e){if(!Pi(e))return;let t=Fi(e.scope,{prefix:this.classPrefix});this.span(t)}closeNode(e){Pi(e)&&(this.buffer+=Ni)}value(){return this.buffer}span(e){this.buffer+=`<span class="${e}">`}},Li=(e={})=>{let t={children:[]};return Object.assign(t,e),t},Ri=class e{constructor(){this.rootNode=Li(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){let t=Li({scope:e});this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return typeof t==`string`?e.addText(t):t.children&&(e.openNode(t),t.children.forEach(t=>this._walk(e,t)),e.closeNode(t)),e}static _collapse(t){typeof t!=`string`&&t.children&&(t.children.every(e=>typeof e==`string`)?t.children=[t.children.join(``)]:t.children.forEach(t=>{e._collapse(t)}))}},zi=class extends Ri{constructor(e){super(),this.options=e}addText(e){e!==``&&this.add(e)}startScope(e){this.openNode(e)}endScope(){this.closeNode()}__addSublanguage(e,t){let n=e.root;t&&(n.scope=`language:${t}`),this.add(n)}toHTML(){return new Ii(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}};function Bi(e){return e?typeof e==`string`?e:e.source:null}function Vi(e){return Wi(`(?=`,e,`)`)}function Hi(e){return Wi(`(?:`,e,`)*`)}function Ui(e){return Wi(`(?:`,e,`)?`)}function Wi(...e){return e.map(e=>Bi(e)).join(``)}function Gi(e){let t=e[e.length-1];return typeof t==`object`&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function Ki(...e){return`(`+(Gi(e).capture?``:`?:`)+e.map(e=>Bi(e)).join(`|`)+`)`}function qi(e){return RegExp(e.toString()+`|`).exec(``).length-1}function Ji(e,t){let n=e&&e.exec(t);return n&&n.index===0}var Yi=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function Xi(e,{joinWith:t}){let n=0;return e.map(e=>{n+=1;let t=n,r=Bi(e),i=``;for(;r.length>0;){let e=Yi.exec(r);if(!e){i+=r;break}i+=r.substring(0,e.index),r=r.substring(e.index+e[0].length),e[0][0]===`\\`&&e[1]?i+=`\\`+String(Number(e[1])+t):(i+=e[0],e[0]===`(`&&n++)}return i}).map(e=>`(${e})`).join(t)}var Zi=/\b\B/,Qi=`[a-zA-Z]\\w*`,$i=`[a-zA-Z_]\\w*`,ea=`\\b\\d+(\\.\\d+)?`,ta=`(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)`,na=`\\b(0b[01]+)`,ra=`!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~`,ia=(e={})=>{let t=/^#![ ]*\//;return e.binary&&(e.begin=Wi(t,/.*\b/,e.binary,/\b.*/)),Mi({scope:`meta`,begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{e.index!==0&&t.ignoreMatch()}},e)},aa={begin:`\\\\[\\s\\S]`,relevance:0},oa={scope:`string`,begin:`'`,end:`'`,illegal:`\\n`,contains:[aa]},sa={scope:`string`,begin:`"`,end:`"`,illegal:`\\n`,contains:[aa]},ca={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},la=function(e,t,n={}){let r=Mi({scope:`comment`,begin:e,end:t,contains:[]},n);r.contains.push({scope:`doctag`,begin:`[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)`,end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let i=Ki(`I`,`a`,`is`,`so`,`us`,`to`,`at`,`if`,`in`,`it`,`on`,/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return r.contains.push({begin:Wi(/[ ]+/,`(`,i,/[.]?[:]?([.][ ]|[ ])/,`){3}`)}),r},ua=la(`//`,`$`),da=la(`/\\*`,`\\*/`),fa=la(`#`,`$`),pa=Object.freeze({__proto__:null,APOS_STRING_MODE:oa,BACKSLASH_ESCAPE:aa,BINARY_NUMBER_MODE:{scope:`number`,begin:na,relevance:0},BINARY_NUMBER_RE:na,COMMENT:la,C_BLOCK_COMMENT_MODE:da,C_LINE_COMMENT_MODE:ua,C_NUMBER_MODE:{scope:`number`,begin:ta,relevance:0},C_NUMBER_RE:ta,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})},HASH_COMMENT_MODE:fa,IDENT_RE:Qi,MATCH_NOTHING_RE:Zi,METHOD_GUARD:{begin:`\\.\\s*[a-zA-Z_]\\w*`,relevance:0},NUMBER_MODE:{scope:`number`,begin:ea,relevance:0},NUMBER_RE:ea,PHRASAL_WORDS_MODE:ca,QUOTE_STRING_MODE:sa,REGEXP_MODE:{scope:`regexp`,begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[aa,{begin:/\[/,end:/\]/,relevance:0,contains:[aa]}]},RE_STARTERS_RE:ra,SHEBANG:ia,TITLE_MODE:{scope:`title`,begin:Qi,relevance:0},UNDERSCORE_IDENT_RE:$i,UNDERSCORE_TITLE_MODE:{scope:`title`,begin:$i,relevance:0}});function ma(e,t){e.input[e.index-1]===`.`&&t.ignoreMatch()}function ha(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function ga(e,t){t&&e.beginKeywords&&(e.begin=`\\b(`+e.beginKeywords.split(` `).join(`|`)+`)(?!\\.)(?=\\b|\\s)`,e.__beforeBegin=ma,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function _a(e,t){Array.isArray(e.illegal)&&(e.illegal=Ki(...e.illegal))}function va(e,t){if(e.match){if(e.begin||e.end)throw Error(`begin & end are not supported with match`);e.begin=e.match,delete e.match}}function ya(e,t){e.relevance===void 0&&(e.relevance=1)}var ba=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw Error(`beforeMatch cannot be used with starts`);let n=Object.assign({},e);Object.keys(e).forEach(t=>{delete e[t]}),e.keywords=n.keywords,e.begin=Wi(n.beforeMatch,Vi(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},xa=[`of`,`and`,`for`,`in`,`not`,`or`,`if`,`then`,`parent`,`list`,`value`],Sa=`keyword`;function Ca(e,t,n=Sa){let r=Object.create(null);return typeof e==`string`?i(n,e.split(` `)):Array.isArray(e)?i(n,e):Object.keys(e).forEach(function(n){Object.assign(r,Ca(e[n],t,n))}),r;function i(e,n){t&&(n=n.map(e=>e.toLowerCase())),n.forEach(function(t){let n=t.split(`|`);r[n[0]]=[e,wa(n[0],n[1])]})}}function wa(e,t){return t?Number(t):+!Ta(e)}function Ta(e){return xa.includes(e.toLowerCase())}var Ea={},Da=e=>{console.error(e)},Oa=(e,...t)=>{console.log(`WARN: ${e}`,...t)},ka=(e,t)=>{Ea[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),Ea[`${e}/${t}`]=!0)},Aa=Error();function ja(e,t,{key:n}){let r=0,i=e[n],a={},o={};for(let e=1;e<=t.length;e++)o[e+r]=i[e],a[e+r]=!0,r+=qi(t[e-1]);e[n]=o,e[n]._emit=a,e[n]._multi=!0}function Ma(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw Da(`skip, excludeBegin, returnBegin not compatible with beginScope: {}`),Aa;if(typeof e.beginScope!=`object`||e.beginScope===null)throw Da(`beginScope must be object`),Aa;ja(e,e.begin,{key:`beginScope`}),e.begin=Xi(e.begin,{joinWith:``})}}function Na(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw Da(`skip, excludeEnd, returnEnd not compatible with endScope: {}`),Aa;if(typeof e.endScope!=`object`||e.endScope===null)throw Da(`endScope must be object`),Aa;ja(e,e.end,{key:`endScope`}),e.end=Xi(e.end,{joinWith:``})}}function Pa(e){e.scope&&typeof e.scope==`object`&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function Fa(e){Pa(e),typeof e.beginScope==`string`&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope==`string`&&(e.endScope={_wrap:e.endScope}),Ma(e),Na(e)}function Ia(e){function t(t,n){return new RegExp(Bi(t),`m`+(e.case_insensitive?`i`:``)+(e.unicodeRegex?`u`:``)+(n?`g`:``))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=qi(e)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);let e=this.regexes.map(e=>e[1]);this.matcherRe=t(Xi(e,{joinWith:`|`}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;let t=this.matcherRe.exec(e);if(!t)return null;let n=t.findIndex((e,t)=>t>0&&e!==void 0),r=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,r)}}class r{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];let t=new n;return this.rules.slice(e).forEach(([e,n])=>t.addRule(e,n)),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),t.type===`begin`&&this.count++}exec(e){let t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let n=t.exec(e);if(this.resumingScanAtSamePosition()&&!(n&&n.index===this.lastIndex)){let t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}return n&&(this.regexIndex+=n.position+1,this.regexIndex===this.count&&this.considerAll()),n}}function i(e){let t=new r;return e.contains.forEach(e=>t.addRule(e.begin,{rule:e,type:`begin`})),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:`end`}),e.illegal&&t.addRule(e.illegal,{type:`illegal`}),t}function a(n,r){let o=n;if(n.isCompiled)return o;[ha,va,Fa,ba].forEach(e=>e(n,r)),e.compilerExtensions.forEach(e=>e(n,r)),n.__beforeBegin=null,[ga,_a,ya].forEach(e=>e(n,r)),n.isCompiled=!0;let s=null;return typeof n.keywords==`object`&&n.keywords.$pattern&&(n.keywords=Object.assign({},n.keywords),s=n.keywords.$pattern,delete n.keywords.$pattern),s||=/\w+/,n.keywords&&=Ca(n.keywords,e.case_insensitive),o.keywordPatternRe=t(s,!0),r&&(n.begin||=/\B|\b/,o.beginRe=t(o.begin),!n.end&&!n.endsWithParent&&(n.end=/\B|\b/),n.end&&(o.endRe=t(o.end)),o.terminatorEnd=Bi(o.end)||``,n.endsWithParent&&r.terminatorEnd&&(o.terminatorEnd+=(n.end?`|`:``)+r.terminatorEnd)),n.illegal&&(o.illegalRe=t(n.illegal)),n.contains||=[],n.contains=[].concat(...n.contains.map(function(e){return Ra(e===`self`?n:e)})),n.contains.forEach(function(e){a(e,o)}),n.starts&&a(n.starts,r),o.matcher=i(o),o}if(e.compilerExtensions||=[],e.contains&&e.contains.includes(`self`))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=Mi(e.classNameAliases||{}),a(e)}function La(e){return e?e.endsWithParent||La(e.starts):!1}function Ra(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return Mi(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:La(e)?Mi(e,{starts:e.starts?Mi(e.starts):null}):Object.isFrozen(e)?Mi(e):e}var za=`11.11.1`,Ba=class extends Error{constructor(e,t){super(e),this.name=`HTMLInjectionError`,this.html=t}},Va=ji,Ha=Mi,Ua=Symbol(`nomatch`),Wa=7,Ga=function(e){let t=Object.create(null),n=Object.create(null),r=[],i=!0,a=`Could not find the language '{}', did you forget to load/include a language module?`,o={disableAutodetect:!0,name:`Plain text`,contains:[]},s={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:`hljs-`,cssSelector:`pre code`,languages:null,__emitter:zi};function c(e){return s.noHighlightRe.test(e)}function l(e){let t=e.className+` `;t+=e.parentNode?e.parentNode.className:``;let n=s.languageDetectRe.exec(t);if(n){let t=w(n[1]);return t||(Oa(a.replace(`{}`,n[1])),Oa(`Falling back to no-highlight mode for this block.`,e)),t?n[1]:`no-highlight`}return t.split(/\s+/).find(e=>c(e)||w(e))}function u(e,t,n){let r=``,i=``;typeof t==`object`?(r=e,n=t.ignoreIllegals,i=t.language):(ka(`10.7.0`,`highlight(lang, code, ...args) has been deprecated.`),ka(`10.7.0`,`Please use highlight(code, options) instead.
|
|
58
58
|
https://github.com/highlightjs/highlight.js/issues/2277`),i=e,r=t),n===void 0&&(n=!0);let a={code:r,language:i};A(`before:highlight`,a);let o=a.result?a.result:d(a.language,a.code,n);return o.code=a.code,A(`after:highlight`,o),o}function d(e,n,r,o){let c=Object.create(null);function l(e,t){return e.keywords[t]}function u(){if(!k.keywords){j.addText(M);return}let e=0;k.keywordPatternRe.lastIndex=0;let t=k.keywordPatternRe.exec(M),n=``;for(;t;){n+=M.substring(e,t.index);let r=E.case_insensitive?t[0].toLowerCase():t[0],i=l(k,r);if(i){let[e,a]=i;if(j.addText(n),n=``,c[r]=(c[r]||0)+1,c[r]<=Wa&&(N+=a),e.startsWith(`_`))n+=t[0];else{let n=E.classNameAliases[e]||e;h(t[0],n)}}else n+=t[0];e=k.keywordPatternRe.lastIndex,t=k.keywordPatternRe.exec(M)}n+=M.substring(e),j.addText(n)}function f(){if(M===``)return;let e=null;if(typeof k.subLanguage==`string`){if(!t[k.subLanguage]){j.addText(M);return}e=d(k.subLanguage,M,!0,A[k.subLanguage]),A[k.subLanguage]=e._top}else e=p(M,k.subLanguage.length?k.subLanguage:null);k.relevance>0&&(N+=e.relevance),j.__addSublanguage(e._emitter,e.language)}function m(){k.subLanguage==null?u():f(),M=``}function h(e,t){e!==``&&(j.startScope(t),j.addText(e),j.endScope())}function g(e,t){let n=1,r=t.length-1;for(;n<=r;){if(!e._emit[n]){n++;continue}let r=E.classNameAliases[e[n]]||e[n],i=t[n];r?h(i,r):(M=i,u(),M=``),n++}}function _(e,t){return e.scope&&typeof e.scope==`string`&&j.openNode(E.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(h(M,E.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),M=``):e.beginScope._multi&&(g(e.beginScope,t),M=``)),k=Object.create(e,{parent:{value:k}}),k}function v(e,t,n){let r=Ji(e.endRe,n);if(r){if(e[`on:end`]){let n=new Ai(e);e[`on:end`](t,n),n.isMatchIgnored&&(r=!1)}if(r){for(;e.endsParent&&e.parent;)e=e.parent;return e}}if(e.endsWithParent)return v(e.parent,t,n)}function y(e){return k.matcher.regexIndex===0?(M+=e[0],1):(F=!0,0)}function b(e){let t=e[0],n=e.rule,r=new Ai(n),i=[n.__beforeBegin,n[`on:begin`]];for(let n of i)if(n&&(n(e,r),r.isMatchIgnored))return y(t);return n.skip?M+=t:(n.excludeBegin&&(M+=t),m(),!n.returnBegin&&!n.excludeBegin&&(M=t)),_(n,e),n.returnBegin?0:t.length}function x(e){let t=e[0],r=n.substring(e.index),i=v(k,e,r);if(!i)return Ua;let a=k;k.endScope&&k.endScope._wrap?(m(),h(t,k.endScope._wrap)):k.endScope&&k.endScope._multi?(m(),g(k.endScope,e)):a.skip?M+=t:(a.returnEnd||a.excludeEnd||(M+=t),m(),a.excludeEnd&&(M=t));do k.scope&&j.closeNode(),!k.skip&&!k.subLanguage&&(N+=k.relevance),k=k.parent;while(k!==i.parent);return i.starts&&_(i.starts,e),a.returnEnd?0:t.length}function S(){let e=[];for(let t=k;t!==E;t=t.parent)t.scope&&e.unshift(t.scope);e.forEach(e=>j.openNode(e))}let C={};function T(t,a){let o=a&&a[0];if(M+=t,o==null)return m(),0;if(C.type===`begin`&&a.type===`end`&&C.index===a.index&&o===``){if(M+=n.slice(a.index,a.index+1),!i){let t=Error(`0 width match regex (${e})`);throw t.languageName=e,t.badRule=C.rule,t}return 1}if(C=a,a.type===`begin`)return b(a);if(a.type===`illegal`&&!r){let e=Error(`Illegal lexeme "`+o+`" for mode "`+(k.scope||`<unnamed>`)+`"`);throw e.mode=k,e}else if(a.type===`end`){let e=x(a);if(e!==Ua)return e}if(a.type===`illegal`&&o===``)return M+=`
|
|
59
59
|
`,1;if(ee>1e5&&ee>a.index*3)throw Error(`potential infinite loop, way more iterations than matches`);return M+=o,o.length}let E=w(e);if(!E)throw Da(a.replace(`{}`,e)),Error(`Unknown language: "`+e+`"`);let D=Ia(E),O=``,k=o||D,A={},j=new s.__emitter(s);S();let M=``,N=0,P=0,ee=0,F=!1;try{if(E.__emitTokens)E.__emitTokens(n,j);else{for(k.matcher.considerAll();;){ee++,F?F=!1:k.matcher.considerAll(),k.matcher.lastIndex=P;let e=k.matcher.exec(n);if(!e)break;let t=T(n.substring(P,e.index),e);P=e.index+t}T(n.substring(P))}return j.finalize(),O=j.toHTML(),{language:e,value:O,relevance:N,illegal:!1,_emitter:j,_top:k}}catch(t){if(t.message&&t.message.includes(`Illegal`))return{language:e,value:Va(n),illegal:!0,relevance:0,_illegalBy:{message:t.message,index:P,context:n.slice(P-100,P+100),mode:t.mode,resultSoFar:O},_emitter:j};if(i)return{language:e,value:Va(n),illegal:!1,relevance:0,errorRaised:t,_emitter:j,_top:k};throw t}}function f(e){let t={value:Va(e),illegal:!1,relevance:0,_top:o,_emitter:new s.__emitter(s)};return t._emitter.addText(e),t}function p(e,n){n=n||s.languages||Object.keys(t);let r=f(e),i=n.filter(w).filter(E).map(t=>d(t,e,!1));i.unshift(r);let[a,o]=i.sort((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if(w(e.language).supersetOf===t.language)return 1;if(w(t.language).supersetOf===e.language)return-1}return 0}),c=a;return c.secondBest=o,c}function m(e,t,r){let i=t&&n[t]||r;e.classList.add(`hljs`),e.classList.add(`language-${i}`)}function h(e){let t=null,n=l(e);if(c(n))return;if(A(`before:highlightElement`,{el:e,language:n}),e.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e);return}if(e.children.length>0&&(s.ignoreUnescapedHTML||(console.warn(`One of your code blocks includes unescaped HTML. This is a potentially serious security risk.`),console.warn(`https://github.com/highlightjs/highlight.js/wiki/security`),console.warn(`The element with unescaped HTML:`),console.warn(e)),s.throwUnescapedHTML))throw new Ba(`One of your code blocks includes unescaped HTML.`,e.innerHTML);t=e;let r=t.textContent,i=n?u(r,{language:n,ignoreIllegals:!0}):p(r);e.innerHTML=i.value,e.dataset.highlighted=`yes`,m(e,n,i.language),e.result={language:i.language,re:i.relevance,relevance:i.relevance},i.secondBest&&(e.secondBest={language:i.secondBest.language,relevance:i.secondBest.relevance}),A(`after:highlightElement`,{el:e,result:i,text:r})}function g(e){s=Ha(s,e)}let _=()=>{b(),ka(`10.6.0`,`initHighlighting() deprecated. Use highlightAll() now.`)};function v(){b(),ka(`10.6.0`,`initHighlightingOnLoad() deprecated. Use highlightAll() now.`)}let y=!1;function b(){function e(){b()}if(document.readyState===`loading`){y||window.addEventListener(`DOMContentLoaded`,e,!1),y=!0;return}document.querySelectorAll(s.cssSelector).forEach(h)}function x(n,r){let a=null;try{a=r(e)}catch(e){if(Da(`Language definition for '{}' could not be registered.`.replace(`{}`,n)),i)Da(e);else throw e;a=o}a.name||=n,t[n]=a,a.rawDefinition=r.bind(null,e),a.aliases&&T(a.aliases,{languageName:n})}function S(e){delete t[e];for(let t of Object.keys(n))n[t]===e&&delete n[t]}function C(){return Object.keys(t)}function w(e){return e=(e||``).toLowerCase(),t[e]||t[n[e]]}function T(e,{languageName:t}){typeof e==`string`&&(e=[e]),e.forEach(e=>{n[e.toLowerCase()]=t})}function E(e){let t=w(e);return t&&!t.disableAutodetect}function D(e){e[`before:highlightBlock`]&&!e[`before:highlightElement`]&&(e[`before:highlightElement`]=t=>{e[`before:highlightBlock`](Object.assign({block:t.el},t))}),e[`after:highlightBlock`]&&!e[`after:highlightElement`]&&(e[`after:highlightElement`]=t=>{e[`after:highlightBlock`](Object.assign({block:t.el},t))})}function O(e){D(e),r.push(e)}function k(e){let t=r.indexOf(e);t!==-1&&r.splice(t,1)}function A(e,t){let n=e;r.forEach(function(e){e[n]&&e[n](t)})}function j(e){return ka(`10.7.0`,`highlightBlock will be removed entirely in v12.0`),ka(`10.7.0`,`Please use highlightElement now.`),h(e)}Object.assign(e,{highlight:u,highlightAuto:p,highlightAll:b,highlightElement:h,highlightBlock:j,configure:g,initHighlighting:_,initHighlightingOnLoad:v,registerLanguage:x,unregisterLanguage:S,listLanguages:C,getLanguage:w,registerAliases:T,autoDetection:E,inherit:Ha,addPlugin:O,removePlugin:k}),e.debugMode=function(){i=!1},e.safeMode=function(){i=!0},e.versionString=za,e.regex={concat:Wi,lookahead:Vi,either:Ki,optional:Ui,anyNumberOfTimes:Hi};for(let e in pa)typeof pa[e]==`object`&&ki(pa[e]);return Object.assign(e,pa),e},Ka=Ga({});Ka.newInstance=()=>Ga({});var qa=Ka;Ka.HighlightJS=Ka,Ka.default=Ka;var Ja=Oi(qa);function Ya(e){let t=e.regex,n={},r={begin:/\$\{/,end:/\}/,contains:[`self`,{begin:/:-/,contains:[n]}]};Object.assign(n,{className:`variable`,variants:[{begin:t.concat(/\$[\w\d#@][\w\d_]*/,`(?![\\w\\d])(?![$])`)},r]});let i={className:`subst`,begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},a=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:`comment`}}),o={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:`string`})]}},s={className:`string`,begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,n,i]};i.contains.push(s);let c={match:/\\"/},l={className:`string`,begin:/'/,end:/'/},u={match:/\\'/},d={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:`number`},e.NUMBER_MODE,n]},f=e.SHEBANG({binary:`(${[`fish`,`bash`,`zsh`,`sh`,`csh`,`ksh`,`tcsh`,`dash`,`scsh`].join(`|`)})`,relevance:10}),p={className:`function`,begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},m=[`if`,`then`,`else`,`elif`,`fi`,`time`,`for`,`while`,`until`,`in`,`do`,`done`,`case`,`esac`,`coproc`,`function`,`select`],h=[`true`,`false`],g={match:/(\/[a-z._-]+)+/},_=[`break`,`cd`,`continue`,`eval`,`exec`,`exit`,`export`,`getopts`,`hash`,`pwd`,`readonly`,`return`,`shift`,`test`,`times`,`trap`,`umask`,`unset`],v=[`alias`,`bind`,`builtin`,`caller`,`command`,`declare`,`echo`,`enable`,`help`,`let`,`local`,`logout`,`mapfile`,`printf`,`read`,`readarray`,`source`,`sudo`,`type`,`typeset`,`ulimit`,`unalias`],y=`autoload.bg.bindkey.bye.cap.chdir.clone.comparguments.compcall.compctl.compdescribe.compfiles.compgroups.compquote.comptags.comptry.compvalues.dirs.disable.disown.echotc.echoti.emulate.fc.fg.float.functions.getcap.getln.history.integer.jobs.kill.limit.log.noglob.popd.print.pushd.pushln.rehash.sched.setcap.setopt.stat.suspend.ttyctl.unfunction.unhash.unlimit.unsetopt.vared.wait.whence.where.which.zcompile.zformat.zftp.zle.zmodload.zparseopts.zprof.zpty.zregexparse.zsocket.zstyle.ztcp`.split(`.`),b=`chcon.chgrp.chown.chmod.cp.dd.df.dir.dircolors.ln.ls.mkdir.mkfifo.mknod.mktemp.mv.realpath.rm.rmdir.shred.sync.touch.truncate.vdir.b2sum.base32.base64.cat.cksum.comm.csplit.cut.expand.fmt.fold.head.join.md5sum.nl.numfmt.od.paste.ptx.pr.sha1sum.sha224sum.sha256sum.sha384sum.sha512sum.shuf.sort.split.sum.tac.tail.tr.tsort.unexpand.uniq.wc.arch.basename.chroot.date.dirname.du.echo.env.expr.factor.groups.hostid.id.link.logname.nice.nohup.nproc.pathchk.pinky.printenv.printf.pwd.readlink.runcon.seq.sleep.stat.stdbuf.stty.tee.test.timeout.tty.uname.unlink.uptime.users.who.whoami.yes`.split(`.`);return{name:`Bash`,aliases:[`sh`,`zsh`],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:m,literal:h,built_in:[..._,...v,`set`,`shopt`,...y,...b]},contains:[f,e.SHEBANG(),p,d,a,o,g,s,c,l,u,n]}}var Xa=e=>({IMPORTANT:{scope:`meta`,begin:`!important`},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:`number`,begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:`built_in`,begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:`selector-attr`,begin:/\[/,end:/\]/,illegal:`$`,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:`number`,begin:e.NUMBER_RE+`(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?`,relevance:0},CSS_VARIABLE:{className:`attr`,begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),Za=`a.abbr.address.article.aside.audio.b.blockquote.body.button.canvas.caption.cite.code.dd.del.details.dfn.div.dl.dt.em.fieldset.figcaption.figure.footer.form.h1.h2.h3.h4.h5.h6.header.hgroup.html.i.iframe.img.input.ins.kbd.label.legend.li.main.mark.menu.nav.object.ol.optgroup.option.p.picture.q.quote.samp.section.select.source.span.strong.summary.sup.table.tbody.td.textarea.tfoot.th.thead.time.tr.ul.var.video`.split(`.`),Qa=`defs.g.marker.mask.pattern.svg.switch.symbol.feBlend.feColorMatrix.feComponentTransfer.feComposite.feConvolveMatrix.feDiffuseLighting.feDisplacementMap.feFlood.feGaussianBlur.feImage.feMerge.feMorphology.feOffset.feSpecularLighting.feTile.feTurbulence.linearGradient.radialGradient.stop.circle.ellipse.image.line.path.polygon.polyline.rect.text.use.textPath.tspan.foreignObject.clipPath`.split(`.`),$a=[...Za,...Qa],eo=`any-hover.any-pointer.aspect-ratio.color.color-gamut.color-index.device-aspect-ratio.device-height.device-width.display-mode.forced-colors.grid.height.hover.inverted-colors.monochrome.orientation.overflow-block.overflow-inline.pointer.prefers-color-scheme.prefers-contrast.prefers-reduced-motion.prefers-reduced-transparency.resolution.scan.scripting.update.width.min-width.max-width.min-height.max-height`.split(`.`).sort().reverse(),to=`active.any-link.blank.checked.current.default.defined.dir.disabled.drop.empty.enabled.first.first-child.first-of-type.fullscreen.future.focus.focus-visible.focus-within.has.host.host-context.hover.indeterminate.in-range.invalid.is.lang.last-child.last-of-type.left.link.local-link.not.nth-child.nth-col.nth-last-child.nth-last-col.nth-last-of-type.nth-of-type.only-child.only-of-type.optional.out-of-range.past.placeholder-shown.read-only.read-write.required.right.root.scope.target.target-within.user-invalid.valid.visited.where`.split(`.`).sort().reverse(),no=[`after`,`backdrop`,`before`,`cue`,`cue-region`,`first-letter`,`first-line`,`grammar-error`,`marker`,`part`,`placeholder`,`selection`,`slotted`,`spelling-error`].sort().reverse(),ro=`accent-color.align-content.align-items.align-self.alignment-baseline.all.anchor-name.animation.animation-composition.animation-delay.animation-direction.animation-duration.animation-fill-mode.animation-iteration-count.animation-name.animation-play-state.animation-range.animation-range-end.animation-range-start.animation-timeline.animation-timing-function.appearance.aspect-ratio.backdrop-filter.backface-visibility.background.background-attachment.background-blend-mode.background-clip.background-color.background-image.background-origin.background-position.background-position-x.background-position-y.background-repeat.background-size.baseline-shift.block-size.border.border-block.border-block-color.border-block-end.border-block-end-color.border-block-end-style.border-block-end-width.border-block-start.border-block-start-color.border-block-start-style.border-block-start-width.border-block-style.border-block-width.border-bottom.border-bottom-color.border-bottom-left-radius.border-bottom-right-radius.border-bottom-style.border-bottom-width.border-collapse.border-color.border-end-end-radius.border-end-start-radius.border-image.border-image-outset.border-image-repeat.border-image-slice.border-image-source.border-image-width.border-inline.border-inline-color.border-inline-end.border-inline-end-color.border-inline-end-style.border-inline-end-width.border-inline-start.border-inline-start-color.border-inline-start-style.border-inline-start-width.border-inline-style.border-inline-width.border-left.border-left-color.border-left-style.border-left-width.border-radius.border-right.border-right-color.border-right-style.border-right-width.border-spacing.border-start-end-radius.border-start-start-radius.border-style.border-top.border-top-color.border-top-left-radius.border-top-right-radius.border-top-style.border-top-width.border-width.bottom.box-align.box-decoration-break.box-direction.box-flex.box-flex-group.box-lines.box-ordinal-group.box-orient.box-pack.box-shadow.box-sizing.break-after.break-before.break-inside.caption-side.caret-color.clear.clip.clip-path.clip-rule.color.color-interpolation.color-interpolation-filters.color-profile.color-rendering.color-scheme.column-count.column-fill.column-gap.column-rule.column-rule-color.column-rule-style.column-rule-width.column-span.column-width.columns.contain.contain-intrinsic-block-size.contain-intrinsic-height.contain-intrinsic-inline-size.contain-intrinsic-size.contain-intrinsic-width.container.container-name.container-type.content.content-visibility.counter-increment.counter-reset.counter-set.cue.cue-after.cue-before.cursor.cx.cy.direction.display.dominant-baseline.empty-cells.enable-background.field-sizing.fill.fill-opacity.fill-rule.filter.flex.flex-basis.flex-direction.flex-flow.flex-grow.flex-shrink.flex-wrap.float.flood-color.flood-opacity.flow.font.font-display.font-family.font-feature-settings.font-kerning.font-language-override.font-optical-sizing.font-palette.font-size.font-size-adjust.font-smooth.font-smoothing.font-stretch.font-style.font-synthesis.font-synthesis-position.font-synthesis-small-caps.font-synthesis-style.font-synthesis-weight.font-variant.font-variant-alternates.font-variant-caps.font-variant-east-asian.font-variant-emoji.font-variant-ligatures.font-variant-numeric.font-variant-position.font-variation-settings.font-weight.forced-color-adjust.gap.glyph-orientation-horizontal.glyph-orientation-vertical.grid.grid-area.grid-auto-columns.grid-auto-flow.grid-auto-rows.grid-column.grid-column-end.grid-column-start.grid-gap.grid-row.grid-row-end.grid-row-start.grid-template.grid-template-areas.grid-template-columns.grid-template-rows.hanging-punctuation.height.hyphenate-character.hyphenate-limit-chars.hyphens.icon.image-orientation.image-rendering.image-resolution.ime-mode.initial-letter.initial-letter-align.inline-size.inset.inset-area.inset-block.inset-block-end.inset-block-start.inset-inline.inset-inline-end.inset-inline-start.isolation.justify-content.justify-items.justify-self.kerning.left.letter-spacing.lighting-color.line-break.line-height.line-height-step.list-style.list-style-image.list-style-position.list-style-type.margin.margin-block.margin-block-end.margin-block-start.margin-bottom.margin-inline.margin-inline-end.margin-inline-start.margin-left.margin-right.margin-top.margin-trim.marker.marker-end.marker-mid.marker-start.marks.mask.mask-border.mask-border-mode.mask-border-outset.mask-border-repeat.mask-border-slice.mask-border-source.mask-border-width.mask-clip.mask-composite.mask-image.mask-mode.mask-origin.mask-position.mask-repeat.mask-size.mask-type.masonry-auto-flow.math-depth.math-shift.math-style.max-block-size.max-height.max-inline-size.max-width.min-block-size.min-height.min-inline-size.min-width.mix-blend-mode.nav-down.nav-index.nav-left.nav-right.nav-up.none.normal.object-fit.object-position.offset.offset-anchor.offset-distance.offset-path.offset-position.offset-rotate.opacity.order.orphans.outline.outline-color.outline-offset.outline-style.outline-width.overflow.overflow-anchor.overflow-block.overflow-clip-margin.overflow-inline.overflow-wrap.overflow-x.overflow-y.overlay.overscroll-behavior.overscroll-behavior-block.overscroll-behavior-inline.overscroll-behavior-x.overscroll-behavior-y.padding.padding-block.padding-block-end.padding-block-start.padding-bottom.padding-inline.padding-inline-end.padding-inline-start.padding-left.padding-right.padding-top.page.page-break-after.page-break-before.page-break-inside.paint-order.pause.pause-after.pause-before.perspective.perspective-origin.place-content.place-items.place-self.pointer-events.position.position-anchor.position-visibility.print-color-adjust.quotes.r.resize.rest.rest-after.rest-before.right.rotate.row-gap.ruby-align.ruby-position.scale.scroll-behavior.scroll-margin.scroll-margin-block.scroll-margin-block-end.scroll-margin-block-start.scroll-margin-bottom.scroll-margin-inline.scroll-margin-inline-end.scroll-margin-inline-start.scroll-margin-left.scroll-margin-right.scroll-margin-top.scroll-padding.scroll-padding-block.scroll-padding-block-end.scroll-padding-block-start.scroll-padding-bottom.scroll-padding-inline.scroll-padding-inline-end.scroll-padding-inline-start.scroll-padding-left.scroll-padding-right.scroll-padding-top.scroll-snap-align.scroll-snap-stop.scroll-snap-type.scroll-timeline.scroll-timeline-axis.scroll-timeline-name.scrollbar-color.scrollbar-gutter.scrollbar-width.shape-image-threshold.shape-margin.shape-outside.shape-rendering.speak.speak-as.src.stop-color.stop-opacity.stroke.stroke-dasharray.stroke-dashoffset.stroke-linecap.stroke-linejoin.stroke-miterlimit.stroke-opacity.stroke-width.tab-size.table-layout.text-align.text-align-all.text-align-last.text-anchor.text-combine-upright.text-decoration.text-decoration-color.text-decoration-line.text-decoration-skip.text-decoration-skip-ink.text-decoration-style.text-decoration-thickness.text-emphasis.text-emphasis-color.text-emphasis-position.text-emphasis-style.text-indent.text-justify.text-orientation.text-overflow.text-rendering.text-shadow.text-size-adjust.text-transform.text-underline-offset.text-underline-position.text-wrap.text-wrap-mode.text-wrap-style.timeline-scope.top.touch-action.transform.transform-box.transform-origin.transform-style.transition.transition-behavior.transition-delay.transition-duration.transition-property.transition-timing-function.translate.unicode-bidi.user-modify.user-select.vector-effect.vertical-align.view-timeline.view-timeline-axis.view-timeline-inset.view-timeline-name.view-transition-name.visibility.voice-balance.voice-duration.voice-family.voice-pitch.voice-range.voice-rate.voice-stress.voice-volume.white-space.white-space-collapse.widows.width.will-change.word-break.word-spacing.word-wrap.writing-mode.x.y.z-index.zoom`.split(`.`).sort().reverse();function io(e){let t=e.regex,n=Xa(e),r={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},i=/@-?\w[\w]*(-\w+)*/,a=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:`CSS`,case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:`from to`},classNameAliases:{keyframePosition:`selector-tag`},contains:[n.BLOCK_COMMENT,r,n.CSS_NUMBER_MODE,{className:`selector-id`,begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:`selector-class`,begin:`\\.[a-zA-Z-][a-zA-Z0-9_-]*`,relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:`selector-pseudo`,variants:[{begin:`:(`+to.join(`|`)+`)`},{begin:`:(:)?(`+no.join(`|`)+`)`}]},n.CSS_VARIABLE,{className:`attribute`,begin:`\\b(`+ro.join(`|`)+`)\\b`},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,n.HEXCOLOR,n.IMPORTANT,n.CSS_NUMBER_MODE,...a,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:`url data-uri`},contains:[...a,{className:`string`,begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n.FUNCTION_DISPATCH]},{begin:t.lookahead(/@/),end:`[{;]`,relevance:0,illegal:/:/,contains:[{className:`keyword`,begin:i},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:`and or not only`,attribute:eo.join(` `)},contains:[{begin:/[a-z-]+(?=:)/,className:`attribute`},...a,n.CSS_NUMBER_MODE]}]},{className:`selector-tag`,begin:`\\b(`+$a.join(`|`)+`)\\b`}]}}function ao(e){let t={keyword:[`break`,`case`,`chan`,`const`,`continue`,`default`,`defer`,`else`,`fallthrough`,`for`,`func`,`go`,`goto`,`if`,`import`,`interface`,`map`,`package`,`range`,`return`,`select`,`struct`,`switch`,`type`,`var`],type:[`bool`,`byte`,`complex64`,`complex128`,`error`,`float32`,`float64`,`int8`,`int16`,`int32`,`int64`,`string`,`uint8`,`uint16`,`uint32`,`uint64`,`int`,`uint`,`uintptr`,`rune`],literal:[`true`,`false`,`iota`,`nil`],built_in:[`append`,`cap`,`close`,`complex`,`copy`,`imag`,`len`,`make`,`new`,`panic`,`print`,`println`,`real`,`recover`,`delete`]};return{name:`Go`,aliases:[`golang`],keywords:t,illegal:`</`,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:`string`,variants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:`number`,variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:`function`,beginKeywords:`func`,end:`\\s*(\\{|$)`,excludeEnd:!0,contains:[e.TITLE_MODE,{className:`params`,begin:/\(/,end:/\)/,endsParent:!0,keywords:t,illegal:/["']/}]}]}}var oo=`[0-9](_*[0-9])*`,so=`\\.(${oo})`,co=`[0-9a-fA-F](_*[0-9a-fA-F])*`,lo={className:`number`,variants:[{begin:`(\\b(${oo})((${so})|\\.)?|(${so}))[eE][+-]?(${oo})[fFdD]?\\b`},{begin:`\\b(${oo})((${so})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${so})[fFdD]?\\b`},{begin:`\\b(${oo})[fFdD]\\b`},{begin:`\\b0[xX]((${co})\\.?|(${co})?\\.(${co}))[pP][+-]?(${oo})[fFdD]?\\b`},{begin:`\\b(0|[1-9](_*[0-9])*)[lL]?\\b`},{begin:`\\b0[xX](${co})[lL]?\\b`},{begin:`\\b0(_*[0-7])*[lL]?\\b`},{begin:`\\b0[bB][01](_*[01])*[lL]?\\b`}],relevance:0};function uo(e,t,n){return n===-1?``:e.replace(t,r=>uo(e,t,n-1))}function fo(e){let t=e.regex,n=`[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*`,r=n+uo(`(?:<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*~~~(?:\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*~~~)*>)?`,/~~~/g,2),i={keyword:`synchronized.abstract.private.var.static.if.const .for.while.strictfp.finally.protected.import.native.final.void.enum.else.break.transient.catch.instanceof.volatile.case.assert.package.default.public.try.switch.continue.throws.protected.public.private.module.requires.exports.do.sealed.yield.permits.goto.when`.split(`.`),literal:[`false`,`true`,`null`],type:[`char`,`boolean`,`long`,`float`,`int`,`byte`,`short`,`double`],built_in:[`super`,`this`]},a={className:`meta`,begin:`@[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*`,contains:[{begin:/\(/,end:/\)/,contains:[`self`]}]},o={className:`params`,begin:/\(/,end:/\)/,keywords:i,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:`Java`,aliases:[`jsp`],keywords:i,illegal:/<\/|#/,contains:[e.COMMENT(`/\\*\\*`,`\\*/`,{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:`doctag`,begin:`@[A-Za-z]+`}]}),{begin:/import java\.[a-z]+\./,keywords:`import`,relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:`string`,contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,n],className:{1:`keyword`,3:`title.class`}},{match:/non-sealed/,scope:`keyword`},{begin:[t.concat(/(?!else)/,n),/\s+/,n,/\s+/,/=(?!=)/],className:{1:`type`,3:`variable`,5:`operator`}},{begin:[/record/,/\s+/,n],className:{1:`keyword`,3:`title.class`},contains:[o,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:`new throw return else`,relevance:0},{begin:[`(?:`+r+`\\s+)`,e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:`title.function`},keywords:i,contains:[{className:`params`,begin:/\(/,end:/\)/,keywords:i,relevance:0,contains:[a,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,lo,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},lo,a]}}var po=`[A-Za-z$_][0-9A-Za-z$_]*`,mo=`as.in.of.if.for.while.finally.var.new.function.do.return.void.else.break.catch.instanceof.with.throw.case.default.try.switch.continue.typeof.delete.let.yield.const.class.debugger.async.await.static.import.from.export.extends.using`.split(`.`),ho=[`true`,`false`,`null`,`undefined`,`NaN`,`Infinity`],go=`Object.Function.Boolean.Symbol.Math.Date.Number.BigInt.String.RegExp.Array.Float32Array.Float64Array.Int8Array.Uint8Array.Uint8ClampedArray.Int16Array.Int32Array.Uint16Array.Uint32Array.BigInt64Array.BigUint64Array.Set.Map.WeakSet.WeakMap.ArrayBuffer.SharedArrayBuffer.Atomics.DataView.JSON.Promise.Generator.GeneratorFunction.AsyncFunction.Reflect.Proxy.Intl.WebAssembly`.split(`.`),_o=[`Error`,`EvalError`,`InternalError`,`RangeError`,`ReferenceError`,`SyntaxError`,`TypeError`,`URIError`],vo=[`setInterval`,`setTimeout`,`clearInterval`,`clearTimeout`,`require`,`exports`,`eval`,`isFinite`,`isNaN`,`parseFloat`,`parseInt`,`decodeURI`,`decodeURIComponent`,`encodeURI`,`encodeURIComponent`,`escape`,`unescape`],yo=[`arguments`,`this`,`super`,`console`,`window`,`document`,`localStorage`,`sessionStorage`,`module`,`global`],bo=[].concat(vo,go,_o);function xo(e){let t=e.regex,n=(e,{after:t})=>{let n=`</`+e[0].slice(1);return e.input.indexOf(n,t)!==-1},r=po,i={begin:`<>`,end:`</>`},a=/<[A-Za-z0-9\\._:-]+\s*\/>/,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,t)=>{let r=e[0].length+e.index,i=e.input[r];if(i===`<`||i===`,`){t.ignoreMatch();return}i===`>`&&(n(e,{after:r})||t.ignoreMatch());let a,o=e.input.substring(r);if(a=o.match(/^\s*=/)){t.ignoreMatch();return}if((a=o.match(/^\s+extends\s+/))&&a.index===0){t.ignoreMatch();return}}},s={$pattern:po,keyword:mo,literal:ho,built_in:bo,"variable.language":yo},c=`[0-9](_?[0-9])*`,l=`\\.(${c})`,u=`0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`,d={className:`number`,variants:[{begin:`(\\b(${u})((${l})|\\.)?|(${l}))[eE][+-]?(${c})\\b`},{begin:`\\b(${u})\\b((${l})\\b|\\.)?|(${l})\\b`},{begin:`\\b(0|[1-9](_?[0-9])*)n\\b`},{begin:`\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b`},{begin:`\\b0[bB][0-1](_?[0-1])*n?\\b`},{begin:`\\b0[oO][0-7](_?[0-7])*n?\\b`},{begin:`\\b0[0-7]+n?\\b`}],relevance:0},f={className:`subst`,begin:`\\$\\{`,end:`\\}`,keywords:s,contains:[]},p={begin:".?html`",end:``,starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:`xml`}},m={begin:".?css`",end:``,starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:`css`}},h={begin:".?gql`",end:``,starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:`graphql`}},g={className:`string`,begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,f]},_={className:`comment`,variants:[e.COMMENT(/\/\*\*(?!\/)/,`\\*/`,{relevance:0,contains:[{begin:`(?=@[A-Za-z]+)`,relevance:0,contains:[{className:`doctag`,begin:`@[A-Za-z]+`},{className:`type`,begin:`\\{`,end:`\\}`,excludeEnd:!0,excludeBegin:!0,relevance:0},{className:`variable`,begin:`[A-Za-z$_][0-9A-Za-z$_]*(?=\\s*(-)|$)`,endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},v=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,p,m,h,g,{match:/\$\d+/},d];f.contains=v.concat({begin:/\{/,end:/\}/,keywords:s,contains:[`self`].concat(v)});let y=[].concat(_,f.contains),b=y.concat([{begin:/(\s*)\(/,end:/\)/,keywords:s,contains:[`self`].concat(y)}]),x={className:`params`,begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:b},S={variants:[{match:[/class/,/\s+/,r,/\s+/,/extends/,/\s+/,t.concat(r,`(`,t.concat(/\./,r),`)*`)],scope:{1:`keyword`,3:`title.class`,5:`keyword`,7:`title.class.inherited`}},{match:[/class/,/\s+/,r],scope:{1:`keyword`,3:`title.class`}}]},C={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:`title.class`,keywords:{_:[...go,..._o]}},w={label:`use_strict`,className:`meta`,relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},T={variants:[{match:[/function/,/\s+/,r,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:`keyword`,3:`title.function`},label:`func.def`,contains:[x],illegal:/%/},E={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:`variable.constant`};function D(e){return t.concat(`(?!`,e.join(`|`),`)`)}let O={match:t.concat(/\b/,D([...vo,`super`,`import`].map(e=>`${e}\\s*\\(`)),r,t.lookahead(/\s*\(/)),className:`title.function`,relevance:0},k={begin:t.concat(/\./,t.lookahead(t.concat(r,/(?![0-9A-Za-z$_(])/))),end:r,excludeBegin:!0,keywords:`prototype`,className:`property`,relevance:0},A={match:[/get|set/,/\s+/,r,/(?=\()/],className:{1:`keyword`,3:`title.function`},contains:[{begin:/\(\)/},x]},j=`(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|`+e.UNDERSCORE_IDENT_RE+`)\\s*=>`,M={match:[/const|var|let/,/\s+/,r,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(j)],keywords:`async`,className:{1:`keyword`,3:`title.function`},contains:[x]};return{name:`JavaScript`,aliases:[`js`,`jsx`,`mjs`,`cjs`],keywords:s,exports:{PARAMS_CONTAINS:b,CLASS_REFERENCE:C},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:`shebang`,binary:`node`,relevance:5}),w,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,p,m,h,g,_,{match:/\$\d+/},d,C,{scope:`attr`,match:r+t.lookahead(`:`),relevance:0},M,{begin:`(`+e.RE_STARTERS_RE+`|\\b(case|return|throw)\\b)\\s*`,keywords:`return throw case`,relevance:0,contains:[_,e.REGEXP_MODE,{className:`function`,begin:j,returnBegin:!0,end:`\\s*=>`,contains:[{className:`params`,variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:b}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:i.begin,end:i.end},{match:a},{begin:o.begin,"on:begin":o.isTrulyOpeningTag,end:o.end}],subLanguage:`xml`,contains:[{begin:o.begin,end:o.end,skip:!0,contains:[`self`]}]}]},T,{beginKeywords:`while if switch catch for`},{begin:`\\b(?!function)`+e.UNDERSCORE_IDENT_RE+`\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{`,returnBegin:!0,label:`func.def`,contains:[x,e.inherit(e.TITLE_MODE,{begin:r,className:`title.function`})]},{match:/\.\.\./,relevance:0},k,{match:`\\$[A-Za-z$_][0-9A-Za-z$_]*`,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:`title.function`},contains:[x]},O,E,S,A,{match:/\$[(.]/}]}}function So(e){let t={className:`attr`,begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},n={match:/[{}[\],:]/,className:`punctuation`,relevance:0},r=[`true`,`false`,`null`],i={scope:`literal`,beginKeywords:r.join(` `)};return{name:`JSON`,aliases:[`jsonc`],keywords:{literal:r},contains:[t,n,e.QUOTE_STRING_MODE,i,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:`\\S`}}function Co(e){let t=e.regex,n={begin:/<\/?[A-Za-z_]/,end:`>`,subLanguage:`xml`,relevance:0},r={begin:`^[-\\*]{3,}`,end:`$`},i={className:`code`,variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:`(~{3,})[^~](.|\\n)*?\\1~*[ ]*`},{begin:"```",end:"```+[ ]*$"},{begin:`~~~`,end:`~~~+[ ]*$`},{begin:"`.+?`"},{begin:`(?=^( {4}|\\t))`,contains:[{begin:`^( {4}|\\t)`,end:`(\\n)$`}],relevance:0}]},a={className:`bullet`,begin:`^[ ]*([*+-]|(\\d+\\.))(?=\\s+)`,end:`\\s+`,excludeEnd:!0},o={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:`symbol`,begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:`link`,begin:/:\s*/,end:/$/,excludeBegin:!0}]},s={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:t.concat(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:`string`,relevance:0,begin:`\\[`,end:`\\]`,excludeBegin:!0,returnEnd:!0},{className:`link`,relevance:0,begin:`\\]\\(`,end:`\\)`,excludeBegin:!0,excludeEnd:!0},{className:`symbol`,relevance:0,begin:`\\]\\[`,end:`\\]`,excludeBegin:!0,excludeEnd:!0}]},c={className:`strong`,contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},l={className:`emphasis`,contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},u=e.inherit(c,{contains:[]}),d=e.inherit(l,{contains:[]});c.contains.push(d),l.contains.push(u);let f=[n,s];return[c,l,u,d].forEach(e=>{e.contains=e.contains.concat(f)}),f=f.concat(c,l),{name:`Markdown`,aliases:[`md`,`mkdown`,`mkd`],contains:[{className:`section`,variants:[{begin:`^#{1,6}`,end:`$`,contains:f},{begin:`(?=^.+?\\n[=-]{2,}$)`,contains:[{begin:`^[=-]*$`},{begin:`^`,end:`\\n`,contains:f}]}]},n,a,c,l,{className:`quote`,begin:`^>\\s+`,contains:f,end:`$`},i,r,s,o,{scope:`literal`,match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}function wo(e){let t=e.regex,n=RegExp(`[\\p{XID_Start}_]\\p{XID_Continue}*`,`u`),r=`and.as.assert.async.await.break.case.class.continue.def.del.elif.else.except.finally.for.from.global.if.import.in.is.lambda.match.nonlocal|10.not.or.pass.raise.return.try.while.with.yield`.split(`.`),i={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:r,built_in:`__import__.abs.all.any.ascii.bin.bool.breakpoint.bytearray.bytes.callable.chr.classmethod.compile.complex.delattr.dict.dir.divmod.enumerate.eval.exec.filter.float.format.frozenset.getattr.globals.hasattr.hash.help.hex.id.input.int.isinstance.issubclass.iter.len.list.locals.map.max.memoryview.min.next.object.oct.open.ord.pow.print.property.range.repr.reversed.round.set.setattr.slice.sorted.staticmethod.str.sum.super.tuple.type.vars.zip`.split(`.`),literal:[`__debug__`,`Ellipsis`,`False`,`None`,`NotImplemented`,`True`],type:[`Any`,`Callable`,`Coroutine`,`Dict`,`List`,`Literal`,`Generic`,`Optional`,`Sequence`,`Set`,`Tuple`,`Type`,`Union`]},a={className:`meta`,begin:/^(>>>|\.\.\.) /},o={className:`subst`,begin:/\{/,end:/\}/,keywords:i,illegal:/#/},s={begin:/\{\{/,relevance:0},c={className:`string`,contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a,s,o]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,s,o]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,s,o]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,s,o]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},l=`[0-9](_?[0-9])*`,u=`(\\b(${l}))?\\.(${l})|\\b(${l})\\.`,d=`\\b|${r.join(`|`)}`,f={className:`number`,relevance:0,variants:[{begin:`(\\b(${l})|(${u}))[eE][+-]?(${l})[jJ]?(?=${d})`},{begin:`(${u})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${d})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${d})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${d})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${d})`},{begin:`\\b(${l})[jJ](?=${d})`}]},p={className:`comment`,begin:t.lookahead(/# type:/),end:/$/,keywords:i,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},m={className:`params`,variants:[{className:``,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:[`self`,a,f,c,e.HASH_COMMENT_MODE]}]};return o.contains=[c,f,a],{name:`Python`,aliases:[`py`,`gyp`,`ipython`],unicodeRegex:!0,keywords:i,illegal:/(<\/|\?)|=>/,contains:[a,f,{scope:`variable.language`,match:/\bself\b/},{beginKeywords:`if`,relevance:0},{match:/\bor\b/,scope:`keyword`},c,p,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,n],scope:{1:`keyword`,3:`title.function`},contains:[m]},{variants:[{match:[/\bclass/,/\s+/,n,/\s*/,/\(\s*/,n,/\s*\)/]},{match:[/\bclass/,/\s+/,n]}],scope:{1:`keyword`,3:`title.class`,6:`title.class.inherited`}},{className:`meta`,begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[f,m,c]}]}}function To(e){let t=e.regex,n=/(r#)?/,r=t.concat(n,e.UNDERSCORE_IDENT_RE),i=t.concat(n,e.IDENT_RE),a={className:`title.function.invoke`,relevance:0,begin:t.concat(/\b/,/(?!let|for|while|if|else|match\b)/,i,t.lookahead(/\s*\(/))},o=`abstract.as.async.await.become.box.break.const.continue.crate.do.dyn.else.enum.extern.false.final.fn.for.if.impl.in.let.loop.macro.match.mod.move.mut.override.priv.pub.ref.return.self.Self.static.struct.super.trait.true.try.type.typeof.union.unsafe.unsized.use.virtual.where.while.yield`.split(`.`),s=[`true`,`false`,`Some`,`None`,`Ok`,`Err`],c=`drop .Copy.Send.Sized.Sync.Drop.Fn.FnMut.FnOnce.ToOwned.Clone.Debug.PartialEq.PartialOrd.Eq.Ord.AsRef.AsMut.Into.From.Default.Iterator.Extend.IntoIterator.DoubleEndedIterator.ExactSizeIterator.SliceConcatExt.ToString.assert!.assert_eq!.bitflags!.bytes!.cfg!.col!.concat!.concat_idents!.debug_assert!.debug_assert_eq!.env!.eprintln!.panic!.file!.format!.format_args!.include_bytes!.include_str!.line!.local_data_key!.module_path!.option_env!.print!.println!.select!.stringify!.try!.unimplemented!.unreachable!.vec!.write!.writeln!.macro_rules!.assert_ne!.debug_assert_ne!`.split(`.`),l=[`i8`,`i16`,`i32`,`i64`,`i128`,`isize`,`u8`,`u16`,`u32`,`u64`,`u128`,`usize`,`f32`,`f64`,`str`,`char`,`bool`,`Box`,`Option`,`Result`,`String`,`Vec`];return{name:`Rust`,aliases:[`rs`],keywords:{$pattern:e.IDENT_RE+`!?`,type:l,keyword:o,literal:s,built_in:c},illegal:`</`,contains:[e.C_LINE_COMMENT_MODE,e.COMMENT(`/\\*`,`\\*/`,{contains:[`self`]}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:`symbol`,begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:`string`,variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:`char.escape`,match:/\\('|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{className:`number`,variants:[{begin:`\\b0b([01_]+)([ui](8|16|32|64|128|size)|f(32|64))?`},{begin:`\\b0o([0-7_]+)([ui](8|16|32|64|128|size)|f(32|64))?`},{begin:`\\b0x([A-Fa-f0-9_]+)([ui](8|16|32|64|128|size)|f(32|64))?`},{begin:`\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)([ui](8|16|32|64|128|size)|f(32|64))?`}],relevance:0},{begin:[/fn/,/\s+/,r],className:{1:`keyword`,3:`title.function`}},{className:`meta`,begin:`#!?\\[`,end:`\\]`,contains:[{className:`string`,begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,r],className:{1:`keyword`,3:`keyword`,4:`variable`}},{begin:[/for/,/\s+/,r,/\s+/,/in/],className:{1:`keyword`,3:`variable`,5:`keyword`}},{begin:[/type/,/\s+/,r],className:{1:`keyword`,3:`title.class`}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,r],className:{1:`keyword`,3:`title.class`}},{begin:e.IDENT_RE+`::`,keywords:{keyword:`Self`,built_in:c,type:l}},{className:`punctuation`,begin:`->`},a]}}function Eo(e){let t=e.regex,n=e.COMMENT(`--`,`$`),r={scope:`string`,variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},i={begin:/"/,end:/"/,contains:[{match:/""/}]},a=[`true`,`false`,`unknown`],o=[`double precision`,`large object`,`with timezone`,`without timezone`],s=`bigint.binary.blob.boolean.char.character.clob.date.dec.decfloat.decimal.float.int.integer.interval.nchar.nclob.national.numeric.real.row.smallint.time.timestamp.varchar.varying.varbinary`.split(`.`),c=[`add`,`asc`,`collation`,`desc`,`final`,`first`,`last`,`view`],l=`abs.acos.all.allocate.alter.and.any.are.array.array_agg.array_max_cardinality.as.asensitive.asin.asymmetric.at.atan.atomic.authorization.avg.begin.begin_frame.begin_partition.between.bigint.binary.blob.boolean.both.by.call.called.cardinality.cascaded.case.cast.ceil.ceiling.char.char_length.character.character_length.check.classifier.clob.close.coalesce.collate.collect.column.commit.condition.connect.constraint.contains.convert.copy.corr.corresponding.cos.cosh.count.covar_pop.covar_samp.create.cross.cube.cume_dist.current.current_catalog.current_date.current_default_transform_group.current_path.current_role.current_row.current_schema.current_time.current_timestamp.current_path.current_role.current_transform_group_for_type.current_user.cursor.cycle.date.day.deallocate.dec.decimal.decfloat.declare.default.define.delete.dense_rank.deref.describe.deterministic.disconnect.distinct.double.drop.dynamic.each.element.else.empty.end.end_frame.end_partition.end-exec.equals.escape.every.except.exec.execute.exists.exp.external.extract.false.fetch.filter.first_value.float.floor.for.foreign.frame_row.free.from.full.function.fusion.get.global.grant.group.grouping.groups.having.hold.hour.identity.in.indicator.initial.inner.inout.insensitive.insert.int.integer.intersect.intersection.interval.into.is.join.json_array.json_arrayagg.json_exists.json_object.json_objectagg.json_query.json_table.json_table_primitive.json_value.lag.language.large.last_value.lateral.lead.leading.left.like.like_regex.listagg.ln.local.localtime.localtimestamp.log.log10.lower.match.match_number.match_recognize.matches.max.member.merge.method.min.minute.mod.modifies.module.month.multiset.national.natural.nchar.nclob.new.no.none.normalize.not.nth_value.ntile.null.nullif.numeric.octet_length.occurrences_regex.of.offset.old.omit.on.one.only.open.or.order.out.outer.over.overlaps.overlay.parameter.partition.pattern.per.percent.percent_rank.percentile_cont.percentile_disc.period.portion.position.position_regex.power.precedes.precision.prepare.primary.procedure.ptf.range.rank.reads.real.recursive.ref.references.referencing.regr_avgx.regr_avgy.regr_count.regr_intercept.regr_r2.regr_slope.regr_sxx.regr_sxy.regr_syy.release.result.return.returns.revoke.right.rollback.rollup.row.row_number.rows.running.savepoint.scope.scroll.search.second.seek.select.sensitive.session_user.set.show.similar.sin.sinh.skip.smallint.some.specific.specifictype.sql.sqlexception.sqlstate.sqlwarning.sqrt.start.static.stddev_pop.stddev_samp.submultiset.subset.substring.substring_regex.succeeds.sum.symmetric.system.system_time.system_user.table.tablesample.tan.tanh.then.time.timestamp.timezone_hour.timezone_minute.to.trailing.translate.translate_regex.translation.treat.trigger.trim.trim_array.true.truncate.uescape.union.unique.unknown.unnest.update.upper.user.using.value.values.value_of.var_pop.var_samp.varbinary.varchar.varying.versioning.when.whenever.where.width_bucket.window.with.within.without.year`.split(`.`),u=`abs.acos.array_agg.asin.atan.avg.cast.ceil.ceiling.coalesce.corr.cos.cosh.count.covar_pop.covar_samp.cume_dist.dense_rank.deref.element.exp.extract.first_value.floor.json_array.json_arrayagg.json_exists.json_object.json_objectagg.json_query.json_table.json_table_primitive.json_value.lag.last_value.lead.listagg.ln.log.log10.lower.max.min.mod.nth_value.ntile.nullif.percent_rank.percentile_cont.percentile_disc.position.position_regex.power.rank.regr_avgx.regr_avgy.regr_count.regr_intercept.regr_r2.regr_slope.regr_sxx.regr_sxy.regr_syy.row_number.sin.sinh.sqrt.stddev_pop.stddev_samp.substring.substring_regex.sum.tan.tanh.translate.translate_regex.treat.trim.trim_array.unnest.upper.value_of.var_pop.var_samp.width_bucket`.split(`.`),d=[`current_catalog`,`current_date`,`current_default_transform_group`,`current_path`,`current_role`,`current_schema`,`current_transform_group_for_type`,`current_user`,`session_user`,`system_time`,`system_user`,`current_time`,`localtime`,`current_timestamp`,`localtimestamp`],f=[`create table`,`insert into`,`primary key`,`foreign key`,`not null`,`alter table`,`add constraint`,`grouping sets`,`on overflow`,`character set`,`respect nulls`,`ignore nulls`,`nulls first`,`nulls last`,`depth first`,`breadth first`],p=u,m=[...l,...c].filter(e=>!u.includes(e)),h={scope:`variable`,match:/@[a-z0-9][a-z0-9_]*/},g={scope:`operator`,match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},_={match:t.concat(/\b/,t.either(...p),/\s*\(/),relevance:0,keywords:{built_in:p}};function v(e){return t.concat(/\b/,t.either(...e.map(e=>e.replace(/\s+/,`\\s+`))),/\b/)}let y={scope:`keyword`,match:v(f),relevance:0};function b(e,{exceptions:t,when:n}={}){let r=n;return t||=[],e.map(e=>e.match(/\|\d+$/)||t.includes(e)?e:r(e)?`${e}|0`:e)}return{name:`SQL`,case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:b(m,{when:e=>e.length<3}),literal:a,type:s,built_in:d},contains:[{scope:`type`,match:v(o)},y,_,h,r,i,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,g]}}var Do=`[A-Za-z$_][0-9A-Za-z$_]*`,Oo=`as.in.of.if.for.while.finally.var.new.function.do.return.void.else.break.catch.instanceof.with.throw.case.default.try.switch.continue.typeof.delete.let.yield.const.class.debugger.async.await.static.import.from.export.extends.using`.split(`.`),ko=[`true`,`false`,`null`,`undefined`,`NaN`,`Infinity`],Ao=`Object.Function.Boolean.Symbol.Math.Date.Number.BigInt.String.RegExp.Array.Float32Array.Float64Array.Int8Array.Uint8Array.Uint8ClampedArray.Int16Array.Int32Array.Uint16Array.Uint32Array.BigInt64Array.BigUint64Array.Set.Map.WeakSet.WeakMap.ArrayBuffer.SharedArrayBuffer.Atomics.DataView.JSON.Promise.Generator.GeneratorFunction.AsyncFunction.Reflect.Proxy.Intl.WebAssembly`.split(`.`),jo=[`Error`,`EvalError`,`InternalError`,`RangeError`,`ReferenceError`,`SyntaxError`,`TypeError`,`URIError`],Mo=[`setInterval`,`setTimeout`,`clearInterval`,`clearTimeout`,`require`,`exports`,`eval`,`isFinite`,`isNaN`,`parseFloat`,`parseInt`,`decodeURI`,`decodeURIComponent`,`encodeURI`,`encodeURIComponent`,`escape`,`unescape`],No=[`arguments`,`this`,`super`,`console`,`window`,`document`,`localStorage`,`sessionStorage`,`module`,`global`],Po=[].concat(Mo,Ao,jo);function Fo(e){let t=e.regex,n=(e,{after:t})=>{let n=`</`+e[0].slice(1);return e.input.indexOf(n,t)!==-1},r=Do,i={begin:`<>`,end:`</>`},a=/<[A-Za-z0-9\\._:-]+\s*\/>/,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,t)=>{let r=e[0].length+e.index,i=e.input[r];if(i===`<`||i===`,`){t.ignoreMatch();return}i===`>`&&(n(e,{after:r})||t.ignoreMatch());let a,o=e.input.substring(r);if(a=o.match(/^\s*=/)){t.ignoreMatch();return}if((a=o.match(/^\s+extends\s+/))&&a.index===0){t.ignoreMatch();return}}},s={$pattern:Do,keyword:Oo,literal:ko,built_in:Po,"variable.language":No},c=`[0-9](_?[0-9])*`,l=`\\.(${c})`,u=`0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`,d={className:`number`,variants:[{begin:`(\\b(${u})((${l})|\\.)?|(${l}))[eE][+-]?(${c})\\b`},{begin:`\\b(${u})\\b((${l})\\b|\\.)?|(${l})\\b`},{begin:`\\b(0|[1-9](_?[0-9])*)n\\b`},{begin:`\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b`},{begin:`\\b0[bB][0-1](_?[0-1])*n?\\b`},{begin:`\\b0[oO][0-7](_?[0-7])*n?\\b`},{begin:`\\b0[0-7]+n?\\b`}],relevance:0},f={className:`subst`,begin:`\\$\\{`,end:`\\}`,keywords:s,contains:[]},p={begin:".?html`",end:``,starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:`xml`}},m={begin:".?css`",end:``,starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:`css`}},h={begin:".?gql`",end:``,starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:`graphql`}},g={className:`string`,begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,f]},_={className:`comment`,variants:[e.COMMENT(/\/\*\*(?!\/)/,`\\*/`,{relevance:0,contains:[{begin:`(?=@[A-Za-z]+)`,relevance:0,contains:[{className:`doctag`,begin:`@[A-Za-z]+`},{className:`type`,begin:`\\{`,end:`\\}`,excludeEnd:!0,excludeBegin:!0,relevance:0},{className:`variable`,begin:`[A-Za-z$_][0-9A-Za-z$_]*(?=\\s*(-)|$)`,endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},v=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,p,m,h,g,{match:/\$\d+/},d];f.contains=v.concat({begin:/\{/,end:/\}/,keywords:s,contains:[`self`].concat(v)});let y=[].concat(_,f.contains),b=y.concat([{begin:/(\s*)\(/,end:/\)/,keywords:s,contains:[`self`].concat(y)}]),x={className:`params`,begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:b},S={variants:[{match:[/class/,/\s+/,r,/\s+/,/extends/,/\s+/,t.concat(r,`(`,t.concat(/\./,r),`)*`)],scope:{1:`keyword`,3:`title.class`,5:`keyword`,7:`title.class.inherited`}},{match:[/class/,/\s+/,r],scope:{1:`keyword`,3:`title.class`}}]},C={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:`title.class`,keywords:{_:[...Ao,...jo]}},w={label:`use_strict`,className:`meta`,relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},T={variants:[{match:[/function/,/\s+/,r,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:`keyword`,3:`title.function`},label:`func.def`,contains:[x],illegal:/%/},E={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:`variable.constant`};function D(e){return t.concat(`(?!`,e.join(`|`),`)`)}let O={match:t.concat(/\b/,D([...Mo,`super`,`import`].map(e=>`${e}\\s*\\(`)),r,t.lookahead(/\s*\(/)),className:`title.function`,relevance:0},k={begin:t.concat(/\./,t.lookahead(t.concat(r,/(?![0-9A-Za-z$_(])/))),end:r,excludeBegin:!0,keywords:`prototype`,className:`property`,relevance:0},A={match:[/get|set/,/\s+/,r,/(?=\()/],className:{1:`keyword`,3:`title.function`},contains:[{begin:/\(\)/},x]},j=`(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|`+e.UNDERSCORE_IDENT_RE+`)\\s*=>`,M={match:[/const|var|let/,/\s+/,r,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(j)],keywords:`async`,className:{1:`keyword`,3:`title.function`},contains:[x]};return{name:`JavaScript`,aliases:[`js`,`jsx`,`mjs`,`cjs`],keywords:s,exports:{PARAMS_CONTAINS:b,CLASS_REFERENCE:C},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:`shebang`,binary:`node`,relevance:5}),w,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,p,m,h,g,_,{match:/\$\d+/},d,C,{scope:`attr`,match:r+t.lookahead(`:`),relevance:0},M,{begin:`(`+e.RE_STARTERS_RE+`|\\b(case|return|throw)\\b)\\s*`,keywords:`return throw case`,relevance:0,contains:[_,e.REGEXP_MODE,{className:`function`,begin:j,returnBegin:!0,end:`\\s*=>`,contains:[{className:`params`,variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:b}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:i.begin,end:i.end},{match:a},{begin:o.begin,"on:begin":o.isTrulyOpeningTag,end:o.end}],subLanguage:`xml`,contains:[{begin:o.begin,end:o.end,skip:!0,contains:[`self`]}]}]},T,{beginKeywords:`while if switch catch for`},{begin:`\\b(?!function)`+e.UNDERSCORE_IDENT_RE+`\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{`,returnBegin:!0,label:`func.def`,contains:[x,e.inherit(e.TITLE_MODE,{begin:r,className:`title.function`})]},{match:/\.\.\./,relevance:0},k,{match:`\\$[A-Za-z$_][0-9A-Za-z$_]*`,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:`title.function`},contains:[x]},O,E,S,A,{match:/\$[(.]/}]}}function Io(e){let t=e.regex,n=Fo(e),r=Do,i=[`any`,`void`,`number`,`boolean`,`string`,`object`,`never`,`symbol`,`bigint`,`unknown`],a={begin:[/namespace/,/\s+/,e.IDENT_RE],beginScope:{1:`keyword`,3:`title.class`}},o={beginKeywords:`interface`,end:/\{/,excludeEnd:!0,keywords:{keyword:`interface extends`,built_in:i},contains:[n.exports.CLASS_REFERENCE]},s={className:`meta`,relevance:10,begin:/^\s*['"]use strict['"]/},c={$pattern:Do,keyword:Oo.concat([`type`,`interface`,`public`,`private`,`protected`,`implements`,`declare`,`abstract`,`readonly`,`enum`,`override`,`satisfies`]),literal:ko,built_in:Po.concat(i),"variable.language":No},l={className:`meta`,begin:`@[A-Za-z$_][0-9A-Za-z$_]*`},u=(e,t,n)=>{let r=e.contains.findIndex(e=>e.label===t);if(r===-1)throw Error(`can not find mode to replace`);e.contains.splice(r,1,n)};Object.assign(n.keywords,c),n.exports.PARAMS_CONTAINS.push(l);let d=n.contains.find(e=>e.scope===`attr`),f=Object.assign({},d,{match:t.concat(r,t.lookahead(/\s*\?:/))});n.exports.PARAMS_CONTAINS.push([n.exports.CLASS_REFERENCE,d,f]),n.contains=n.contains.concat([l,a,o,f]),u(n,`shebang`,e.SHEBANG()),u(n,`use_strict`,s);let p=n.contains.find(e=>e.label===`func.def`);return p.relevance=0,Object.assign(n,{name:`TypeScript`,aliases:[`ts`,`tsx`,`mts`,`cts`]}),n}function Lo(e){let t=e.regex,n=t.concat(/[\p{L}_]/u,t.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),r=/[\p{L}0-9._:-]+/u,i={className:`symbol`,begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},a={begin:/\s/,contains:[{className:`keyword`,begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},o=e.inherit(a,{begin:/\(/,end:/\)/}),s=e.inherit(e.APOS_STRING_MODE,{className:`string`}),c=e.inherit(e.QUOTE_STRING_MODE,{className:`string`}),l={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:`attr`,begin:r,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:`string`,endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[i]},{begin:/'/,end:/'/,contains:[i]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:`HTML, XML`,aliases:[`html`,`xhtml`,`rss`,`atom`,`xjb`,`xsd`,`xsl`,`plist`,`wsf`,`svg`],case_insensitive:!0,unicodeRegex:!0,contains:[{className:`meta`,begin:/<![a-z]/,end:/>/,relevance:10,contains:[a,c,s,o,{begin:/\[/,end:/\]/,contains:[{className:`meta`,begin:/<![a-z]/,end:/>/,contains:[a,o,c,s]}]}]},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},i,{className:`meta`,end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[c]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:`tag`,begin:/<style(?=\s|>)/,end:/>/,keywords:{name:`style`},contains:[l],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:[`css`,`xml`]}},{className:`tag`,begin:/<script(?=\s|>)/,end:/>/,keywords:{name:`script`},contains:[l],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:[`javascript`,`handlebars`,`xml`]}},{className:`tag`,begin:/<>|<\/>/},{className:`tag`,begin:t.concat(/</,t.lookahead(t.concat(n,t.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:`name`,begin:n,relevance:0,starts:l}]},{className:`tag`,begin:t.concat(/<\//,t.lookahead(t.concat(n,/>/))),contains:[{className:`name`,begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}function Ro(e){let t=`true false yes no null`,n={className:`attr`,variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},r={className:`template-variable`,variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},i={className:`string`,relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:`char.escape`,relevance:0}]},a={className:`string`,relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,r]},o=e.inherit(a,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),s={className:`number`,begin:`\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b`},c={end:`,`,endsWithParent:!0,excludeEnd:!0,keywords:t,relevance:0},l={begin:/\{/,end:/\}/,contains:[c],illegal:`\\n`,relevance:0},u={begin:`\\[`,end:`\\]`,contains:[c],illegal:`\\n`,relevance:0},d=[n,{className:`meta`,begin:`^---\\s*$`,relevance:10},{className:`string`,begin:`[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*`},{begin:`<%[%=-]?`,end:`[%-]?%>`,subLanguage:`ruby`,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:`type`,begin:`!\\w+![\\w#;/?:@&=+$,.~*'()[\\]]+`},{className:`type`,begin:`!<[\\w#;/?:@&=+$,.~*'()[\\]]+>`},{className:`type`,begin:`![\\w#;/?:@&=+$,.~*'()[\\]]+`},{className:`type`,begin:`!![\\w#;/?:@&=+$,.~*'()[\\]]+`},{className:`meta`,begin:`&`+e.UNDERSCORE_IDENT_RE+`$`},{className:`meta`,begin:`\\*`+e.UNDERSCORE_IDENT_RE+`$`},{className:`bullet`,begin:`-(?=[ ]|$)`,relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:t,keywords:{literal:t}},s,{className:`number`,begin:e.C_NUMBER_RE+`\\b`,relevance:0},l,u,i,a],f=[...d];return f.pop(),f.push(o),c.contains=f,{name:`YAML`,case_insensitive:!0,aliases:[`yml`],contains:d}}var zo={bash:Ya,sh:Ya,shell:Ya,css:io,go:ao,golang:ao,java:fo,javascript:xo,js:xo,json:So,markdown:Co,md:Co,python:wo,py:wo,rust:To,rs:To,sql:Eo,typescript:Io,ts:Io,xml:Lo,html:Lo,yaml:Ro,yml:Ro};for(let[e,t]of Object.entries(zo))Ja.registerLanguage(e,t);function Bo(e){let t=e.split(`
|
|
60
60
|
`);return/^(`{3,}|~{3,})/.test(t[0]??``)&&t.shift(),/^(`{3,}|~{3,})\s*$/.test(t[t.length-1]??``)&&t.pop(),t.join(`
|
|
@@ -130,9 +130,9 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
130
130
|
| a | b |`,spellcheck:`false`,disabled:e.readonly,onBlur:ce},null,40,yu),[[S,V.value]]),le.value.length?(A(),O(`table`,bu,[v(`tbody`,null,[(A(!0),O(D,null,l(le.value,(e,t)=>(A(),O(`tr`,{key:t},[t===0?(A(!0),O(D,{key:0},l(e,(e,t)=>(A(),O(`th`,{key:`h${t}`},p(e),1))),128)):(A(!0),O(D,{key:1},l(e,(e,t)=>(A(),O(`td`,{key:`c${t}`},p(e),1))),128))]))),128))])])):f(``,!0)])):f(``,!0)])],64)):(A(),O(`div`,Gl,[...n[11]||=[v(`p`,null,`请先在画布上选中一个节点。`,-1),v(`p`,{class:`zm-note-hint`},` 选中节点后,会在这里展示并可编辑节点的笔记、链接、图片、代码块、表格。 `,-1)]]))]))}}),Su=[`viewBox`,`width`,`height`],Cu={class:`zm-edges`},wu=[`d`,`fill`],Tu=[`data-node-id`,`onClick`,`onPointerdown`,`onDblclick`,`onContextmenu`,`onMouseenter`,`onMouseleave`],Eu=[`src`,`width`,`height`,`alt`],Du=[`onDblclick`],Ou={key:0,class:`zm-rich-code`},ku=[`innerHTML`],Au={key:1,class:`zm-rich-table`},ju={key:2,class:`zm-text`},Mu={key:0,class:`zm-node-markers`},Nu=[`title`,`innerHTML`],Pu={class:`zm-text-label`},Fu=[`href`,`title`],Iu=[`title`,`onClick`],Lu={key:4,class:`zm-node-tags`},Ru=[`title`],zu=[`title`,`onClick`],Bu=[`onClick`],Vu=[`onMousedown`],Hu=[`onClick`],Uu=[`title`],Wu={class:`zm-tb-tip zm-tb-zoom`},Gu=[`src`],Ku=[`src`],qu=24,Ju=400,Yu=160,Xu=4,Zu=s({__name:`MindMap`,props:{data:{},theme:{},previewMode:{type:Boolean,default:!1},markdown:{},lineColors:{},hideCanvasActions:{type:Boolean,default:!1},builtInDrawers:{type:Boolean,default:!0}},emits:[`change`,`select`,`edit-note`,`markdownChange`,`canvas-toggle-preview`,`canvas-outline`,`canvas-settings`,`canvas-data`,`canvas-import`],setup(n,{expose:o,emit:s}){let c=n,w=s,E=T(null),k=T(null),j=T(``),M=T(new Set),N=b(()=>M.value.values().next().value??null),P=T(new Set),ee=T(!1),F=T(null),re=T(0),L=T(0),ie=T(null),R=T(null),ae=T(null),z=T(``),B=T(ze(c.data)),oe=T({}),V=T({}),se=T(c.markdown!==void 0),ce=!1;r(()=>c.markdown,e=>{if(e===void 0){se.value=!1;return}se.value=!0;let t=Ze(e||``);ce=!0,B.value=ze(t),M.value=new Set,P.value=new Set,q(),a(()=>{ce=!1,jr()})}),r(B,()=>{se.value&&!ce&&w(`markdownChange`,Qe(B.value))},{deep:!0});let le=b(()=>J.showOrderBadge===!0),ue=T(new Map),de=ue.value;function fe(e,t){let n={};t.bg&&(n.bg=t.bg),t.textColor&&(n.textColor=t.textColor),t.borderColor&&(n.borderColor=t.borderColor),t.fontWeight&&(n.fontWeight=t.fontWeight),t.fontSize&&(n.fontSize=t.fontSize),Object.keys(n).length===0?de.delete(e):de.set(e,n),ue.value=new Map(de)}function H(e){return de.get(e)??{}}function pe(e,t){let n=W(B.value,e);n&&(n.image={src:t.src,naturalW:t.naturalW,naturalH:t.naturalH,width:ge(t.width,qu,Ju),height:ge(t.height,qu,Ju)},K(),q(),w(`change`,B.value))}function me(e){let t=W(B.value,e);!t||!t.image||(delete t.image,K(),q(),w(`change`,B.value))}function he(e,t){let n=t.trim();if(!W(B.value,e))return;if(!n){me(e);return}let r=new Image;r.onload=()=>{let t=W(B.value,e);if(!t)return;let i=r.naturalWidth&&r.naturalHeight?r.naturalWidth/r.naturalHeight:1,a=ge(r.naturalWidth||Yu,qu,Ju),o=Math.round(a/i);t.image={src:n,naturalW:r.naturalWidth||a,naturalH:r.naturalHeight||o,width:a,height:o},K(),q(),w(`change`,B.value)},r.onerror=()=>{},r.src=n}function ge(e,t,n){return Math.min(n,Math.max(t,e))}function _e(e,t){let n=new FileReader;n.onload=()=>{if(typeof n.result!=`string`)return;let e=n.result,r=new window.Image;r.onload=()=>{let n=r.naturalWidth||Yu,i=r.naturalHeight||Yu,a=ge(n,qu,Yu),o=ge(Math.round(i*a/n),qu,Ju);t({src:e,naturalW:n,naturalH:i,width:a,height:o})},r.onerror=()=>{t({src:e,naturalW:Yu,naturalH:Yu,width:Yu,height:Yu})},r.src=e},n.readAsDataURL(e)}function ve(e){let t=document.createElement(`input`);t.type=`file`,t.accept=`image/*`,t.style.display=`none`,t.onchange=()=>{let n=t.files?.[0];n&&(_e(n,t=>pe(e,t)),document.body.removeChild(t))},document.body.appendChild(t),t.click()}function ye(e,t){let n=t.trim(),r=W(B.value,e);r&&(n?r.link={url:n}:delete r.link,K(),q(),w(`change`,B.value))}function be(e){ye(e,``)}function xe(e,t){let n=W(B.value,e);n&&(t?n.note={text:t}:delete n.note,K(),q(),w(`change`,B.value))}function Se(e){xe(e,``)}function Ce(e,t){let n=W(B.value,e);n&&(t?n.richContent=t:delete n.richContent,K(),q(),w(`change`,B.value))}let U=T(null),we=T(null),Ee=b(()=>[`zm-canvas-fab`,`zm-canvas-fab-preview`,!c.hideCanvasActions&&(!c.previewMode||ee.value)?`is-visible`:``].filter(Boolean).join(` `)),De=b(()=>[`zm-canvas-fab`,`zm-canvas-fab-outline`,!c.hideCanvasActions&&(!c.previewMode||ee.value)?`is-visible`:``].filter(Boolean).join(` `));function Oe(e,t){c.previewMode||(e.preventDefault(),e.stopPropagation(),we.value=null,M.value=new Set([t.id]),or(),U.value={nodeId:t.id,x:e.clientX,y:e.clientY})}function ke(){U.value=null}function Ae(e){let t=e.target;if(!(t!=null&&t.closest(`.zm-toolbar, button, input, textarea, .zm-canvas-fab-preview, .zm-canvas-fab-outline`))){if(Sr&&Y.panMoved.value){Sr=!1,e.preventDefault();return}e.preventDefault(),U.value&&=null,we.value={x:e.clientX,y:e.clientY}}}function je(){we.value=null}function Pe(){je(),c.builtInDrawers&&(st(),et.value=!0),w(`canvas-settings`)}function Fe(){je(),c.builtInDrawers&&(st(),Re.value=!0),w(`canvas-data`)}function Ie(e){je(),c.builtInDrawers&&(st(),rt.value=e,Re.value=!0),w(`canvas-import`,e)}let Le=T(!1),Re=T(!1),Ue=T(!1),$e=T(!1),et=T(!1),nt=T(0),rt=T(null),ot=T(new Set);function st(){Re.value=!1,Ue.value=!1,$e.value=!1,et.value=!1}let ct=b(()=>{let e=N.value;return e?W(B.value,e)??null:null}),lt=b(()=>ct.value?H(ct.value.id):{});function ut(e){e.autoBalanceOnChange!==void 0&&(J.autoBalanceOnChange=e.autoBalanceOnChange),e.lineWidthStart!==void 0&&(J.lineWidthStart=Math.max(.5,Math.min(20,e.lineWidthStart))),e.lineWidthEnd!==void 0&&(J.lineWidthEnd=Math.max(.3,Math.min(10,e.lineWidthEnd))),e.rainbowBranch!==void 0&&(J.rainbowBranch=e.rainbowBranch),e.branchPaletteId!==void 0&&(J.branchPaletteId=e.branchPaletteId),e.customPalettes!==void 0&&(J.customPalettes=e.customPalettes),e.lineStyle!==void 0&&(J.lineStyle=e.lineStyle),e.rootLineStyle!==void 0&&(J.rootLineStyle=e.rootLineStyle),e.lineOrigin!==void 0&&(J.lineOrigin=e.lineOrigin),e.taperedEdge!==void 0&&(J.taperedEdge=e.taperedEdge),e.lineWidthTaper!==void 0&&(J.lineWidthTaper=Math.max(.3,Math.min(1,e.lineWidthTaper))),e.elbowRadius!==void 0&&(J.elbowRadius=Math.max(2,Math.min(20,e.elbowRadius))),e.showOrderBadge!==void 0&&(J.showOrderBadge=e.showOrderBadge),e.canvasBg!==void 0&&(J.canvasBg=e.canvasBg)}function mt(e){ct.value&&fe(ct.value.id,e)}function ht(){let e={autoBalanceOnChange:!0,lineWidthStart:16,lineWidthEnd:.6,rainbowBranch:!0,branchPaletteId:`default`,customPalettes:[],lineStyle:`rounded-elbow`,rootLineStyle:`arc`,lineOrigin:`proportional`,layoutMode:`mindmap`,taperedEdge:!0,lineWidthTaper:.3,elbowRadius:8,showOrderBadge:!1,canvasBg:void 0};J.autoBalanceOnChange=e.autoBalanceOnChange,J.lineWidthStart=e.lineWidthStart,J.lineWidthEnd=e.lineWidthEnd,J.rainbowBranch=e.rainbowBranch,J.branchPaletteId=e.branchPaletteId,J.customPalettes=e.customPalettes,J.lineStyle=e.lineStyle,J.rootLineStyle=e.rootLineStyle,J.lineOrigin=e.lineOrigin,J.layoutMode=e.layoutMode,J.taperedEdge=e.taperedEdge,J.lineWidthTaper=e.lineWidthTaper,J.elbowRadius=e.elbowRadius,J.showOrderBadge=e.showOrderBadge,J.canvasBg=e.canvasBg}function gt(){rt.value=null}function _t(e){let t=N.value;t&&xe(t,e)}function bt(){let e=N.value;e&&Se(e)}function xt(e){let t=N.value;t&&ye(t,e)}function St(e){let t=N.value;t&&he(t,e)}function Ct(e){let t=N.value;t&&Ce(t,e)}function wt(e){let t=document.querySelector(`[data-node-id="${e.id}"]`);t&&t.click()}function Tt(e){mr(e.id,e.text)}function Et(e){Jn(e)}function Dt(e){Yn(e)}function Ot(e){hr(e.srcId,e.targetId,e.position)}function At(e){let t=new Set(ot.value);t.has(e)?t.delete(e):t.add(e),ot.value=t}function jt(){c.builtInDrawers&&(Le.value=!Le.value),w(`canvas-outline`)}function Mt(){let e=U.value?.nodeId;e&&ve(e)}function Nt(){let e=U.value?.nodeId;if(!e)return;let t=W(B.value,e)?.link?.url??``,n=window.prompt(`输入链接 URL(留空取消)`,t);n!==null&&ye(e,n)}function Pt(){let e=U.value?.nodeId;e&&be(e)}function Ft(){let e=U.value?.nodeId;e&&Ht(e)}function It(){let e=U.value?.nodeId;e&&Se(e)}function Lt(){let e=U.value?.nodeId;e&&me(e)}function Rt(){let e=U.value?.nodeId;if(!e)return;let t=W(B.value,e)?.richContent,n=t?.kind===`code`?Bo(t.raw):``,r=t?.kind===`code`&&t.lang||``,i=r?"```"+r+`
|
|
131
131
|
`:"```\n",a=window.prompt("输入代码块内容(用 ```lang 包裹;留空取消)",n?i+n+(n.endsWith("```")?``:"\n```"):i+"// 你的代码\n```");if(a===null)return;let o=a.trim();if(!o){Ce(e,null);return}let s=/^```([^\s`]*)/.exec(o);Ce(e,{kind:`code`,raw:o,lang:s?s[1]:void 0})}function zt(){let e=U.value?.nodeId;e&&Ce(e,null)}function Bt(){let e=U.value?.nodeId;if(!e)return;let t=W(B.value,e)?.richContent,n=t?.kind===`table`?t.raw:``,r=window.prompt(`输入 markdown 表格(每行以 | 分隔;留空取消)`,n||`| 列1 | 列2 | 列3 |
|
|
132
132
|
| --- | --- | --- |
|
|
133
|
-
| a | b | c |`);if(r===null)return;let i=r.trim();if(!i){Ce(e,null);return}Ce(e,{kind:`table`,raw:i})}function Vt(){let e=U.value?.nodeId;e&&Ce(e,null)}function Ht(e){c.previewMode||(c.builtInDrawers&&(st(),$e.value=!0,nt.value++),w(`edit-note`,e))}function Ut(e,t=60){let n=e.replace(/\s+/g,` `).trim();return n.length<=t?n||`点击编辑笔记`:n.slice(0,t)+`…`}function Wt(e){if(c.previewMode||k.value)return;let t=e.target;if(t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable))return;let n=N.value;if(!n)return;let r=e.clipboardData?.items;if(r)for(let t=0;t<r.length;t++){let i=r[t];if(i.kind===`file`&&i.type.startsWith(`image/`)){let t=i.getAsFile();if(!t)continue;e.preventDefault();let r=W(B.value,n);if(r!=null&&r.image&&!window.confirm(`该节点已有图片,要用剪贴板里的图片替换吗?`))return;_e(t,e=>pe(n,e));return}}}i(()=>{window.addEventListener(`paste`,Wt),window.addEventListener(`keydown`,Gt),q()}),t(()=>{window.removeEventListener(`paste`,Wt),window.removeEventListener(`keydown`,Gt)});function Gt(e){if((e.metaKey||e.ctrlKey)&&(e.key===`f`||e.key===`F`)){let t=e.target;if(t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable))return;e.preventDefault(),w(`canvas-outline`)}}let Kt=T(null),qt=b(()=>Kt.value?.nodeId??null);function Jt(e,t){if(!t.image)return;e.preventDefault(),e.stopPropagation();let n=t.image.naturalW||t.image.width,r=t.image.naturalH||t.image.height,i=r>0?r/n:1;Kt.value={nodeId:t.id,startX:e.clientX,startY:e.clientY,startW:t.image.width,startH:t.image.height,naturalW:n,naturalH:r,ratio:i,pendingW:t.image.width,pendingH:t.image.height},window.addEventListener(`mousemove`,Yt),window.addEventListener(`mouseup`,Xt)}function Yt(e){let t=Kt.value;if(!t)return;let n=Y.scale.value||1,r=e.clientX-t.startX,i=ge(t.startW+r/n,qu,Ju),a=ge(i*t.ratio,qu,Ju);t.pendingW=i,t.pendingH=a;let o=E.value?.querySelector(`[data-node-id="${t.nodeId}"] .zm-node-img`);o&&(o.style.width=`${i}px`,o.style.height=`${a}px`);let s=E.value?.querySelector(`[data-node-id="${t.nodeId}"]`);s&&(s.style.minWidth=`${Math.max(80,Math.ceil(i+28))}px`,s.style.height=`${Math.ceil(a+8+30)}px`)}function Xt(){let e=Kt.value;if(window.removeEventListener(`mousemove`,Yt),window.removeEventListener(`mouseup`,Xt),Kt.value=null,!e)return;let t=W(B.value,e.nodeId);!t||!t.image||(pe(e.nodeId,{src:t.image.src,naturalW:t.image.naturalW,naturalH:t.image.naturalH,width:e.pendingW,height:e.pendingH}),M.value=new Set([e.nodeId]),or(),Qt=!0)}let Zt=T(null),Qt=!1;function $t(e){Zt.value=e}function en(e){Zt.value===e&&(Zt.value=null),R.value&&=null}function nn(e,t){if(!t.text||t.text.length<14)return;let n=e.currentTarget.getBoundingClientRect(),r=E.value?.getBoundingClientRect();if(!r)return;let i=n.top-r.top>60,a=n.left-r.left+n.width/2,o=r.width-240/2-10,s=Math.max(130,Math.min(a,o)),c=i?n.top-r.top-8:n.bottom-r.top+8;R.value={text:t.text,x:s,y:c,above:i}}let rn=T(0),an=T(!1),on=at(100);function K(){on.record({data:B.value,selectedIds:[...M.value]})}function q(){P.value=new Set(P.value),rn.value++,a().then(()=>a()).then(()=>sn()).then(()=>{rn.value++})}function sn(){let e=document.querySelectorAll(`.zm-rich`),t={},n={};e.forEach(e=>{let r=e,i=null;for(;r&&!i;)i=r.getAttribute(`data-node-id`),r=r.parentElement;if(!i)return;let a=e.offsetHeight,o=e.scrollWidth,s=Math.round(a*2)/2,c=Math.round(o*2)/2;t[i]=s,n[i]=c,oe.value[i],V.value[i]}),oe.value=t,V.value=n}let cn=b(()=>({rootBg:c.theme?.rootBg??`#1f2937`,rootText:c.theme?.rootText??`#ffffff`,branchBg:c.theme?.branchBg??`#ffffff`,branchText:c.theme?.branchText??`#1f2937`,lineColor:c.theme?.lineColor??`#94a3b8`,bgColor:c.theme?.bgColor??`#f8fafc`,fontSize:c.theme?.fontSize??14,lineWidthStart:c.theme?.lineWidthStart??2.2,lineWidthEnd:c.theme?.lineWidthEnd??.8,rainbowBranch:c.theme?.rainbowBranch??!1})),ln=b(()=>J.canvasBg||cn.value.bgColor),J=m({autoBalanceOnChange:!0,lineWidthStart:16,lineWidthEnd:3.6,rainbowBranch:!0,branchPaletteId:`default`,customPalettes:[],lineStyle:`rounded-elbow`,rootLineStyle:`arc`,lineOrigin:`proportional`,layoutMode:`mindmap`,taperedEdge:!0,lineWidthTaper:.3,elbowRadius:8,showOrderBadge:!1,canvasBg:void 0});function un(e){return e?J.rootLineStyle:J.lineStyle}function dn(e){return J.taperedEdge?pn(e):mn(e)}function fn(e){return J.taperedEdge?J.lineWidthEnd:mn(e)}function pn(e){let t=J.lineWidthTaper,n=J.lineWidthStart*t**+e;return Math.max(J.lineWidthEnd,n)}function mn(e){if(e<=0)return J.lineWidthStart;if(e>=3)return J.lineWidthEnd;let t=e/3;return J.lineWidthStart+(J.lineWidthEnd-J.lineWidthStart)*t}function hn(e,t,n,r){let i=1-e;return{x:i*i*i*t.x+3*i*i*e*n.x1+3*i*e*e*n.x2+e*e*e*r.x,y:i*i*i*t.y+3*i*i*e*n.y1+3*i*e*e*n.y2+e*e*e*r.y}}function gn(e,t,n,r){let i=1-e;return{x:i*i*t.x+2*i*e*n.x+e*e*r.x,y:i*i*t.y+2*i*e*n.y+e*e*r.y}}function _n(e,t,n,r,i=32,a=`curve`,o=`right`){if(a===`curve`){let a;if(o===`right`||o===`left`){let n=Math.abs(t.x-e.x)*.45,r=o===`right`?1:-1;a={x1:e.x+r*n,y1:e.y,x2:t.x-r*n,y2:t.y}}else{let n=Math.abs(t.y-e.y)*.45;a={x1:e.x,y1:e.y+n,x2:t.x,y2:t.y-n}}let s=n=>{let r=1-n;return{dx:-3*r*r*e.x+3*(r*r-2*r*n)*a.x1+3*(2*r*n-n*n)*a.x2+3*n*n*t.x,dy:-3*r*r*e.y+3*(r*r-2*r*n)*a.y1+3*(2*r*n-n*n)*a.y2+3*n*n*t.y}},c=[],l=[];for(let o=0;o<=i;o++){let u=o/i,d=o===0?e:o===i?t:hn(u,e,a,t),f=s(u),p=Math.hypot(f.dx,f.dy);p<1e-6&&(p=1);let m=-f.dy/p,h=f.dx/p,g=(n+(r-n)*u)/2;c.push({x:d.x+m*g,y:d.y+h*g}),l.push({x:d.x-m*g,y:d.y-h*g})}let u=`M ${c[0].x.toFixed(2)} ${c[0].y.toFixed(2)}`;for(let e=1;e<=i;e++)u+=` L ${c[e].x.toFixed(2)} ${c[e].y.toFixed(2)}`;for(let e=i;e>=0;e--)u+=` L ${l[e].x.toFixed(2)} ${l[e].y.toFixed(2)}`;return u+=` Z`,u}if(a===`arc`){let a;a=o===`right`||o===`left`?{x:(e.x+t.x)/2,y:t.y}:{x:t.x,y:(e.y+t.y)/2};let s=n=>{let r=1-n;return{dx:2*r*(a.x-e.x)+2*n*(t.x-a.x),dy:2*r*(a.y-e.y)+2*n*(t.y-a.y)}},c=[],l=[];for(let o=0;o<=i;o++){let u=o/i,d=o===0?e:o===i?t:gn(u,e,a,t),f=s(u),p=Math.hypot(f.dx,f.dy);p<1e-6&&(p=1);let m=-f.dy/p,h=f.dx/p,g=(n+(r-n)*u)/2;c.push({x:d.x+m*g,y:d.y+h*g}),l.push({x:d.x-m*g,y:d.y-h*g})}let u=n/2,d=r/2,f=`M ${c[0].x.toFixed(2)} ${c[0].y.toFixed(2)}`;for(let e=1;e<=i;e++)f+=` L ${c[e].x.toFixed(2)} ${c[e].y.toFixed(2)}`;f+=` A ${d.toFixed(2)} ${d.toFixed(2)} 0 0 0 ${l[i].x.toFixed(2)} ${l[i].y.toFixed(2)}`;for(let e=i-1;e>=0;e--)f+=` L ${l[e].x.toFixed(2)} ${l[e].y.toFixed(2)}`;return f+=` A ${u.toFixed(2)} ${u.toFixed(2)} 0 0 0 ${c[0].x.toFixed(2)} ${c[0].y.toFixed(2)}`,f+=` Z`,f}if(a===`elbow`){let i=[];if(o===`down`){let n=(e.y+t.y)/2;i.push(e,{x:e.x,y:n},{x:t.x,y:n},t)}else{let n=(e.x+t.x)/2;i.push(e,{x:n,y:e.y},{x:n,y:t.y},t)}let a=[],s=0;for(let e=0;e<i.length-1;e++){let t=Math.hypot(i[e+1].x-i[e].x,i[e+1].y-i[e].y);a.push(t),s+=t}let c=[n/2],l=0;for(let e=0;e<a.length-1;e++){l+=a[e];let t=s>0?l/s:0;c.push((n+(r-n)*t)/2)}c.push(r/2);let u=[];for(let e=0;e<i.length-1;e++){let t=i[e+1].x-i[e].x,n=i[e+1].y-i[e].y,r=Math.hypot(t,n);r<1e-6&&(r=1),u.push({x:-n/r,y:t/r})}let d=[],f=[];d.push({x:i[0].x+u[0].x*c[0],y:i[0].y+u[0].y*c[0]}),f.push({x:i[0].x-u[0].x*c[0],y:i[0].y-u[0].y*c[0]});for(let e=1;e<i.length-1;e++){let t=u[e-1],n=u[e],r=c[e];d.push({x:i[e].x+t.x*r+n.x*r,y:i[e].y+t.y*r+n.y*r}),f.push({x:i[e].x-t.x*r-n.x*r,y:i[e].y-t.y*r-n.y*r})}let p=u[u.length-1],m=c[c.length-1];d.push({x:i[i.length-1].x+p.x*m,y:i[i.length-1].y+p.y*m}),f.push({x:i[i.length-1].x-p.x*m,y:i[i.length-1].y-p.y*m});let h=`M ${d[0].x.toFixed(2)} ${d[0].y.toFixed(2)}`;for(let e=1;e<d.length;e++)h+=` L ${d[e].x.toFixed(2)} ${d[e].y.toFixed(2)}`;for(let e=f.length-1;e>=0;e--)h+=` L ${f[e].x.toFixed(2)} ${f[e].y.toFixed(2)}`;return h+=` Z`,h}if(a===`rounded-elbow`){let i=function(e,t,n){let r={x:e.pos.x-t*e.d1.x,y:e.pos.y-t*e.d1.y},i={x:e.pos.x+t*e.d2.x,y:e.pos.y+t*e.d2.y},a={x:e.pos.x+t*(e.d2.x-e.d1.x),y:e.pos.y+t*(e.d2.y-e.d1.y)},o=Math.atan2(r.y-a.y,r.x-a.x),s=Math.atan2(i.y-a.y,i.x-a.x)-o;for(;s>Math.PI;)s-=2*Math.PI;for(;s<-Math.PI;)s+=2*Math.PI;let c=[];for(let e=1;e<n;e++){let r=e/n,i=o+s*r;c.push({x:a.x+t*Math.cos(i),y:a.y+t*Math.sin(i)})}return c},a=[],s;if(o===`down`){let n=(e.y+t.y)/2,r=Math.sign(n-e.y)||1,i=Math.sign(t.x-e.x)||1,a=Math.sign(t.y-n)||1;s=[{pos:{x:e.x,y:n},d1:{x:0,y:r},d2:{x:i,y:0}},{pos:{x:t.x,y:n},d1:{x:i,y:0},d2:{x:0,y:a}}]}else{let n=(e.x+t.x)/2,r=Math.sign(n-e.x)||1,i=Math.sign(t.y-e.y)||1,a=Math.sign(t.x-n)||1;s=[{pos:{x:n,y:e.y},d1:{x:r,y:0},d2:{x:0,y:i}},{pos:{x:n,y:t.y},d1:{x:0,y:i},d2:{x:a,y:0}}]}let c=Math.hypot(s[0].pos.x-e.x,s[0].pos.y-e.y),l=Math.hypot(s[1].pos.x-s[0].pos.x,s[1].pos.y-s[0].pos.y),u=Math.hypot(t.x-s[1].pos.x,t.y-s[1].pos.y),d=Math.min(c,l,u,J.elbowRadius)*.45,f=Math.max(2,d);a.push(e),a.push({x:s[0].pos.x-f*s[0].d1.x,y:s[0].pos.y-f*s[0].d1.y});for(let e of i(s[0],f,7))a.push(e);a.push({x:s[1].pos.x-f*s[1].d1.x,y:s[1].pos.y-f*s[1].d1.y});for(let e of i(s[1],f,7))a.push(e);a.push(t);let p=[],m=0;for(let e=0;e<a.length-1;e++){let t=Math.hypot(a[e+1].x-a[e].x,a[e+1].y-a[e].y);p.push(t),m+=t}let h=[],g=[],_=0;for(let e=0;e<a.length;e++){let t=a[Math.max(0,e-1)],i=a[Math.min(a.length-1,e+1)],o=i.x-t.x,s=i.y-t.y,c=Math.hypot(o,s);c<1e-6&&(c=1);let l=-s/c,u=o/c;e>0&&(_+=p[e-1]);let d=m>0?_/m:0,f=(n+(r-n)*d)/2;h.push({x:a[e].x+l*f,y:a[e].y+u*f}),g.push({x:a[e].x-l*f,y:a[e].y-u*f})}let v=`M ${h[0].x.toFixed(2)} ${h[0].y.toFixed(2)}`;for(let e=1;e<h.length;e++)v+=` L ${h[e].x.toFixed(2)} ${h[e].y.toFixed(2)}`;v+=` L ${g[h.length-1].x.toFixed(2)} ${g[h.length-1].y.toFixed(2)}`;for(let e=g.length-2;e>=0;e--)v+=` L ${g[e].x.toFixed(2)} ${g[e].y.toFixed(2)}`;return v+=` Z`,v}{let i=t.x-e.x,a=t.y-e.y,o=Math.hypot(i,a);o<1e-6&&(o=1);let s=-a/o,c=i/o,l=n/2,u=r/2,d={x:e.x+s*l,y:e.y+c*l},f={x:e.x-s*l,y:e.y-c*l},p={x:t.x-s*u,y:t.y-c*u},m={x:t.x+s*u,y:t.y+c*u};return`M ${d.x.toFixed(2)} ${d.y.toFixed(2)} L ${m.x.toFixed(2)} ${m.y.toFixed(2)} L ${p.x.toFixed(2)} ${p.y.toFixed(2)} L ${f.x.toFixed(2)} ${f.y.toFixed(2)} Z`}}let vn=b(()=>jn.value.root.children),yn=Me[0].colors,bn=b(()=>Ne(J.branchPaletteId,J.customPalettes)),xn=b(()=>{let e=new Map;if(!J.rainbowBranch)return e;let t=c.lineColors,n=t&&t.length>0?t:bn.value.colors.length>0?bn.value.colors:yn;for(let t=0;t<vn.value.length;t++){let r=vn.value[t];e.set(r.id,n[t%n.length])}let r=(t,n)=>{e.set(t.id,n);for(let e of t.children)r(e,n)};for(let e=0;e<vn.value.length;e++){let t=vn.value[e];r(t,n[e%n.length])}return e});function Sn(e,t){return J.rainbowBranch?xn.value.get(t.id)??cn.value.lineColor:cn.value.lineColor}function Cn(e){let t=H(e.id);if(t.bg)return t.bg;if(e.isRoot)return cn.value.rootBg;if(J.rainbowBranch){let t=xn.value.get(e.id);if(t)return kn(t,.18)}return cn.value.branchBg}function wn(e){let t=H(e.id);if(t.textColor)return t.textColor;if(e.isRoot)return cn.value.rootText;if(J.rainbowBranch){let t=xn.value.get(e.id);if(t)return An(t,.55)}return cn.value.branchText}function Tn(e){let t=H(e.id);if(t.borderColor)return t.borderColor;if(e.isRoot)return cn.value.rootBg;if(J.rainbowBranch){let t=xn.value.get(e.id);if(t)return An(t,.3)}return cn.value.lineColor}function En(e){let t=H(e.id);return t.fontWeight?t.fontWeight:e.isRoot?700:e.depth<=1?600:e.depth===2?500:400}function Dn(e){return H(e.id).fontSize??e.fontSize??cn.value.fontSize}function kn(e,t){let n=e.replace(`#`,``),r=n.length===6?n:n.split(``).map(e=>e+e).join(``);return`rgba(${parseInt(r.slice(0,2),16)}, ${parseInt(r.slice(2,4),16)}, ${parseInt(r.slice(4,6),16)}, ${t})`}function An(e,t){let n=e.replace(`#`,``),r=n.length===6?n:n.split(``).map(e=>e+e).join(``);return`rgb(${Math.round(parseInt(r.slice(0,2),16)*(1-t))}, ${Math.round(parseInt(r.slice(2,4),16)*(1-t))}, ${Math.round(parseInt(r.slice(4,6),16)*(1-t))})`}let Y=tt({getContainer:()=>E.value});Y.setOnMarqueeEnd(Tr),it({isEditing:()=>k.value!==null,isReadonly:()=>c.previewMode,getSelectedId:()=>N.value,getSelectedIds:()=>[...M.value],defaultTargetId:()=>B.value.id,onAddChild:Jn,onAddSibling:Yn,onAddSiblingBefore:Xn,onRemove:cr,onStartEdit:Rn,onClearSelection:()=>{M.value=new Set,or()},onDuplicate:Zn,onCopy:tr,onCut:nr,onPaste:rr,hasClipboard:()=>!!ie.value&&ie.value.nodes.length>0,onUndo:ir,onRedo:ar,onNavigate:sr,onSelectRoot:()=>{M.value=new Set([B.value.id]),or()}});let jn=b(()=>{let e=ze(B.value);return In(e),Te(e,{mode:J.layoutMode,baseFontSize:cn.value.fontSize,richHeights:oe.value,richWidths:V.value})}),Mn=T([]),Nn=b(()=>(rn.value,Mn.value));r(jn,e=>{let t=[],n=e=>{t.push(e);for(let t of e.children)n(t)};n(e.root),Mn.value=t},{immediate:!0});let Pn=b(()=>{let e=[];for(let t of Nn.value)for(let n of t.children)e.push({from:t,to:n,key:`${t.id}->${n.id}`});return e}),Fn=b(()=>`${jn.value.vbX} ${jn.value.vbY} ${jn.value.vbW} ${jn.value.vbH}`);function In(e){if(P.value.has(e.id)){e.children=[],e.collapsed=!0;return}e.collapsed=!1;for(let t of e.children)In(t)}function Rn(e){let t=W(B.value,e);t&&(k.value=e,j.value=t.text,M.value=new Set([e]),or(),a(()=>{let e=document.querySelector(`.zm-input`);e?.focus(),e?.select(),Vn(e)}))}function zn(){if(!k.value)return;let e=W(B.value,k.value);e&&e.text!==(j.value.trim()||` `)&&(e.text=j.value.trim()||` `,K(),w(`change`,B.value)),k.value=null}function Bn(){k.value=null}function Vn(e){e&&(e.style.height=`auto`,e.style.height=e.scrollHeight+`px`)}function Hn(e){Vn(e.target)}function Un(e){if(c.previewMode)return;let t=W(B.value,e);t!=null&&t.richContent&&(ae.value=e,z.value=t.richContent.raw,a(()=>{document.querySelector(`.zm-node .zm-rich textarea`)?.focus()}))}function Wn(){if(!ae.value)return;let e=ae.value,t=W(B.value,e),n=z.value;t&&t.richContent&&t.richContent.raw!==n&&(t.richContent.kind===`code`?Ce(e,{kind:`code`,raw:n,lang:Vo(n)||void 0}):Ce(e,{kind:`table`,raw:n})),ae.value=null}function Gn(){ae.value=null}function Kn(e){e.key===`Escape`?(e.preventDefault(),Gn()):e.key===`Enter`&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),Wn())}function qn(e){let t=e.metaKey||e.ctrlKey;t&&(e.key===`z`||e.key===`Z`)&&!e.shiftKey?(e.preventDefault(),ir()):(t&&e.shiftKey&&(e.key===`z`||e.key===`Z`)||t&&(e.key===`y`||e.key===`Y`)&&!e.shiftKey)&&(e.preventDefault(),ar())}function Jn(e){let t=We(B.value,e,Xe);t&&(K(),q(),w(`change`,B.value),a(()=>Rn(t.id)))}function Yn(e){if(e===B.value.id){Jn(e);return}let t=Ge(B.value,e,Xe);t&&(K(),q(),w(`change`,B.value),a(()=>Rn(t.id)))}function Xn(e){if(e===B.value.id){Jn(e);return}let t=Ke(B.value,e,Xe);t&&(K(),q(),w(`change`,B.value),a(()=>Rn(t.id)))}function Zn(e){if(e===B.value.id)return;let t=qe(B.value,e);t&&(K(),M.value=new Set([t.id]),or(),w(`change`,B.value),q())}function Qn(e){let t=[],n=new Set;for(let r of e)r!==B.value.id&&(n.has(r)||W(B.value,r)&&(n.add(r),t.push(r)));return t}function $n(e){let t=new Set(e),n=[],r=e=>{t.has(e.id)&&n.push(e.id);for(let t of e.children)r(t)};return r(B.value),n}function er(e){var t;try{(t=navigator.clipboard)==null||t.writeText(e)}catch{}}function tr(e){let t=$n(Qn(e));if(t.length===0)return;let n=[];for(let e of t){let t=Ye(B.value,e);t&&n.push(t)}n.length!==0&&(ie.value={nodes:n,originalIds:new Set(t)},er(n.map(e=>e.text).join(`
|
|
133
|
+
| a | b | c |`);if(r===null)return;let i=r.trim();if(!i){Ce(e,null);return}Ce(e,{kind:`table`,raw:i})}function Vt(){let e=U.value?.nodeId;e&&Ce(e,null)}function Ht(e){c.previewMode||(M.value=new Set([e]),or(),c.builtInDrawers&&(st(),$e.value=!0,nt.value++),w(`edit-note`,e))}function Ut(e,t=60){let n=e.replace(/\s+/g,` `).trim();return n.length<=t?n||`点击编辑笔记`:n.slice(0,t)+`…`}function Wt(e){if(c.previewMode||k.value)return;let t=e.target;if(t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable))return;let n=N.value;if(!n)return;let r=e.clipboardData?.items;if(r)for(let t=0;t<r.length;t++){let i=r[t];if(i.kind===`file`&&i.type.startsWith(`image/`)){let t=i.getAsFile();if(!t)continue;e.preventDefault();let r=W(B.value,n);if(r!=null&&r.image&&!window.confirm(`该节点已有图片,要用剪贴板里的图片替换吗?`))return;_e(t,e=>pe(n,e));return}}}i(()=>{window.addEventListener(`paste`,Wt),window.addEventListener(`keydown`,Gt),q()}),t(()=>{window.removeEventListener(`paste`,Wt),window.removeEventListener(`keydown`,Gt)});function Gt(e){if((e.metaKey||e.ctrlKey)&&(e.key===`f`||e.key===`F`)){let t=e.target;if(t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable))return;e.preventDefault(),w(`canvas-outline`)}}let Kt=T(null),qt=b(()=>Kt.value?.nodeId??null);function Jt(e,t){if(!t.image)return;e.preventDefault(),e.stopPropagation();let n=t.image.naturalW||t.image.width,r=t.image.naturalH||t.image.height,i=r>0?r/n:1;Kt.value={nodeId:t.id,startX:e.clientX,startY:e.clientY,startW:t.image.width,startH:t.image.height,naturalW:n,naturalH:r,ratio:i,pendingW:t.image.width,pendingH:t.image.height},window.addEventListener(`mousemove`,Yt),window.addEventListener(`mouseup`,Xt)}function Yt(e){let t=Kt.value;if(!t)return;let n=Y.scale.value||1,r=e.clientX-t.startX,i=ge(t.startW+r/n,qu,Ju),a=ge(i*t.ratio,qu,Ju);t.pendingW=i,t.pendingH=a;let o=E.value?.querySelector(`[data-node-id="${t.nodeId}"] .zm-node-img`);o&&(o.style.width=`${i}px`,o.style.height=`${a}px`);let s=E.value?.querySelector(`[data-node-id="${t.nodeId}"]`);s&&(s.style.minWidth=`${Math.max(80,Math.ceil(i+28))}px`,s.style.height=`${Math.ceil(a+8+30)}px`)}function Xt(){let e=Kt.value;if(window.removeEventListener(`mousemove`,Yt),window.removeEventListener(`mouseup`,Xt),Kt.value=null,!e)return;let t=W(B.value,e.nodeId);!t||!t.image||(pe(e.nodeId,{src:t.image.src,naturalW:t.image.naturalW,naturalH:t.image.naturalH,width:e.pendingW,height:e.pendingH}),M.value=new Set([e.nodeId]),or(),Qt=!0)}let Zt=T(null),Qt=!1;function $t(e){Zt.value=e}function en(e){Zt.value===e&&(Zt.value=null),R.value&&=null}function nn(e,t){if(!t.text||t.text.length<14)return;let n=e.currentTarget.getBoundingClientRect(),r=E.value?.getBoundingClientRect();if(!r)return;let i=n.top-r.top>60,a=n.left-r.left+n.width/2,o=r.width-240/2-10,s=Math.max(130,Math.min(a,o)),c=i?n.top-r.top-8:n.bottom-r.top+8;R.value={text:t.text,x:s,y:c,above:i}}let rn=T(0),an=T(!1),on=at(100);function K(){on.record({data:B.value,selectedIds:[...M.value]})}function q(){P.value=new Set(P.value),rn.value++,a().then(()=>a()).then(()=>sn()).then(()=>{rn.value++})}function sn(){let e=document.querySelectorAll(`.zm-rich`),t={},n={};e.forEach(e=>{let r=e,i=null;for(;r&&!i;)i=r.getAttribute(`data-node-id`),r=r.parentElement;if(!i)return;let a=e.offsetHeight,o=e.scrollWidth,s=Math.round(a*2)/2,c=Math.round(o*2)/2;t[i]=s,n[i]=c,oe.value[i],V.value[i]}),oe.value=t,V.value=n}let cn=b(()=>({rootBg:c.theme?.rootBg??`#1f2937`,rootText:c.theme?.rootText??`#ffffff`,branchBg:c.theme?.branchBg??`#ffffff`,branchText:c.theme?.branchText??`#1f2937`,lineColor:c.theme?.lineColor??`#94a3b8`,bgColor:c.theme?.bgColor??`#f8fafc`,fontSize:c.theme?.fontSize??14,lineWidthStart:c.theme?.lineWidthStart??2.2,lineWidthEnd:c.theme?.lineWidthEnd??.8,rainbowBranch:c.theme?.rainbowBranch??!1})),ln=b(()=>J.canvasBg||cn.value.bgColor),J=m({autoBalanceOnChange:!0,lineWidthStart:16,lineWidthEnd:3.6,rainbowBranch:!0,branchPaletteId:`default`,customPalettes:[],lineStyle:`rounded-elbow`,rootLineStyle:`arc`,lineOrigin:`proportional`,layoutMode:`mindmap`,taperedEdge:!0,lineWidthTaper:.3,elbowRadius:8,showOrderBadge:!1,canvasBg:void 0});function un(e){return e?J.rootLineStyle:J.lineStyle}function dn(e){return J.taperedEdge?pn(e):mn(e)}function fn(e){return J.taperedEdge?J.lineWidthEnd:mn(e)}function pn(e){let t=J.lineWidthTaper,n=J.lineWidthStart*t**+e;return Math.max(J.lineWidthEnd,n)}function mn(e){if(e<=0)return J.lineWidthStart;if(e>=3)return J.lineWidthEnd;let t=e/3;return J.lineWidthStart+(J.lineWidthEnd-J.lineWidthStart)*t}function hn(e,t,n,r){let i=1-e;return{x:i*i*i*t.x+3*i*i*e*n.x1+3*i*e*e*n.x2+e*e*e*r.x,y:i*i*i*t.y+3*i*i*e*n.y1+3*i*e*e*n.y2+e*e*e*r.y}}function gn(e,t,n,r){let i=1-e;return{x:i*i*t.x+2*i*e*n.x+e*e*r.x,y:i*i*t.y+2*i*e*n.y+e*e*r.y}}function _n(e,t,n,r,i=32,a=`curve`,o=`right`){if(a===`curve`){let a;if(o===`right`||o===`left`){let n=Math.abs(t.x-e.x)*.45,r=o===`right`?1:-1;a={x1:e.x+r*n,y1:e.y,x2:t.x-r*n,y2:t.y}}else{let n=Math.abs(t.y-e.y)*.45;a={x1:e.x,y1:e.y+n,x2:t.x,y2:t.y-n}}let s=n=>{let r=1-n;return{dx:-3*r*r*e.x+3*(r*r-2*r*n)*a.x1+3*(2*r*n-n*n)*a.x2+3*n*n*t.x,dy:-3*r*r*e.y+3*(r*r-2*r*n)*a.y1+3*(2*r*n-n*n)*a.y2+3*n*n*t.y}},c=[],l=[];for(let o=0;o<=i;o++){let u=o/i,d=o===0?e:o===i?t:hn(u,e,a,t),f=s(u),p=Math.hypot(f.dx,f.dy);p<1e-6&&(p=1);let m=-f.dy/p,h=f.dx/p,g=(n+(r-n)*u)/2;c.push({x:d.x+m*g,y:d.y+h*g}),l.push({x:d.x-m*g,y:d.y-h*g})}let u=`M ${c[0].x.toFixed(2)} ${c[0].y.toFixed(2)}`;for(let e=1;e<=i;e++)u+=` L ${c[e].x.toFixed(2)} ${c[e].y.toFixed(2)}`;for(let e=i;e>=0;e--)u+=` L ${l[e].x.toFixed(2)} ${l[e].y.toFixed(2)}`;return u+=` Z`,u}if(a===`arc`){let a;a=o===`right`||o===`left`?{x:(e.x+t.x)/2,y:t.y}:{x:t.x,y:(e.y+t.y)/2};let s=n=>{let r=1-n;return{dx:2*r*(a.x-e.x)+2*n*(t.x-a.x),dy:2*r*(a.y-e.y)+2*n*(t.y-a.y)}},c=[],l=[];for(let o=0;o<=i;o++){let u=o/i,d=o===0?e:o===i?t:gn(u,e,a,t),f=s(u),p=Math.hypot(f.dx,f.dy);p<1e-6&&(p=1);let m=-f.dy/p,h=f.dx/p,g=(n+(r-n)*u)/2;c.push({x:d.x+m*g,y:d.y+h*g}),l.push({x:d.x-m*g,y:d.y-h*g})}let u=n/2,d=r/2,f=`M ${c[0].x.toFixed(2)} ${c[0].y.toFixed(2)}`;for(let e=1;e<=i;e++)f+=` L ${c[e].x.toFixed(2)} ${c[e].y.toFixed(2)}`;f+=` A ${d.toFixed(2)} ${d.toFixed(2)} 0 0 0 ${l[i].x.toFixed(2)} ${l[i].y.toFixed(2)}`;for(let e=i-1;e>=0;e--)f+=` L ${l[e].x.toFixed(2)} ${l[e].y.toFixed(2)}`;return f+=` A ${u.toFixed(2)} ${u.toFixed(2)} 0 0 0 ${c[0].x.toFixed(2)} ${c[0].y.toFixed(2)}`,f+=` Z`,f}if(a===`elbow`){let i=[];if(o===`down`){let n=(e.y+t.y)/2;i.push(e,{x:e.x,y:n},{x:t.x,y:n},t)}else{let n=(e.x+t.x)/2;i.push(e,{x:n,y:e.y},{x:n,y:t.y},t)}let a=[],s=0;for(let e=0;e<i.length-1;e++){let t=Math.hypot(i[e+1].x-i[e].x,i[e+1].y-i[e].y);a.push(t),s+=t}let c=[n/2],l=0;for(let e=0;e<a.length-1;e++){l+=a[e];let t=s>0?l/s:0;c.push((n+(r-n)*t)/2)}c.push(r/2);let u=[];for(let e=0;e<i.length-1;e++){let t=i[e+1].x-i[e].x,n=i[e+1].y-i[e].y,r=Math.hypot(t,n);r<1e-6&&(r=1),u.push({x:-n/r,y:t/r})}let d=[],f=[];d.push({x:i[0].x+u[0].x*c[0],y:i[0].y+u[0].y*c[0]}),f.push({x:i[0].x-u[0].x*c[0],y:i[0].y-u[0].y*c[0]});for(let e=1;e<i.length-1;e++){let t=u[e-1],n=u[e],r=c[e];d.push({x:i[e].x+t.x*r+n.x*r,y:i[e].y+t.y*r+n.y*r}),f.push({x:i[e].x-t.x*r-n.x*r,y:i[e].y-t.y*r-n.y*r})}let p=u[u.length-1],m=c[c.length-1];d.push({x:i[i.length-1].x+p.x*m,y:i[i.length-1].y+p.y*m}),f.push({x:i[i.length-1].x-p.x*m,y:i[i.length-1].y-p.y*m});let h=`M ${d[0].x.toFixed(2)} ${d[0].y.toFixed(2)}`;for(let e=1;e<d.length;e++)h+=` L ${d[e].x.toFixed(2)} ${d[e].y.toFixed(2)}`;for(let e=f.length-1;e>=0;e--)h+=` L ${f[e].x.toFixed(2)} ${f[e].y.toFixed(2)}`;return h+=` Z`,h}if(a===`rounded-elbow`){let i=function(e,t,n){let r={x:e.pos.x-t*e.d1.x,y:e.pos.y-t*e.d1.y},i={x:e.pos.x+t*e.d2.x,y:e.pos.y+t*e.d2.y},a={x:e.pos.x+t*(e.d2.x-e.d1.x),y:e.pos.y+t*(e.d2.y-e.d1.y)},o=Math.atan2(r.y-a.y,r.x-a.x),s=Math.atan2(i.y-a.y,i.x-a.x)-o;for(;s>Math.PI;)s-=2*Math.PI;for(;s<-Math.PI;)s+=2*Math.PI;let c=[];for(let e=1;e<n;e++){let r=e/n,i=o+s*r;c.push({x:a.x+t*Math.cos(i),y:a.y+t*Math.sin(i)})}return c},a=[],s;if(o===`down`){let n=(e.y+t.y)/2,r=Math.sign(n-e.y)||1,i=Math.sign(t.x-e.x)||1,a=Math.sign(t.y-n)||1;s=[{pos:{x:e.x,y:n},d1:{x:0,y:r},d2:{x:i,y:0}},{pos:{x:t.x,y:n},d1:{x:i,y:0},d2:{x:0,y:a}}]}else{let n=(e.x+t.x)/2,r=Math.sign(n-e.x)||1,i=Math.sign(t.y-e.y)||1,a=Math.sign(t.x-n)||1;s=[{pos:{x:n,y:e.y},d1:{x:r,y:0},d2:{x:0,y:i}},{pos:{x:n,y:t.y},d1:{x:0,y:i},d2:{x:a,y:0}}]}let c=Math.hypot(s[0].pos.x-e.x,s[0].pos.y-e.y),l=Math.hypot(s[1].pos.x-s[0].pos.x,s[1].pos.y-s[0].pos.y),u=Math.hypot(t.x-s[1].pos.x,t.y-s[1].pos.y),d=Math.min(c,l,u,J.elbowRadius)*.45,f=Math.max(2,d);a.push(e),a.push({x:s[0].pos.x-f*s[0].d1.x,y:s[0].pos.y-f*s[0].d1.y});for(let e of i(s[0],f,7))a.push(e);a.push({x:s[1].pos.x-f*s[1].d1.x,y:s[1].pos.y-f*s[1].d1.y});for(let e of i(s[1],f,7))a.push(e);a.push(t);let p=[],m=0;for(let e=0;e<a.length-1;e++){let t=Math.hypot(a[e+1].x-a[e].x,a[e+1].y-a[e].y);p.push(t),m+=t}let h=[],g=[],_=0;for(let e=0;e<a.length;e++){let t=a[Math.max(0,e-1)],i=a[Math.min(a.length-1,e+1)],o=i.x-t.x,s=i.y-t.y,c=Math.hypot(o,s);c<1e-6&&(c=1);let l=-s/c,u=o/c;e>0&&(_+=p[e-1]);let d=m>0?_/m:0,f=(n+(r-n)*d)/2;h.push({x:a[e].x+l*f,y:a[e].y+u*f}),g.push({x:a[e].x-l*f,y:a[e].y-u*f})}let v=`M ${h[0].x.toFixed(2)} ${h[0].y.toFixed(2)}`;for(let e=1;e<h.length;e++)v+=` L ${h[e].x.toFixed(2)} ${h[e].y.toFixed(2)}`;v+=` L ${g[h.length-1].x.toFixed(2)} ${g[h.length-1].y.toFixed(2)}`;for(let e=g.length-2;e>=0;e--)v+=` L ${g[e].x.toFixed(2)} ${g[e].y.toFixed(2)}`;return v+=` Z`,v}{let i=t.x-e.x,a=t.y-e.y,o=Math.hypot(i,a);o<1e-6&&(o=1);let s=-a/o,c=i/o,l=n/2,u=r/2,d={x:e.x+s*l,y:e.y+c*l},f={x:e.x-s*l,y:e.y-c*l},p={x:t.x-s*u,y:t.y-c*u},m={x:t.x+s*u,y:t.y+c*u};return`M ${d.x.toFixed(2)} ${d.y.toFixed(2)} L ${m.x.toFixed(2)} ${m.y.toFixed(2)} L ${p.x.toFixed(2)} ${p.y.toFixed(2)} L ${f.x.toFixed(2)} ${f.y.toFixed(2)} Z`}}let vn=b(()=>jn.value.root.children),yn=Me[0].colors,bn=b(()=>Ne(J.branchPaletteId,J.customPalettes)),xn=b(()=>{let e=new Map;if(!J.rainbowBranch)return e;let t=c.lineColors,n=t&&t.length>0?t:bn.value.colors.length>0?bn.value.colors:yn;for(let t=0;t<vn.value.length;t++){let r=vn.value[t];e.set(r.id,n[t%n.length])}let r=(t,n)=>{e.set(t.id,n);for(let e of t.children)r(e,n)};for(let e=0;e<vn.value.length;e++){let t=vn.value[e];r(t,n[e%n.length])}return e});function Sn(e,t){return J.rainbowBranch?xn.value.get(t.id)??cn.value.lineColor:cn.value.lineColor}function Cn(e){let t=H(e.id);if(t.bg)return t.bg;if(e.isRoot)return cn.value.rootBg;if(J.rainbowBranch){let t=xn.value.get(e.id);if(t)return kn(t,.18)}return cn.value.branchBg}function wn(e){let t=H(e.id);if(t.textColor)return t.textColor;if(e.isRoot)return cn.value.rootText;if(J.rainbowBranch){let t=xn.value.get(e.id);if(t)return An(t,.55)}return cn.value.branchText}function Tn(e){let t=H(e.id);if(t.borderColor)return t.borderColor;if(e.isRoot)return cn.value.rootBg;if(J.rainbowBranch){let t=xn.value.get(e.id);if(t)return An(t,.3)}return cn.value.lineColor}function En(e){let t=H(e.id);return t.fontWeight?t.fontWeight:e.isRoot?700:e.depth<=1?600:e.depth===2?500:400}function Dn(e){return H(e.id).fontSize??e.fontSize??cn.value.fontSize}function kn(e,t){let n=e.replace(`#`,``),r=n.length===6?n:n.split(``).map(e=>e+e).join(``);return`rgba(${parseInt(r.slice(0,2),16)}, ${parseInt(r.slice(2,4),16)}, ${parseInt(r.slice(4,6),16)}, ${t})`}function An(e,t){let n=e.replace(`#`,``),r=n.length===6?n:n.split(``).map(e=>e+e).join(``);return`rgb(${Math.round(parseInt(r.slice(0,2),16)*(1-t))}, ${Math.round(parseInt(r.slice(2,4),16)*(1-t))}, ${Math.round(parseInt(r.slice(4,6),16)*(1-t))})`}let Y=tt({getContainer:()=>E.value});Y.setOnMarqueeEnd(Tr),it({isEditing:()=>k.value!==null,isReadonly:()=>c.previewMode,getSelectedId:()=>N.value,getSelectedIds:()=>[...M.value],defaultTargetId:()=>B.value.id,onAddChild:Jn,onAddSibling:Yn,onAddSiblingBefore:Xn,onRemove:cr,onStartEdit:Rn,onClearSelection:()=>{M.value=new Set,or()},onDuplicate:Zn,onCopy:tr,onCut:nr,onPaste:rr,hasClipboard:()=>!!ie.value&&ie.value.nodes.length>0,onUndo:ir,onRedo:ar,onNavigate:sr,onSelectRoot:()=>{M.value=new Set([B.value.id]),or()}});let jn=b(()=>{let e=ze(B.value);return In(e),Te(e,{mode:J.layoutMode,baseFontSize:cn.value.fontSize,richHeights:oe.value,richWidths:V.value})}),Mn=T([]),Nn=b(()=>(rn.value,Mn.value));r(jn,e=>{let t=[],n=e=>{t.push(e);for(let t of e.children)n(t)};n(e.root),Mn.value=t},{immediate:!0});let Pn=b(()=>{let e=[];for(let t of Nn.value)for(let n of t.children)e.push({from:t,to:n,key:`${t.id}->${n.id}`});return e}),Fn=b(()=>`${jn.value.vbX} ${jn.value.vbY} ${jn.value.vbW} ${jn.value.vbH}`);function In(e){if(P.value.has(e.id)){e.children=[],e.collapsed=!0;return}e.collapsed=!1;for(let t of e.children)In(t)}function Rn(e){let t=W(B.value,e);t&&(k.value=e,j.value=t.text,M.value=new Set([e]),or(),a(()=>{let e=document.querySelector(`.zm-input`);e?.focus(),e?.select(),Vn(e)}))}function zn(){if(!k.value)return;let e=W(B.value,k.value);e&&e.text!==(j.value.trim()||` `)&&(e.text=j.value.trim()||` `,K(),w(`change`,B.value)),k.value=null}function Bn(){k.value=null}function Vn(e){e&&(e.style.height=`auto`,e.style.height=e.scrollHeight+`px`)}function Hn(e){Vn(e.target)}function Un(e){if(c.previewMode)return;let t=W(B.value,e);t!=null&&t.richContent&&(ae.value=e,z.value=t.richContent.raw,a(()=>{document.querySelector(`.zm-node .zm-rich textarea`)?.focus()}))}function Wn(){if(!ae.value)return;let e=ae.value,t=W(B.value,e),n=z.value;t&&t.richContent&&t.richContent.raw!==n&&(t.richContent.kind===`code`?Ce(e,{kind:`code`,raw:n,lang:Vo(n)||void 0}):Ce(e,{kind:`table`,raw:n})),ae.value=null}function Gn(){ae.value=null}function Kn(e){e.key===`Escape`?(e.preventDefault(),Gn()):e.key===`Enter`&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),Wn())}function qn(e){let t=e.metaKey||e.ctrlKey;t&&(e.key===`z`||e.key===`Z`)&&!e.shiftKey?(e.preventDefault(),ir()):(t&&e.shiftKey&&(e.key===`z`||e.key===`Z`)||t&&(e.key===`y`||e.key===`Y`)&&!e.shiftKey)&&(e.preventDefault(),ar())}function Jn(e){let t=We(B.value,e,Xe);t&&(K(),q(),w(`change`,B.value),a(()=>Rn(t.id)))}function Yn(e){if(e===B.value.id){Jn(e);return}let t=Ge(B.value,e,Xe);t&&(K(),q(),w(`change`,B.value),a(()=>Rn(t.id)))}function Xn(e){if(e===B.value.id){Jn(e);return}let t=Ke(B.value,e,Xe);t&&(K(),q(),w(`change`,B.value),a(()=>Rn(t.id)))}function Zn(e){if(e===B.value.id)return;let t=qe(B.value,e);t&&(K(),M.value=new Set([t.id]),or(),w(`change`,B.value),q())}function Qn(e){let t=[],n=new Set;for(let r of e)r!==B.value.id&&(n.has(r)||W(B.value,r)&&(n.add(r),t.push(r)));return t}function $n(e){let t=new Set(e),n=[],r=e=>{t.has(e.id)&&n.push(e.id);for(let t of e.children)r(t)};return r(B.value),n}function er(e){var t;try{(t=navigator.clipboard)==null||t.writeText(e)}catch{}}function tr(e){let t=$n(Qn(e));if(t.length===0)return;let n=[];for(let e of t){let t=Ye(B.value,e);t&&n.push(t)}n.length!==0&&(ie.value={nodes:n,originalIds:new Set(t)},er(n.map(e=>e.text).join(`
|
|
134
134
|
`)),q())}function nr(e){let t=$n(Qn(e));if(t.length===0)return;let n=[];for(let e of t){let t=Ye(B.value,e);t&&n.push(t)}if(n.length!==0){K();for(let e of t)Be(B.value,e);M.value=new Set,or(),ie.value={nodes:n,originalIds:new Set(t)},er(n.map(e=>e.text).join(`
|
|
135
135
|
`)),q(),w(`change`,B.value)}}function rr(e){let t=ie.value;if(!t||t.nodes.length===0)return;let n=e??B.value.id,r=W(B.value,n);if(r){for(let e of t.originalIds){let t=W(B.value,e);if(t&&W(t,n))return}K();for(let e of t.nodes){let t=ze(e);Je(t),r.children.push(t)}ie.value=null,q(),w(`change`,B.value)}}function ir(){let e=on.undo();e&&(B.value=e.data,M.value=new Set(e.selectedIds??[]),or(),q(),w(`change`,B.value))}function ar(){let e=on.redo();e&&(B.value=e.data,M.value=new Set(e.selectedIds??[]),or(),q(),w(`change`,B.value))}function or(){let e=[];for(let t of M.value){let n=W(B.value,t);n&&e.push(n)}if(c.builtInDrawers&&!c.previewMode&&e.length>0){let t=e[0];!$e.value&&Fr(t.id)&&(st(),$e.value=!0)}else c.builtInDrawers&&e.length===0&&($e.value=!1);w(`select`,e.length>0?e:null)}function sr(e,t){let n=N.value??B.value.id,r=W(B.value,n);if(!r)return;let i=null;if(t===1){let e=G(B.value,r.id);if(e){let t=e.children.findIndex(e=>e.id===r.id);t>=0&&t<e.children.length-1&&(i=e.children[t+1].id)}}else if(t===-1){let e=G(B.value,r.id);if(e){let t=e.children.findIndex(e=>e.id===r.id);t>0&&(i=e.children[t-1].id)}}else if(e===1){let e=G(B.value,r.id);e&&(i=e.id)}else e===-1&&r.children.length>0&&(i=r.children[0].id);i&&(M.value=new Set([i]),or())}function cr(e){if(e!==B.value.id&&Be(B.value,e)){if(K(),M.value.has(e)){let t=new Set(M.value);t.delete(e),M.value=t,or()}q(),w(`change`,B.value)}}function lr(e){P.value.has(e)?P.value.delete(e):P.value.add(e),q()}function ur(e){let t=[{n:B.value,depth:1}];for(;t.length;){let{n,depth:r}=t.pop();e(n,r);for(let e=n.children.length-1;e>=0;e--)t.push({n:n.children[e],depth:r+1})}}function dr(){P.value=new Set,ur(e=>{e.children.length>0&&P.value.add(e.id)}),q()}function fr(e){P.value=new Set,ur((t,n)=>{n>e&&t.children.length>0&&P.value.add(t.id)}),q()}function pr(){P.value=new Set,q()}function mr(e,t){Ve(B.value,e,t)&&(K(),q(),w(`change`,B.value))}function hr(e,t,n){return He(B.value,e,t,n)?(K(),q(),w(`change`,B.value),!0):!1}function gr(e,t){if(e.stopPropagation(),e.shiftKey){let e=new Set(M.value);e.has(t.id)?e.delete(t.id):e.add(t.id),M.value=e}else M.value=new Set([t.id]);or()}function _r(e,t,n){let r=null;for(let i of Nn.value){if(i.id===n)continue;let a=i.width/2,o=i.height/2;e>=i.x-a&&e<=i.x+a&&t>=i.y-o&&t<=i.y+o&&(r=i)}return r}let vr=null;function yr(e,t){if(c.previewMode||t.isRoot||e.button!==0)return;let n=e.target;if(n!=null&&n.closest(`.zm-img-resize-handle`))return;e.stopPropagation();let r=E.value.getBoundingClientRect(),i=t.x*Y.scale.value+Y.offsetX.value,a=t.y*Y.scale.value+Y.offsetY.value,o=e.clientX-r.left-i,s=e.clientY-r.top-a;vr={srcId:t.id,srcText:t.text,pointerOffsetX:o,pointerOffsetY:s,startX:e.clientX,startY:e.clientY},window.addEventListener(`pointermove`,br),window.addEventListener(`pointerup`,xr),window.addEventListener(`pointercancel`,xr)}function br(e){if(vr){let t=e.clientX-vr.startX,n=e.clientY-vr.startY;if(Math.abs(t)<=Xu&&Math.abs(n)<=Xu)return;F.value={srcId:vr.srcId,srcText:vr.srcText,pointerOffsetX:vr.pointerOffsetX,pointerOffsetY:vr.pointerOffsetY,currentTargetId:null},document.body.classList.add(`is-dragging`),vr=null}let t=F.value;if(!t)return;let n=E.value.getBoundingClientRect();re.value=e.clientX-n.left-t.pointerOffsetX,L.value=e.clientY-n.top-t.pointerOffsetY,t.currentTargetId=_r((e.clientX-n.left-Y.offsetX.value)/Y.scale.value,(e.clientY-n.top-Y.offsetY.value)/Y.scale.value,t.srcId)?.id??null}function xr(e){if(window.removeEventListener(`pointermove`,br),window.removeEventListener(`pointerup`,xr),window.removeEventListener(`pointercancel`,xr),vr){vr=null;return}let t=F.value;t&&(t.currentTargetId&&(hr(t.srcId,t.currentTargetId,`child`),M.value=new Set([t.srcId]),or()),F.value=null,re.value=0,L.value=0,document.body.classList.remove(`is-dragging`))}let Sr=!1;function Cr(e){let t=e.target;if(!t||t.closest(`.zm-node, .zm-toolbar, button, input, textarea`))return;if(e.button===2){Sr=!0,Y.startPan(e);return}if(Sr=!1,e.button!==0)return;let n=E.value.getBoundingClientRect(),r=(e.clientX-n.left-Y.offsetX.value)/Y.scale.value,i=(e.clientY-n.top-Y.offsetY.value)/Y.scale.value;Y.startMarquee(r,i,{shift:e.shiftKey})}function wr(e){if(Qt){Qt=!1;return}let t=e.target;if(!t||t.closest(`.zm-node`))return;let n=Y.marquee;n.width>=4||n.height>=4||M.value.size>0&&(M.value=new Set,or())}function Tr(){let e=Y.marquee;if(e.width<4&&e.height<4)return;let t=e.x,n=e.y,r=e.x+e.width,i=e.y+e.height,a=[];for(let e of Nn.value){let o=e.width/2,s=e.height/2,c=e.x-o,l=e.x+o,u=e.y-s,d=e.y+s;c<=r&&l>=t&&u<=i&&d>=n&&a.push(e.id)}M.value=e.shiftKey?new Set([...M.value,...a]):new Set(a),or()}function Er(e){return P.value.has(e)}function Dr(e){let t=W(B.value,e.id);return!!t&&t.children.length>0}function Or(e){let t=W(B.value,e);return t?t.children.length:0}function kr(e){if(!W(B.value,e))return 0;let t=[B.value];for(;t.length;){let n=t.pop(),r=n.children.findIndex(t=>t.id===e);if(r>=0)return r;for(let e of n.children)t.push(e)}return 0}function Ar(e,t,n,r){let i=r?._dir??e._dir;if(t===`out`&&e.isRoot&&J.lineOrigin===`center`)return{x:e.x,y:e.y};if(t===`out`&&e.isRoot&&J.lineOrigin===`proportional`&&r){let t=jn.value.root.children;if(i===`down`){let n=t.reduce((t,n)=>Math.max(t,Math.abs(n.x-e.x)),1),i=Math.min(1,Math.abs(r.x-e.x)/n),a=e.y+e.height/2,o=e.y;return{x:e.x,y:a+(o-a)*i}}let a=t.reduce((t,n)=>Math.max(t,Math.abs(n.y-e.y)),1),o=Math.min(1,Math.abs(r.y-e.y)/a),s=n===void 0?e.side:n,c=e.x+s*(e.width/2);return{x:c+(e.x-c)*o,y:e.y}}if(i===`down`)return t===`out`?{x:e.x,y:e.y+e.height/2}:{x:e.x,y:e.y-e.height/2};let a;a=t===`in`?-e.side:n===void 0?e.side:n;let o=t===`in`?e._richInsetX??0:0;return{x:e.x+a*(e.width/2-o),y:e.y}}function jr(){let e=jn.value;Y.resetView(e.width,e.height,e.root.y)}function Mr(){an.value=!0,K(),q(),a(()=>jr())}function Nr(e){J.layoutMode!==e&&(J.layoutMode=e,q(),a(()=>jr()))}function Pr(){return JSON.stringify(B.value,null,2)}function Fr(e){let t=W(B.value,e);return t?!!(t.note&&t.note.text||t.link&&t.link.url||t.image&&t.image.src||t.richContent&&t.richContent.raw||t.markers&&t.markers.length>0||t.tags&&t.tags.length>0):!1}function Ir(e){try{let t=JSON.parse(e);return!t.id||!Array.isArray(t.children)?!1:(on.reset(),B.value=ze(t),M.value=new Set,P.value=new Set,q(),a(()=>jr()),w(`change`,B.value),!0)}catch{return!1}}let Lr=T(``),Rr=T([]),zr=T(-1);function Br(e){Lr.value=e;let t=e.trim();if(!t){Rr.value=[],zr.value=-1;return}let n=t.toLowerCase(),r=[],i=e=>{var t;(e.text.toLowerCase().includes(n)||(t=e.note)!=null&&t.text&&e.note.text.toLowerCase().includes(n))&&r.push(e.id);for(let t of e.children)i(t)};i(B.value),Rr.value=r,zr.value=r.length>0?0:-1,r.length>0&&(Wr(r),a(()=>Gr(0)))}function Vr(e){return Rr.value.includes(e)}function Hr(e){return zr.value>=0&&Rr.value[zr.value]===e}function Ur(e){return Lr.value.trim().length>0&&Rr.value.length>0&&!Rr.value.includes(e)}function Wr(e){if(e.length===0)return;let t=new Set(e),n=new Set,r=e=>{let i=t.has(e.id);for(let t of e.children)r(t)&&(i=!0);return i&&e.children.length>0&&P.value.has(e.id)&&n.add(e.id),i};if(r(B.value),n.size>0){for(let e of n)P.value.delete(e);q()}}function Gr(e){let t=Rr.value[e];if(!t)return;let n=Nn.value.find(e=>e.id===t);n&&(M.value=new Set([t]),or(),Y.centerOn(n.x,n.y,n.width,n.height))}function Kr(e,t){let n=W(B.value,e);n&&(n.markers||=[],!n.markers.includes(t)&&(n.markers.push(t),K(),q(),w(`change`,B.value)))}function qr(e,t){let n=W(B.value,e);if(!n||!n.markers)return;let r=n.markers.indexOf(t);r<0||(n.markers.splice(r,1),n.markers.length===0&&delete n.markers,K(),q(),w(`change`,B.value))}function Jr(e,t){let n=W(B.value,e);if(!n)return!1;n.markers||=[];let r=n.markers.indexOf(t);return r>=0?(n.markers.splice(r,1),n.markers.length===0&&delete n.markers,K(),q(),w(`change`,B.value),!1):(n.markers.push(t),K(),q(),w(`change`,B.value),!0)}function Yr(e){let t=W(B.value,e);return t!=null&&t.markers?[...t.markers]:[]}function Xr(e){let t=U.value?.nodeId;t&&Jr(t,e)}function Zr(){let e=U.value?.nodeId;if(!e)return;let t=W(B.value,e);!t||!t.markers||(delete t.markers,K(),q(),w(`change`,B.value),ke())}function Qr(e,t){let n=W(B.value,e);n&&(t.length===0?n.tags&&delete n.tags:n.tags=[...t],K(),q(),w(`change`,B.value))}function $r(e){let t=W(B.value,e);return t!=null&&t.tags?[...t.tags]:[]}function ei(){let e=U.value?.nodeId;if(!e)return;let t=(W(B.value,e)?.tags)?.join(`, `)??``,n=window.prompt(`输入标签(多个用逗号分隔)`,t);n!==null&&(Qr(e,n.split(/[,,]/).map(e=>e.trim()).filter(e=>e.length>0)),ke())}function ti(){let e=U.value?.nodeId;e&&(Qr(e,[]),ke())}function ni(){let e=jn.value,t=`http://www.w3.org/2000/svg`,n=document.createElementNS(t,`svg`);n.setAttribute(`xmlns`,t),n.setAttribute(`viewBox`,`${e.vbX} ${e.vbY} ${e.vbW} ${e.vbH}`),n.setAttribute(`width`,String(e.vbW)),n.setAttribute(`height`,String(e.vbH));let r=document.createElementNS(t,`rect`);r.setAttribute(`x`,String(e.vbX)),r.setAttribute(`y`,String(e.vbY)),r.setAttribute(`width`,String(e.vbW)),r.setAttribute(`height`,String(e.vbH)),r.setAttribute(`fill`,ln.value),n.appendChild(r);for(let e of Pn.value){let r=document.createElementNS(t,`path`);r.setAttribute(`d`,_n(Ar(e.from,`out`,e.to.side,e.to),Ar(e.to,`in`),dn(e.from.depth),fn(e.to.depth),32,un(e.from.isRoot),e.to._dir)),r.setAttribute(`fill`,Sn(e.from,e.to)),r.setAttribute(`stroke`,`none`),n.appendChild(r)}let i=`-apple-system,BlinkMacSystemFont,'Segoe UI','PingFang SC','Microsoft YaHei',sans-serif`;function a(e,t){let n=0;for(let r of e)/[\u4e00-\u9fff\u3000-\u30ff\uff00-\uffef]/.test(r)?n+=t:n+=t*.55;return n}for(let e of Nn.value){let r=e.x-e.width/2,o=e.y-e.height/2,s=document.createElementNS(t,`rect`);s.setAttribute(`x`,String(r)),s.setAttribute(`y`,String(o)),s.setAttribute(`width`,String(e.width)),s.setAttribute(`height`,String(e.height)),s.setAttribute(`rx`,`8`),s.setAttribute(`fill`,Cn(e)),s.setAttribute(`stroke`,Tn(e)),s.setAttribute(`stroke-width`,`1`),n.appendChild(s);let c=!!(e.tags&&e.tags.length>0),l=!!(e.markers&&e.markers.length>0),u=!!e.image,d=!!(e.richContent&&(e.richContent.kind===`code`||e.richContent.kind===`table`)),f=0,p=0;if(d){let r=e.richContent,s=e.fontSize*.78*.92;if(r.kind===`code`){let c=Bo(r.raw),l=Vo(r.raw),d=c.split(`
|
|
136
136
|
`),m=s*1.35,h=0;for(let e of d)h=Math.max(h,a(e,s));p=Math.min(h+12+4,e.width-4),f=d.length*m+8+2;let g=e.x-p/2,_=o+4;u&&(_=o+e.image.height+6);let v=document.createElementNS(t,`rect`);if(v.setAttribute(`x`,String(g)),v.setAttribute(`y`,String(_)),v.setAttribute(`width`,String(p)),v.setAttribute(`height`,String(f-2)),v.setAttribute(`rx`,`6`),v.setAttribute(`fill`,`rgba(255,255,255,0.55)`),v.setAttribute(`stroke`,Tn(e)),v.setAttribute(`stroke-width`,`1`),n.appendChild(v),l){let r=document.createElementNS(t,`text`);r.setAttribute(`x`,String(g+p-6)),r.setAttribute(`y`,String(_+4+4)),r.setAttribute(`text-anchor`,`end`),r.setAttribute(`fill`,wn(e)),r.setAttribute(`font-size`,String(s*.8)),r.setAttribute(`font-family`,i),r.setAttribute(`opacity`,`0.5`),r.textContent=l,n.appendChild(r)}for(let r=0;r<d.length;r++){let i=document.createElementNS(t,`text`);i.setAttribute(`x`,String(g+6)),i.setAttribute(`y`,String(_+4+(r+.5)*m+2)),i.setAttribute(`dominant-baseline`,`central`),i.setAttribute(`fill`,wn(e)),i.setAttribute(`font-size`,String(s)),i.setAttribute(`font-family`,`'JetBrains Mono','Fira Code',Consolas,monospace`);let a=d[r],o=Math.floor((p-12)/(s*.6));a.length>o&&(a=a.substring(0,o-1)+`…`),i.textContent=a,n.appendChild(i)}}else if(r.kind===`table`){let c=Uo(r.raw);if(c.length>0){let r=s*1.35,l=c[0].length,d=[];for(let e=0;e<l;e++){let t=0;for(let n of c)e<n.length&&(t=Math.max(t,a(n[e],s)));d.push(t+12)}p=Math.min(d.reduce((e,t)=>e+t,0),e.width-4);let m=p/d.reduce((e,t)=>e+t,0);for(let e=0;e<l;e++)d[e]*=m;f=c.length*(r+6)+2;let h=e.x-p/2,g=o+4;u&&(g=o+e.image.height+6);let _=document.createElementNS(t,`rect`);_.setAttribute(`x`,String(h)),_.setAttribute(`y`,String(g)),_.setAttribute(`width`,String(p)),_.setAttribute(`height`,String(f-2)),_.setAttribute(`rx`,`6`),_.setAttribute(`fill`,`rgba(255,255,255,0.55)`),_.setAttribute(`stroke`,Tn(e)),_.setAttribute(`stroke-width`,`1`),n.appendChild(_);let v=h,y=g;for(let a=0;a<c.length;a++){let o=c[a],u=r+6;v=h;for(let f=0;f<l;f++){let p=d[f],m=o[f]||``;if(f<l-1){let r=document.createElementNS(t,`line`);r.setAttribute(`x1`,String(v+p)),r.setAttribute(`y1`,String(y)),r.setAttribute(`x2`,String(v+p)),r.setAttribute(`y2`,String(y+u)),r.setAttribute(`stroke`,Tn(e)),r.setAttribute(`stroke-width`,`1`),n.appendChild(r)}if(a<c.length-1){let r=document.createElementNS(t,`line`);r.setAttribute(`x1`,String(v)),r.setAttribute(`y1`,String(y+u)),r.setAttribute(`x2`,String(v+p)),r.setAttribute(`y2`,String(y+u)),r.setAttribute(`stroke`,Tn(e)),r.setAttribute(`stroke-width`,`1`),n.appendChild(r)}if(a===0){let e=document.createElementNS(t,`rect`);e.setAttribute(`x`,String(v)),e.setAttribute(`y`,String(y)),e.setAttribute(`width`,String(p)),e.setAttribute(`height`,String(u)),e.setAttribute(`fill`,`rgba(255,255,255,0.4)`),n.appendChild(e)}let h=document.createElementNS(t,`text`);h.setAttribute(`x`,String(v+6)),h.setAttribute(`y`,String(y+3+r/2+2)),h.setAttribute(`dominant-baseline`,`central`),h.setAttribute(`fill`,wn(e)),h.setAttribute(`font-size`,String(s)),h.setAttribute(`font-family`,i),a===0&&h.setAttribute(`font-weight`,`600`);let g=m,_=Math.floor((p-12)/(s*.55));g.length>_&&_>2&&(g=g.substring(0,_-1)+`…`),h.textContent=g,n.appendChild(h),v+=p}y+=u}}}}let m=0;if(u){let r=e.image,i=o+4,a=e.x-r.width/2,s=document.createElementNS(t,`image`);s.setAttribute(`x`,String(a)),s.setAttribute(`y`,String(i)),s.setAttribute(`width`,String(r.width)),s.setAttribute(`height`,String(r.height)),s.setAttribute(`href`,r.src),s.setAttributeNS(`http://www.w3.org/1999/xlink`,`xlink:href`,r.src),s.setAttribute(`preserveAspectRatio`,`xMidYMid meet`),n.appendChild(s),m=r.height+6}let h=e.y,g=m+f;g>0?h=o+g+(e.height-g)/2:c&&(h=e.y-8);let _=l?e.markers.length:0,v=_>0?_*14+(_-1)*2+4:0,y=a(e.text,e.fontSize),b=v+y,x=e.x-b/2;if(l){let r=x;for(let i of e.markers){let a=dt(i);if(a){let i=document.createElementNS(t,`svg`);i.setAttribute(`x`,String(r)),i.setAttribute(`y`,String(h-14/2)),i.setAttribute(`width`,`14`),i.setAttribute(`height`,`14`),i.setAttribute(`viewBox`,`0 0 24 24`),i.setAttribute(`color`,wn(e));let o=new DOMParser().parseFromString(`<svg xmlns="${t}">${a}</svg>`,`image/svg+xml`);if(!o.querySelector(`parsererror`))for(;o.documentElement.firstChild;)i.appendChild(o.documentElement.firstChild);n.appendChild(i)}r+=16}}let S=l?x+v+y/2:e.x,C=document.createElementNS(t,`text`);if(C.setAttribute(`x`,String(S)),C.setAttribute(`y`,String(h)),C.setAttribute(`text-anchor`,`middle`),C.setAttribute(`dominant-baseline`,`central`),C.setAttribute(`fill`,wn(e)),C.setAttribute(`font-size`,String(Dn(e))),C.setAttribute(`font-weight`,String(En(e))),C.setAttribute(`font-family`,i),C.textContent=e.text,n.appendChild(C),c){let r=e.y+10,o=e.tags.map(e=>a(e,10)+12),s=o.reduce((e,t)=>e+t+3,-3),c=e.x-s/2;for(let a=0;a<e.tags.length;a++){let s=e.tags[a],l=pt(s),u=o[a],d=document.createElementNS(t,`rect`);d.setAttribute(`x`,String(c)),d.setAttribute(`y`,String(r-16/2)),d.setAttribute(`width`,String(u)),d.setAttribute(`height`,`16`),d.setAttribute(`rx`,`8`),d.setAttribute(`fill`,l.background),d.setAttribute(`stroke`,l.borderColor),d.setAttribute(`stroke-width`,`1`),n.appendChild(d);let f=document.createElementNS(t,`text`);f.setAttribute(`x`,String(c+u/2)),f.setAttribute(`y`,String(r)),f.setAttribute(`text-anchor`,`middle`),f.setAttribute(`dominant-baseline`,`central`),f.setAttribute(`fill`,l.color),f.setAttribute(`font-size`,`10`),f.setAttribute(`font-family`,i),f.textContent=s,n.appendChild(f),c+=u+3}}}return n}function ri(){let e=ni(),t=new XMLSerializer().serializeToString(e);t.startsWith(`<?xml`)||(t=`<?xml version="1.0" encoding="UTF-8"?>
|
|
137
137
|
`+t);let n=new Blob([t],{type:`image/svg+xml;charset=utf-8`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=`${B.value.text||`mindmap`}.svg`,i.click(),URL.revokeObjectURL(r)}function ii(e=2){let t=ni(),n=jn.value,r=new XMLSerializer().serializeToString(t);r.startsWith(`<?xml`)||(r=`<?xml version="1.0" encoding="UTF-8"?>
|
|
138
|
-
`+r);let i=new Blob([r],{type:`image/svg+xml;charset=utf-8`}),a=URL.createObjectURL(i),o=new window.Image;o.onload=()=>{let t=document.createElement(`canvas`);t.width=Math.ceil(n.vbW*e),t.height=Math.ceil(n.vbH*e);let r=t.getContext(`2d`);if(!r){URL.revokeObjectURL(a);return}r.fillStyle=ln.value,r.fillRect(0,0,t.width,t.height),r.drawImage(o,0,0,t.width,t.height),URL.revokeObjectURL(a);try{t.toBlob(e=>{if(!e){ri();return}let t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`${B.value.text||`mindmap`}.png`,n.click(),URL.revokeObjectURL(t)},`image/png`)}catch(e){console.warn(`PNG export failed, falling back to SVG:`,e),ri()}},o.onerror=()=>{URL.revokeObjectURL(a),ri()},o.src=a}return o({addChild:e=>Jn(e),addSibling:e=>Yn(e),removeNode:e=>cr(e),duplicateNode:e=>Zn(e),setNodeText:(e,t)=>mr(e,t),moveNode:(e,t,n)=>hr(e,t,n),lineWidthForDepth:dn,endWidthForDepth:fn,getData:()=>B.value,nodeHasContent:e=>Fr(e),getSelectedIds:()=>[...M.value],copyNodes:e=>tr(e),cutNodes:e=>nr(e),pasteNodes:e=>rr(e),setData:e=>{on.reset(),B.value=ze(e),M.value=new Set,P.value=new Set,q(),K(),a(()=>jr())},resetView:()=>jr(),exportData:Pr,importData:Ir,getMarkdown:()=>Qe(B.value),setMarkdown:(e,t=!0)=>{let n=Ze(e||``);t&&(se.value=!0),ce=!t,on.reset(),B.value=ze(n),M.value=new Set,P.value=new Set,q(),K(),a(()=>{ce=!1,jr()}),w(`change`,B.value)},setBalanced:e=>{an.value=e},isBalanced:()=>an.value,balance:()=>Mr(),applyNodeStyle:(e,t)=>fe(e,t),getNodeStyle:e=>H(e),applyNodeImage:(e,t)=>pe(e,t),applyNodeImageByUrl:(e,t)=>he(e,t),removeNodeImage:e=>me(e),applyNodeLink:(e,t)=>ye(e,t),removeNodeLink:e=>be(e),applyNodeNote:(e,t)=>xe(e,t),removeNodeNote:e=>Se(e),applyNodeRichContent:(e,t)=>Ce(e,t),addNodeMarker:(e,t)=>Kr(e,t),removeNodeMarker:(e,t)=>qr(e,t),toggleNodeMarker:(e,t)=>Jr(e,t),getNodeMarkers:e=>Yr(e),setNodeTags:(e,t)=>Qr(e,t),getNodeTags:e=>$r(e),exportPNG:e=>ii(e),exportSVG:()=>ri(),searchNodes:e=>(Br(e),[...Rr.value]),undo:()=>ir(),redo:()=>ar(),canUndo:()=>on.canUndo(),canRedo:()=>on.canRedo(),applySettings:e=>{e.autoBalanceOnChange!==void 0&&(J.autoBalanceOnChange=e.autoBalanceOnChange),e.lineWidthStart!==void 0&&(J.lineWidthStart=Math.max(.5,Math.min(20,e.lineWidthStart))),e.lineWidthEnd!==void 0&&(J.lineWidthEnd=Math.max(.3,Math.min(10,e.lineWidthEnd))),e.rainbowBranch!==void 0&&(J.rainbowBranch=e.rainbowBranch),e.branchPaletteId!==void 0&&(J.branchPaletteId=e.branchPaletteId),e.customPalettes!==void 0&&(J.customPalettes=e.customPalettes),e.lineStyle!==void 0&&(J.lineStyle=e.lineStyle),e.rootLineStyle!==void 0&&(J.rootLineStyle=e.rootLineStyle),e.lineOrigin!==void 0&&(J.lineOrigin=e.lineOrigin),e.taperedEdge!==void 0&&(J.taperedEdge=e.taperedEdge),e.lineWidthTaper!==void 0&&(J.lineWidthTaper=Math.max(.3,Math.min(1,e.lineWidthTaper))),e.elbowRadius!==void 0&&(J.elbowRadius=Math.max(2,Math.min(20,e.elbowRadius))),e.showOrderBadge!==void 0&&(J.showOrderBadge=e.showOrderBadge),e.canvasBg!==void 0&&(J.canvasBg=e.canvasBg)},getSettings:()=>({autoBalanceOnChange:J.autoBalanceOnChange,lineWidthStart:J.lineWidthStart,lineWidthEnd:J.lineWidthEnd,rainbowBranch:J.rainbowBranch,branchPaletteId:J.branchPaletteId,customPalettes:J.customPalettes,lineStyle:J.lineStyle,rootLineStyle:J.rootLineStyle,lineOrigin:J.lineOrigin,layoutMode:J.layoutMode,taperedEdge:J.taperedEdge,lineWidthTaper:J.lineWidthTaper,elbowRadius:J.elbowRadius,showOrderBadge:J.showOrderBadge,canvasBg:J.canvasBg}),setBranchPalette:e=>{e&&[...Me,...J.customPalettes].find(t=>t.id===e)&&(J.branchPaletteId=e)},getBranchPalette:()=>J.branchPaletteId,getBranchPalettes:()=>[...Me,...J.customPalettes],getSearchResults:()=>[...Rr.value],getSearchIndex:()=>zr.value}),r(()=>c.data,e=>{B.value=ze(e),q()},{deep:!1}),i(()=>{K(),a(()=>jr())}),(t,r)=>{var i,a,o;return A(),O(`div`,{class:`zm-mindmap`,style:_({background:ln.value,fontSize:cn.value.fontSize+`px`})},[v(`div`,{ref_key:`wrapperRef`,ref:E,class:`zm-canvas`,onMousedown:Cr,onContextmenu:Ae,onWheel:r[25]||=(...e)=>C(Y).onWheel&&C(Y).onWheel(...e),onMouseenter:r[26]||=e=>ee.value=!0,onMouseleave:r[27]||=e=>ee.value=!1,onClick:wr},[v(`div`,{class:`zm-svg-layer`,style:_({left:jn.value.vbX*C(Y).scale.value+C(Y).offsetX.value+`px`,top:jn.value.vbY*C(Y).scale.value+C(Y).offsetY.value+`px`,width:jn.value.vbW*C(Y).scale.value+`px`,height:jn.value.vbH*C(Y).scale.value+`px`})},[(A(),O(`svg`,{class:`zm-svg`,viewBox:Fn.value,preserveAspectRatio:`xMinYMin meet`,width:jn.value.vbW*C(Y).scale.value,height:jn.value.vbH*C(Y).scale.value},[v(`g`,Cu,[(A(!0),O(D,null,l(Pn.value,e=>(A(),O(`path`,{key:e.key,d:_n(Ar(e.from,`out`,e.to.side,e.to),Ar(e.to,`in`),dn(e.from.depth),fn(e.to.depth),32,un(e.from.isRoot),e.to._dir),fill:Sn(e.from,e.to),stroke:`none`},null,8,wu))),128))])],8,Su))],4),C(Y).isMarquee.value?(A(),O(`div`,{key:0,class:`zm-marquee`,style:_({left:C(Y).marquee.x*C(Y).scale.value+C(Y).offsetX.value+`px`,top:C(Y).marquee.y*C(Y).scale.value+C(Y).offsetY.value+`px`,width:C(Y).marquee.width*C(Y).scale.value+`px`,height:C(Y).marquee.height*C(Y).scale.value+`px`})},null,4)):f(``,!0),F.value?(A(),O(`div`,{key:1,class:`zm-drag-ghost`,style:_({left:re.value+`px`,top:L.value+`px`,transform:`scale(${C(Y).scale.value})`,transformOrigin:`top left`})},p(F.value.srcText),5)):f(``,!0),v(`div`,{class:`zm-world`,style:_({transform:`translate(${C(Y).offsetX.value}px, ${C(Y).offsetY.value}px) scale(${C(Y).scale.value})`})},[(A(!0),O(D,null,l(Nn.value,t=>(A(),O(`div`,{key:t.id,class:x([`zm-node`,{"is-root":t.isRoot,"is-selected":N.value===t.id,"is-selected-secondary":N.value!==t.id&&M.value.has(t.id),"is-editing":k.value===t.id,"has-image":!!t.image,"is-resizing":qt.value===t.id,"is-dragging-source":F.value?.srcId===t.id,"is-drop-target":F.value?.currentTargetId===t.id,"is-search-hit":Vr(t.id),"is-search-current":Hr(t.id),"is-search-dimmed":Ur(t.id)}]),"data-node-id":t.id,style:_({left:t.x+`px`,top:t.y+`px`,width:t.width+`px`,minWidth:t.width+`px`,height:t.height+`px`,fontSize:Dn(t)+`px`,background:Cn(t),color:wn(t),borderColor:Tn(t),fontWeight:En(t),transform:`translate(-50%, -50%)`}),onClick:e=>gr(e,t),onPointerdown:e=>yr(e,t),onDblclick:e=>{e.stopPropagation(),n.previewMode||Rn(t.id)},onContextmenu:e=>Oe(e,t),onMouseenter:e=>{$t(t.id),nn(e,t)},onMouseleave:e=>en(t.id)},[t.image?(A(),O(`img`,{key:0,class:`zm-node-img`,src:t.image.src,width:t.image.width,height:t.image.height,alt:t.text,draggable:`false`},null,8,Eu)):f(``,!0),t.richContent&&(t.richContent.kind===`code`||t.richContent.kind===`table`)&&k.value!==t.id?(A(),O(`div`,{key:1,class:x([`zm-rich zm-rich-above`,{"zm-rich-no-overflow":t.richContent.kind===`table`||t.richContent.kind===`code`}]),onClick:r[1]||=y(()=>{},[`stop`]),onDblclick:y(e=>Un(t.id),[`stop`]),onMousedown:r[2]||=y(()=>{},[`stop`])},[ae.value===t.id?d((A(),O(`textarea`,{key:0,"onUpdate:modelValue":r[0]||=e=>z.value=e,class:`zm-rich-edit`,spellcheck:`false`,onBlur:Wn,onKeydown:Kn},null,544)),[[S,z.value]]):(A(),O(D,{key:1},[t.richContent.kind===`code`?(A(),O(`pre`,Ou,[v(`code`,{innerHTML:C(Ho)(C(Bo)(t.richContent.raw),C(Vo)(t.richContent.raw))},null,8,ku)])):t.richContent.kind===`table`?(A(),O(`table`,Au,[v(`tbody`,null,[(A(!0),O(D,null,l(C(Uo)(t.richContent.raw),(e,t)=>(A(),O(`tr`,{key:t},[t===0?(A(!0),O(D,{key:0},l(e,(e,t)=>(A(),O(`th`,{key:`h${t}`},p(e),1))),128)):(A(!0),O(D,{key:1},l(e,(e,t)=>(A(),O(`td`,{key:`c${t}`},p(e),1))),128))]))),128))])])):f(``,!0)],64))],42,Du)):f(``,!0),k.value===t.id?d((A(),O(`textarea`,{key:3,class:`zm-input`,"onUpdate:modelValue":r[6]||=e=>j.value=e,autofocus:``,rows:`1`,onBlur:r[7]||=e=>zn(),onKeydown:[r[8]||=h(y(e=>zn(),[`exact`,`prevent`]),[`enter`]),r[9]||=h(y(e=>zn(),[`prevent`]),[`tab`]),h(Bn,[`esc`]),qn],onInput:Hn,onMousedown:r[10]||=y(()=>{},[`stop`]),onClick:r[11]||=y(()=>{},[`stop`])},null,544)),[[S,j.value]]):(A(),O(`span`,ju,[t.markers&&t.markers.length>0?(A(),O(`span`,Mu,[(A(!0),O(D,null,l(t.markers,e=>(A(),O(`span`,{key:e,class:`zm-node-marker`,title:C(ft)(e),innerHTML:`<svg viewBox="0 0 24 24" width="14" height="14">`+C(dt)(e)+`</svg>`},null,8,Nu))),128))])):f(``,!0),v(`span`,Pu,p(t.text),1),t.link&&k.value!==t.id?(A(),O(`a`,{key:1,class:`zm-node-link`,href:t.link.url,target:`_blank`,rel:`noopener noreferrer`,title:`打开链接:${t.link.url}`,onClick:r[3]||=y(()=>{},[`stop`]),onMousedown:r[4]||=y(()=>{},[`stop`])},[e(I,{name:`link`,size:11,stroke:2})],40,Fu)):f(``,!0),t.note&&k.value!==t.id?(A(),O(`button`,{key:2,class:`zm-node-note-btn`,type:`button`,title:Ut(t.note.text),onClick:y(e=>Ht(t.id),[`stop`]),onMousedown:r[5]||=y(()=>{},[`stop`])},[e(I,{name:`note`,size:11,stroke:2})],40,Iu)):f(``,!0)])),t.tags&&t.tags.length>0&&k.value!==t.id?(A(),O(`div`,Lu,[(A(!0),O(D,null,l(t.tags,e=>(A(),O(`span`,{key:e,class:`zm-node-tag`,style:_(C(pt)(e))},p(e),5))),128))])):f(``,!0),le.value?(A(),O(`span`,{key:5,class:`zm-order-badge`,title:`数据顺序:第 ${kr(t.id)+1} 个`},p(kr(t.id)+1),9,Ru)):f(``,!0),Er(t.id)&&Or(t.id)>0?(A(),O(`span`,{key:6,class:x([`zm-collapse-badge`,{"is-on-left":t.side===-1}]),style:_({background:xn.value.get(t.id)??`#64748b`}),title:`展开 ${Or(t.id)} 个子节点`,onMousedown:r[12]||=y(()=>{},[`stop`]),onClick:y(e=>lr(t.id),[`stop`])},p(Or(t.id)),47,zu)):f(``,!0),Dr(t)&&!Er(t.id)?(A(),O(`button`,{key:7,class:x([`zm-btn zm-collapse`,{"is-on-left":t.side===-1}]),style:_({color:xn.value.get(t.id)??`#64748b`,borderColor:xn.value.get(t.id)??`#64748b`}),title:`折叠`,onMousedown:r[13]||=y(()=>{},[`stop`]),onClick:y(e=>lr(t.id),[`stop`])},[e(I,{name:`minus`,size:10,stroke:2.4})],46,Bu)):f(``,!0),t.image&&N.value===t.id&&k.value!==t.id?(A(),O(`span`,{key:8,class:`zm-img-resize-handle`,title:`拖动调整图片大小`,onMousedown:y(e=>Jt(e,t),[`stop`])},null,40,Vu)):f(``,!0),t.image&&N.value===t.id&&k.value!==t.id?(A(),O(`button`,{key:9,class:`zm-img-remove-btn`,title:`移除图片`,onMousedown:r[14]||=y(()=>{},[`stop`]),onClick:y(e=>me(t.id),[`stop`])},[e(I,{name:`x`,size:9,stroke:2.2})],40,Hu)):f(``,!0)],46,Tu))),128))],4),R.value?(A(),O(`div`,{key:2,class:x([`zm-tooltip`,{"is-below":!R.value.above}]),style:_({left:R.value.x+`px`,top:R.value.y+`px`})},p(R.value.text),7)):f(``,!0),U.value?(A(),g(vt,{key:3,x:U.value.x,y:U.value.y,container:E.value,"has-image":!!((i=C(W)(B.value,U.value.nodeId))!=null&&i.image),"has-link":!!((a=C(W)(B.value,U.value.nodeId))!=null&&a.link),"has-note":!!((o=C(W)(B.value,U.value.nodeId))!=null&&o.note),"has-code":C(W)(B.value,U.value.nodeId)?.richContent?.kind===`code`,"has-table":C(W)(B.value,U.value.nodeId)?.richContent?.kind===`table`,"node-markers":C(W)(B.value,U.value.nodeId)?.markers??[],"node-tags":C(W)(B.value,U.value.nodeId)?.tags??[],onPickImage:Mt,onRemoveImage:Lt,onSetLink:Nt,onRemoveLink:Pt,onEditNote:Ft,onRemoveNote:It,onAddCode:Rt,onEditCode:Rt,onRemoveCode:zt,onAddTable:Bt,onEditTable:Bt,onRemoveTable:Vt,onToggleMarker:Xr,onClearMarkers:Zr,onAddTag:ei,onRemoveTags:ti,onClose:ke},null,8,[`x`,`y`,`container`,`has-image`,`has-link`,`has-note`,`has-code`,`has-table`,`node-markers`,`node-tags`])):f(``,!0),we.value?(A(),g(yt,{key:4,x:we.value.x,y:we.value.y,container:E.value,onOpenSettings:Pe,onOpenData:Fe,onOpenImport:Ie,onExportPng:ii,onExportSvg:ri,onClose:je},null,8,[`x`,`y`,`container`])):f(``,!0),v(`button`,{class:x(Ee.value),title:c.previewMode?`退出预览模式`:`进入预览模式`,onClick:r[15]||=e=>w(`canvas-toggle-preview`)},[e(I,{name:c.previewMode?`eye-off`:`eye`,size:16},null,8,[`name`])],10,Uu),v(`button`,{class:x(De.value),title:`显示大纲视图`,onClick:jt},[e(I,{name:`outline`,size:16})],2),v(`div`,{class:x([`zm-toolbar`,{"is-preview-only":c.previewMode,"is-hovered":ee.value}])},[v(`span`,Wu,p(Math.round(C(Y).scale.value*100))+`%`,1),v(`button`,{class:`zm-tb-btn`,title:`放大`,onClick:r[16]||=(...e)=>C(Y).zoomIn&&C(Y).zoomIn(...e)},[e(I,{name:`zoom-in`})]),v(`button`,{class:`zm-tb-btn`,title:`缩小`,onClick:r[17]||=(...e)=>C(Y).zoomOut&&C(Y).zoomOut(...e)},[e(I,{name:`zoom-out`})]),v(`button`,{class:`zm-tb-btn`,title:`重置视图`,onClick:jr},[e(I,{name:`reset`})]),r[37]||=v(`span`,{class:`zm-tb-divider`},null,-1),v(`button`,{class:`zm-tb-btn`,title:`全部收起`,onClick:dr},[e(I,{name:`collapse-all`})]),v(`button`,{class:`zm-tb-btn`,title:`展开一级`,onClick:r[18]||=e=>fr(1)},[e(I,{name:`expand-level-1`})]),v(`button`,{class:`zm-tb-btn`,title:`展开二级`,onClick:r[19]||=e=>fr(2)},[e(I,{name:`expand-level-2`})]),v(`button`,{class:`zm-tb-btn`,title:`全部展开`,onClick:pr},[e(I,{name:`expand-all`})]),c.previewMode?f(``,!0):(A(),O(D,{key:0},[r[35]||=v(`span`,{class:`zm-tb-divider`},null,-1),v(`button`,{class:`zm-tb-btn`,title:`添加子节点 (Tab)`,onClick:r[20]||=e=>N.value&&Jn(N.value)},[v(`img`,{src:C(ne),width:`14`,height:`14`,alt:`添加子节点`,draggable:`false`},null,8,Gu)]),v(`button`,{class:`zm-tb-btn`,title:`添加同级 (Enter)`,onClick:r[21]||=e=>N.value&&Yn(N.value)},[v(`img`,{src:C(te),width:`14`,height:`14`,alt:`添加同级`,draggable:`false`},null,8,Ku)]),r[36]||=v(`span`,{class:`zm-tb-divider`},null,-1),v(`button`,{class:x([`zm-tb-btn`,{active:J.layoutMode===`mindmap`}]),title:`思维导图布局 (中心辐射)`,onClick:r[22]||=e=>Nr(`mindmap`)},[e(I,{name:`mindmap`})],2),v(`button`,{class:x([`zm-tb-btn`,{active:J.layoutMode===`tree`}]),title:`树形布局 (向右展开)`,onClick:r[23]||=e=>Nr(`tree`)},[e(I,{name:`tree`})],2),v(`button`,{class:x([`zm-tb-btn`,{active:J.layoutMode===`org`}]),title:`组织结构布局 (向下展开)`,onClick:r[24]||=e=>Nr(`org`)},[e(I,{name:`org`})],2)],64))],2)],544),c.builtInDrawers?(A(),O(D,{key:0},[e(kt,{side:`left`,scope:`canvas`,width:300,open:Le.value&&!n.previewMode,title:`大纲`,"onUpdate:open":r[28]||=e=>Le.value=e},{default:u(()=>[e(tn,{data:B.value,"selected-id":N.value,"collapsed-ids":ot.value,onSelect:wt,onToggleCollapse:At,onEdit:Tt,onAddChild:Et,onAddSibling:Dt,onMove:Ot},null,8,[`data`,`selected-id`,`collapsed-ids`])]),_:1},8,[`open`]),e(kt,{side:`right`,scope:`canvas`,width:360,open:Re.value&&!n.previewMode,title:`数据`,"onUpdate:open":r[30]||=e=>Re.value=e},{default:u(()=>[e(On,{data:B.value,"pending-mode":rt.value,onImport:r[29]||=e=>B.value=e,onConsumedMode:gt},null,8,[`data`,`pending-mode`])]),_:1},8,[`open`]),e(kt,{side:`right`,scope:`canvas`,width:420,open:Ue.value&&!n.previewMode,title:`Markdown`,"onUpdate:open":r[32]||=e=>Ue.value=e},{default:u(()=>[e(Ln,{data:B.value,onImport:r[31]||=e=>B.value=e},null,8,[`data`])]),_:1},8,[`open`]),e(kt,{side:`right`,scope:`canvas`,width:360,open:$e.value&&!n.previewMode,title:`节点内容`,"onUpdate:open":r[33]||=e=>$e.value=e},{default:u(()=>[e(xu,{"selected-node":ct.value,"focus-tick":nt.value,onApply:_t,onRemove:bt,onSetLink:xt,onSetImage:St,onSetRich:Ct},null,8,[`selected-node`,`focus-tick`])]),_:1},8,[`open`]),e(kt,{side:`right`,scope:`canvas`,width:340,open:et.value&&!n.previewMode,title:`设置`,"onUpdate:open":r[34]||=e=>et.value=e},{default:u(()=>[e(wi,{settings:J,"has-selection":N.value!==null,"selected-node-text":ct.value?.text,"node-style":lt.value,"onUpdate:settings":ut,"onUpdate:nodeStyle":mt,onReset:ht},null,8,[`settings`,`has-selection`,`selected-node-text`,`node-style`])]),_:1},8,[`open`])],64)):f(``,!0)],4)}}});export{et as n,Ze as r,Zu as t};
|
|
138
|
+
`+r);let i=new Blob([r],{type:`image/svg+xml;charset=utf-8`}),a=URL.createObjectURL(i),o=new window.Image;o.onload=()=>{let t=document.createElement(`canvas`);t.width=Math.ceil(n.vbW*e),t.height=Math.ceil(n.vbH*e);let r=t.getContext(`2d`);if(!r){URL.revokeObjectURL(a);return}r.fillStyle=ln.value,r.fillRect(0,0,t.width,t.height),r.drawImage(o,0,0,t.width,t.height),URL.revokeObjectURL(a);try{t.toBlob(e=>{if(!e){ri();return}let t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`${B.value.text||`mindmap`}.png`,n.click(),URL.revokeObjectURL(t)},`image/png`)}catch(e){console.warn(`PNG export failed, falling back to SVG:`,e),ri()}},o.onerror=()=>{URL.revokeObjectURL(a),ri()},o.src=a}return o({addChild:e=>Jn(e),addSibling:e=>Yn(e),removeNode:e=>cr(e),duplicateNode:e=>Zn(e),setNodeText:(e,t)=>mr(e,t),moveNode:(e,t,n)=>hr(e,t,n),lineWidthForDepth:dn,endWidthForDepth:fn,getData:()=>B.value,nodeHasContent:e=>Fr(e),getSelectedIds:()=>[...M.value],copyNodes:e=>tr(e),cutNodes:e=>nr(e),pasteNodes:e=>rr(e),setData:e=>{on.reset(),B.value=ze(e),M.value=new Set,P.value=new Set,q(),K(),a(()=>jr())},resetView:()=>jr(),exportData:Pr,importData:Ir,getMarkdown:()=>Qe(B.value),setMarkdown:(e,t=!0)=>{let n=Ze(e||``);t&&(se.value=!0),ce=!t,on.reset(),B.value=ze(n),M.value=new Set,P.value=new Set,q(),K(),a(()=>{ce=!1,jr()}),w(`change`,B.value)},setBalanced:e=>{an.value=e},isBalanced:()=>an.value,balance:()=>Mr(),applyNodeStyle:(e,t)=>fe(e,t),getNodeStyle:e=>H(e),applyNodeImage:(e,t)=>pe(e,t),applyNodeImageByUrl:(e,t)=>he(e,t),removeNodeImage:e=>me(e),applyNodeLink:(e,t)=>ye(e,t),removeNodeLink:e=>be(e),applyNodeNote:(e,t)=>xe(e,t),removeNodeNote:e=>Se(e),applyNodeRichContent:(e,t)=>Ce(e,t),addNodeMarker:(e,t)=>Kr(e,t),removeNodeMarker:(e,t)=>qr(e,t),toggleNodeMarker:(e,t)=>Jr(e,t),getNodeMarkers:e=>Yr(e),setNodeTags:(e,t)=>Qr(e,t),getNodeTags:e=>$r(e),exportPNG:e=>ii(e),exportSVG:()=>ri(),searchNodes:e=>(Br(e),[...Rr.value]),undo:()=>ir(),redo:()=>ar(),canUndo:()=>on.canUndo(),canRedo:()=>on.canRedo(),applySettings:e=>{e.autoBalanceOnChange!==void 0&&(J.autoBalanceOnChange=e.autoBalanceOnChange),e.lineWidthStart!==void 0&&(J.lineWidthStart=Math.max(.5,Math.min(20,e.lineWidthStart))),e.lineWidthEnd!==void 0&&(J.lineWidthEnd=Math.max(.3,Math.min(10,e.lineWidthEnd))),e.rainbowBranch!==void 0&&(J.rainbowBranch=e.rainbowBranch),e.branchPaletteId!==void 0&&(J.branchPaletteId=e.branchPaletteId),e.customPalettes!==void 0&&(J.customPalettes=e.customPalettes),e.lineStyle!==void 0&&(J.lineStyle=e.lineStyle),e.rootLineStyle!==void 0&&(J.rootLineStyle=e.rootLineStyle),e.lineOrigin!==void 0&&(J.lineOrigin=e.lineOrigin),e.taperedEdge!==void 0&&(J.taperedEdge=e.taperedEdge),e.lineWidthTaper!==void 0&&(J.lineWidthTaper=Math.max(.3,Math.min(1,e.lineWidthTaper))),e.elbowRadius!==void 0&&(J.elbowRadius=Math.max(2,Math.min(20,e.elbowRadius))),e.showOrderBadge!==void 0&&(J.showOrderBadge=e.showOrderBadge),e.canvasBg!==void 0&&(J.canvasBg=e.canvasBg)},getSettings:()=>({autoBalanceOnChange:J.autoBalanceOnChange,lineWidthStart:J.lineWidthStart,lineWidthEnd:J.lineWidthEnd,rainbowBranch:J.rainbowBranch,branchPaletteId:J.branchPaletteId,customPalettes:J.customPalettes,lineStyle:J.lineStyle,rootLineStyle:J.rootLineStyle,lineOrigin:J.lineOrigin,layoutMode:J.layoutMode,taperedEdge:J.taperedEdge,lineWidthTaper:J.lineWidthTaper,elbowRadius:J.elbowRadius,showOrderBadge:J.showOrderBadge,canvasBg:J.canvasBg}),setBranchPalette:e=>{e&&[...Me,...J.customPalettes].find(t=>t.id===e)&&(J.branchPaletteId=e)},getBranchPalette:()=>J.branchPaletteId,getBranchPalettes:()=>[...Me,...J.customPalettes],getSearchResults:()=>[...Rr.value],getSearchIndex:()=>zr.value}),r(()=>c.data,e=>{B.value=ze(e),q()},{deep:!1}),i(()=>{K(),a(()=>jr())}),(t,r)=>{var i,a,o;return A(),O(`div`,{class:`zm-mindmap`,style:_({background:ln.value,fontSize:cn.value.fontSize+`px`})},[v(`div`,{ref_key:`wrapperRef`,ref:E,class:`zm-canvas`,onMousedown:Cr,onContextmenu:Ae,onWheel:r[25]||=(...e)=>C(Y).onWheel&&C(Y).onWheel(...e),onMouseenter:r[26]||=e=>ee.value=!0,onMouseleave:r[27]||=e=>ee.value=!1,onClick:wr},[v(`div`,{class:`zm-svg-layer`,style:_({left:jn.value.vbX*C(Y).scale.value+C(Y).offsetX.value+`px`,top:jn.value.vbY*C(Y).scale.value+C(Y).offsetY.value+`px`,width:jn.value.vbW*C(Y).scale.value+`px`,height:jn.value.vbH*C(Y).scale.value+`px`})},[(A(),O(`svg`,{class:`zm-svg`,viewBox:Fn.value,preserveAspectRatio:`xMinYMin meet`,width:jn.value.vbW*C(Y).scale.value,height:jn.value.vbH*C(Y).scale.value},[v(`g`,Cu,[(A(!0),O(D,null,l(Pn.value,e=>(A(),O(`path`,{key:e.key,d:_n(Ar(e.from,`out`,e.to.side,e.to),Ar(e.to,`in`),dn(e.from.depth),fn(e.to.depth),32,un(e.from.isRoot),e.to._dir),fill:Sn(e.from,e.to),stroke:`none`},null,8,wu))),128))])],8,Su))],4),C(Y).isMarquee.value?(A(),O(`div`,{key:0,class:`zm-marquee`,style:_({left:C(Y).marquee.x*C(Y).scale.value+C(Y).offsetX.value+`px`,top:C(Y).marquee.y*C(Y).scale.value+C(Y).offsetY.value+`px`,width:C(Y).marquee.width*C(Y).scale.value+`px`,height:C(Y).marquee.height*C(Y).scale.value+`px`})},null,4)):f(``,!0),F.value?(A(),O(`div`,{key:1,class:`zm-drag-ghost`,style:_({left:re.value+`px`,top:L.value+`px`,transform:`scale(${C(Y).scale.value})`,transformOrigin:`top left`})},p(F.value.srcText),5)):f(``,!0),v(`div`,{class:`zm-world`,style:_({transform:`translate(${C(Y).offsetX.value}px, ${C(Y).offsetY.value}px) scale(${C(Y).scale.value})`})},[(A(!0),O(D,null,l(Nn.value,t=>(A(),O(`div`,{key:t.id,class:x([`zm-node`,{"is-root":t.isRoot,"is-selected":N.value===t.id,"is-selected-secondary":N.value!==t.id&&M.value.has(t.id),"is-editing":k.value===t.id,"has-image":!!t.image,"is-resizing":qt.value===t.id,"is-dragging-source":F.value?.srcId===t.id,"is-drop-target":F.value?.currentTargetId===t.id,"is-search-hit":Vr(t.id),"is-search-current":Hr(t.id),"is-search-dimmed":Ur(t.id)}]),"data-node-id":t.id,style:_({left:t.x+`px`,top:t.y+`px`,width:t.width+`px`,minWidth:t.width+`px`,height:t.height+`px`,fontSize:Dn(t)+`px`,background:Cn(t),color:wn(t),borderColor:Tn(t),fontWeight:En(t),transform:`translate(-50%, -50%)`}),onClick:e=>gr(e,t),onPointerdown:e=>yr(e,t),onDblclick:e=>{e.stopPropagation(),n.previewMode||Rn(t.id)},onContextmenu:e=>Oe(e,t),onMouseenter:e=>{$t(t.id),nn(e,t)},onMouseleave:e=>en(t.id)},[t.image?(A(),O(`img`,{key:0,class:`zm-node-img`,src:t.image.src,width:t.image.width,height:t.image.height,alt:t.text,draggable:`false`},null,8,Eu)):f(``,!0),t.richContent&&(t.richContent.kind===`code`||t.richContent.kind===`table`)&&k.value!==t.id?(A(),O(`div`,{key:1,class:x([`zm-rich zm-rich-above`,{"zm-rich-no-overflow":t.richContent.kind===`table`||t.richContent.kind===`code`}]),onClick:r[1]||=y(()=>{},[`stop`]),onDblclick:y(e=>Un(t.id),[`stop`]),onMousedown:r[2]||=y(()=>{},[`stop`])},[ae.value===t.id?d((A(),O(`textarea`,{key:0,"onUpdate:modelValue":r[0]||=e=>z.value=e,class:`zm-rich-edit`,spellcheck:`false`,onBlur:Wn,onKeydown:Kn},null,544)),[[S,z.value]]):(A(),O(D,{key:1},[t.richContent.kind===`code`?(A(),O(`pre`,Ou,[v(`code`,{innerHTML:C(Ho)(C(Bo)(t.richContent.raw),C(Vo)(t.richContent.raw))},null,8,ku)])):t.richContent.kind===`table`?(A(),O(`table`,Au,[v(`tbody`,null,[(A(!0),O(D,null,l(C(Uo)(t.richContent.raw),(e,t)=>(A(),O(`tr`,{key:t},[t===0?(A(!0),O(D,{key:0},l(e,(e,t)=>(A(),O(`th`,{key:`h${t}`},p(e),1))),128)):(A(!0),O(D,{key:1},l(e,(e,t)=>(A(),O(`td`,{key:`c${t}`},p(e),1))),128))]))),128))])])):f(``,!0)],64))],42,Du)):f(``,!0),k.value===t.id?d((A(),O(`textarea`,{key:3,class:`zm-input`,"onUpdate:modelValue":r[6]||=e=>j.value=e,autofocus:``,rows:`1`,onBlur:r[7]||=e=>zn(),onKeydown:[r[8]||=h(y(e=>zn(),[`exact`,`prevent`]),[`enter`]),r[9]||=h(y(e=>zn(),[`prevent`]),[`tab`]),h(Bn,[`esc`]),qn],onInput:Hn,onMousedown:r[10]||=y(()=>{},[`stop`]),onClick:r[11]||=y(()=>{},[`stop`])},null,544)),[[S,j.value]]):(A(),O(`span`,ju,[t.markers&&t.markers.length>0?(A(),O(`span`,Mu,[(A(!0),O(D,null,l(t.markers,e=>(A(),O(`span`,{key:e,class:`zm-node-marker`,title:C(ft)(e),innerHTML:`<svg viewBox="0 0 24 24" width="14" height="14">`+C(dt)(e)+`</svg>`},null,8,Nu))),128))])):f(``,!0),v(`span`,Pu,p(t.text),1),t.link&&k.value!==t.id?(A(),O(`a`,{key:1,class:`zm-node-link`,href:t.link.url,target:`_blank`,rel:`noopener noreferrer`,title:`打开链接:${t.link.url}`,onClick:r[3]||=y(()=>{},[`stop`]),onMousedown:r[4]||=y(()=>{},[`stop`])},[e(I,{name:`link`,size:11,stroke:2})],40,Fu)):f(``,!0),t.note&&k.value!==t.id?(A(),O(`button`,{key:2,class:`zm-node-note-btn`,type:`button`,title:Ut(t.note.text),onClick:y(e=>Ht(t.id),[`stop`]),onMousedown:r[5]||=y(()=>{},[`stop`])},[e(I,{name:`note`,size:11,stroke:2})],40,Iu)):f(``,!0)])),t.tags&&t.tags.length>0&&k.value!==t.id?(A(),O(`div`,Lu,[(A(!0),O(D,null,l(t.tags,e=>(A(),O(`span`,{key:e,class:`zm-node-tag`,style:_(C(pt)(e))},p(e),5))),128))])):f(``,!0),le.value?(A(),O(`span`,{key:5,class:`zm-order-badge`,title:`数据顺序:第 ${kr(t.id)+1} 个`},p(kr(t.id)+1),9,Ru)):f(``,!0),Er(t.id)&&Or(t.id)>0?(A(),O(`span`,{key:6,class:x([`zm-collapse-badge`,{"is-on-left":t.side===-1}]),style:_({background:xn.value.get(t.id)??`#64748b`}),title:`展开 ${Or(t.id)} 个子节点`,onMousedown:r[12]||=y(()=>{},[`stop`]),onClick:y(e=>lr(t.id),[`stop`])},p(Or(t.id)),47,zu)):f(``,!0),Dr(t)&&!Er(t.id)?(A(),O(`button`,{key:7,class:x([`zm-btn zm-collapse`,{"is-on-left":t.side===-1}]),style:_({color:xn.value.get(t.id)??`#64748b`,borderColor:xn.value.get(t.id)??`#64748b`}),title:`折叠`,onMousedown:r[13]||=y(()=>{},[`stop`]),onClick:y(e=>lr(t.id),[`stop`])},[e(I,{name:`minus`,size:10,stroke:2.4})],46,Bu)):f(``,!0),t.image&&N.value===t.id&&k.value!==t.id?(A(),O(`span`,{key:8,class:`zm-img-resize-handle`,title:`拖动调整图片大小`,onMousedown:y(e=>Jt(e,t),[`stop`])},null,40,Vu)):f(``,!0),t.image&&N.value===t.id&&k.value!==t.id?(A(),O(`button`,{key:9,class:`zm-img-remove-btn`,title:`移除图片`,onMousedown:r[14]||=y(()=>{},[`stop`]),onClick:y(e=>me(t.id),[`stop`])},[e(I,{name:`x`,size:10,stroke:2.2})],40,Hu)):f(``,!0)],46,Tu))),128))],4),R.value?(A(),O(`div`,{key:2,class:x([`zm-tooltip`,{"is-below":!R.value.above}]),style:_({left:R.value.x+`px`,top:R.value.y+`px`})},p(R.value.text),7)):f(``,!0),U.value?(A(),g(vt,{key:3,x:U.value.x,y:U.value.y,container:E.value,"has-image":!!((i=C(W)(B.value,U.value.nodeId))!=null&&i.image),"has-link":!!((a=C(W)(B.value,U.value.nodeId))!=null&&a.link),"has-note":!!((o=C(W)(B.value,U.value.nodeId))!=null&&o.note),"has-code":C(W)(B.value,U.value.nodeId)?.richContent?.kind===`code`,"has-table":C(W)(B.value,U.value.nodeId)?.richContent?.kind===`table`,"node-markers":C(W)(B.value,U.value.nodeId)?.markers??[],"node-tags":C(W)(B.value,U.value.nodeId)?.tags??[],onPickImage:Mt,onRemoveImage:Lt,onSetLink:Nt,onRemoveLink:Pt,onEditNote:Ft,onRemoveNote:It,onAddCode:Rt,onEditCode:Rt,onRemoveCode:zt,onAddTable:Bt,onEditTable:Bt,onRemoveTable:Vt,onToggleMarker:Xr,onClearMarkers:Zr,onAddTag:ei,onRemoveTags:ti,onClose:ke},null,8,[`x`,`y`,`container`,`has-image`,`has-link`,`has-note`,`has-code`,`has-table`,`node-markers`,`node-tags`])):f(``,!0),we.value?(A(),g(yt,{key:4,x:we.value.x,y:we.value.y,container:E.value,onOpenSettings:Pe,onOpenData:Fe,onOpenImport:Ie,onExportPng:ii,onExportSvg:ri,onClose:je},null,8,[`x`,`y`,`container`])):f(``,!0),v(`button`,{class:x(Ee.value),title:c.previewMode?`退出预览模式`:`进入预览模式`,onClick:r[15]||=e=>w(`canvas-toggle-preview`)},[e(I,{name:c.previewMode?`eye-off`:`eye`,size:16},null,8,[`name`])],10,Uu),v(`button`,{class:x(De.value),title:`显示大纲视图`,onClick:jt},[e(I,{name:`outline`,size:16})],2),v(`div`,{class:x([`zm-toolbar`,{"is-preview-only":c.previewMode,"is-hovered":ee.value}])},[v(`span`,Wu,p(Math.round(C(Y).scale.value*100))+`%`,1),v(`button`,{class:`zm-tb-btn`,title:`放大`,onClick:r[16]||=(...e)=>C(Y).zoomIn&&C(Y).zoomIn(...e)},[e(I,{name:`zoom-in`})]),v(`button`,{class:`zm-tb-btn`,title:`缩小`,onClick:r[17]||=(...e)=>C(Y).zoomOut&&C(Y).zoomOut(...e)},[e(I,{name:`zoom-out`})]),v(`button`,{class:`zm-tb-btn`,title:`重置视图`,onClick:jr},[e(I,{name:`reset`})]),r[37]||=v(`span`,{class:`zm-tb-divider`},null,-1),v(`button`,{class:`zm-tb-btn`,title:`全部收起`,onClick:dr},[e(I,{name:`collapse-all`})]),v(`button`,{class:`zm-tb-btn`,title:`展开一级`,onClick:r[18]||=e=>fr(1)},[e(I,{name:`expand-level-1`})]),v(`button`,{class:`zm-tb-btn`,title:`展开二级`,onClick:r[19]||=e=>fr(2)},[e(I,{name:`expand-level-2`})]),v(`button`,{class:`zm-tb-btn`,title:`全部展开`,onClick:pr},[e(I,{name:`expand-all`})]),c.previewMode?f(``,!0):(A(),O(D,{key:0},[r[35]||=v(`span`,{class:`zm-tb-divider`},null,-1),v(`button`,{class:`zm-tb-btn`,title:`添加子节点 (Tab)`,onClick:r[20]||=e=>N.value&&Jn(N.value)},[v(`img`,{src:C(ne),width:`14`,height:`14`,alt:`添加子节点`,draggable:`false`},null,8,Gu)]),v(`button`,{class:`zm-tb-btn`,title:`添加同级 (Enter)`,onClick:r[21]||=e=>N.value&&Yn(N.value)},[v(`img`,{src:C(te),width:`14`,height:`14`,alt:`添加同级`,draggable:`false`},null,8,Ku)]),r[36]||=v(`span`,{class:`zm-tb-divider`},null,-1),v(`button`,{class:x([`zm-tb-btn`,{active:J.layoutMode===`mindmap`}]),title:`思维导图布局 (中心辐射)`,onClick:r[22]||=e=>Nr(`mindmap`)},[e(I,{name:`mindmap`})],2),v(`button`,{class:x([`zm-tb-btn`,{active:J.layoutMode===`tree`}]),title:`树形布局 (向右展开)`,onClick:r[23]||=e=>Nr(`tree`)},[e(I,{name:`tree`})],2),v(`button`,{class:x([`zm-tb-btn`,{active:J.layoutMode===`org`}]),title:`组织结构布局 (向下展开)`,onClick:r[24]||=e=>Nr(`org`)},[e(I,{name:`org`})],2)],64))],2)],544),c.builtInDrawers?(A(),O(D,{key:0},[e(kt,{side:`left`,scope:`canvas`,width:300,open:Le.value&&!n.previewMode,title:`大纲`,"onUpdate:open":r[28]||=e=>Le.value=e},{default:u(()=>[e(tn,{data:B.value,"selected-id":N.value,"collapsed-ids":ot.value,"show-index":le.value,onSelect:wt,onToggleCollapse:At,onEdit:Tt,onAddChild:Et,onAddSibling:Dt,onMove:Ot},null,8,[`data`,`selected-id`,`collapsed-ids`,`show-index`])]),_:1},8,[`open`]),e(kt,{side:`right`,scope:`canvas`,width:360,open:Re.value&&!n.previewMode,title:`数据`,"onUpdate:open":r[30]||=e=>Re.value=e},{default:u(()=>[e(On,{data:B.value,"pending-mode":rt.value,onImport:r[29]||=e=>B.value=e,onConsumedMode:gt},null,8,[`data`,`pending-mode`])]),_:1},8,[`open`]),e(kt,{side:`right`,scope:`canvas`,width:420,open:Ue.value&&!n.previewMode,title:`Markdown`,"onUpdate:open":r[32]||=e=>Ue.value=e},{default:u(()=>[e(Ln,{data:B.value,onImport:r[31]||=e=>B.value=e},null,8,[`data`])]),_:1},8,[`open`]),e(kt,{side:`right`,scope:`canvas`,width:360,open:$e.value&&!n.previewMode,title:`节点内容`,"onUpdate:open":r[33]||=e=>$e.value=e},{default:u(()=>[e(xu,{"selected-node":ct.value,"focus-tick":nt.value,onApply:_t,onRemove:bt,onSetLink:xt,onSetImage:St,onSetRich:Ct},null,8,[`selected-node`,`focus-tick`])]),_:1},8,[`open`]),e(kt,{side:`right`,scope:`canvas`,width:340,open:et.value&&!n.previewMode,title:`设置`,"onUpdate:open":r[34]||=e=>et.value=e},{default:u(()=>[e(wi,{settings:J,"has-selection":N.value!==null,"selected-node-text":ct.value?.text,"node-style":lt.value,"onUpdate:settings":ut,"onUpdate:nodeStyle":mt,onReset:ht},null,8,[`settings`,`has-selection`,`selected-node-text`,`node-style`])]),_:1},8,[`open`])],64)):f(``,!0)],4)}}});export{et as n,Ze as r,Zu as t};
|